import { Field, SelfProof } from 'o1js';
export declare const AddZkProgram: {
    name: string;
    compile: (options?: {
        cache?: import("o1js").Cache;
        forceRecompile?: boolean;
        proofsEnabled?: boolean;
    }) => Promise<{
        verificationKey: {
            data: string;
            hash: Field;
        };
    }>;
    verify: (proof: import("o1js").Proof<import("o1js/dist/node/lib/provable/field").Field, import("o1js/dist/node/lib/provable/field").Field>) => Promise<boolean>;
    digest: () => Promise<string>;
    analyzeMethods: () => Promise<{
        init: {
            rows: number;
            digest: string;
            gates: import("o1js/dist/node/snarky").Gate[];
            publicInputSize: number;
            print(): void;
            summary(): Partial<Record<import("o1js/dist/node/snarky").GateType | "Total rows", number>>;
        };
        update: {
            rows: number;
            digest: string;
            gates: import("o1js/dist/node/snarky").Gate[];
            publicInputSize: number;
            print(): void;
            summary(): Partial<Record<import("o1js/dist/node/snarky").GateType | "Total rows", number>>;
        };
    }>;
    publicInputType: typeof import("o1js/dist/node/lib/provable/field").Field & ((x: string | number | bigint | import("o1js/dist/node/lib/provable/core/fieldvar").FieldConst | import("o1js/dist/node/lib/provable/core/fieldvar").FieldVar | import("o1js/dist/node/lib/provable/field").Field) => import("o1js/dist/node/lib/provable/field").Field);
    publicOutputType: typeof import("o1js/dist/node/lib/provable/field").Field & ((x: string | number | bigint | import("o1js/dist/node/lib/provable/core/fieldvar").FieldConst | import("o1js/dist/node/lib/provable/core/fieldvar").FieldVar | import("o1js/dist/node/lib/provable/field").Field) => import("o1js/dist/node/lib/provable/field").Field);
    privateInputTypes: {
        init: [];
        update: [typeof SelfProof];
    };
    auxiliaryOutputTypes: {
        init: undefined;
        update: undefined;
    };
    rawMethods: {
        init: (publicInput: import("o1js/dist/node/lib/provable/field").Field, ...args: [] & any[]) => Promise<{
            publicOutput: import("o1js/dist/node/lib/provable/field").Field;
        }>;
        update: (publicInput: import("o1js/dist/node/lib/provable/field").Field, ...args: [SelfProof<unknown, unknown>] & any[]) => Promise<{
            publicOutput: import("o1js/dist/node/lib/provable/field").Field;
        }>;
    };
    proofsEnabled: boolean;
    setProofsEnabled(proofsEnabled: boolean): void;
} & {
    init: (publicInput: import("o1js/dist/node/lib/provable/field").Field, ...args: [] & any[]) => Promise<{
        proof: import("o1js").Proof<import("o1js/dist/node/lib/provable/field").Field, import("o1js/dist/node/lib/provable/field").Field>;
        auxiliaryOutput: undefined;
    }>;
    update: (publicInput: import("o1js/dist/node/lib/provable/field").Field, ...args: [SelfProof<unknown, unknown>] & any[]) => Promise<{
        proof: import("o1js").Proof<import("o1js/dist/node/lib/provable/field").Field, import("o1js/dist/node/lib/provable/field").Field>;
        auxiliaryOutput: undefined;
    }>;
};
declare const AddProgramProof_base: {
    new ({ proof, publicInput, publicOutput, maxProofsVerified, }: {
        proof: unknown;
        publicInput: import("o1js/dist/node/lib/provable/field").Field;
        publicOutput: import("o1js/dist/node/lib/provable/field").Field;
        maxProofsVerified: 0 | 2 | 1;
    }): import("o1js").Proof<import("o1js/dist/node/lib/provable/field").Field, import("o1js/dist/node/lib/provable/field").Field>;
    fromJSON<S extends import("o1js/dist/node/lib/util/types").Subclass<typeof import("o1js").Proof>>(this: S, { maxProofsVerified, proof: proofString, publicInput: publicInputJson, publicOutput: publicOutputJson, }: import("o1js").JsonProof): Promise<import("o1js").Proof<import("o1js").InferProvable<S["publicInputType"]>, import("o1js").InferProvable<S["publicOutputType"]>>>;
    dummy<Input, OutPut>(publicInput: Input, publicOutput: OutPut, maxProofsVerified: 0 | 2 | 1, domainLog2?: number): Promise<import("o1js").Proof<Input, OutPut>>;
    readonly provable: {
        toFields: (value: import("o1js").Proof<any, any>) => import("o1js/dist/node/lib/provable/field").Field[];
        toAuxiliary: (value?: import("o1js").Proof<any, any> | undefined) => any[];
        fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[], aux: any[]) => import("o1js").Proof<any, any>;
        sizeInFields(): number;
        check: (value: import("o1js").Proof<any, any>) => void;
        toValue: (x: import("o1js").Proof<any, any>) => import("o1js/dist/node/lib/proof-system/proof").ProofValue<any, any>;
        fromValue: (x: import("o1js").Proof<any, any> | import("o1js/dist/node/lib/proof-system/proof").ProofValue<any, any>) => import("o1js").Proof<any, any>;
        toCanonical?: ((x: import("o1js").Proof<any, any>) => import("o1js").Proof<any, any>) | undefined;
    };
    publicInputType: import("o1js").FlexibleProvablePure<any>;
    publicOutputType: import("o1js").FlexibleProvablePure<any>;
    tag: () => {
        name: string;
    };
    publicFields(value: import("o1js").ProofBase<any, any>): {
        input: import("o1js/dist/node/lib/provable/field").Field[];
        output: import("o1js/dist/node/lib/provable/field").Field[];
    };
} & {
    provable: import("o1js").Provable<import("o1js").Proof<import("o1js/dist/node/lib/provable/field").Field, import("o1js/dist/node/lib/provable/field").Field>, import("o1js/dist/node/lib/proof-system/proof").ProofValue<bigint, bigint>>;
};
export declare class AddProgramProof extends AddProgramProof_base {
}
export {};
