import type { TSchema } from '../schema/index'; import type { Ensure } from '../helpers/index'; import { ReadonlyKind } from '../symbols/index'; import type { TMappedResult } from '../mapped/index'; import { type TReadonlyFromMappedResult } from './readonly-from-mapped-result'; type TRemoveReadonly = T extends TReadonly ? S : T; type TAddReadonly = T extends TReadonly ? TReadonly : Ensure>; export type TReadonlyWithFlag = F extends false ? TRemoveReadonly : TAddReadonly; export type TReadonly = T & { [ReadonlyKind]: 'Readonly'; }; /** `[Json]` Creates a Readonly property */ export declare function Readonly(schema: T, enable: F): TReadonlyFromMappedResult; /** `[Json]` Creates a Readonly property */ export declare function Readonly(schema: T, enable: F): TReadonlyWithFlag; /** `[Json]` Creates a Readonly property */ export declare function Readonly(schema: T): TReadonlyFromMappedResult; /** `[Json]` Creates a Readonly property */ export declare function Readonly(schema: T): TReadonlyWithFlag; export {};