@nori-zk/mina-token-bridge
Version:
A Mina zk-program contract allowing users to mint tokens on Nori Bridge.
33 lines (32 loc) • 1.77 kB
TypeScript
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>;
}