UNPKG

@silvana-one/nft

Version:
208 lines (207 loc) 13.1 kB
/** * NFTProgram is a ZkProgram providing zero-knowledge proofs for updating NFT metadata. * It includes methods for inserting metadata entries and merging proofs. * * @module NFTProgram */ import { Field, Cache, SelfProof, Signature } from "o1js"; import { NFTState } from "../interfaces/types.js"; import { MetadataMap } from "../metadata/metadata.js"; export { NFTProgram }; /** * Defines the NFTProgram ZkProgram with methods for updating NFT metadata. */ declare const NFTProgram: { name: string; maxProofsVerified(): Promise<0 | 1 | 2>; compile: (options?: { cache?: Cache; forceRecompile?: boolean; proofsEnabled?: boolean; withRuntimeTables?: boolean; numChunks?: number; lazyMode?: boolean; }) => Promise<{ verificationKey: { data: string; hash: Field; }; }>; verify: (proof: import("o1js").Proof<NFTState, NFTState>) => Promise<boolean>; digest: () => Promise<string>; analyzeMethods: () => Promise<{ insertMetadata: import("node_modules/o1js/dist/node/lib/provable/core/provable-context.js").ConstraintSystemSummary & { proofs: import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofClass[]; }; merge: import("node_modules/o1js/dist/node/lib/provable/core/provable-context.js").ConstraintSystemSummary & { proofs: import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofClass[]; }; }>; analyzeSingleMethod<K extends "insertMetadata" | "merge">(methodName: K): Promise<import("node_modules/o1js/dist/node/lib/provable/core/provable-context.js").ConstraintSystemSummary & { proofs: import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofClass[]; }>; publicInputType: typeof NFTState; publicOutputType: typeof NFTState; privateInputTypes: { insertMetadata: [typeof MetadataMap, typeof import("node_modules/o1js/dist/node/lib/provable/field.js").Field & ((x: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/core/fieldvar.js").FieldConst | import("node_modules/o1js/dist/node/lib/provable/core/fieldvar.js").FieldVar | import("node_modules/o1js/dist/node/lib/provable/field.js").Field) => import("node_modules/o1js/dist/node/lib/provable/field.js").Field), typeof import("node_modules/o1js/dist/node/lib/provable/field.js").Field & ((x: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/core/fieldvar.js").FieldConst | import("node_modules/o1js/dist/node/lib/provable/core/fieldvar.js").FieldVar | import("node_modules/o1js/dist/node/lib/provable/field.js").Field) => import("node_modules/o1js/dist/node/lib/provable/field.js").Field), typeof Signature]; merge: [typeof SelfProof, typeof SelfProof]; }; auxiliaryOutputTypes: { insertMetadata: typeof MetadataMap; merge: undefined; }; rawMethods: { insertMetadata: (publicInput: NFTState, args_0: import("node_modules/o1js/dist/node/lib/provable/merkle-tree-indexed.js").IndexedMerkleMapBase, args_1: import("node_modules/o1js/dist/node/lib/provable/field.js").Field, args_2: import("node_modules/o1js/dist/node/lib/provable/field.js").Field, args_3: Signature) => Promise<{ publicOutput: NFTState; auxiliaryOutput: import("node_modules/o1js/dist/node/lib/provable/merkle-tree-indexed.js").IndexedMerkleMapBase; }>; merge: (publicInput: NFTState, args_0: SelfProof<unknown, unknown>, args_1: SelfProof<unknown, unknown>) => Promise<{ publicOutput: NFTState; }>; }; Proof: { new ({ proof, publicInput, publicOutput, maxProofsVerified, }: { proof: import("node_modules/o1js/dist/node/bindings.js").Pickles.Proof; publicInput: NFTState; publicOutput: NFTState; maxProofsVerified: 0 | 1 | 2; }): import("o1js").Proof<NFTState, NFTState>; fromJSON<S extends import("node_modules/o1js/dist/node/lib/util/types.js").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 | 1 | 2, domainLog2?: number): Promise<import("o1js").Proof<Input, OutPut>>; get provable(): { toFields: (value: import("o1js").Proof<any, any>) => import("node_modules/o1js/dist/node/lib/provable/field.js").Field[]; toAuxiliary: (value?: import("o1js").Proof<any, any> | undefined) => any[]; fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").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("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>; fromValue: (x: import("o1js").Proof<any, any> | import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>) => import("o1js").Proof<any, any>; toCanonical?: ((x: import("o1js").Proof<any, any>) => import("o1js").Proof<any, any>) | undefined; }; publicInputType: import("o1js").FlexibleProvable<any>; publicOutputType: import("o1js").FlexibleProvable<any>; tag: () => { name: string; }; publicFields(value: import("o1js").ProofBase): { input: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[]; output: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[]; }; _proofFromBase64(proofString: import("node_modules/o1js/dist/node/bindings.js").Base64ProofString, maxProofsVerified: 0 | 1 | 2): unknown; _proofToBase64(proof: import("node_modules/o1js/dist/node/bindings.js").Pickles.Proof, maxProofsVerified: 0 | 1 | 2): string; }; proofsEnabled: boolean; setProofsEnabled(proofsEnabled: boolean): void; } & { insertMetadata: (publicInput: NFTState | { immutableState: import("../interfaces/types.js").NFTImmutableState | { canChangeOwnerByProof: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; canTransfer: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; canApprove: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; canChangeMetadata: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; canChangeStorage: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; canChangeName: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; canChangeMetadataVerificationKeyHash: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; canPause: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; address: import("o1js").PublicKey | { x: Field | bigint; isOdd: import("o1js").Bool | boolean; }; tokenId: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field; id: number | bigint | import("o1js").UInt64; }; name: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field; owner: import("o1js").PublicKey | { x: Field | bigint; isOdd: import("o1js").Bool | boolean; }; approved: import("o1js").PublicKey | { x: Field | bigint; isOdd: import("o1js").Bool | boolean; }; metadata: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field; storage: import("@silvana-one/storage").Storage | { url: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[] | bigint[]; }; version: number | bigint | import("o1js").UInt64; isPaused: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; metadataVerificationKeyHash: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field; creator: import("o1js").PublicKey | { x: Field | bigint; isOdd: import("o1js").Bool | boolean; }; context: import("../interfaces/types.js").NFTTransactionContext | { custom: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[] | bigint[]; }; oracleAddress: import("o1js").PublicKey | { x: Field | bigint; isOdd: import("o1js").Bool | boolean; }; }, args_0: import("node_modules/o1js/dist/node/lib/provable/merkle-tree-indexed.js").IndexedMerkleMapBase | { _internalRoot: bigint; length: bigint; data: { nodes: (bigint | undefined)[][]; sortedLeaves: { readonly value: bigint; readonly key: bigint; readonly nextKey: bigint; readonly index: number; }[]; }; }, args_1: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field, args_2: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field, args_3: Signature | { r: Field | bigint; s: import("o1js").Scalar | bigint; }) => Promise<{ proof: import("o1js").Proof<NFTState, NFTState>; auxiliaryOutput: import("node_modules/o1js/dist/node/lib/provable/merkle-tree-indexed.js").IndexedMerkleMapBase; }>; merge: (publicInput: NFTState | { immutableState: import("../interfaces/types.js").NFTImmutableState | { canChangeOwnerByProof: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; canTransfer: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; canApprove: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; canChangeMetadata: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; canChangeStorage: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; canChangeName: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; canChangeMetadataVerificationKeyHash: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; canPause: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; address: import("o1js").PublicKey | { x: Field | bigint; isOdd: import("o1js").Bool | boolean; }; tokenId: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field; id: number | bigint | import("o1js").UInt64; }; name: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field; owner: import("o1js").PublicKey | { x: Field | bigint; isOdd: import("o1js").Bool | boolean; }; approved: import("o1js").PublicKey | { x: Field | bigint; isOdd: import("o1js").Bool | boolean; }; metadata: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field; storage: import("@silvana-one/storage").Storage | { url: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[] | bigint[]; }; version: number | bigint | import("o1js").UInt64; isPaused: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool; metadataVerificationKeyHash: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field; creator: import("o1js").PublicKey | { x: Field | bigint; isOdd: import("o1js").Bool | boolean; }; context: import("../interfaces/types.js").NFTTransactionContext | { custom: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[] | bigint[]; }; oracleAddress: import("o1js").PublicKey | { x: Field | bigint; isOdd: import("o1js").Bool | boolean; }; }, args_0: import("o1js").Proof<any, any> | import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>, args_1: import("o1js").Proof<any, any> | import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>) => Promise<{ proof: import("o1js").Proof<NFTState, NFTState>; auxiliaryOutput: undefined; }>; };