/** Data-property descriptors keyed by a closed string vocabulary. */
export type StrictDescriptors<TField extends string> = Readonly<Record<TField, PropertyDescriptor>>;
/**
 * Require an accessor-free plain object containing exactly the listed fields.
 * @param value - Untrusted candidate
 * @param fields - Exact allowed own-string fields
 * @param label - Operator-readable field label
 * @returns Data-property descriptors safe to read without invoking accessors
 */
export declare function requireStrictRecord<TField extends string>(value: unknown, fields: readonly TField[], label: string): StrictDescriptors<TField>;
/**
 * Read a previously validated data-property descriptor.
 * @param descriptors - Strict descriptor record
 * @param field - Field to read
 * @returns Detached descriptor value
 */
export declare function readStrictProperty<TField extends string>(descriptors: StrictDescriptors<TField>, field: TField): unknown;
/**
 * Require one string from a closed vocabulary.
 * @param value - Untrusted candidate
 * @param allowed - Closed string vocabulary
 * @param field - Operator-readable field label
 * @returns Validated vocabulary member
 */
export declare function requireClosedString<TValue extends string>(value: unknown, allowed: readonly TValue[], field: string): TValue;
/**
 * Require a stable, byte-bounded lowercase machine identifier.
 * @param value - Untrusted identifier candidate
 * @param field - Operator-readable field label
 * @param maximumBytes - Maximum UTF-8 byte length
 * @returns Validated identifier
 */
export declare function requireBoundedMachineId(value: unknown, field: string, maximumBytes: number): string;
/**
 * Require a canonical UTC timestamp with millisecond precision.
 * @param value - Untrusted timestamp candidate
 * @param field - Operator-readable field label
 * @returns Canonical timestamp
 */
export declare function requireCanonicalUtcTimestamp(value: unknown, field: string): string;
/**
 * Detect controls and bidirectional formatting characters in operator text.
 * @param value - Text candidate
 * @returns Whether unsafe operator-text characters are present
 */
export declare function hasUnsafeTextCharacter(value: string): boolean;
/**
 * Read a dense, extra-free, accessor-free plain array without invoking values.
 * @param value - Untrusted candidate
 * @param minimum - Minimum accepted length
 * @param maximum - Maximum accepted length
 * @param label - Operator-readable field label
 * @returns Data-property values in index order
 */
export declare function readStrictDenseArray(value: unknown, minimum: number, maximum: number, label: string): readonly unknown[];
//# sourceMappingURL=strict-validation.d.ts.map