import { Binable } from './binable.js'; export { GenericProvable, GenericProvablePure, GenericProvableExtended, GenericProvableExtendedPure, GenericField, GenericBool, GenericHashInput, GenericSignable, GenericSignableField, GenericSignableBool, primitiveTypes, PrimitiveTypeMap, primitiveTypeMap, EmptyNull, EmptyUndefined, EmptyVoid, }; type GenericProvable = { toFields: (x: T) => Field[]; toAuxiliary: (x?: T) => any[]; fromFields: (x: Field[], aux: any[]) => T; sizeInFields(): number; check: (x: T) => void; toValue: (x: T) => TValue; fromValue: (x: T | TValue) => T; toCanonical?: (x: T) => T; }; type GenericProvablePure = Omit, 'fromFields'> & { fromFields: (x: Field[]) => T; }; type GenericSignable = { toInput: (x: T) => { fields?: Field[]; packed?: [Field, number][]; }; toJSON: (x: T) => TJson; fromJSON: (x: TJson) => T; empty: () => T; }; type GenericProvableExtended = GenericProvable & GenericSignable; type GenericProvableExtendedPure = GenericProvablePure & GenericSignable; type GenericSignableField = ((value: number | string | bigint | Field) => Field) & GenericSignable & Binable & { sizeInBytes: number; toBigint: (x: Field) => bigint; }; type GenericField = GenericSignableField & GenericProvable; type GenericSignableBool = ((value: boolean) => Bool) & GenericSignable & Binable & { sizeInBytes: number; }; type GenericBool = GenericSignableBool & GenericProvable; type GenericHashInput = { fields?: Field[]; packed?: [Field, number][]; }; declare let primitiveTypes: Set; declare function EmptyNull(): GenericProvableExtendedPure; declare function EmptyUndefined(): GenericProvableExtendedPure; declare function EmptyVoid(): GenericProvableExtendedPure; type PrimitiveTypeMap = { number: GenericProvableExtended; string: GenericProvableExtended; null: GenericProvableExtended; }; declare const primitiveTypeMap: PrimitiveTypeMap;