UNPKG

mina-attestations

Version:
247 lines (246 loc) 15.2 kB
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<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: 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: VerificationKey; }>; run(...inputs: AllInputs): Promise<{ proof: import("o1js").Proof<Input, import("./credential.ts").Credential<Data>>; auxiliaryOutput: undefined; }>; }; isCompiled: boolean; verificationKey: VerificationKey | undefined; create(...inputs: AllInputs): Promise<Imported<Data, Input>>; fromProof(proof: import("o1js").Proof<Input, import("./credential.ts").Credential<Data>>, vk: VerificationKey): Promise<Imported<Data, Input>>; compile(options?: { cache?: import("o1js").Cache; forceRecompile?: boolean; proofsEnabled?: boolean; }): Promise<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<Omit<{ 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("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>>; 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("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>>>; analyzeMethods(): Promise<Record<string, any>>; 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<T_2, import("node_modules/o1js/dist/node/lib/provable/field.js").Field> : never : never, 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>>>; auxiliaryOutput: undefined; }>; }; isCompiled: boolean; verificationKey: VerificationKey | undefined; create(...inputs: any): Promise<Imported<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>, (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>>; 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("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>>>, vk: VerificationKey): Promise<Imported<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>, (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<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("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>, (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>>; }, "create"> & { 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_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; importedToJSON: typeof importedToJSON; importedFromJSON: typeof importedFromJSON; }; 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>; declare function importedToJSON({ spec, verificationKey: vk, }: { spec: CredentialSpec<any, any>; verificationKey: VerificationKey | undefined; }): { spec: CredentialSpecJSON; verificationKey: VerificationKeyJSON; }; declare function importedFromJSON<Spec extends CredentialSpec<any, any> = CredentialSpec>(json: unknown): { spec: Spec; verificationKey: VerificationKey; };