import type { Always, AnyOfSchema, AnySchema, ItemSchema, ListSchema, MapSchema, Never, PrimitiveSchema, RecordSchema, ResolveAnySchema, ResolvePrimitiveSchema, ResolveStringSchema, 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 InputValue = SCHEMA extends ItemSchema ? ItemSchemaInputValue : SCHEMA extends Schema ? SchemaInputValue : never; type MustBeProvided = If, true, If, If>, false, If, Not>, Not>>>, If, false, If, Not>, Not>>>>>; type OptionalKeys = { [KEY in keyof SCHEMA['attributes']]: If, never, KEY>; }[keyof SCHEMA['attributes']]; type ItemSchemaInputValue = ItemSchema extends SCHEMA ? { [KEY: string]: SchemaInputValue>; } : Optional<{ [KEY in OPTIONS extends { mode: 'key'; } ? SelectKeys : keyof SCHEMA['attributes']]: SchemaInputValue>; }, OptionalKeys>>; type SchemaInputValue = Schema extends SCHEMA ? unknown : (SCHEMA extends AnySchema ? AnySchemaInputValue : never) | (SCHEMA extends PrimitiveSchema ? PrimitiveSchemaInputValue : never) | (SCHEMA extends SetSchema ? SetSchemaInputValue : never) | (SCHEMA extends ListSchema ? ListSchemaInputValue : never) | (SCHEMA extends MapSchema ? MapSchemaInputValue : never) | (SCHEMA extends RecordSchema ? RecordSchemaInputValue : never) | (SCHEMA extends AnyOfSchema ? AnyOfSchemaInputValue : never); type AnySchemaInputValue = AnySchema extends SCHEMA ? unknown : If, never, undefined> | SchemaExtendedWriteValue | ResolveAnySchema; type PrimitiveSchemaInputValue = PrimitiveSchema extends SCHEMA ? undefined | ResolvedPrimitiveSchema | SchemaExtendedWriteValue : If, never, undefined> | SchemaExtendedWriteValue | ResolvePrimitiveSchema; type SetSchemaInputValue = SetSchema extends SCHEMA ? undefined | SchemaExtendedWriteValue | Set>> : If, never, undefined> | SchemaExtendedWriteValue | Set>>; type ListSchemaInputValue = ListSchema extends SCHEMA ? undefined | SchemaExtendedWriteValue | unknown[] : If, never, undefined> | SchemaExtendedWriteValue | SchemaInputValue>[]; type MapSchemaInputValue = MapSchema extends SCHEMA ? undefined | SchemaExtendedWriteValue | { [KEY: string]: unknown; } : If, never, undefined> | SchemaExtendedWriteValue | Optional<{ [KEY in OPTIONS extends { mode: 'key'; } ? SelectKeys : keyof SCHEMA['attributes']]: SchemaInputValue>; }, OptionalKeys>>; type RecordSchemaInputValue = RecordSchema extends SCHEMA ? undefined | SchemaExtendedWriteValue | Record : If, never, undefined> | SchemaExtendedWriteValue | Optional, SchemaInputValue>>, (SCHEMA['props'] extends { partial: true; } ? string : never) | (OPTIONS extends { mode: 'update'; } ? string : never)>; type AnyOfSchemaInputValue = AnyOfSchema extends SCHEMA ? unknown : If, never, undefined> | SchemaExtendedWriteValue | SchemaInputValue; export {};