export declare const TREE_HEIGHT = 10;
declare const TreeWitness_base: typeof import("o1js/dist/node/lib/merkle_tree").BaseMerkleWitness;
export declare class TreeWitness extends TreeWitness_base {
}
declare const PrivateInput_base: (new (value: {
    witness: TreeWitness;
    secret: import("o1js/dist/node/lib/field").Field;
}) => {
    witness: TreeWitness;
    secret: import("o1js/dist/node/lib/field").Field;
}) & {
    _isStruct: true;
} & import("o1js/dist/node/snarky").ProvablePure<{
    witness: TreeWitness;
    secret: import("o1js/dist/node/lib/field").Field;
}> & {
    toInput: (x: {
        witness: TreeWitness;
        secret: import("o1js/dist/node/lib/field").Field;
    }) => {
        fields?: import("o1js/dist/node/lib/field").Field[] | undefined;
        packed?: [import("o1js/dist/node/lib/field").Field, number][] | undefined;
    };
    toJSON: (x: {
        witness: TreeWitness;
        secret: import("o1js/dist/node/lib/field").Field;
    }) => {
        witness: any;
        secret: string;
    };
    fromJSON: (x: {
        witness: any;
        secret: string;
    }) => {
        witness: TreeWitness;
        secret: import("o1js/dist/node/lib/field").Field;
    };
    empty: () => {
        witness: TreeWitness;
        secret: import("o1js/dist/node/lib/field").Field;
    };
};
export declare class PrivateInput extends PrivateInput_base {
}
declare const PublicInput_base: (new (value: {
    merkleRoot: import("o1js/dist/node/lib/field").Field;
}) => {
    merkleRoot: import("o1js/dist/node/lib/field").Field;
}) & {
    _isStruct: true;
} & import("o1js/dist/node/snarky").ProvablePure<{
    merkleRoot: import("o1js/dist/node/lib/field").Field;
}> & {
    toInput: (x: {
        merkleRoot: import("o1js/dist/node/lib/field").Field;
    }) => {
        fields?: import("o1js/dist/node/lib/field").Field[] | undefined;
        packed?: [import("o1js/dist/node/lib/field").Field, number][] | undefined;
    };
    toJSON: (x: {
        merkleRoot: import("o1js/dist/node/lib/field").Field;
    }) => {
        merkleRoot: string;
    };
    fromJSON: (x: {
        merkleRoot: string;
    }) => {
        merkleRoot: import("o1js/dist/node/lib/field").Field;
    };
    empty: () => {
        merkleRoot: import("o1js/dist/node/lib/field").Field;
    };
};
export declare class PublicInput extends PublicInput_base {
}
/** Prove knowledge of a preimage of a hash in a merkle tree.
 *  The proof reveals nothing, but the merkle root.
 */
export declare const MerkleMembershipProgram: {
    name: string;
    compile: (options?: {
        cache?: import("o1js/dist/node/lib/proof-system/cache").Cache | undefined;
        forceRecompile?: boolean | undefined;
    } | undefined) => Promise<{
        verificationKey: {
            data: string;
            hash: import("o1js/dist/node/lib/field").Field;
        };
    }>;
    verify: (proof: import("o1js/dist/node/lib/proof_system").Proof<PublicInput, void>) => Promise<boolean>;
    digest: () => string;
    analyzeMethods: () => {
        proveMembership: {
            rows: number;
            digest: string;
            result: unknown;
            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 PublicInput;
    publicOutputType: import("o1js/dist/node/lib/circuit_value").ProvablePureExtended<void, null>;
    privateInputTypes: {
        proveMembership: [typeof PrivateInput];
    };
    rawMethods: {
        proveMembership: (publicInput: PublicInput, ...args: [PrivateInput] & any[]) => void;
    };
} & {
    proveMembership: (publicInput: PublicInput, ...args: [PrivateInput] & any[]) => Promise<import("o1js/dist/node/lib/proof_system").Proof<PublicInput, void>>;
};
export declare const MerkleMembershipProof: {
    new ({ proof, publicInput, publicOutput, maxProofsVerified, }: {
        proof: unknown;
        publicInput: PublicInput;
        publicOutput: void;
        maxProofsVerified: 0 | 2 | 1;
    }): {
        publicInput: PublicInput;
        publicOutput: void;
        proof: unknown;
        maxProofsVerified: 0 | 2 | 1;
        shouldVerify: import("o1js/dist/node/lib/bool").Bool;
        verify(): void;
        verifyIf(condition: import("o1js/dist/node/lib/bool").Bool): void;
        toJSON(): import("o1js/dist/node/lib/proof_system").JsonProof;
    };
    publicInputType: typeof PublicInput;
    publicOutputType: import("o1js/dist/node/lib/circuit_value").ProvablePureExtended<void, null>;
    tag: () => {
        name: string;
        publicInputType: typeof PublicInput;
        publicOutputType: import("o1js/dist/node/lib/circuit_value").ProvablePureExtended<void, null>;
    };
    fromJSON<S extends (new (...args: any) => import("o1js/dist/node/lib/proof_system").Proof<unknown, unknown>) & {
        prototype: import("o1js/dist/node/lib/proof_system").Proof<any, any>;
        publicInputType: import("o1js/dist/node/lib/circuit_value").FlexibleProvablePure<any>;
        publicOutputType: import("o1js/dist/node/lib/circuit_value").FlexibleProvablePure<any>;
        tag: () => {
            name: string;
        };
        fromJSON: typeof import("o1js/dist/node/lib/proof_system").Proof.fromJSON;
        dummy: typeof import("o1js/dist/node/lib/proof_system").Proof.dummy;
    } & {
        prototype: import("o1js/dist/node/lib/proof_system").Proof<unknown, unknown>;
    }>(this: S, { maxProofsVerified, proof: proofString, publicInput: publicInputJson, publicOutput: publicOutputJson, }: import("o1js/dist/node/lib/proof_system").JsonProof): import("o1js/dist/node/lib/proof_system").Proof<import("o1js/dist/node/bindings/lib/provable-snarky").InferProvable<S["publicInputType"]>, import("o1js/dist/node/bindings/lib/provable-snarky").InferProvable<S["publicOutputType"]>>;
    dummy<Input, OutPut>(publicInput: Input, publicOutput: OutPut, maxProofsVerified: 0 | 2 | 1, domainLog2?: number | undefined): Promise<import("o1js/dist/node/lib/proof_system").Proof<Input, OutPut>>;
};
export {};
