mina-attestations
Version:
Private Attestations on Mina
26 lines (25 loc) • 1.05 kB
TypeScript
/**
* 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;