import { either as E } from 'fp-ts';
import * as t from 'io-ts';
export declare function hush<A, B>(v: E.Either<A, B> | null): B | null;
export declare function decodedOrThrow<A, B>(v: E.Either<A, B> | null): B;
export declare function deepFreeze<T extends object>(x: T): T;
type ValueOf<T> = T[keyof T];
type Output<T> = E.Either<string, ValueOf<{
    [P in keyof T]: T[P] extends (raw: string) => E.Either<string, infer R> ? R : never;
}>>;
export declare function fetchDecoded<T extends Record<number, (raw: string) => E.Either<string, unknown>>>(pendingResponse: (() => Promise<Response>) | Promise<Response>, decoders: T): Promise<Output<T>>;
export declare function fromJSONString<A>(type: t.Decoder<unknown, A>, input: string, ctx?: t.Context): t.Validation<A>;
export {};
