import { FilterString, FilterStringOperator } from './filters_common.mjs';
import { ApplicationField, ApplicationRawEnumField } from './applications_fields.mjs';
import _m0 from 'protobufjs/minimal.js';
import './google/protobuf/duration.mjs';

declare const protobufPackage = "armonik.api.grpc.v1.applications";
interface FilterField {
    field: ApplicationField | undefined;
    filterString?: FilterString | undefined;
}
declare const FilterField: {
    encode(message: FilterField, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): FilterField;
    fromJSON(object: any): FilterField;
    toJSON(message: FilterField): unknown;
    create<I extends {
        field?: {
            applicationField?: {
                field?: ApplicationRawEnumField | undefined;
            } | undefined;
        } | undefined;
        filterString?: {
            value?: string | undefined;
            operator?: FilterStringOperator | undefined;
        } | undefined;
    } & {
        field?: ({
            applicationField?: {
                field?: ApplicationRawEnumField | undefined;
            } | undefined;
        } & {
            applicationField?: ({
                field?: ApplicationRawEnumField | undefined;
            } & {
                field?: ApplicationRawEnumField | undefined;
            } & { [K in Exclude<keyof I["field"]["applicationField"], "field">]: never; }) | undefined;
        } & { [K_1 in Exclude<keyof I["field"], "applicationField">]: never; }) | undefined;
        filterString?: ({
            value?: string | undefined;
            operator?: FilterStringOperator | undefined;
        } & {
            value?: string | undefined;
            operator?: FilterStringOperator | undefined;
        } & { [K_2 in Exclude<keyof I["filterString"], keyof FilterString>]: never; }) | undefined;
    } & { [K_3 in Exclude<keyof I, keyof FilterField>]: never; }>(base?: I | undefined): FilterField;
    fromPartial<I_1 extends {
        field?: {
            applicationField?: {
                field?: ApplicationRawEnumField | undefined;
            } | undefined;
        } | undefined;
        filterString?: {
            value?: string | undefined;
            operator?: FilterStringOperator | undefined;
        } | undefined;
    } & {
        field?: ({
            applicationField?: {
                field?: ApplicationRawEnumField | undefined;
            } | undefined;
        } & {
            applicationField?: ({
                field?: ApplicationRawEnumField | undefined;
            } & {
                field?: ApplicationRawEnumField | undefined;
            } & { [K_4 in Exclude<keyof I_1["field"]["applicationField"], "field">]: never; }) | undefined;
        } & { [K_5 in Exclude<keyof I_1["field"], "applicationField">]: never; }) | undefined;
        filterString?: ({
            value?: string | undefined;
            operator?: FilterStringOperator | undefined;
        } & {
            value?: string | undefined;
            operator?: FilterStringOperator | undefined;
        } & { [K_6 in Exclude<keyof I_1["filterString"], keyof FilterString>]: never; }) | undefined;
    } & { [K_7 in Exclude<keyof I_1, keyof FilterField>]: never; }>(object: I_1): FilterField;
};
interface FiltersAnd {
    and: FilterField[];
}
declare const FiltersAnd: {
    encode(message: FiltersAnd, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): FiltersAnd;
    fromJSON(object: any): FiltersAnd;
    toJSON(message: FiltersAnd): unknown;
    create<I extends {
        and?: {
            field?: {
                applicationField?: {
                    field?: ApplicationRawEnumField | undefined;
                } | undefined;
            } | undefined;
            filterString?: {
                value?: string | undefined;
                operator?: FilterStringOperator | undefined;
            } | undefined;
        }[] | undefined;
    } & {
        and?: ({
            field?: {
                applicationField?: {
                    field?: ApplicationRawEnumField | undefined;
                } | undefined;
            } | undefined;
            filterString?: {
                value?: string | undefined;
                operator?: FilterStringOperator | undefined;
            } | undefined;
        }[] & ({
            field?: {
                applicationField?: {
                    field?: ApplicationRawEnumField | undefined;
                } | undefined;
            } | undefined;
            filterString?: {
                value?: string | undefined;
                operator?: FilterStringOperator | undefined;
            } | undefined;
        } & {
            field?: ({
                applicationField?: {
                    field?: ApplicationRawEnumField | undefined;
                } | undefined;
            } & {
                applicationField?: ({
                    field?: ApplicationRawEnumField | undefined;
                } & {
                    field?: ApplicationRawEnumField | undefined;
                } & { [K in Exclude<keyof I["and"][number]["field"]["applicationField"], "field">]: never; }) | undefined;
            } & { [K_1 in Exclude<keyof I["and"][number]["field"], "applicationField">]: never; }) | undefined;
            filterString?: ({
                value?: string | undefined;
                operator?: FilterStringOperator | undefined;
            } & {
                value?: string | undefined;
                operator?: FilterStringOperator | undefined;
            } & { [K_2 in Exclude<keyof I["and"][number]["filterString"], keyof FilterString>]: never; }) | undefined;
        } & { [K_3 in Exclude<keyof I["and"][number], keyof FilterField>]: never; })[] & { [K_4 in Exclude<keyof I["and"], keyof {
            field?: {
                applicationField?: {
                    field?: ApplicationRawEnumField | undefined;
                } | undefined;
            } | undefined;
            filterString?: {
                value?: string | undefined;
                operator?: FilterStringOperator | undefined;
            } | undefined;
        }[]>]: never; }) | undefined;
    } & { [K_5 in Exclude<keyof I, "and">]: never; }>(base?: I | undefined): FiltersAnd;
    fromPartial<I_1 extends {
        and?: {
            field?: {
                applicationField?: {
                    field?: ApplicationRawEnumField | undefined;
                } | undefined;
            } | undefined;
            filterString?: {
                value?: string | undefined;
                operator?: FilterStringOperator | undefined;
            } | undefined;
        }[] | undefined;
    } & {
        and?: ({
            field?: {
                applicationField?: {
                    field?: ApplicationRawEnumField | undefined;
                } | undefined;
            } | undefined;
            filterString?: {
                value?: string | undefined;
                operator?: FilterStringOperator | undefined;
            } | undefined;
        }[] & ({
            field?: {
                applicationField?: {
                    field?: ApplicationRawEnumField | undefined;
                } | undefined;
            } | undefined;
            filterString?: {
                value?: string | undefined;
                operator?: FilterStringOperator | undefined;
            } | undefined;
        } & {
            field?: ({
                applicationField?: {
                    field?: ApplicationRawEnumField | undefined;
                } | undefined;
            } & {
                applicationField?: ({
                    field?: ApplicationRawEnumField | undefined;
                } & {
                    field?: ApplicationRawEnumField | undefined;
                } & { [K_6 in Exclude<keyof I_1["and"][number]["field"]["applicationField"], "field">]: never; }) | undefined;
            } & { [K_7 in Exclude<keyof I_1["and"][number]["field"], "applicationField">]: never; }) | undefined;
            filterString?: ({
                value?: string | undefined;
                operator?: FilterStringOperator | undefined;
            } & {
                value?: string | undefined;
                operator?: FilterStringOperator | undefined;
            } & { [K_8 in Exclude<keyof I_1["and"][number]["filterString"], keyof FilterString>]: never; }) | undefined;
        } & { [K_9 in Exclude<keyof I_1["and"][number], keyof FilterField>]: never; })[] & { [K_10 in Exclude<keyof I_1["and"], keyof {
            field?: {
                applicationField?: {
                    field?: ApplicationRawEnumField | undefined;
                } | undefined;
            } | undefined;
            filterString?: {
                value?: string | undefined;
                operator?: FilterStringOperator | undefined;
            } | undefined;
        }[]>]: never; }) | undefined;
    } & { [K_11 in Exclude<keyof I_1, "and">]: never; }>(object: I_1): FiltersAnd;
};
interface Filters {
    or: FiltersAnd[];
}
declare const Filters: {
    encode(message: Filters, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Filters;
    fromJSON(object: any): Filters;
    toJSON(message: Filters): unknown;
    create<I extends {
        or?: {
            and?: {
                field?: {
                    applicationField?: {
                        field?: ApplicationRawEnumField | undefined;
                    } | undefined;
                } | undefined;
                filterString?: {
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } | undefined;
            }[] | undefined;
        }[] | undefined;
    } & {
        or?: ({
            and?: {
                field?: {
                    applicationField?: {
                        field?: ApplicationRawEnumField | undefined;
                    } | undefined;
                } | undefined;
                filterString?: {
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } | undefined;
            }[] | undefined;
        }[] & ({
            and?: {
                field?: {
                    applicationField?: {
                        field?: ApplicationRawEnumField | undefined;
                    } | undefined;
                } | undefined;
                filterString?: {
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } | undefined;
            }[] | undefined;
        } & {
            and?: ({
                field?: {
                    applicationField?: {
                        field?: ApplicationRawEnumField | undefined;
                    } | undefined;
                } | undefined;
                filterString?: {
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } | undefined;
            }[] & ({
                field?: {
                    applicationField?: {
                        field?: ApplicationRawEnumField | undefined;
                    } | undefined;
                } | undefined;
                filterString?: {
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } | undefined;
            } & {
                field?: ({
                    applicationField?: {
                        field?: ApplicationRawEnumField | undefined;
                    } | undefined;
                } & {
                    applicationField?: ({
                        field?: ApplicationRawEnumField | undefined;
                    } & {
                        field?: ApplicationRawEnumField | undefined;
                    } & { [K in Exclude<keyof I["or"][number]["and"][number]["field"]["applicationField"], "field">]: never; }) | undefined;
                } & { [K_1 in Exclude<keyof I["or"][number]["and"][number]["field"], "applicationField">]: never; }) | undefined;
                filterString?: ({
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } & {
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } & { [K_2 in Exclude<keyof I["or"][number]["and"][number]["filterString"], keyof FilterString>]: never; }) | undefined;
            } & { [K_3 in Exclude<keyof I["or"][number]["and"][number], keyof FilterField>]: never; })[] & { [K_4 in Exclude<keyof I["or"][number]["and"], keyof {
                field?: {
                    applicationField?: {
                        field?: ApplicationRawEnumField | undefined;
                    } | undefined;
                } | undefined;
                filterString?: {
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } | undefined;
            }[]>]: never; }) | undefined;
        } & { [K_5 in Exclude<keyof I["or"][number], "and">]: never; })[] & { [K_6 in Exclude<keyof I["or"], keyof {
            and?: {
                field?: {
                    applicationField?: {
                        field?: ApplicationRawEnumField | undefined;
                    } | undefined;
                } | undefined;
                filterString?: {
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } | undefined;
            }[] | undefined;
        }[]>]: never; }) | undefined;
    } & { [K_7 in Exclude<keyof I, "or">]: never; }>(base?: I | undefined): Filters;
    fromPartial<I_1 extends {
        or?: {
            and?: {
                field?: {
                    applicationField?: {
                        field?: ApplicationRawEnumField | undefined;
                    } | undefined;
                } | undefined;
                filterString?: {
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } | undefined;
            }[] | undefined;
        }[] | undefined;
    } & {
        or?: ({
            and?: {
                field?: {
                    applicationField?: {
                        field?: ApplicationRawEnumField | undefined;
                    } | undefined;
                } | undefined;
                filterString?: {
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } | undefined;
            }[] | undefined;
        }[] & ({
            and?: {
                field?: {
                    applicationField?: {
                        field?: ApplicationRawEnumField | undefined;
                    } | undefined;
                } | undefined;
                filterString?: {
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } | undefined;
            }[] | undefined;
        } & {
            and?: ({
                field?: {
                    applicationField?: {
                        field?: ApplicationRawEnumField | undefined;
                    } | undefined;
                } | undefined;
                filterString?: {
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } | undefined;
            }[] & ({
                field?: {
                    applicationField?: {
                        field?: ApplicationRawEnumField | undefined;
                    } | undefined;
                } | undefined;
                filterString?: {
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } | undefined;
            } & {
                field?: ({
                    applicationField?: {
                        field?: ApplicationRawEnumField | undefined;
                    } | undefined;
                } & {
                    applicationField?: ({
                        field?: ApplicationRawEnumField | undefined;
                    } & {
                        field?: ApplicationRawEnumField | undefined;
                    } & { [K_8 in Exclude<keyof I_1["or"][number]["and"][number]["field"]["applicationField"], "field">]: never; }) | undefined;
                } & { [K_9 in Exclude<keyof I_1["or"][number]["and"][number]["field"], "applicationField">]: never; }) | undefined;
                filterString?: ({
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } & {
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } & { [K_10 in Exclude<keyof I_1["or"][number]["and"][number]["filterString"], keyof FilterString>]: never; }) | undefined;
            } & { [K_11 in Exclude<keyof I_1["or"][number]["and"][number], keyof FilterField>]: never; })[] & { [K_12 in Exclude<keyof I_1["or"][number]["and"], keyof {
                field?: {
                    applicationField?: {
                        field?: ApplicationRawEnumField | undefined;
                    } | undefined;
                } | undefined;
                filterString?: {
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } | undefined;
            }[]>]: never; }) | undefined;
        } & { [K_13 in Exclude<keyof I_1["or"][number], "and">]: never; })[] & { [K_14 in Exclude<keyof I_1["or"], keyof {
            and?: {
                field?: {
                    applicationField?: {
                        field?: ApplicationRawEnumField | undefined;
                    } | undefined;
                } | undefined;
                filterString?: {
                    value?: string | undefined;
                    operator?: FilterStringOperator | undefined;
                } | undefined;
            }[] | undefined;
        }[]>]: never; }) | undefined;
    } & { [K_15 in Exclude<keyof I_1, "or">]: never; }>(object: I_1): Filters;
};
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
    [K in keyof T]?: DeepPartial<T[K]>;
} : Partial<T>;
type KeysOfUnion<T> = T extends T ? keyof T : never;
type Exact<P, I extends P> = P extends Builtin ? P : P & {
    [K in keyof P]: Exact<P[K], I[K]>;
} & {
    [K in Exclude<keyof I, KeysOfUnion<P>>]: never;
};

export { DeepPartial, Exact, FilterField, Filters, FiltersAnd, protobufPackage };
