import { ConfigurableCallback } from './lib/ConfigurableCallback';
export interface RegisteredAPI<Callback extends Function> {
    api: any;
    callback: Callback;
    expression: Expression<Callback>;
}
declare type FluentCreator = (fluentProxy: any) => void;
declare type Register = (<Callback extends Function>(create: FluentCreator, callback: Callback) => RegisteredAPI<Callback>[]) & (<Callback extends Function>(create: FluentCreator, create2: FluentCreator, callback: Callback) => RegisteredAPI<Callback>[]) & (<Callback extends Function>(create: FluentCreator, create2: FluentCreator, create3: FluentCreator, callback: Callback) => RegisteredAPI<Callback>[]) & (<Callback extends Function>(create: FluentCreator, create2: FluentCreator, create3: FluentCreator, create4: FluentCreator, callback: Callback) => RegisteredAPI<Callback>[]) & (<Callback extends Function>(create: FluentCreator, create2: FluentCreator, create3: FluentCreator, create4: FluentCreator, create5: FluentCreator, callback: Callback) => RegisteredAPI<Callback>[]);
export declare const register: Register;
export declare class Expression<Callback extends Function> {
    fluentAPI: any;
    pointer: BuildPointer;
    static callbacks: WeakSet<object>;
    callbacks: Set<ConfigurableCallback>;
    callback: Callback;
    args: any[];
    constructor(callback: Callback);
    index: number;
    setExpressionIdx(index: number): void;
    static isFinalCallback(cb: any): boolean;
    getFluentAPI(): any;
    createConfigurableCallback(): ConfigurableCallback;
    isLastPointerCallback(): boolean;
    debugId: string;
    updateDebugProp(prop: any): void;
    updateDebugFunction(arg: any): void;
    callbackCount: number;
    handleFunctionCalled(arg: any): void;
    handlePropertyAccess(prop: string): void;
    createBuilderProxy(): any;
}
declare class BuildPointer {
    lastWord: string;
    lastPointer: any;
    pointer: any;
    constructor(initialValue: any);
    overrideLastPointer(override: any): any;
    getLastPointer(): any;
    movePointer(prop: any): void;
    accessProp(prop: any): void;
}
export {};
