import { Timestamp, Bytes, GeoPoint } from '../alias'; import { ErrorFieldValueInArray, ErrorUnassignedAbleFieldValue, NoUndefinedAndBannedTypes, NoDirectNestedArray } from '../error'; import { FieldValues, UnassignedAbleFieldValue, ArrayUnionOrRemove, Increment, Delete, ServerTimestamp, PossiblyReadAsUndefined } from '../fieldValues'; import { DeepValue } from '../objectFlatten'; import { DocumentReference } from '../refs'; import { MetaType } from './metaType'; type ArrayWriteConverter = NoDirectNestedArray[] : T extends FieldValues ? ErrorFieldValueInArray : T extends Timestamp | Date ? Timestamp | Date : T extends DocumentReference | Bytes | GeoPoint ? T : T extends Record ? { [K in keyof T]-?: ArrayWriteConverter; } : T extends PossiblyReadAsUndefined ? never : NoUndefinedAndBannedTypes>; export type WriteConverter = NoDirectNestedArray[] | ArrayUnionOrRemove> : T extends DocumentReference | ServerTimestamp | GeoPoint ? T : T extends number ? number extends T ? T | Increment : T : T extends Timestamp | Date ? Timestamp | Date : T extends Record ? { [K in keyof T]-?: WriteConverter; } : T extends UnassignedAbleFieldValue ? ErrorUnassignedAbleFieldValue : T extends PossiblyReadAsUndefined | Delete ? never : NoUndefinedAndBannedTypes>; export type WriteUpdateConverter = NoDirectNestedArray[] | ArrayUnionOrRemove> : T extends DocumentReference | ServerTimestamp | Delete | GeoPoint ? T : T extends number ? number extends T ? T | Increment : T : T extends Timestamp | Date ? Timestamp | Date : T extends Record ? { [K in keyof T]-?: WriteUpdateConverter, BannedTypes>; } : T extends UnassignedAbleFieldValue ? ErrorUnassignedAbleFieldValue : T extends PossiblyReadAsUndefined ? never : NoUndefinedAndBannedTypes>; export {};