import { Field, type VerificationKey, type PublicKey } from 'o1js'; import { createUnsigned, type CredentialSpec, type StoredCredential, Unsigned } from './credential.ts'; import { createNative, Native } from './credential-native.ts'; import { Imported, ImportedWitnessSpec, type ImportedWitness } from './credential-imported.ts'; import { type InferNestedProvable, NestedProvable } from './nested.ts'; import { type VerificationKeyJSON, type CredentialSpecJSON } from './validation.ts'; export { Credential }; /** * A credential is a generic piece of data (the "attributes") along with an owner represented by a public key. */ type Credential = { owner: PublicKey; data: Data; }; declare const Credential: { Unsigned: typeof Unsigned; Native: typeof Native; Imported: { create: , Input extends import("o1js").InferProvable>(spec: { data: DataType; witness: ImportedWitnessSpec; }) => CredentialSpec, Data>; fromProgram: , Input extends import("o1js").InferProvable, AllInputs extends any[]>(program: { publicInputType: InputType; publicOutputType: import("./o1js-missing.ts").ProvableType>; analyzeMethods(): Promise>; maxProofsVerified(): Promise<0 | 1 | 2>; compile: (options?: { cache?: import("o1js").Cache; forceRecompile?: boolean; proofsEnabled?: boolean; }) => Promise<{ verificationKey: VerificationKey; }>; run(...inputs: AllInputs): Promise<{ proof: import("o1js").Proof>; auxiliaryOutput: undefined; }>; }) => Promise<{ spec: CredentialSpec, Data>; program: { publicInputType: InputType; publicOutputType: import("./o1js-missing.ts").ProvableType>; analyzeMethods(): Promise>; maxProofsVerified(): Promise<0 | 1 | 2>; compile: (options?: { cache?: import("o1js").Cache; forceRecompile?: boolean; proofsEnabled?: boolean; }) => Promise<{ verificationKey: VerificationKey; }>; run(...inputs: AllInputs): Promise<{ proof: import("o1js").Proof>; auxiliaryOutput: undefined; }>; }; isCompiled: boolean; verificationKey: VerificationKey | undefined; create(...inputs: AllInputs): Promise>; fromProof(proof: import("o1js").Proof>, vk: VerificationKey): Promise>; compile(options?: { cache?: import("o1js").Cache; forceRecompile?: boolean; proofsEnabled?: boolean; }): Promise; dummy({ owner, data, }: import("./credential.ts").Credential>): Promise>; }>; fromMethod: (spec: Config, method: (inputs: { publicInput: (Config extends { publicInput: infer Value; } ? Value : undefined) extends infer T ? T extends (Config extends { publicInput: infer Value; } ? Value : undefined) ? T extends undefined ? undefined : import("node_modules/o1js/dist/node/bindings/lib/provable-generic.js").InferProvable : never : never; privateInput: import("node_modules/o1js/dist/node/bindings/lib/provable-generic.js").InferProvable; owner: PublicKey; }) => Promise>) => Promise : never : never>, import("node_modules/o1js/dist/node/bindings/lib/provable-generic.js").InferProvable>; program: { publicInputType: import("o1js").Provable<(Config extends { publicInput: infer Value; } ? Value : undefined) extends infer T_1 ? T_1 extends (Config extends { publicInput: infer Value; } ? Value : undefined) ? T_1 extends undefined ? undefined : import("node_modules/o1js/dist/node/bindings/lib/provable-generic.js").InferProvable : never : never, import("o1js").InferValue>; publicOutputType: import("./o1js-missing.ts").ProvableType>>; analyzeMethods(): Promise>; maxProofsVerified(): Promise<0 | 1 | 2>; compile: (options?: { cache?: import("o1js").Cache; forceRecompile?: boolean; proofsEnabled?: boolean; }) => Promise<{ verificationKey: VerificationKey; }>; run(...inputs: any): Promise<{ proof: import("o1js").Proof<(Config extends { publicInput: infer Value; } ? Value : undefined) extends infer T_2 ? T_2 extends (Config extends { publicInput: infer Value; } ? Value : undefined) ? T_2 extends undefined ? undefined : import("node_modules/o1js/dist/node/bindings/lib/provable-generic.js").InferProvable : never : never, import("./credential.ts").Credential>>; auxiliaryOutput: undefined; }>; }; isCompiled: boolean; verificationKey: VerificationKey | undefined; create(...inputs: any): Promise, (Config extends { publicInput: infer Value; } ? Value : undefined) extends infer T_2 ? T_2 extends (Config extends { publicInput: infer Value; } ? Value : undefined) ? T_2 extends undefined ? undefined : import("node_modules/o1js/dist/node/bindings/lib/provable-generic.js").InferProvable : never : never>>; fromProof(proof: import("o1js").Proof<(Config extends { publicInput: infer Value; } ? Value : undefined) extends infer T_2 ? T_2 extends (Config extends { publicInput: infer Value; } ? Value : undefined) ? T_2 extends undefined ? undefined : import("node_modules/o1js/dist/node/bindings/lib/provable-generic.js").InferProvable : never : never, import("./credential.ts").Credential>>, vk: VerificationKey): Promise, (Config extends { publicInput: infer Value; } ? Value : undefined) extends infer T_3 ? T_3 extends (Config extends { publicInput: infer Value; } ? Value : undefined) ? T_3 extends undefined ? undefined : import("node_modules/o1js/dist/node/bindings/lib/provable-generic.js").InferProvable : never : never>>; compile(options?: { cache?: import("o1js").Cache; forceRecompile?: boolean; proofsEnabled?: boolean; } | undefined): Promise; dummy({ owner, data, }: import("./credential.ts").Credential | import("o1js").InferValue>): Promise, (Config extends { publicInput: infer Value; } ? Value : undefined) extends infer T_2 ? T_2 extends (Config extends { publicInput: infer Value; } ? Value : undefined) ? T_2 extends undefined ? undefined : import("node_modules/o1js/dist/node/bindings/lib/provable-generic.js").InferProvable : never : never>>; }, "create"> & { create(inputs: { publicInput: import("o1js").From; privateInput: import("o1js").From; owner: PublicKey; }): Promise, (Config extends { publicInput: infer Value; } ? Value : undefined) extends infer T_2 ? T_2 extends (Config extends { publicInput: infer Value; } ? Value : undefined) ? T_2 extends undefined ? undefined : import("node_modules/o1js/dist/node/bindings/lib/provable-generic.js").InferProvable : never : never>>; }>; publicInputType: (credentialSpec: Spec) => import("./o1js-missing.ts").ProvableType; Generic: { witnessType(witnessSpec: import("./credential.ts").WitnessSpec): import("./nested.ts").NestedProvableFor>; verify({ vk, proof }: ImportedWitness, credHash: Field): void; validate({ vk, proof }: ImportedWitness, credHash: Field): Promise; matchesSpec(witness: ImportedWitness): boolean; }; }; /** * Issue a "native" signed credential. */ sign: typeof createNative; /** * Create a dummy credential with no owner and no signature. */ unsigned: typeof createUnsigned; /** * Serialize a credential to a JSON string. */ toJSON(credential: StoredCredential): string; /** * Deserialize a credential from a JSON string. */ fromJSON(json: string): Promise; /** * Validate a credential. */ validate: typeof validateCredential; specToJSON: typeof specToJSON; specFromJSON: typeof specFromJSON; /** * Serialize the data input to a `signCredential()` call. * * The resulting string is accepted as input to `Credential.sign()`. * * Example * ```ts * let credentialData = { owner: publicKey, data: { name: 'Alice' } }; * let credentialDataJson = Credential.dataToJSON(credentialData); * * let credential = Credential.sign(privateKey, credentialDataJson); * ``` */ dataToJSON(credential: Credential): string; importedToJSON: typeof importedToJSON; importedFromJSON: typeof importedFromJSON; }; declare function validateCredential(credential: StoredCredential): Promise; /** * Serialize a credential spec to a JSON value. */ declare function specToJSON(spec: CredentialSpec): CredentialSpecJSON; /** * Deserialize a credential spec from a JSON value. */ declare function specFromJSON(json: CredentialSpecJSON): CredentialSpec; declare function importedToJSON({ spec, verificationKey: vk, }: { spec: CredentialSpec; verificationKey: VerificationKey | undefined; }): { spec: CredentialSpecJSON; verificationKey: VerificationKeyJSON; }; declare function importedFromJSON = CredentialSpec>(json: unknown): { spec: Spec; verificationKey: VerificationKey; };