import { Field } from 'o1js';
import { EthVerifier } from './EthVerifier';
export type Constructor<T = any> = new (...args: any) => T;
export interface Proof {
    Plonk: {
        encoded_proof: string;
        plonk_vkey_hash: number[];
        public_inputs: string[];
        raw_proof: string;
    };
}
export interface PublicValues {
    buffer: {
        data: number[];
    };
}
export interface PlonkProof {
    proof: Proof;
    public_values: PublicValues;
    sp1_version: string;
}
export interface ConvertedProofProofData {
    maxProofsVerified: 0 | 1 | 2;
    proof: string;
    publicInput: string[];
    publicOutput: string[];
}
export interface ConvertedProofVkData {
    data: string;
    hash: string;
}
export interface ConvertedProof {
    vkData: ConvertedProofVkData;
    proofData: ConvertedProofProofData;
}
export interface CreateProofArgument {
    sp1PlonkProof: PlonkProof;
    conversionOutputProof: ConvertedProof;
}
export type EthVerifierComputeOutput = Awaited<ReturnType<typeof EthVerifier.compute>>;
export type VerificationKey = {
    data: string;
    hash: Field;
};
declare const Bytes32_base: typeof import("o1js/dist/node/lib/provable/bytes").Bytes;
export declare class Bytes32 extends Bytes32_base {
    static get zero(): Bytes32;
}
declare const Bytes20_base: typeof import("o1js/dist/node/lib/provable/bytes").Bytes;
export declare class Bytes20 extends Bytes20_base {
    static get zero(): Bytes20;
}
declare const Bytes32FieldPair_base: (new (value: {
    highByteField: import("o1js/dist/node/lib/provable/field").Field;
    lowerBytesField: import("o1js/dist/node/lib/provable/field").Field;
}) => {
    highByteField: import("o1js/dist/node/lib/provable/field").Field;
    lowerBytesField: import("o1js/dist/node/lib/provable/field").Field;
}) & {
    _isStruct: true;
} & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
    highByteField: import("o1js/dist/node/lib/provable/field").Field;
    lowerBytesField: import("o1js/dist/node/lib/provable/field").Field;
}, {
    highByteField: bigint;
    lowerBytesField: bigint;
}>, "fromFields"> & {
    fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
        highByteField: import("o1js/dist/node/lib/provable/field").Field;
        lowerBytesField: import("o1js/dist/node/lib/provable/field").Field;
    };
} & {
    fromValue: (value: {
        highByteField: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
        lowerBytesField: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
    }) => {
        highByteField: import("o1js/dist/node/lib/provable/field").Field;
        lowerBytesField: import("o1js/dist/node/lib/provable/field").Field;
    };
    toInput: (x: {
        highByteField: import("o1js/dist/node/lib/provable/field").Field;
        lowerBytesField: import("o1js/dist/node/lib/provable/field").Field;
    }) => {
        fields?: Field[] | undefined;
        packed?: [Field, number][] | undefined;
    };
    toJSON: (x: {
        highByteField: import("o1js/dist/node/lib/provable/field").Field;
        lowerBytesField: import("o1js/dist/node/lib/provable/field").Field;
    }) => {
        highByteField: string;
        lowerBytesField: string;
    };
    fromJSON: (x: {
        highByteField: string;
        lowerBytesField: string;
    }) => {
        highByteField: import("o1js/dist/node/lib/provable/field").Field;
        lowerBytesField: import("o1js/dist/node/lib/provable/field").Field;
    };
    empty: () => {
        highByteField: import("o1js/dist/node/lib/provable/field").Field;
        lowerBytesField: import("o1js/dist/node/lib/provable/field").Field;
    };
};
export declare class Bytes32FieldPair extends Bytes32FieldPair_base {
    static fromBytes32(bytes32: Bytes32): Bytes32FieldPair;
}
export {};
