import { Field, PublicKey, MerkleMapWitness } from 'o1js'; export type NFTMetadata = { name: string; description: string; id: Field; cid: string; owner: PublicKey; isMinted: string; }; export type NFTReduced = { name: Field; description: Field; id: Field; cid: Field; owner: PublicKey; isMinted: Field; }; declare const NFT_base: (new (value: { name: import("o1js/dist/node/lib/field").Field; description: import("o1js/dist/node/lib/field").Field; id: import("o1js/dist/node/lib/field").Field; cid: import("o1js/dist/node/lib/field").Field; owner: PublicKey; isMinted: import("o1js/dist/node/lib/field").Field; }) => { name: import("o1js/dist/node/lib/field").Field; description: import("o1js/dist/node/lib/field").Field; id: import("o1js/dist/node/lib/field").Field; cid: import("o1js/dist/node/lib/field").Field; owner: PublicKey; isMinted: import("o1js/dist/node/lib/field").Field; }) & { _isStruct: true; } & import("o1js/dist/node/snarky").ProvablePure<{ name: import("o1js/dist/node/lib/field").Field; description: import("o1js/dist/node/lib/field").Field; id: import("o1js/dist/node/lib/field").Field; cid: import("o1js/dist/node/lib/field").Field; owner: PublicKey; isMinted: import("o1js/dist/node/lib/field").Field; }> & { toInput: (x: { name: import("o1js/dist/node/lib/field").Field; description: import("o1js/dist/node/lib/field").Field; id: import("o1js/dist/node/lib/field").Field; cid: import("o1js/dist/node/lib/field").Field; owner: PublicKey; isMinted: import("o1js/dist/node/lib/field").Field; }) => { fields?: import("o1js/dist/node/lib/field").Field[] | undefined; packed?: [import("o1js/dist/node/lib/field").Field, number][] | undefined; }; toJSON: (x: { name: import("o1js/dist/node/lib/field").Field; description: import("o1js/dist/node/lib/field").Field; id: import("o1js/dist/node/lib/field").Field; cid: import("o1js/dist/node/lib/field").Field; owner: PublicKey; isMinted: import("o1js/dist/node/lib/field").Field; }) => { name: string; description: string; id: string; cid: string; owner: string; isMinted: string; }; fromJSON: (x: { name: string; description: string; id: string; cid: string; owner: string; isMinted: string; }) => { name: import("o1js/dist/node/lib/field").Field; description: import("o1js/dist/node/lib/field").Field; id: import("o1js/dist/node/lib/field").Field; cid: import("o1js/dist/node/lib/field").Field; owner: PublicKey; isMinted: import("o1js/dist/node/lib/field").Field; }; empty: () => { name: import("o1js/dist/node/lib/field").Field; description: import("o1js/dist/node/lib/field").Field; id: import("o1js/dist/node/lib/field").Field; cid: import("o1js/dist/node/lib/field").Field; owner: PublicKey; isMinted: import("o1js/dist/node/lib/field").Field; }; }; export declare class NFT extends NFT_base { changeOwner(newAddress: PublicKey): void; mint(): void; toFields(): Field[]; hash(): Field; } export declare function createNFT(nftMetadata: NFTMetadata): NFT; export declare function createNFTWithMapWitness(nftMetadata: NFTMetadata): { nft: NFT; nftWitness: MerkleMapWitness; }; export {};