UNPKG

mina-attestations

Version:
26 lines (25 loc) 1.05 kB
/** * Allows us to represent nested Provable types, to save us from always having to * wrap types in `Struct` and similar. */ import { type InferProvable, type ProvableHashable } from 'o1js'; import { ProvableType } from './o1js-missing.ts'; export { NestedProvable, inferNestedProvable }; export type { NestedProvableFor, InferNestedProvable }; declare const NestedProvable: { get: { <T>(type: NestedProvableFor<T>): ProvableHashable<T>; (type: NestedProvable): ProvableHashable<any>; }; fromValue<T>(value: T): NestedProvableFor<T>; }; declare function inferNestedProvable<Type extends NestedProvable>(type: Type): NestedProvableFor<InferNestedProvable<Type>>; type NestedProvable = ProvableType | { [key: string]: NestedProvable; }; type NestedProvableFor<T> = ProvableType<T> | { [K in keyof T & string]: NestedProvableFor<T[K]>; }; type InferNestedProvable<A> = A extends ProvableType ? InferProvable<A> : A extends Record<string, NestedProvable> ? { [K in keyof A]: InferNestedProvable<A[K]>; } : never;