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