import { OriFieldValue } from './alias'; import { ErrorArrayFieldValueEmpty } from './error'; declare const serverTimestampSymbol: unique symbol; declare const deleteFieldSymbol: unique symbol; declare const incrementSymbol: unique symbol; declare const possiblyReadAsUndefinedSymbol: unique symbol; declare const arraySymbol: unique symbol; type ServerTimestampSymbol = typeof serverTimestampSymbol; type DeleteSymbol = typeof deleteFieldSymbol; type IncrementSymbol = typeof incrementSymbol; type PossiblyReadAsUndefinedSymbol = typeof possiblyReadAsUndefinedSymbol; type ArraySymbol = typeof arraySymbol; declare class FieldValue { protected 'Firelord_FieldValue_Do_Not_Access': T; } declare class ArrayFieldValue { protected Firelord_ArrayFieldValue?: T; } export interface PossiblyReadAsUndefined extends FieldValue { } export interface ServerTimestamp extends OriFieldValue, FieldValue { } export interface Delete extends OriFieldValue, FieldValue { } export interface Increment extends OriFieldValue, FieldValue { } export interface ArrayUnionOrRemove extends OriFieldValue, FieldValue, ArrayFieldValue { } export type ArrayRemoveOrUnionFunction = (...elements: Elements extends [] ? [ErrorArrayFieldValueEmpty] : Elements) => ArrayUnionOrRemove; export type UnassignedAbleFieldValue = Increment | ArrayUnionOrRemove; export type FieldValues = ServerTimestamp | UnassignedAbleFieldValue | Delete; export {};