UNPKG

mina-attestations

Version:
84 lines (83 loc) 3.95 kB
/** * A dynamic record is a key-value list which can contain keys/values you are not aware of at compile time. */ import { Field, type From, type InferProvable, Option, type ProvableHashable, Unconstrained } from 'o1js'; import { type ProvableHashableType } from '../o1js-missing.ts'; export { DynamicRecord, GenericRecord, type UnknownRecord, type DynamicRecordClass, extractProperty, }; type DynamicRecord<TKnown = any> = DynamicRecordBase<TKnown>; type DynamicRecordClass<AKnown extends Record<string, any>> = ReturnType<typeof DynamicRecord<AKnown>>; declare function DynamicRecord<AKnown extends Record<string, ProvableHashableType>, TKnown extends { [K in keyof AKnown]: InferProvable<AKnown[K]>; } = { [K in keyof AKnown]: InferProvable<AKnown[K]>; }>(knownShape: AKnown, { maxEntries }: { maxEntries: number; }): { new (value: DynamicRecordRaw): { readonly maxEntries: number; readonly knownShape: { [K in keyof TKnown]: ProvableHashableType<TKnown[K]>; }; get<K extends keyof TKnown & string>(key: K): TKnown[K]; entries: Option<{ key: Field; value: Field; }>[]; actual: Unconstrained<UnknownRecord>; getAny<A extends ProvableHashableType>(valueType: A, key: string): import("node_modules/o1js/dist/node/bindings/lib/provable-generic.js").InferProvable<import("node_modules/o1js/dist/node/lib/provable/types/provable-intf.js").ToProvable<A>, import("node_modules/o1js/dist/node/lib/provable/field.js").Field>; hash(): Field; }; from<T extends From<AKnown> & UnknownRecord>(value: T): DynamicRecordBase<TKnown>; fromShape<A extends AKnown>(type: A, value: { [K in keyof A]: From<A[K]>; }): DynamicRecordBase<TKnown>; readonly shape: { [K in keyof TKnown]: ProvableHashableType<TKnown[K]>; }; provable: ProvableHashable<DynamicRecordBase<TKnown>, UnknownRecord>; }; declare namespace DynamicRecord { var Base: typeof DynamicRecordBase; } type GenericRecord = GenericRecordBase; declare function GenericRecord({ maxEntries }: { maxEntries: number; }): { new (value: DynamicRecordRaw): { readonly maxEntries: number; entries: Option<{ key: Field; value: Field; }>[]; actual: Unconstrained<UnknownRecord>; readonly knownShape: {}; getAny<A extends ProvableHashableType>(valueType: A, key: string): import("node_modules/o1js/dist/node/bindings/lib/provable-generic.js").InferProvable<import("node_modules/o1js/dist/node/lib/provable/types/provable-intf.js").ToProvable<A>, import("node_modules/o1js/dist/node/lib/provable/field.js").Field>; hash(): Field; }; from(actual: UnknownRecord): GenericRecordBase; }; declare namespace GenericRecord { var Base: typeof GenericRecordBase; } declare class GenericRecordBase { entries: Option<{ key: Field; value: Field; }>[]; actual: Unconstrained<UnknownRecord>; constructor(value: DynamicRecordRaw); get maxEntries(): number; get knownShape(): {}; static from(actual: UnknownRecord): GenericRecordBase; getAny<A extends ProvableHashableType>(valueType: A, key: string): import("node_modules/o1js/dist/node/bindings/lib/provable-generic.js").InferProvable<import("node_modules/o1js/dist/node/lib/provable/types/provable-intf.js").ToProvable<A>, import("node_modules/o1js/dist/node/lib/provable/field.js").Field>; hash(): Field; } declare class DynamicRecordBase<TKnown = any> extends GenericRecordBase { get knownShape(): { [K in keyof TKnown]: ProvableHashableType<TKnown[K]>; }; get<K extends keyof TKnown & string>(key: K): TKnown[K]; } type DynamicRecordRaw = { entries: Option<{ key: Field; value: Field; }>[]; actual: Unconstrained<UnknownRecord>; }; type UnknownRecord = Record<string, unknown>; declare function extractProperty(data: unknown, key: string): unknown;