import { Result } from "navidev-adt-api/dist/shared/core/Result";
import AdtException from "navidev-adt-api/dist/shared/exceptions/adtException";
import CrudOperationsInterface from "./crudOperationsInterface";
import { Expand } from "odata-query";
export type SelectFields = string[];
export declare enum FilterOptions {
    equal = "EQ",
    greaterThan = "GT",
    greaterEqual = "GE",
    lessThan = "LT",
    lessEqual = "LE",
    notEqual = "NE",
    between = "BT"
}
export type FilterBuilder = Record<string, any>;
export type FieldValue = string | number | Date | boolean;
export type Filter = {
    field: string;
    option?: FilterOptions;
    value1: FieldValue;
    value2?: FieldValue;
};
export type FilterComplex = Record<any, any>;
export type FilterAnys = Record<any, any>;
export type Filters = Filter[];
export type UrlParameters = Record<string, string | number | boolean>;
export type FieldKeyValue = Record<string, FieldValue>;
export type Sort = {
    field: string;
    descending?: boolean;
};
export type Sorts = Sort[];
export type ParametersQuery = {
    select?: SelectFields;
    filters?: Filters;
    filterComplex?: FilterComplex;
    urlParameters?: UrlParameters;
    top?: number;
    skip?: number;
    sort?: Sorts;
    expand?: Expand<any>;
};
export type ParametersPost = {
    urlParameters?: UrlParameters;
    v4: {
        activateDraft?: boolean;
        discardDraft?: boolean;
    };
};
export type CheckEntryStatusV4 = {
    haveDraftEntity: boolean;
    haveActiveEntity: boolean;
    odataEtag: string;
};
export type DraftInfoData = {
    odataEtag: string;
    LastChangedByUser: string;
    InProcessByUser: String;
    LastChangedByUserDescription: string;
    InProcessByUserDescription: string;
    HasActiveEntity: boolean;
    IsActiveEntity: boolean;
};
export type ResultConnect = Result<void> | Result<AdtException>;
export type ResultCrudOperationsInstance = Result<CrudOperationsInterface> | Result<AdtException>;
export type ResultQuery<T> = Result<T> | Result<AdtException>;
export type ResultRead<T> = Result<T> | Result<AdtException>;
export type ResultToken = Result<string> | Result<AdtException>;
export type ResultPost<T> = Result<T> | Result<AdtException>;
export type ResultPatch<T> = Result<T> | Result<AdtException>;
export type ResultDelete = Result<void> | Result<AdtException>;
export type ResultPatchOperation = Result<void> | Result<AdtException>;
export type ResultActiveDraft = Result<void> | Result<AdtException>;
export type ResultCreateDraft = Result<string> | Result<AdtException>;
//# sourceMappingURL=crudOperationsTypes.d.ts.map