@silvana-one/nft
Version:
Mina NFT library
204 lines (203 loc) • 12.8 kB
TypeScript
/**
* 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;
}) => 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[];
};
}>;
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>>;
readonly 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 | {
root: 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;
}>;
};