import type { Always, AnyOfSchema, AnySchema, ItemSchema, ListSchema, MapSchema, Never, PrimitiveSchema, RecordSchema, ResolveAnySchema, ResolvePrimitiveSchema, ResolvedPrimitiveSchema, Schema, SetSchema } from '../../schema/index.js'; import type { Extends, If, Not, Optional, Overwrite, SelectKeys } from '../../types/index.js'; import type { SchemaExtendedWriteValue, WriteValueOptions } from './options.js'; export type ValidValue = SCHEMA extends ItemSchema ? ItemSchemaValidValue : SCHEMA extends Schema ? SchemaValidValue : never; type MustBeDefined = If, true, If, Extends, Not>>>; type OptionalKeys = { [KEY in keyof SCHEMA['attributes']]: If, never, KEY>; }[keyof SCHEMA['attributes']]; type ItemSchemaValidValue = ItemSchema extends SCHEMA ? { [KEY: string]: unknown; } : Optional<{ [KEY in OPTIONS extends { mode: 'key'; } ? SelectKeys : keyof SCHEMA['attributes']]: SchemaValidValue>; }, OptionalKeys>>; type SchemaValidValue = Schema extends SCHEMA ? unknown : (SCHEMA extends AnySchema ? AnySchemaValidValue : never) | (SCHEMA extends PrimitiveSchema ? PrimitiveSchemaValidValue : never) | (SCHEMA extends SetSchema ? SetSchemaValidValue : never) | (SCHEMA extends ListSchema ? ListSchemaValidValue : never) | (SCHEMA extends MapSchema ? MapSchemaValidValue : never) | (SCHEMA extends RecordSchema ? RecordSchemaValidValue : never) | (SCHEMA extends AnyOfSchema ? AnyOfSchemaValidValue : never); type AnySchemaValidValue = AnySchema extends SCHEMA ? unknown : If, never, undefined> | SchemaExtendedWriteValue | ResolveAnySchema; type PrimitiveSchemaValidValue = PrimitiveSchema extends SCHEMA ? undefined | SchemaExtendedWriteValue | ResolvedPrimitiveSchema : If, never, undefined> | SchemaExtendedWriteValue | ResolvePrimitiveSchema; type SetSchemaValidValue = SetSchema extends SCHEMA ? undefined | SchemaExtendedWriteValue | Set>> : If, never, undefined> | SchemaExtendedWriteValue | Set>>; type ListSchemaValidValue = ListSchema extends SCHEMA ? undefined | SchemaExtendedWriteValue | unknown[] : If, never, undefined> | SchemaExtendedWriteValue | SchemaValidValue>[]; type MapSchemaValidValue = MapSchema extends SCHEMA ? undefined | SchemaExtendedWriteValue | { [KEY: string]: unknown; } : If, never, undefined> | SchemaExtendedWriteValue | Optional<{ [KEY in OPTIONS extends { mode: 'key'; } ? SelectKeys : keyof SCHEMA['attributes']]: SchemaValidValue>; }, OptionalKeys>>; type RecordSchemaValidValue = RecordSchema extends SCHEMA ? undefined | SchemaExtendedWriteValue | Record : If, never, undefined> | SchemaExtendedWriteValue | Optional, string>, SchemaValidValue>>, (SCHEMA['props'] extends { partial: true; } ? string : never) | (OPTIONS extends { mode: 'update'; } ? string : never)>; type AnyOfSchemaValidValue = AnyOfSchema extends SCHEMA ? unknown : If, never, undefined> | SchemaExtendedWriteValue | MapAnyOfSchemaValidValue; type MapAnyOfSchemaValidValue = ELEMENTS extends [infer ELEMENTS_HEAD, ...infer ELEMENTS_TAIL] ? ELEMENTS_HEAD extends Schema ? ELEMENTS_TAIL extends Schema[] ? MapAnyOfSchemaValidValue> : never : never : [RESULTS] extends [never] ? unknown : RESULTS; export {};