declare global {
    namespace Api {
        /**
         * Поле - это составляющая часть объектов, которые характеризуются типом, называемым моделью
         *
         * Модель данных обеспечивает доступ и управление к коллекциям
         *
         * Не все API работают с моделью данных
         */
        namespace Field {
            /**
             * Имя поля
             */
            type Name<Model extends Api.Ext.Schemas['Model']> = keyof Model extends string ? keyof Model : string;
            /**
             * Фильтр по полю
             */
            type Filter<Model extends Api.Ext.Schemas['Model'], FieldName extends Api.Field.Name<Model> = Api.Field.Name<Model>> = {
                name: FieldName;
                values: Model[FieldName][];
            } & Omit<Api.Ext.Schemas['FieldFilter'], 'name'>;
            /**
             * Сортировка по полю
             */
            type Order<Model extends Api.Ext.Schemas['Model'], FieldName extends Api.Field.Name<Model> = Api.Field.Name<Model>> = {
                name: FieldName;
                orderValues?: Model[FieldName][];
                values?: Model[FieldName][];
            } & Omit<Api.Ext.Schemas['FieldOrder'], 'name' | 'orderValues' | 'values'>;
        }
    }
}
export {};
