import { Field as OriginalField } from './field-types/interface.js'; import { UnionToIntersection } from '../../utils/other.js'; export interface Field extends OriginalField { serialize: (...args: any[]) => any; } type NullablePartial = Partial> & Omit; type Or = A extends undefined ? B : A; type TxParamsBySchemaInternal = { -readonly [key in keyof SchemaItem]: SchemaItem[key] extends Field ? Parameters[0] : never; }; type TxParamsBySchemaInternalParams = UnionToIntersection[2], {}> : never>; type PickIsRec = { [Key in keyof SchemaItem as SchemaItem[Key] extends Field & { recursiveType: true; } ? Recursive extends true ? Key : never : Recursive extends true ? never : Key]: SchemaItem[Key]; }; type TxParamsBySchema = SchemaItem extends Object ? TxParamsBySchemaInternal> & NullablePartial>> & TxParamsBySchemaInternalParams> : never; type TxParamsAsyncBySchemaInternal = { -readonly [key in keyof SchemaItem]: SchemaItem[key] extends Field & { prepare: Function; } ? Parameters[0] : SchemaItem[key] extends Field ? Parameters[0] : never; }; type TxParamsAsyncBySchemaInternalParams = UnionToIntersection[2], {}> : {}>; type TxParamsAsyncBySchema = SchemaItem extends Object ? TxParamsAsyncBySchemaInternal> & NullablePartial>> & TxParamsAsyncBySchemaInternalParams> & TxParamsBySchemaInternalParams> : never; type TxUnpackedBySchema = { -readonly [key in keyof SchemaItem]: SchemaItem[key] extends Field ? ReturnType : never; }; export default interface SchemaTypes { TxParams: TxParamsBySchema; TxParamsAsync: TxParamsAsyncBySchema; TxUnpacked: TxUnpackedBySchema; } export {};