import { HasTag, InferKind, SomeSpec, Spec, SpecKind, SpecSuccess, SpectypesError } from './types.js'; declare type SpectypesRecordKeyError = SpectypesError; declare type SpectypesRecordItemError = SpectypesError; export declare const record: { /** * Creates a record validator spec. This validator is protected from prototype pollution and * validation will fail if validated object contains properties that override `Object.proptotype` methods. * * @param keySpec Spec to validate each key of a record. Validates a string and can be transformed to string or number * @param itemSpec Spec to validate each item of a record. */ (keySpec: HasTag extends true ? SpectypesRecordKeyError<'optional'> : HasTag extends true ? SpectypesRecordKeyError<'unknown'> : HasTag extends true ? SpectypesRecordKeyError<'nullish'> : HasTag extends true ? SpectypesRecordKeyError<'lazy'> : HasTag extends true ? SpectypesRecordKeyError<'array'> : HasTag extends true ? SpectypesRecordKeyError<'tuple'> : HasTag extends true ? SpectypesRecordKeyError<'object'> : HasTag extends true ? SpectypesRecordKeyError<'record'> : HasTag extends true ? SpectypesRecordKeyError<'merge'> : HasTag extends true ? SpectypesRecordKeyError<'struct'> : HasTag extends true ? SpectypesRecordKeyError<'number'> : HasTag extends true ? SpectypesRecordKeyError<'boolean'> : HasTag extends true ? SpectypesRecordKeyError<'non string literal'> : KeySpec extends Spec ? KeySpec : { readonly "spectypes error: only number or string 'record' key types allowed": never; }, itemSpec: HasTag extends true ? SpectypesRecordItemError<'optional'> : HasTag extends true ? SpectypesRecordItemError<'lazy'> : ItemSpec): SpecSuccess extends number | string ? Spec<[ 'record' ], InferKind, HasTag extends true ? { readonly [key in SpecSuccess]?: SpecSuccess; } : { readonly [key in SpecSuccess]: SpecSuccess; }> : never; /** * Creates a record validation spec. Record keys will not be validated. This validator is protected * from prototype pollution and validation will fail if validated object contains properties that * override `Object.proptotype` methods. * * @param itemSpec Spec to validate each item of a record. */ (itemSpec: HasTag extends true ? SpectypesRecordItemError<'optional'> : HasTag extends true ? SpectypesRecordItemError<'lazy'> : ItemSpec): Spec<['record'], SpecKind, { readonly [key in string]: SpecSuccess; }>; }; export {};