minauth-erc721-timelock-plugin
Version:
This package contains an implementation of a MinAuth plugin that combines zero-knowledge Merkle "membership" proofs with the ability to register into to a Merkle tree with locking an Ethereum NFT.
152 lines (151 loc) • 6.17 kB
TypeScript
export declare const TREE_HEIGHT = 10;
declare const TreeWitness_base: typeof import("o1js/dist/node/lib/merkle_tree").BaseMerkleWitness;
export declare class TreeWitness extends TreeWitness_base {
}
declare const PrivateInput_base: (new (value: {
witness: TreeWitness;
secret: import("o1js/dist/node/lib/field").Field;
}) => {
witness: TreeWitness;
secret: import("o1js/dist/node/lib/field").Field;
}) & {
_isStruct: true;
} & import("o1js/dist/node/snarky").ProvablePure<{
witness: TreeWitness;
secret: import("o1js/dist/node/lib/field").Field;
}> & {
toInput: (x: {
witness: TreeWitness;
secret: import("o1js/dist/node/lib/field").Field;
}) => {
fields?: import("o1js/dist/node/lib/field").Field[] | undefined;
packed?: [import("o1js/dist/node/lib/field").Field, number][] | undefined;
};
toJSON: (x: {
witness: TreeWitness;
secret: import("o1js/dist/node/lib/field").Field;
}) => {
witness: any;
secret: string;
};
fromJSON: (x: {
witness: any;
secret: string;
}) => {
witness: TreeWitness;
secret: import("o1js/dist/node/lib/field").Field;
};
empty: () => {
witness: TreeWitness;
secret: import("o1js/dist/node/lib/field").Field;
};
};
export declare class PrivateInput extends PrivateInput_base {
}
declare const PublicInput_base: (new (value: {
merkleRoot: import("o1js/dist/node/lib/field").Field;
}) => {
merkleRoot: import("o1js/dist/node/lib/field").Field;
}) & {
_isStruct: true;
} & import("o1js/dist/node/snarky").ProvablePure<{
merkleRoot: import("o1js/dist/node/lib/field").Field;
}> & {
toInput: (x: {
merkleRoot: import("o1js/dist/node/lib/field").Field;
}) => {
fields?: import("o1js/dist/node/lib/field").Field[] | undefined;
packed?: [import("o1js/dist/node/lib/field").Field, number][] | undefined;
};
toJSON: (x: {
merkleRoot: import("o1js/dist/node/lib/field").Field;
}) => {
merkleRoot: string;
};
fromJSON: (x: {
merkleRoot: string;
}) => {
merkleRoot: import("o1js/dist/node/lib/field").Field;
};
empty: () => {
merkleRoot: import("o1js/dist/node/lib/field").Field;
};
};
export declare class PublicInput extends PublicInput_base {
}
/** Prove knowledge of a preimage of a hash in a merkle tree.
* The proof reveals nothing, but the merkle root.
*/
export declare const MerkleMembershipProgram: {
name: string;
compile: (options?: {
cache?: import("o1js/dist/node/lib/proof-system/cache").Cache | undefined;
forceRecompile?: boolean | undefined;
} | undefined) => Promise<{
verificationKey: {
data: string;
hash: import("o1js/dist/node/lib/field").Field;
};
}>;
verify: (proof: import("o1js/dist/node/lib/proof_system").Proof<PublicInput, void>) => Promise<boolean>;
digest: () => string;
analyzeMethods: () => {
proveMembership: {
rows: number;
digest: string;
result: unknown;
gates: import("o1js/dist/node/snarky").Gate[];
publicInputSize: number;
print(): void;
summary(): Partial<Record<import("o1js/dist/node/snarky").GateType | "Total rows", number>>;
};
};
publicInputType: typeof PublicInput;
publicOutputType: import("o1js/dist/node/lib/circuit_value").ProvablePureExtended<void, null>;
privateInputTypes: {
proveMembership: [typeof PrivateInput];
};
rawMethods: {
proveMembership: (publicInput: PublicInput, ...args: [PrivateInput] & any[]) => void;
};
} & {
proveMembership: (publicInput: PublicInput, ...args: [PrivateInput] & any[]) => Promise<import("o1js/dist/node/lib/proof_system").Proof<PublicInput, void>>;
};
export declare const MerkleMembershipProof: {
new ({ proof, publicInput, publicOutput, maxProofsVerified, }: {
proof: unknown;
publicInput: PublicInput;
publicOutput: void;
maxProofsVerified: 0 | 2 | 1;
}): {
publicInput: PublicInput;
publicOutput: void;
proof: unknown;
maxProofsVerified: 0 | 2 | 1;
shouldVerify: import("o1js/dist/node/lib/bool").Bool;
verify(): void;
verifyIf(condition: import("o1js/dist/node/lib/bool").Bool): void;
toJSON(): import("o1js/dist/node/lib/proof_system").JsonProof;
};
publicInputType: typeof PublicInput;
publicOutputType: import("o1js/dist/node/lib/circuit_value").ProvablePureExtended<void, null>;
tag: () => {
name: string;
publicInputType: typeof PublicInput;
publicOutputType: import("o1js/dist/node/lib/circuit_value").ProvablePureExtended<void, null>;
};
fromJSON<S extends (new (...args: any) => import("o1js/dist/node/lib/proof_system").Proof<unknown, unknown>) & {
prototype: import("o1js/dist/node/lib/proof_system").Proof<any, any>;
publicInputType: import("o1js/dist/node/lib/circuit_value").FlexibleProvablePure<any>;
publicOutputType: import("o1js/dist/node/lib/circuit_value").FlexibleProvablePure<any>;
tag: () => {
name: string;
};
fromJSON: typeof import("o1js/dist/node/lib/proof_system").Proof.fromJSON;
dummy: typeof import("o1js/dist/node/lib/proof_system").Proof.dummy;
} & {
prototype: import("o1js/dist/node/lib/proof_system").Proof<unknown, unknown>;
}>(this: S, { maxProofsVerified, proof: proofString, publicInput: publicInputJson, publicOutput: publicOutputJson, }: import("o1js/dist/node/lib/proof_system").JsonProof): import("o1js/dist/node/lib/proof_system").Proof<import("o1js/dist/node/bindings/lib/provable-snarky").InferProvable<S["publicInputType"]>, import("o1js/dist/node/bindings/lib/provable-snarky").InferProvable<S["publicOutputType"]>>;
dummy<Input, OutPut>(publicInput: Input, publicOutput: OutPut, maxProofsVerified: 0 | 2 | 1, domainLog2?: number | undefined): Promise<import("o1js/dist/node/lib/proof_system").Proof<Input, OutPut>>;
};
export {};