import Maybe from '../../Maybe'; import Either from '../../Either'; import Encode from '../Encode'; import Error from './Error'; import { Path as IPath, OptionalPath as IOptionalPath, Optional as IOptional } from './index'; export declare abstract class Decoder { protected static decodeAs(decoder: Decoder, input: unknown, required: boolean): Either; map(fn: (value: T) => R): Decoder; chain(fn: (value: T) => Decoder): Decoder; decodeJSON(json: string): Either; decode(input: unknown): Either; protected abstract decodeAs(input: unknown, required: boolean): Either; } export declare class Path implements IPath { private readonly createDecoder; static at(path: Array, decoder: Decoder): Decoder; constructor(createDecoder: (decoder: Decoder) => Decoder); of(decoder: Decoder): Decoder; readonly string: Decoder; readonly boolean: Decoder; readonly int: Decoder; readonly float: Decoder; readonly value: Decoder; shape(object: { [K in keyof T]: Decoder; }): Decoder; list(decoder: Decoder): Decoder>; keyValue(...args: [Decoder] | [(key: string) => Either, Decoder]): Decoder> | Decoder>; dict(decoder: Decoder): Decoder<{ [key: string]: T; }>; oneOf(decoders: Array>): Decoder; enums(variants: Array<[string | number | boolean | null, T]>): Decoder; lazy(callDecoder: () => Decoder): Decoder; field(name: string): IPath; index(position: number): IPath; at(path: Array): IPath; readonly optional: IOptional; } export declare class OptionalPath implements IOptionalPath { private readonly createDecoder; static at(path: Array, decoder: Decoder): Decoder>; constructor(createDecoder: (decoder: Decoder) => Decoder>); of(decoder: Decoder): Decoder>; readonly string: Decoder>; readonly boolean: Decoder>; readonly int: Decoder>; readonly float: Decoder>; readonly value: Decoder>; shape(object: { [K in keyof T]: Decoder; }): Decoder>; list(decoder: Decoder): Decoder>>; keyValue(...args: [Decoder] | [(key: string) => Either, Decoder]): Decoder>> | Decoder>>; dict(decoder: Decoder): Decoder>; oneOf(decoders: Array>): Decoder>; enums(variants: Array<[string | number | boolean | null, T]>): Decoder>; lazy(callDecoder: () => Decoder): Decoder>; field(name: string): IOptionalPath; index(position: number): IOptionalPath; at(path: Array): IOptionalPath; readonly optional: IOptional; } export declare class Optional implements IOptional { private readonly createDecoder; constructor(createDecoder: (decoder: Decoder) => Decoder>); of(decoder: Decoder): Decoder>; readonly string: Decoder>; readonly boolean: Decoder>; readonly int: Decoder>; readonly float: Decoder>; shape(object: { [K in keyof T]: Decoder; }): Decoder>; list(decoder: Decoder): Decoder>>; keyValue(...args: [Decoder] | [(key: string) => Either, Decoder]): Decoder>> | Decoder>>; dict(decoder: Decoder): Decoder>; oneOf(decoders: Array>): Decoder>; enums(variants: Array<[string | number | boolean | null, T]>): Decoder>; field(name: string): IOptionalPath; index(position: number): IOptionalPath; at(path: Array): IOptionalPath; } export declare class Primitive extends Decoder { private readonly prefix; private readonly type; private readonly check; constructor(prefix: string, type: string, check: (input: unknown) => input is T); protected decodeAs(input: unknown, required: boolean): Either; } export declare class Fail extends Decoder { private readonly message; constructor(message: string); protected decodeAs(input: unknown): Either; } export declare class Succeed extends Decoder { private readonly value; constructor(value: T); protected decodeAs(): Either; } export declare class Shape extends Decoder { private readonly object; constructor(object: { [K in keyof T]: Decoder; }); protected decodeAs(input: unknown, required: boolean): Either; } export declare class OneOf extends Decoder { private readonly decoders; constructor(decoders: Array>); protected decodeAs(input: unknown, required: boolean): Either; } export declare class Enums extends Decoder { private readonly variants; constructor(variants: Array<[string | number | boolean | null, T]>); protected decodeAs(input: unknown, required: boolean): Either; } export declare class List extends Decoder> { private readonly decoder; constructor(decoder: Decoder); protected decodeAs(input: unknown, required: boolean): Either>; } export declare class KeyValue extends Decoder> { private readonly convertKey; private readonly decoder; constructor(convertKey: (key: string) => Either, decoder: Decoder); protected decodeAs(input: unknown, required: boolean): Either>; } export declare abstract class Field extends Decoder { private readonly name; private readonly decoder; static required(name: string, decoder: Decoder): Decoder; static optional(name: string, decoder: Decoder): Decoder>; protected static readonly TYPE = "OBJECT"; protected constructor(name: string, decoder: Decoder); protected decodeAs(input: unknown, required: boolean): Either; protected abstract decodeNullable(input: unknown, required: boolean): Either; protected abstract decodeNotObject(input: unknown, required: boolean): Either; protected abstract decodeMissedField(name: string, input: object, required: boolean): Either; protected abstract mapSuccess(value: T): R; } export declare abstract class Index extends Decoder { private readonly position; private readonly decoder; static required(position: number, decoder: Decoder): Decoder; static optional(position: number, decoder: Decoder): Decoder>; protected static readonly TYPE = "ARRAY"; protected constructor(position: number, decoder: Decoder); protected decodeAs(input: unknown, required: boolean): Either; protected abstract decodeNullable(input: unknown, required: boolean): Either; protected abstract decodeNotArray(input: unknown, required: boolean): Either; protected abstract decodeMissedIndex(position: number, input: Array, required: boolean): Either; protected abstract mapSuccess(value: T): R; } export declare class Value extends Decoder { protected decodeAs(input: unknown): Either; }