mina-attestations
Version:
Private Attestations on Mina
222 lines (221 loc) • 13.1 kB
TypeScript
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>;