import { AccountUpdate, AccountUpdateForest, Bool, JsonProof, PublicKey, State, TokenContract, VerificationKey } from 'o1js';
import { FungibleTokenAdminBase, NoriTokenControllerDeployProps } from './types.js';
import { EthDepositProgramProofType } from './e2ePrerequisites.js';
import { ProvableEcdsaSigPresentation } from './credentialAttestation.js';
export interface MintProofData {
    ethDepositProof: EthDepositProgramProofType;
    presentationProof: ProvableEcdsaSigPresentation;
}
export interface MintProofDataJson {
    ethDepositProofJson: JsonProof;
    presentationProofStr: string;
}
export declare class NoriTokenController extends TokenContract implements FungibleTokenAdminBase {
    adminPublicKey: State<PublicKey>;
    tokenBaseAddress: State<PublicKey>;
    ethProcessorAddress: State<PublicKey>;
    storageVKHash: State<import("o1js/dist/node/lib/provable/field.js").Field>;
    mintLock: State<import("o1js/dist/node/lib/provable/bool.js").Bool>;
    deploy(props: NoriTokenControllerDeployProps): Promise<void>;
    approveBase(forest: AccountUpdateForest): Promise<void>;
    setUpStorage(user: PublicKey, vk: VerificationKey): Promise<void>;
    /** Update the verification key.
     */
    updateVerificationKey(vk: VerificationKey): Promise<void>;
    private ensureAdminSignature;
    noriMint(ethDepositProof: EthDepositProgramProofType, presentationProof: ProvableEcdsaSigPresentation): Promise<void>;
    canMint(_accountUpdate: AccountUpdate): Promise<import("o1js/dist/node/lib/provable/bool.js").Bool>;
    canChangeAdmin(_admin: PublicKey): Promise<import("o1js/dist/node/lib/provable/bool.js").Bool>;
    canPause(): Promise<Bool>;
    canResume(): Promise<Bool>;
    canChangeVerificationKey(_vk: VerificationKey): Promise<Bool>;
}
