/** * 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: { (type: NestedProvableFor): ProvableHashable; (type: NestedProvable): ProvableHashable; }; fromValue(value: T): NestedProvableFor; }; declare function inferNestedProvable(type: Type): NestedProvableFor>; type NestedProvable = ProvableType | { [key: string]: NestedProvable; }; type NestedProvableFor = ProvableType | { [K in keyof T & string]: NestedProvableFor; }; type InferNestedProvable = A extends ProvableType ? InferProvable : A extends Record ? { [K in keyof A]: InferNestedProvable; } : never;