/** * Validate and parse JSON strings into TypeScript/JavaScript objects. * * Inspired by Elm's Json.Decode library (https://guide.elm-lang.org/interop/json.html). * * This module exposes: * - primitive decoders (`string`, `number`, `boolean`, etc) * - higher-order decoders for creating more sophisticated decoders (`oneOf`, * `field`, etc) * - a function for using the decoders (`decode`) * * In most cases, a decoder will be used to describe data we expect to receive * from a web service to ensure it conforms to types resident in the client * application. If the data does not conform, an error will be thrown describing * the first encountered problem. */ export declare type Decoder = (t: any) => Result; export declare type Unpack = T extends Decoder ? R : never; export declare type Ok = { status: 'ok'; value: T; }; export declare type Err = { status: 'err'; value: any; expected: string; context?: string; }; export declare type Result = Ok | Err; export declare function ok(value: T): Ok; export declare function err(value: any, expected: string, context?: string): Err; export declare function string(t: any): Result; export declare function number(t: any): Result; export declare function boolean(t: any): Result; export declare function nullValue(t: any): Result; export declare function none(t: any): Result; export declare function unknown(t: unknown): Result; export declare function constant(value: T): Decoder; export declare function objectOf(decoder: Decoder): (t: any) => Result>; export declare function arrayOf(decoder: Decoder): (t: any) => Result>; export declare function field(fieldName: S, decoder: Decoder): (t: any) => Result<{ [K in S]: T; }>; export declare function record(decoderRecord: { [K in keyof T]: Decoder; }): Decoder; export declare function optional(decoder: Decoder): (t?: any) => Result; export declare function combine(decoder1: Decoder): Decoder; export declare function combine(decoder1: Decoder, decoder2: Decoder): Decoder; export declare function combine(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder): Decoder; export declare function combine(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder): Decoder; export declare function combine(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

): Decoder; export declare function combine(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

, decoder6: Decoder): Decoder; export declare function combine(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

, decoder6: Decoder, decoder7: Decoder): Decoder; export declare function combine(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

, decoder6: Decoder, decoder7: Decoder, decoder8: Decoder): Decoder; export declare function combine(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

, decoder6: Decoder, decoder7: Decoder, decoder8: Decoder, decoder9: Decoder): Decoder; export declare function combine(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

, decoder6: Decoder, decoder7: Decoder, decoder8: Decoder, decoder9: Decoder, decoder10: Decoder): Decoder; export declare function combine(...decoders: Decoder[]): Decoder; export declare function oneOf(decoder1: Decoder, decoder2: Decoder): Decoder; export declare function oneOf(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder): Decoder; export declare function oneOf(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder): Decoder; export declare function oneOf(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

): Decoder; export declare function oneOf(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

, decoder6: Decoder): Decoder; export declare function oneOf(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

, decoder6: Decoder, decoder7: Decoder): Decoder; export declare function oneOf(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

, decoder6: Decoder, decoder7: Decoder, decoder8: Decoder): Decoder; export declare function oneOf(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

, decoder6: Decoder, decoder7: Decoder, decoder8: Decoder, decoder9: Decoder): Decoder; export declare function oneOf(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

, decoder6: Decoder, decoder7: Decoder, decoder8: Decoder, decoder9: Decoder, decoder10: Decoder): Decoder; export declare function oneOf(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

, decoder6: Decoder, decoder7: Decoder, decoder8: Decoder, decoder9: Decoder, decoder10: Decoder, decoder11: Decoder): Decoder; export declare function oneOf(...decoders: Decoder[]): Decoder; export declare function tuple(decoder1: Decoder, decoder2: Decoder): Decoder<[T, S]>; export declare function tuple(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder): Decoder<[T, S, R]>; export declare function tuple(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder): Decoder<[T, S, R, Q]>; export declare function tuple(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

): Decoder<[T, S, R, Q, P]>; export declare function tuple(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

, decoder6: Decoder): Decoder<[T, S, R, Q, P, O]>; export declare function tuple(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

, decoder6: Decoder, decoder7: Decoder): Decoder<[T, S, R, Q, P, O, N]>; export declare function tuple(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

, decoder6: Decoder, decoder7: Decoder, decoder8: Decoder): Decoder<[T, S, R, Q, P, O, N, M]>; export declare function tuple(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

, decoder6: Decoder, decoder7: Decoder, decoder8: Decoder, decoder9: Decoder): Decoder<[T, S, R, Q, P, O, N, M, L]>; export declare function tuple(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

, decoder6: Decoder, decoder7: Decoder, decoder8: Decoder, decoder9: Decoder, decoder10: Decoder): Decoder<[T, S, R, Q, P, O, N, M, L, K]>; export declare function tuple(decoder1: Decoder, decoder2: Decoder, decoder3: Decoder, decoder4: Decoder, decoder5: Decoder

, decoder6: Decoder, decoder7: Decoder, decoder8: Decoder, decoder9: Decoder, decoder10: Decoder, decoder11: Decoder): Decoder; export declare function tuple(...decoders: Decoder[]): Decoder; export declare function lazy(decoderThunk: () => Decoder): (t: any) => Result; export declare function decode(decoder: Decoder, jsonString: string): T; export declare function standardErrorReport(errResult: Err): string; export declare function decodeOrElse(decoder: Decoder, defaultValue: T, jsonString: string): T; //# sourceMappingURL=Json.d.ts.map