import type { ApplicationService } from '../src/types.ts';
import { RequestValidator } from '../modules/http/main.ts';
import { type FileRuleValidationOptions, VineMultipartFile } from '../src/vine.ts';
/**
 * Extend VineJS
 */
declare module '@vinejs/vine' {
    interface Vine {
        file(options?: FileRuleValidationOptions): VineMultipartFile;
    }
}
/**
 * Extend HTTP request class
 */
declare module '@adonisjs/core/http' {
    interface HttpRequest extends RequestValidator {
    }
}
/**
 * The VineJS service provider integrates VineJS validation
 * library with AdonisJS application environment
 *
 * This provider sets up:
 * - File validation rule for multipart file uploads
 * - Request validation macro for easy validation in HTTP contexts
 * - Extension of VineJS with AdonisJS-specific validation features
 *
 * @example
 * const provider = new VineJSServiceProvider(app)
 * provider.boot()
 * // Now Request has validateUsing method
 */
export default class VineJSServiceProvider {
    protected app: ApplicationService;
    /**
     * VineJS service provider constructor
     *
     * Sets the usingVineJS flag to true to indicate VineJS is being used.
     *
     * @param app - The application service instance
     */
    constructor(app: ApplicationService);
    /**
     * Boot the VineJS service provider
     *
     * Extends VineJS with file validation macro and adds validateUsing
     * method to the Request class for easy validation in HTTP contexts.
     *
     * @example
     * provider.boot()
     * // Now vine.file() and request.validateUsing() are available
     */
    boot(): void;
}
