mina-attestations
Version:
Private Attestations on Mina
384 lines (383 loc) • 21.9 kB
TypeScript
import { PublicKey, Bool, Unconstrained, Bytes, Field } from 'o1js';
export { ZkPass, type ZkPassResponseItem };
/**
* Utilities to help process zkpass responses.
*/
declare const ZkPass: {
importCredentialPartial: typeof importCredentialPartial;
verifyPublicInput: typeof verifyPublicInput;
encodeParameters: typeof encodeParameters;
genPublicFieldHash: typeof genPublicFieldHash;
CredentialPartial(): Promise<{
create(inputs: {
publicInput: {
schema: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes | {
bytes: {
value: bigint;
}[];
};
taskId: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes | {
bytes: {
value: bigint;
}[];
};
validatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes | {
bytes: {
value: bigint;
}[];
};
allocatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes | {
bytes: {
value: bigint;
}[];
};
allocatorSignature: {
r: bigint | [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field] | import("node_modules/o1js/dist/node/lib/provable/gadgets/foreign-field.js").Field3;
s: bigint | [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field] | import("node_modules/o1js/dist/node/lib/provable/gadgets/foreign-field.js").Field3;
};
allocatorParityBit: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
};
privateInput: {
uHash: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes | {
bytes: {
value: bigint;
}[];
};
publicFieldsHash: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes | {
bytes: {
value: bigint;
}[];
};
validatorSignature: import("o1js").EcdsaSignature | {
r: bigint;
s: bigint;
};
validatorParityBit: boolean | Unconstrained<boolean>;
};
owner: PublicKey;
}): Promise<import("../credential-imported.ts").Imported<{
nullifier: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
publicFieldsHash: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}, {
schema: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
taskId: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
validatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
allocatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
allocatorSignature: {
r: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field];
s: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field];
};
allocatorParityBit: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
}>>;
spec: import("../credential.ts").CredentialSpec<import("../credential-imported.ts").ImportedWitness<{
schema: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
taskId: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
validatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
allocatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
allocatorSignature: {
r: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field];
s: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field];
};
allocatorParityBit: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
}>, {
nullifier: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
publicFieldsHash: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}>;
program: {
publicInputType: import("o1js").Provable<{
schema: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
taskId: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
validatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
allocatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
allocatorSignature: {
r: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field];
s: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field];
};
allocatorParityBit: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
}, {
schema: {
bytes: {
value: bigint;
}[];
};
taskId: {
bytes: {
value: bigint;
}[];
};
validatorAddress: {
bytes: {
value: bigint;
}[];
};
allocatorAddress: {
bytes: {
value: bigint;
}[];
};
allocatorSignature: {
r: bigint;
s: bigint;
};
allocatorParityBit: boolean;
}>;
publicOutputType: import("../o1js-missing.ts").ProvableType<import("../credential.ts").Credential<{
nullifier: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
publicFieldsHash: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}>>;
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<{
schema: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
taskId: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
validatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
allocatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
allocatorSignature: {
r: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field];
s: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field];
};
allocatorParityBit: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
}, import("../credential.ts").Credential<{
nullifier: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
publicFieldsHash: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}>>;
auxiliaryOutput: undefined;
}>;
};
fromProof: (proof: import("o1js").Proof<{
schema: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
taskId: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
validatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
allocatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
allocatorSignature: {
r: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field];
s: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field];
};
allocatorParityBit: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
}, import("../credential.ts").Credential<{
nullifier: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
publicFieldsHash: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}>>, vk: import("o1js").VerificationKey) => Promise<import("../credential-imported.ts").Imported<{
nullifier: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
publicFieldsHash: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}, {
schema: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
taskId: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
validatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
allocatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
allocatorSignature: {
r: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field];
s: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field];
};
allocatorParityBit: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
}>>;
compile: (options?: {
cache?: import("o1js").Cache;
forceRecompile?: boolean;
proofsEnabled?: boolean;
} | undefined) => Promise<import("o1js").VerificationKey>;
dummy: ({ owner, data, }: import("../credential.ts").Credential<{
nullifier: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
publicFieldsHash: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
} | {
nullifier: {
bytes: {
value: bigint;
}[];
};
publicFieldsHash: {
bytes: {
value: bigint;
}[];
};
}>) => Promise<import("../credential-imported.ts").Imported<{
nullifier: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
publicFieldsHash: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}, {
schema: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
taskId: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
validatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
allocatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
allocatorSignature: {
r: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field];
s: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field];
};
allocatorParityBit: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
}>>;
}>;
compileDependenciesPartial({ proofsEnabled }?: {
proofsEnabled?: boolean | undefined;
}): Promise<void>;
CredentialFull(): Promise<{
create(inputs: {
publicInput: {
allocatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes | {
bytes: {
value: bigint;
}[];
};
};
privateInput: {
allocatorMessage: Uint8Array<ArrayBufferLike> | import("../dynamic.ts").DynamicBytesBase;
allocatorSignature: import("o1js").EcdsaSignature | {
r: bigint;
s: bigint;
};
allocatorParityBit: boolean | Unconstrained<boolean>;
validatorMessage: Uint8Array<ArrayBufferLike> | import("../dynamic.ts").DynamicBytesBase;
validatorSignature: import("o1js").EcdsaSignature | {
r: bigint;
s: bigint;
};
validatorParityBit: boolean | Unconstrained<boolean>;
validatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes | {
bytes: {
value: bigint;
}[];
};
};
owner: PublicKey;
}): Promise<import("../credential-imported.ts").Imported<{
allocatorMessage: import("../dynamic.ts").DynamicBytesBase;
validatorMessage: import("../dynamic.ts").DynamicBytesBase;
}, {
allocatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}>>;
spec: import("../credential.ts").CredentialSpec<import("../credential-imported.ts").ImportedWitness<{
allocatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}>, {
allocatorMessage: import("../dynamic.ts").DynamicBytesBase;
validatorMessage: import("../dynamic.ts").DynamicBytesBase;
}>;
program: {
publicInputType: import("o1js").Provable<{
allocatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}, {
allocatorAddress: {
bytes: {
value: bigint;
}[];
};
}>;
publicOutputType: import("../o1js-missing.ts").ProvableType<import("../credential.ts").Credential<{
allocatorMessage: import("../dynamic.ts").DynamicBytesBase;
validatorMessage: import("../dynamic.ts").DynamicBytesBase;
}>>;
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<{
allocatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}, import("../credential.ts").Credential<{
allocatorMessage: import("../dynamic.ts").DynamicBytesBase;
validatorMessage: import("../dynamic.ts").DynamicBytesBase;
}>>;
auxiliaryOutput: undefined;
}>;
};
fromProof: (proof: import("o1js").Proof<{
allocatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}, import("../credential.ts").Credential<{
allocatorMessage: import("../dynamic.ts").DynamicBytesBase;
validatorMessage: import("../dynamic.ts").DynamicBytesBase;
}>>, vk: import("o1js").VerificationKey) => Promise<import("../credential-imported.ts").Imported<{
allocatorMessage: import("../dynamic.ts").DynamicBytesBase;
validatorMessage: import("../dynamic.ts").DynamicBytesBase;
}, {
allocatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}>>;
compile: (options?: {
cache?: import("o1js").Cache;
forceRecompile?: boolean;
proofsEnabled?: boolean;
} | undefined) => Promise<import("o1js").VerificationKey>;
dummy: ({ owner, data, }: import("../credential.ts").Credential<{
allocatorMessage: import("../dynamic.ts").DynamicBytesBase;
validatorMessage: import("../dynamic.ts").DynamicBytesBase;
} | {
allocatorMessage: Uint8Array<ArrayBufferLike>;
validatorMessage: Uint8Array<ArrayBufferLike>;
}>) => Promise<import("../credential-imported.ts").Imported<{
allocatorMessage: import("../dynamic.ts").DynamicBytesBase;
validatorMessage: import("../dynamic.ts").DynamicBytesBase;
}, {
allocatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}>>;
}>;
compileDependenciesFull({ proofsEnabled }?: {
proofsEnabled?: boolean | undefined;
}): Promise<void>;
};
type Type = 'bytes32' | 'address';
type PublicField = string | ({
[key: string]: PublicField;
} & {
str?: string;
});
type ZkPassResponseItem = {
taskId: string;
publicFields: PublicField[];
allocatorAddress: string;
publicFieldsHash: string;
allocatorSignature: string;
uHash: string;
validatorAddress: string;
validatorSignature: string;
};
declare function importCredentialPartial(owner: PublicKey, schema: string, response: ZkPassResponseItem, log?: (msg: string) => void, { proofsEnabled }?: {
proofsEnabled?: boolean | undefined;
}): Promise<import("../credential-imported.ts").Imported<{
nullifier: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
publicFieldsHash: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}, {
schema: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
taskId: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
validatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
allocatorAddress: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
allocatorSignature: {
r: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field];
s: [import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field, import("node_modules/o1js/dist/node/lib/provable/field.js").Field];
};
allocatorParityBit: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
}>>;
type Field3 = [Field, Field, Field];
/**
* Verify the public input of a partial zkpass credential.
*
* Returns the allocator address and schema id for further verification against
* expected values.
*
* This is a verification step that can be done in the clear, and is
* outsourced from the proof to the verifier.
*/
declare function verifyPublicInput(publicInput: {
schema: Bytes;
taskId: Bytes;
validatorAddress: Bytes;
allocatorAddress: Bytes;
allocatorSignature: {
r: Field3;
s: Field3;
};
allocatorParityBit: Bool;
}): {
allocatorAddress: string;
schema: string;
};
declare function encodeParameters(types: Type[], values: Uint8Array[]): Uint8Array<ArrayBufferLike>;
declare function genPublicFieldHash(publicFields: PublicField[]): import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;