UNPKG

mina-attestations

Version:
222 lines (221 loc) 13.1 kB
import { Field, 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 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<Data> = { owner: PublicKey; data: Data; }; declare const Credential: { Unsigned: typeof Unsigned; Native: typeof Native; Imported: { create: <DataType extends NestedProvable, InputType extends import("./o1js-missing.ts").ProvableType, Data extends InferNestedProvable<DataType>, Input extends import("o1js").InferProvable<InputType>>(spec: { data: DataType; witness: ImportedWitnessSpec; }) => CredentialSpec<ImportedWitness<Input>, Data>; fromProgram: <DataType extends import("./o1js-missing.ts").ProvableType, InputType extends import("./o1js-missing.ts").ProvableType, Data extends import("o1js").InferProvable<DataType>, Input extends import("o1js").InferProvable<InputType>, AllInputs extends any[]>(program: { publicInputType: InputType; publicOutputType: import("./o1js-missing.ts").ProvableType<import("./credential.ts").Credential<Data>>; analyzeMethods(): Promise<Record<string, any>>; maxProofsVerified(): Promise<0 | 1 | 2>; compile: (options?: { cache?: import("o1js").Cache; forceRecompile?: boolean; proofsEnabled?: boolean; }) => Promise<{ verificationKey: import("o1js").VerificationKey; }>; run(...inputs: AllInputs): Promise<{ proof: import("o1js").Proof<Input, import("./credential.ts").Credential<Data>>; auxiliaryOutput: undefined; }>; }) => Promise<{ spec: CredentialSpec<ImportedWitness<Input>, Data>; program: { publicInputType: InputType; publicOutputType: import("./o1js-missing.ts").ProvableType<import("./credential.ts").Credential<Data>>; analyzeMethods(): Promise<Record<string, any>>; maxProofsVerified(): Promise<0 | 1 | 2>; compile: (options?: { cache?: import("o1js").Cache; forceRecompile?: boolean; proofsEnabled?: boolean; }) => Promise<{ verificationKey: import("o1js").VerificationKey; }>; run(...inputs: AllInputs): Promise<{ proof: import("o1js").Proof<Input, import("./credential.ts").Credential<Data>>; auxiliaryOutput: undefined; }>; }; create(...inputs: AllInputs): Promise<Imported<Data, Input>>; fromProof(proof: import("o1js").Proof<Input, import("./credential.ts").Credential<Data>>, vk: import("o1js").VerificationKey): Promise<Imported<Data, Input>>; compile(options?: { cache?: import("o1js").Cache; forceRecompile?: boolean; proofsEnabled?: boolean; }): Promise<import("o1js").VerificationKey>; dummy({ owner, data, }: import("./credential.ts").Credential<import("o1js").From<DataType>>): Promise<Imported<Data, Input>>; }>; fromMethod: <Config extends { name: string; publicInput?: NestedProvable; privateInput?: NestedProvable; data: NestedProvable; }>(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<T, import("node_modules/o1js/dist/node/lib/provable/field.js").Field> : never : never; privateInput: import("node_modules/o1js/dist/node/bindings/lib/provable-generic.js").InferProvable<Config extends { privateInput: infer Value; } ? Value : undefined, import("node_modules/o1js/dist/node/lib/provable/field.js").Field>; owner: PublicKey; }) => Promise<import("node_modules/o1js/dist/node/bindings/lib/provable-generic.js").InferProvable<Config extends { data: infer Value; } ? Value : undefined, import("node_modules/o1js/dist/node/lib/provable/field.js").Field>>) => Promise<{ create(inputs: { publicInput: import("o1js").From<Config extends { publicInput: infer Value; } ? Value : undefined>; privateInput: import("o1js").From<Config extends { privateInput: infer Value; } ? Value : undefined>; owner: PublicKey; }): Promise<Imported<import("o1js").InferProvable<Config extends { data: infer Value; } ? Value : undefined>, (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<T, import("node_modules/o1js/dist/node/lib/provable/field.js").Field> : never : never>>; spec: CredentialSpec<ImportedWitness<(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<T, import("node_modules/o1js/dist/node/lib/provable/field.js").Field> : never : never>, import("o1js").InferProvable<Config extends { data: infer Value; } ? Value : undefined>>; 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<T_1, import("node_modules/o1js/dist/node/lib/provable/field.js").Field> : never : never, import("o1js").InferValue<Config extends { publicInput: infer Value; } ? Value : undefined>>; publicOutputType: import("./o1js-missing.ts").ProvableType<import("./credential.ts").Credential<import("o1js").InferProvable<Config extends { data: infer Value; } ? Value : undefined>>>; analyzeMethods(): Promise<Record<string, any>>; maxProofsVerified(): Promise<0 | 1 | 2>; compile: (options?: { cache?: import("o1js").Cache; forceRecompile?: boolean; proofsEnabled?: boolean; }) => Promise<{ verificationKey: import("o1js").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<T_2, import("node_modules/o1js/dist/node/lib/provable/field.js").Field> : never : never, import("./credential.ts").Credential<import("o1js").InferProvable<Config extends { data: infer Value; } ? Value : undefined>>>; auxiliaryOutput: undefined; }>; }; 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<T_2, import("node_modules/o1js/dist/node/lib/provable/field.js").Field> : never : never, import("./credential.ts").Credential<import("o1js").InferProvable<Config extends { data: infer Value; } ? Value : undefined>>>, vk: import("o1js").VerificationKey) => Promise<Imported<import("o1js").InferProvable<Config extends { data: infer Value; } ? Value : undefined>, (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<T_3, import("node_modules/o1js/dist/node/lib/provable/field.js").Field> : never : never>>; compile: (options?: { cache?: import("o1js").Cache; forceRecompile?: boolean; proofsEnabled?: boolean; } | undefined) => Promise<import("o1js").VerificationKey>; dummy: ({ owner, data, }: import("./credential.ts").Credential<import("node_modules/o1js/dist/node/bindings/lib/provable-generic.js").InferProvable<Config extends { data: infer Value; } ? Value : undefined, import("node_modules/o1js/dist/node/lib/provable/field.js").Field> | import("o1js").InferValue<Config extends { data: infer Value; } ? Value : undefined>>) => Promise<Imported<import("o1js").InferProvable<Config extends { data: infer Value; } ? Value : undefined>, (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<T_2, import("node_modules/o1js/dist/node/lib/provable/field.js").Field> : never : never>>; }>; publicInputType: <Spec extends CredentialSpec>(credentialSpec: Spec) => import("./o1js-missing.ts").ProvableType; Generic: { witnessType<Input>(witnessSpec: import("./credential.ts").WitnessSpec): import("./nested.ts").NestedProvableFor<ImportedWitness<Input>>; verify({ vk, proof }: ImportedWitness, credHash: Field): void; validate({ vk, proof }: ImportedWitness, credHash: Field): Promise<void>; 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<StoredCredential>; /** * 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<Data>(credential: Credential<Data>): string; }; declare function validateCredential(credential: StoredCredential): Promise<void>; /** * 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<any, any>;