import { RuntypeBase } from '../runtype'; import { Array as Arr, ReadonlyArray } from './array'; import { InternalRecord, RecordFields } from './Object'; import { Record, KeyRuntypeBase, ReadonlyRecord } from './Record'; import { Tuple, ReadonlyTuple } from './tuple'; export declare type Readonly = T extends InternalRecord ? InternalRecord : T extends Arr ? ReadonlyArray : T extends Tuple ? ReadonlyTuple : T extends Record ? ReadonlyRecord : unknown; export declare function Readonly(input: InternalRecord): InternalRecord; export declare function Readonly(input: Arr): ReadonlyArray; export declare function Readonly[] = readonly RuntypeBase[]>(input: Tuple): ReadonlyTuple; export declare function Readonly>(record: Record): ReadonlyRecord;