import { BaseDist } from "../dists/BaseDist.js"; import { FnInput } from "../reducer/lambda/FnInput.js"; import { Lambda } from "../reducer/lambda/index.js"; import { DictShape } from "../types/TDict.js"; import { Type } from "../types/Type.js"; import { ImmutableMap } from "../utility/immutable.js"; import { Value } from "../value/index.js"; import { ValueTags } from "../value/valueTags.js"; export type FrType = { type: Type; unpack: (value: Value) => T | undefined; pack: (value: T) => Value; }; export type UnwrapFrType> = Exclude, undefined>; export declare const frNumber: FrType; export declare const frString: FrType; export declare const frBool: FrType; export declare const frDuration: FrType; export declare const frDate: FrType; export declare const frCalculator: FrType; export declare const frLambda: FrType; export declare const frFormInput: FrType; export declare const frTableChart: FrType; export declare const frSpecification: FrType; export declare const frPlot: FrType; export declare const frScale: FrType; export declare const frDomain: FrType; export declare function frArray(itemType: FrType): FrType; export declare function frAny(params?: { genericName?: string; }): FrType; export declare function frDictWithArbitraryKeys(itemType: FrType): FrType>; export declare const frDist: FrType; export declare const frPointSetDist: FrType; export declare const frSampleSetDist: FrType; export declare const frSymbolicDist: FrType; type OrType = { tag: "1"; value: T1; } | { tag: "2"; value: T2; }; export declare function frOr(type1: FrType, type2: FrType): FrType>; export declare const frDistOrNumber: FrType; export declare function frTuple[]>(...types: T): FrType<{ [K in keyof T]: UnwrapFrType; }>; export type DetailedFrDictShapeEntry> = Partial> & { type: V; }; type FrDictShapeEntry> = DetailedFrDictShapeEntry | V; type BaseFrDictShape = Record>>; type UnwrapFrDictShape = { [Key in keyof T]: T[Key] extends FrType ? UnwrapFrType : T[Key] extends DetailedFrDictShapeEntry ? T[Key]["optional"] extends true ? UnwrapFrType | null : UnwrapFrType : never; }; export declare function frDict(shape: Shape): FrType>; export declare const frMixedSet: FrType; readonly segments: FrType; }>>; export declare function frTypedLambda(maybeInputs: (FnInput | Type)[], output: Type): FrType; export declare function frLambdaNand(paramLengths: number[]): FrType; export declare function frTagged(type: FrType): FrType<{ value: T; tags: ValueTags; }>; export {}; //# sourceMappingURL=FrType.d.ts.map