import { SchemaArray, ValidationField } from '@ioc:Adonis/Core/Validator';
import { Compiler } from '../index';
import { CompilerBuffer } from '../Buffer';
/**
 * Exposes the API to compile the array node to a set of inline
 * Javascript instructions.
 */
export declare class ArrayCompiler {
    private field;
    private node;
    private compiler;
    private references;
    constructor(field: ValidationField, node: SchemaArray, compiler: Compiler, references: {
        outVariable: string;
        referenceVariable: string;
        parentPointer: ValidationField[];
    });
    /**
     * Declaring the out variable as an empty array. As the validations
     * will progress, this object will receive new properties
     */
    private declareOutVariable;
    /**
     * Add the if statement to ensure that the runtime value is an
     * array, before we attempt to validate it's members
     */
    private startIfGuard;
    /**
     * Ends the previously started if guard
     */
    private endIfGuard;
    /**
     * Start the for loop to loop over the array entries. We use a `for of`
     * loop, since their are one or more children async rules
     */
    private startAsyncForLoop;
    /**
     * Start the for loop to loop over the array entries.
     */
    private startForLoop;
    /**
     * Ends the previously started for loop
     */
    private endForLoop;
    /**
     * Returns a boolean telling if any of the children of a given node
     * has async rules. This helps in optimizing the for loop for
     * the array.
     */
    private hasAsyncChildren;
    /**
     * Converts the array node to compiled Javascript statement.
     */
    compile(buffer: CompilerBuffer): void;
}
