ZkProgram
function ZkProgram<Config, Methods, MethodSignatures, PrivateInputs, AuxiliaryOutputs>(config: Config & {
"methods": { [I in string | number | symbol]: Methods[I] };
"name": string;
"overrideWrapDomain": 0 | 2 | 1;
}): {
"analyzeMethods": () => Promise<{ [I in keyof Config["methods"]]: UnwrapPromise<ReturnType<typeof analyzeMethod>> }>;
"auxiliaryOutputTypes": AuxiliaryOutputs;
"compile": (options?: {
"cache": Cache;
"forceRecompile": boolean;
"proofsEnabled": boolean;
}) => Promise<{
"verificationKey": {
"data": string;
"hash": Field;
};
}>;
"digest": () => Promise<string>;
"name": string;
"privateInputTypes": PrivateInputs;
"proofsEnabled": boolean;
"publicInputType": ProvableOrUndefined<Get<Config, "publicInput">>;
"publicOutputType": ProvableOrVoid<Get<Config, "publicOutput">>;
"rawMethods": { [I in keyof Config["methods"]]: Methods[I]["method"] };
"verify": (proof: Proof<InferProvableOrUndefined<Get<Config, "publicInput">>, InferProvableOrVoid<Get<Config, "publicOutput">>>) => Promise<boolean>;
"setProofsEnabled": void;
} & { [I in keyof Config["methods"]]: Prover<InferProvableOrUndefined<Get<Config, "publicInput">>, InferProvableOrVoid<Get<Config, "publicOutput">>, PrivateInputs[I], InferProvableOrUndefined<AuxiliaryOutputs[I]>> }
Type parameters
• Config extends {
"methods": {};
"publicInput": ProvableTypePure;
"publicOutput": ProvableTypePure;
}
• Methods extends { [I in string | number | symbol]: Method\<InferProvableOrUndefined\<Get\<Config, "publicInput">>, InferProvableOrVoid\<Get\<Config, "publicOutput">>, Config["methods"][I]> }
• MethodSignatures extends {} = Config["methods"]
• PrivateInputs extends { [I in string | number | symbol]: MethodSignatures[I]["privateInputs"] } = { [I in string | number | symbol]: MethodSignatures[I]["privateInputs"] }
• AuxiliaryOutputs extends { [I in string | number | symbol]: Get\<MethodSignatures[I], "auxiliaryOutput"> } = { [I in string | number | symbol]: Get\<MethodSignatures[I], "auxiliaryOutput"> }
Parameters
• config: Config & {
"methods": { [I in string | number | symbol]: Methods[I] };
"name": string;
"overrideWrapDomain": 0 | 2 | 1;
}
Returns
{
"analyzeMethods": () => Promise\<{ [I in keyof Config["methods"]]: UnwrapPromise<ReturnType<typeof analyzeMethod>> }>;
"auxiliaryOutputTypes": AuxiliaryOutputs;
"compile": (options?: {
"cache": Cache;
"forceRecompile": boolean;
"proofsEnabled": boolean;
}) => Promise\<{
"verificationKey": {
"data": string;
"hash": Field;
};
}>;
"digest": () => Promise\<string>;
"name": string;
"privateInputTypes": PrivateInputs;
"proofsEnabled": boolean;
"publicInputType": ProvableOrUndefined\<Get\<Config, "publicInput">>;
"publicOutputType": ProvableOrVoid\<Get\<Config, "publicOutput">>;
"rawMethods": { [I in keyof Config["methods"]]: Methods[I]["method"] };
"verify": (proof: Proof\<InferProvableOrUndefined\<Get\<Config, "publicInput">>, InferProvableOrVoid\<Get\<Config, "publicOutput">>>) => Promise\<boolean>;
"setProofsEnabled": void;
} & { [I in keyof Config["methods"]]: Prover<InferProvableOrUndefined<Get<Config, "publicInput">>, InferProvableOrVoid<Get<Config, "publicOutput">>, PrivateInputs[I], InferProvableOrUndefined<AuxiliaryOutputs[I]>> }