mina-attestations
Version:
Private Attestations on Mina
79 lines (78 loc) • 3.98 kB
TypeScript
/**
* JSON serialization of provable types and values.
*/
import { NestedProvable } from './nested.ts';
import { ProvableType } from './o1js-missing.ts';
import { Field, UInt8, UInt32, UInt64, PublicKey, Signature, VerificationKey, Int64 } from 'o1js';
import { type SerializedFactory } from './provable-factory.ts';
import type { Json } from './types.ts';
export { type SerializedType, type SerializedValue, type SerializedNestedType, serializeProvableType, serializeProvableValue, serializeProvableField, serializeProvablePublicKey, serializeNestedProvableType, serializeNestedProvableValue, serializeSimplyNestedProvableValue, deserializeProvableType, deserializeProvableValue, deserializeNestedProvable, deserializeNestedProvableValue, replaceNull, replaceUndefined, };
declare const supportedTypes: {
Field: typeof import("node_modules/o1js/dist/node/lib/provable/field.js").Field & ((x: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/core/fieldvar.js").FieldConst | import("node_modules/o1js/dist/node/lib/provable/core/fieldvar.js").FieldVar | import("node_modules/o1js/dist/node/lib/provable/field.js").Field) => import("node_modules/o1js/dist/node/lib/provable/field.js").Field);
Bool: typeof import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool & ((x: boolean | import("node_modules/o1js/dist/node/lib/provable/core/fieldvar.js").FieldVar | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool) => import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool);
UInt8: typeof UInt8;
UInt32: typeof UInt32;
UInt64: typeof UInt64;
Int64: typeof Int64;
PublicKey: typeof PublicKey;
Signature: typeof Signature;
Undefined: import("node_modules/o1js/dist/node/lib/provable/types/struct.js").ProvablePureExtended<undefined, undefined, null>;
VerificationKey: typeof VerificationKey;
};
type O1jsTypeName = keyof typeof supportedTypes;
type SerializedType = {
_type: O1jsTypeName;
} | {
_type: 'Struct';
properties: SerializedNestedType;
} | {
_type: 'Array';
inner: SerializedType;
size: number;
} | {
_type: 'Constant';
value: Json;
} | {
_type: 'Bytes';
size: number;
} | {
_type: 'Proof';
proof: Record<string, any>;
} | {
_type: 'String';
} | SerializedFactory;
type SerializedNestedType = SerializedType | {
[key: string]: SerializedNestedType;
};
declare function serializeProvableType(type: ProvableType<any>): SerializedType;
type SerializedValue = SerializedType & {
value: Json;
};
type SerializedValueAny = SerializedType & {
value: any;
};
type SerializedNestedValue = SerializedValue | string | number | boolean | {
[key: string]: SerializedNestedValue;
};
declare function serializeProvableValue(value: any): SerializedValue;
declare function serializeProvableField(value: Field): {
_type: "Field";
value: string;
};
declare function serializeProvablePublicKey(value: PublicKey): {
_type: "PublicKey";
value: any;
};
declare function serializeNestedProvableType(type: NestedProvable): SerializedNestedType;
declare function serializeNestedProvableValue(value: any): SerializedNestedValue;
declare function serializeSimplyNestedProvableValue(value: Record<string, any>): Record<string, SerializedValue>;
declare function deserializeProvableType(type: SerializedType): ProvableType<any>;
declare function deserializeProvableValue(json: SerializedValueAny): any;
declare function deserializeNestedProvable(type: SerializedNestedType): NestedProvable;
declare function deserializeNestedProvableValue(value: SerializedNestedValue): any;
declare function replaceNull<Input extends Record<string, Json>>(obj: Input): {
[K in keyof Input]: Input[K] extends infer T | null ? T | undefined : Input[K];
};
declare function replaceUndefined<Input extends Record<string, Json | undefined>>(obj: Input): {
[K in keyof Input]: Input[K] extends infer T | undefined ? T | null : Input[K];
};