import { ModelConfig } from './config.types';
export declare type I18N_T = {
    (key: string, options?: any, defaultMessage?: string | undefined): string;
    (key: string, defaultMessage?: string | undefined): string;
};
declare type FieldKind = 'scalar' | 'object' | 'enum' | 'unsupported';
interface DMMFField {
    kind: FieldKind;
    name: string;
    isRequired: boolean;
    isList: boolean;
    isUnique: boolean;
    isId: boolean;
    isReadOnly: boolean;
    isGenerated: boolean;
    isUpdatedAt: boolean;
    type: string;
    dbNames?: string[] | null;
    hasDefaultValue: boolean;
    default?: FieldDefault | string | boolean | number;
    relationFromFields?: string[];
    relationToFields?: string[];
    relationOnDelete?: string;
    relationName?: string;
    documentation?: string;
    [key: string]: any;
}
interface FieldDefault {
    name: string;
    args: any[];
}
export declare type ChangeValueModal = {
    visible: boolean;
    keys: string[];
    fields: string[];
    initialValues: {};
};
export declare type FieldDataType = DMMFField & {
    tsType: TsTypeString;
    uiType: {
        formItem: {
            type: 'File' | 'Image';
            args: {
                maxCount: number;
                accept: string;
                sizeLimit: number;
            };
        } | {
            type: 'Text';
            args: {
                rows: number;
            };
        } | {
            type: 'CheckBox' | 'Radio';
            args: {
                options: string[];
            };
        } | {
            type: 'Select';
            args: {
                options: string[];
                mode?: 'multiple' | undefined;
            };
        } | {
            type: 'String' | 'Boolean' | 'Int' | 'BigInt' | 'Float' | 'Decimal' | 'DateTime' | 'Markdown' | 'Html' | 'Url' | 'Email' | 'Other';
            args: {};
        };
    };
};
export declare type ModelType = Record<string, FieldDataType>;
export declare type ModelsFieldsTypeMap = Record<string, {
    model: ModelType;
    meta: ModelConfig['metadata'];
}>;
export declare type Enumerable<T> = T | Array<T>;
export declare type ScalarType = string | number | bigint | boolean | Date | undefined | null;
export declare type XOR<T, U> = T extends object ? U extends object ? (Without<T, U> & U) | (Without<U, T> & T) : U : T;
export declare type SortOrder = 'desc' | 'asc';
export declare type Without<T, U> = {
    [P in Exclude<keyof T, keyof U>]?: never;
};
export declare type PageMetaDto = {
    page: number;
    take: number;
    itemCount: number;
    pageCount: number;
    hasPreviousPage: boolean;
    hasNextPage: boolean;
};
export declare type PageDto<T> = {
    data: T[];
    meta: PageMetaDto;
};
export declare type IntFilter = {
    equals?: number;
    in?: Enumerable<number>;
    notIn?: Enumerable<number>;
    lt?: number;
    lte?: number;
    gt?: number;
    gte?: number;
    not?: NestedIntFilter | number;
};
export declare type DateTimeFilter = {
    equals?: Date | string;
    in?: Enumerable<Date> | Enumerable<string>;
    notIn?: Enumerable<Date> | Enumerable<string>;
    lt?: Date | string;
    lte?: Date | string;
    gt?: Date | string;
    gte?: Date | string;
    not?: NestedDateTimeFilter | Date | string;
};
export declare type StringFilter = {
    equals?: string;
    in?: Enumerable<string>;
    notIn?: Enumerable<string>;
    lt?: string;
    lte?: string;
    gt?: string;
    gte?: string;
    contains?: string;
    startsWith?: string;
    endsWith?: string;
    not?: NestedStringFilter | string;
};
export declare type StringNullableFilter = {
    equals?: string | null;
    in?: Enumerable<string> | null;
    notIn?: Enumerable<string> | null;
    lt?: string;
    lte?: string;
    gt?: string;
    gte?: string;
    contains?: string;
    startsWith?: string;
    endsWith?: string;
    not?: NestedStringNullableFilter | string | null;
};
export declare type FloatFilter = {
    equals?: number;
    in?: Enumerable<number>;
    notIn?: Enumerable<number>;
    lt?: number;
    lte?: number;
    gt?: number;
    gte?: number;
    not?: NestedFloatFilter | number;
};
export declare type BoolFilter = {
    equals?: boolean;
    not?: NestedBoolFilter | boolean;
};
export declare type NestedIntFilter = {
    equals?: number;
    in?: Enumerable<number>;
    notIn?: Enumerable<number>;
    lt?: number;
    lte?: number;
    gt?: number;
    gte?: number;
    not?: NestedIntFilter | number;
};
export declare type NestedDateTimeFilter = {
    equals?: Date | string;
    in?: Enumerable<Date> | Enumerable<string>;
    notIn?: Enumerable<Date> | Enumerable<string>;
    lt?: Date | string;
    lte?: Date | string;
    gt?: Date | string;
    gte?: Date | string;
    not?: NestedDateTimeFilter | Date | string;
};
export declare type NestedStringFilter = {
    equals?: string;
    in?: Enumerable<string>;
    notIn?: Enumerable<string>;
    lt?: string;
    lte?: string;
    gt?: string;
    gte?: string;
    contains?: string;
    startsWith?: string;
    endsWith?: string;
    not?: NestedStringFilter | string;
};
export declare type NestedStringNullableFilter = {
    equals?: string | null;
    in?: Enumerable<string> | null;
    notIn?: Enumerable<string> | null;
    lt?: string;
    lte?: string;
    gt?: string;
    gte?: string;
    contains?: string;
    startsWith?: string;
    endsWith?: string;
    not?: NestedStringNullableFilter | string | null;
};
export declare type NestedFloatFilter = {
    equals?: number;
    in?: Enumerable<number>;
    notIn?: Enumerable<number>;
    lt?: number;
    lte?: number;
    gt?: number;
    gte?: number;
    not?: NestedFloatFilter | number;
};
export declare type NestedBoolFilter = {
    equals?: boolean;
    not?: NestedBoolFilter | boolean;
};
export declare type NestedIntWithAggregatesFilter = {
    equals?: number;
    in?: Enumerable<number>;
    notIn?: Enumerable<number>;
    lt?: number;
    lte?: number;
    gt?: number;
    gte?: number;
    not?: NestedIntWithAggregatesFilter | number;
    _count?: NestedIntFilter;
    _avg?: NestedFloatFilter;
    _sum?: NestedIntFilter;
    _min?: NestedIntFilter;
    _max?: NestedIntFilter;
};
export declare type NestedDateTimeWithAggregatesFilter = {
    equals?: Date | string;
    in?: Enumerable<Date> | Enumerable<string>;
    notIn?: Enumerable<Date> | Enumerable<string>;
    lt?: Date | string;
    lte?: Date | string;
    gt?: Date | string;
    gte?: Date | string;
    not?: NestedDateTimeWithAggregatesFilter | Date | string;
    _count?: NestedIntFilter;
    _min?: NestedDateTimeFilter;
    _max?: NestedDateTimeFilter;
};
export declare type NestedStringWithAggregatesFilter = {
    equals?: string;
    in?: Enumerable<string>;
    notIn?: Enumerable<string>;
    lt?: string;
    lte?: string;
    gt?: string;
    gte?: string;
    contains?: string;
    startsWith?: string;
    endsWith?: string;
    not?: NestedStringWithAggregatesFilter | string;
    _count?: NestedIntFilter;
    _min?: NestedStringFilter;
    _max?: NestedStringFilter;
};
export declare type NestedStringNullableWithAggregatesFilter = {
    equals?: string | null;
    in?: Enumerable<string> | null;
    notIn?: Enumerable<string> | null;
    lt?: string;
    lte?: string;
    gt?: string;
    gte?: string;
    contains?: string;
    startsWith?: string;
    endsWith?: string;
    not?: NestedStringNullableWithAggregatesFilter | string | null;
    _count?: NestedIntNullableFilter;
    _min?: NestedStringNullableFilter;
    _max?: NestedStringNullableFilter;
};
export declare type NestedIntNullableFilter = {
    equals?: number | null;
    in?: Enumerable<number> | null;
    notIn?: Enumerable<number> | null;
    lt?: number;
    lte?: number;
    gt?: number;
    gte?: number;
    not?: NestedIntNullableFilter | number | null;
};
export declare type NestedFloatWithAggregatesFilter = {
    equals?: number;
    in?: Enumerable<number>;
    notIn?: Enumerable<number>;
    lt?: number;
    lte?: number;
    gt?: number;
    gte?: number;
    not?: NestedFloatWithAggregatesFilter | number;
    _count?: NestedIntFilter;
    _avg?: NestedFloatFilter;
    _sum?: NestedFloatFilter;
    _min?: NestedFloatFilter;
    _max?: NestedFloatFilter;
};
export declare type NestedBoolWithAggregatesFilter = {
    equals?: boolean;
    not?: NestedBoolWithAggregatesFilter | boolean;
    _count?: NestedIntFilter;
    _min?: NestedBoolFilter;
    _max?: NestedBoolFilter;
};
export declare type NestedIntNullableWithAggregatesFilter = {
    equals?: number | null;
    in?: Enumerable<number> | null;
    notIn?: Enumerable<number> | null;
    lt?: number;
    lte?: number;
    gt?: number;
    gte?: number;
    not?: NestedIntNullableWithAggregatesFilter | number | null;
    _count?: NestedIntNullableFilter;
    _avg?: NestedFloatNullableFilter;
    _sum?: NestedIntNullableFilter;
    _min?: NestedIntNullableFilter;
    _max?: NestedIntNullableFilter;
};
export declare type NestedFloatNullableFilter = {
    equals?: number | null;
    in?: Enumerable<number> | null;
    notIn?: Enumerable<number> | null;
    lt?: number;
    lte?: number;
    gt?: number;
    gte?: number;
    not?: NestedFloatNullableFilter | number | null;
};
export declare type Model = {
    [k: string]: ScalarType;
};
export declare type ModelCountOutputTypeSelect = {
    [k: string]: boolean | undefined;
};
export declare type ModelCountOutputType = {
    [k: string]: number;
};
export declare type ModelCountOutputTypeArgs = {
    select?: ModelCountOutputTypeSelect | null;
};
export declare type ModelSelect = {
    [k: string]: boolean | ModelFindManyArgs | ModelCountOutputTypeArgs | undefined;
};
export declare type ModelWhereInput = {
    AND?: Enumerable<ModelWhereInput>;
    OR?: Enumerable<ModelWhereInput>;
    NOT?: Enumerable<ModelWhereInput>;
    [k: string]: any;
};
export declare type ModelOrderByRelationAggregateInput = {
    _count?: SortOrder;
};
export declare type ModelOrderByWithRelationInput = {
    [k: string]: SortOrder | ModelOrderByRelationAggregateInput | ModelOrderByWithRelationInput | undefined;
};
export declare type ModelFindManyArgs = {
    select?: ModelSelect | null | undefined;
    where?: ModelWhereInput | undefined;
    orderBy?: Enumerable<ModelOrderByWithRelationInput> | undefined;
    take?: number | undefined;
    skip?: number | undefined;
    distinct?: Enumerable<string> | undefined;
};
export declare type SystemFields = 'id' | 'createdAt' | 'updatedAt';
export declare type RequiredFields<T> = Exclude<keyof T, SystemFields>;
export declare type CreateEntity<T> = Pick<T, RequiredFields<T>>;
export declare type UpdateEntity<T> = Partial<CreateEntity<T>>;
export declare type CreateModel = CreateEntity<Model>;
export declare type UpdateModel = UpdateEntity<Model>;
export declare type TeaProTableParams = ModelFindManyArgs & {
    pageSize?: number;
    current?: number;
    pageIndex?: number;
};
export declare type FindManyResut = PageDto<Model>;
export declare type EffectedCount = {
    count: number;
};
export declare type ModelInclude = {
    [k: string]: boolean | ModelFindManyArgs | ModelCountOutputTypeArgs | undefined;
};
export declare type ModelWhereUniqueInput = {
    id?: number;
};
export declare type ModelCreateInput = {
    [k: string]: any;
};
export declare type ModelCreateArgs = {
    select?: ModelSelect | null;
    include?: ModelInclude | null;
    data: any;
};
export declare type ModelUpdateArgs = {
    select?: ModelSelect | null;
    data: any;
    where: any;
};
export declare type ModelUpdateManyArgs = {
    data: any;
    where?: ModelWhereInput;
};
export declare type ModelDeleteManyArgs = {
    where?: ModelWhereInput;
};
export declare type TsTypeString = 'string' | 'boolean' | 'number' | 'Date' | 'bigint' | 'undefined' | 'null';
export interface IStringToTsType {
    (value: ScalarType, dataTypeString: TsTypeString): ScalarType;
}
export declare type RequestMethod = 'GET' | 'POST' | 'PATCH' | 'DELETE';
export declare type RequestAction = 'createOne' | 'findUnique' | 'findMany' | 'updateUnique' | 'updateMany' | 'deleteUnique' | 'deleteMany' | 'count' | 'groupBy' | 'aggregate';
export declare type TABLE_ACTIONS = 'INSERT' | 'CHANGE_STATUS' | 'DELETE' | 'EXPORT';
export declare type ExportDataType<T> = {
    records: T[];
    fields: (keyof T)[];
    fieldNames: string[];
    fileName?: string;
};
export {};
