import type * as runtime from "@prisma/client/runtime/client";
import type * as $Enums from "../enums";
import type * as Prisma from "../internal/prismaNamespace";
export type BankModel = runtime.Types.Result.DefaultSelection<Prisma.$BankPayload>;
export type AggregateBank = {
    _count: BankCountAggregateOutputType | null;
    _min: BankMinAggregateOutputType | null;
    _max: BankMaxAggregateOutputType | null;
};
export type BankMinAggregateOutputType = {
    id: string | null;
    code: string | null;
    name: string | null;
    status: $Enums.SettingStatus | null;
    createdAt: Date | null;
    modifiedAt: Date | null;
};
export type BankMaxAggregateOutputType = {
    id: string | null;
    code: string | null;
    name: string | null;
    status: $Enums.SettingStatus | null;
    createdAt: Date | null;
    modifiedAt: Date | null;
};
export type BankCountAggregateOutputType = {
    id: number;
    code: number;
    name: number;
    status: number;
    createdAt: number;
    modifiedAt: number;
    _all: number;
};
export type BankMinAggregateInputType = {
    id?: true;
    code?: true;
    name?: true;
    status?: true;
    createdAt?: true;
    modifiedAt?: true;
};
export type BankMaxAggregateInputType = {
    id?: true;
    code?: true;
    name?: true;
    status?: true;
    createdAt?: true;
    modifiedAt?: true;
};
export type BankCountAggregateInputType = {
    id?: true;
    code?: true;
    name?: true;
    status?: true;
    createdAt?: true;
    modifiedAt?: true;
    _all?: true;
};
export type BankAggregateArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    where?: Prisma.BankWhereInput;
    orderBy?: Prisma.BankOrderByWithRelationInput | Prisma.BankOrderByWithRelationInput[];
    cursor?: Prisma.BankWhereUniqueInput;
    take?: number;
    skip?: number;
    _count?: true | BankCountAggregateInputType;
    _min?: BankMinAggregateInputType;
    _max?: BankMaxAggregateInputType;
};
export type GetBankAggregateType<T extends BankAggregateArgs> = {
    [P in keyof T & keyof AggregateBank]: P extends '_count' | 'count' ? T[P] extends true ? number : Prisma.GetScalarType<T[P], AggregateBank[P]> : Prisma.GetScalarType<T[P], AggregateBank[P]>;
};
export type BankGroupByArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    where?: Prisma.BankWhereInput;
    orderBy?: Prisma.BankOrderByWithAggregationInput | Prisma.BankOrderByWithAggregationInput[];
    by: Prisma.BankScalarFieldEnum[] | Prisma.BankScalarFieldEnum;
    having?: Prisma.BankScalarWhereWithAggregatesInput;
    take?: number;
    skip?: number;
    _count?: BankCountAggregateInputType | true;
    _min?: BankMinAggregateInputType;
    _max?: BankMaxAggregateInputType;
};
export type BankGroupByOutputType = {
    id: string;
    code: string;
    name: string;
    status: $Enums.SettingStatus;
    createdAt: Date;
    modifiedAt: Date;
    _count: BankCountAggregateOutputType | null;
    _min: BankMinAggregateOutputType | null;
    _max: BankMaxAggregateOutputType | null;
};
type GetBankGroupByPayload<T extends BankGroupByArgs> = Prisma.PrismaPromise<Array<Prisma.PickEnumerable<BankGroupByOutputType, T['by']> & {
    [P in ((keyof T) & (keyof BankGroupByOutputType))]: P extends '_count' ? T[P] extends boolean ? number : Prisma.GetScalarType<T[P], BankGroupByOutputType[P]> : Prisma.GetScalarType<T[P], BankGroupByOutputType[P]>;
}>>;
export type BankWhereInput = {
    AND?: Prisma.BankWhereInput | Prisma.BankWhereInput[];
    OR?: Prisma.BankWhereInput[];
    NOT?: Prisma.BankWhereInput | Prisma.BankWhereInput[];
    id?: Prisma.UuidFilter<"Bank"> | string;
    code?: Prisma.StringFilter<"Bank"> | string;
    name?: Prisma.StringFilter<"Bank"> | string;
    status?: Prisma.EnumSettingStatusFilter<"Bank"> | $Enums.SettingStatus;
    createdAt?: Prisma.DateTimeFilter<"Bank"> | Date | string;
    modifiedAt?: Prisma.DateTimeFilter<"Bank"> | Date | string;
    transactions?: Prisma.TransactionListRelationFilter;
};
export type BankOrderByWithRelationInput = {
    id?: Prisma.SortOrder;
    code?: Prisma.SortOrder;
    name?: Prisma.SortOrder;
    status?: Prisma.SortOrder;
    createdAt?: Prisma.SortOrder;
    modifiedAt?: Prisma.SortOrder;
    transactions?: Prisma.TransactionOrderByRelationAggregateInput;
};
export type BankWhereUniqueInput = Prisma.AtLeast<{
    id?: string;
    code?: string;
    AND?: Prisma.BankWhereInput | Prisma.BankWhereInput[];
    OR?: Prisma.BankWhereInput[];
    NOT?: Prisma.BankWhereInput | Prisma.BankWhereInput[];
    name?: Prisma.StringFilter<"Bank"> | string;
    status?: Prisma.EnumSettingStatusFilter<"Bank"> | $Enums.SettingStatus;
    createdAt?: Prisma.DateTimeFilter<"Bank"> | Date | string;
    modifiedAt?: Prisma.DateTimeFilter<"Bank"> | Date | string;
    transactions?: Prisma.TransactionListRelationFilter;
}, "id" | "code">;
export type BankOrderByWithAggregationInput = {
    id?: Prisma.SortOrder;
    code?: Prisma.SortOrder;
    name?: Prisma.SortOrder;
    status?: Prisma.SortOrder;
    createdAt?: Prisma.SortOrder;
    modifiedAt?: Prisma.SortOrder;
    _count?: Prisma.BankCountOrderByAggregateInput;
    _max?: Prisma.BankMaxOrderByAggregateInput;
    _min?: Prisma.BankMinOrderByAggregateInput;
};
export type BankScalarWhereWithAggregatesInput = {
    AND?: Prisma.BankScalarWhereWithAggregatesInput | Prisma.BankScalarWhereWithAggregatesInput[];
    OR?: Prisma.BankScalarWhereWithAggregatesInput[];
    NOT?: Prisma.BankScalarWhereWithAggregatesInput | Prisma.BankScalarWhereWithAggregatesInput[];
    id?: Prisma.UuidWithAggregatesFilter<"Bank"> | string;
    code?: Prisma.StringWithAggregatesFilter<"Bank"> | string;
    name?: Prisma.StringWithAggregatesFilter<"Bank"> | string;
    status?: Prisma.EnumSettingStatusWithAggregatesFilter<"Bank"> | $Enums.SettingStatus;
    createdAt?: Prisma.DateTimeWithAggregatesFilter<"Bank"> | Date | string;
    modifiedAt?: Prisma.DateTimeWithAggregatesFilter<"Bank"> | Date | string;
};
export type BankCreateInput = {
    id?: string;
    code: string;
    name: string;
    status?: $Enums.SettingStatus;
    createdAt?: Date | string;
    modifiedAt?: Date | string;
    transactions?: Prisma.TransactionCreateNestedManyWithoutBankInput;
};
export type BankUncheckedCreateInput = {
    id?: string;
    code: string;
    name: string;
    status?: $Enums.SettingStatus;
    createdAt?: Date | string;
    modifiedAt?: Date | string;
    transactions?: Prisma.TransactionUncheckedCreateNestedManyWithoutBankInput;
};
export type BankUpdateInput = {
    id?: Prisma.StringFieldUpdateOperationsInput | string;
    code?: Prisma.StringFieldUpdateOperationsInput | string;
    name?: Prisma.StringFieldUpdateOperationsInput | string;
    status?: Prisma.EnumSettingStatusFieldUpdateOperationsInput | $Enums.SettingStatus;
    createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
    modifiedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
    transactions?: Prisma.TransactionUpdateManyWithoutBankNestedInput;
};
export type BankUncheckedUpdateInput = {
    id?: Prisma.StringFieldUpdateOperationsInput | string;
    code?: Prisma.StringFieldUpdateOperationsInput | string;
    name?: Prisma.StringFieldUpdateOperationsInput | string;
    status?: Prisma.EnumSettingStatusFieldUpdateOperationsInput | $Enums.SettingStatus;
    createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
    modifiedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
    transactions?: Prisma.TransactionUncheckedUpdateManyWithoutBankNestedInput;
};
export type BankCreateManyInput = {
    id?: string;
    code: string;
    name: string;
    status?: $Enums.SettingStatus;
    createdAt?: Date | string;
    modifiedAt?: Date | string;
};
export type BankUpdateManyMutationInput = {
    id?: Prisma.StringFieldUpdateOperationsInput | string;
    code?: Prisma.StringFieldUpdateOperationsInput | string;
    name?: Prisma.StringFieldUpdateOperationsInput | string;
    status?: Prisma.EnumSettingStatusFieldUpdateOperationsInput | $Enums.SettingStatus;
    createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
    modifiedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
};
export type BankUncheckedUpdateManyInput = {
    id?: Prisma.StringFieldUpdateOperationsInput | string;
    code?: Prisma.StringFieldUpdateOperationsInput | string;
    name?: Prisma.StringFieldUpdateOperationsInput | string;
    status?: Prisma.EnumSettingStatusFieldUpdateOperationsInput | $Enums.SettingStatus;
    createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
    modifiedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
};
export type BankCountOrderByAggregateInput = {
    id?: Prisma.SortOrder;
    code?: Prisma.SortOrder;
    name?: Prisma.SortOrder;
    status?: Prisma.SortOrder;
    createdAt?: Prisma.SortOrder;
    modifiedAt?: Prisma.SortOrder;
};
export type BankMaxOrderByAggregateInput = {
    id?: Prisma.SortOrder;
    code?: Prisma.SortOrder;
    name?: Prisma.SortOrder;
    status?: Prisma.SortOrder;
    createdAt?: Prisma.SortOrder;
    modifiedAt?: Prisma.SortOrder;
};
export type BankMinOrderByAggregateInput = {
    id?: Prisma.SortOrder;
    code?: Prisma.SortOrder;
    name?: Prisma.SortOrder;
    status?: Prisma.SortOrder;
    createdAt?: Prisma.SortOrder;
    modifiedAt?: Prisma.SortOrder;
};
export type BankNullableScalarRelationFilter = {
    is?: Prisma.BankWhereInput | null;
    isNot?: Prisma.BankWhereInput | null;
};
export type BankCreateNestedOneWithoutTransactionsInput = {
    create?: Prisma.XOR<Prisma.BankCreateWithoutTransactionsInput, Prisma.BankUncheckedCreateWithoutTransactionsInput>;
    connectOrCreate?: Prisma.BankCreateOrConnectWithoutTransactionsInput;
    connect?: Prisma.BankWhereUniqueInput;
};
export type BankUpdateOneWithoutTransactionsNestedInput = {
    create?: Prisma.XOR<Prisma.BankCreateWithoutTransactionsInput, Prisma.BankUncheckedCreateWithoutTransactionsInput>;
    connectOrCreate?: Prisma.BankCreateOrConnectWithoutTransactionsInput;
    upsert?: Prisma.BankUpsertWithoutTransactionsInput;
    disconnect?: Prisma.BankWhereInput | boolean;
    delete?: Prisma.BankWhereInput | boolean;
    connect?: Prisma.BankWhereUniqueInput;
    update?: Prisma.XOR<Prisma.XOR<Prisma.BankUpdateToOneWithWhereWithoutTransactionsInput, Prisma.BankUpdateWithoutTransactionsInput>, Prisma.BankUncheckedUpdateWithoutTransactionsInput>;
};
export type BankCreateWithoutTransactionsInput = {
    id?: string;
    code: string;
    name: string;
    status?: $Enums.SettingStatus;
    createdAt?: Date | string;
    modifiedAt?: Date | string;
};
export type BankUncheckedCreateWithoutTransactionsInput = {
    id?: string;
    code: string;
    name: string;
    status?: $Enums.SettingStatus;
    createdAt?: Date | string;
    modifiedAt?: Date | string;
};
export type BankCreateOrConnectWithoutTransactionsInput = {
    where: Prisma.BankWhereUniqueInput;
    create: Prisma.XOR<Prisma.BankCreateWithoutTransactionsInput, Prisma.BankUncheckedCreateWithoutTransactionsInput>;
};
export type BankUpsertWithoutTransactionsInput = {
    update: Prisma.XOR<Prisma.BankUpdateWithoutTransactionsInput, Prisma.BankUncheckedUpdateWithoutTransactionsInput>;
    create: Prisma.XOR<Prisma.BankCreateWithoutTransactionsInput, Prisma.BankUncheckedCreateWithoutTransactionsInput>;
    where?: Prisma.BankWhereInput;
};
export type BankUpdateToOneWithWhereWithoutTransactionsInput = {
    where?: Prisma.BankWhereInput;
    data: Prisma.XOR<Prisma.BankUpdateWithoutTransactionsInput, Prisma.BankUncheckedUpdateWithoutTransactionsInput>;
};
export type BankUpdateWithoutTransactionsInput = {
    id?: Prisma.StringFieldUpdateOperationsInput | string;
    code?: Prisma.StringFieldUpdateOperationsInput | string;
    name?: Prisma.StringFieldUpdateOperationsInput | string;
    status?: Prisma.EnumSettingStatusFieldUpdateOperationsInput | $Enums.SettingStatus;
    createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
    modifiedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
};
export type BankUncheckedUpdateWithoutTransactionsInput = {
    id?: Prisma.StringFieldUpdateOperationsInput | string;
    code?: Prisma.StringFieldUpdateOperationsInput | string;
    name?: Prisma.StringFieldUpdateOperationsInput | string;
    status?: Prisma.EnumSettingStatusFieldUpdateOperationsInput | $Enums.SettingStatus;
    createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
    modifiedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
};
export type BankCountOutputType = {
    transactions: number;
};
export type BankCountOutputTypeSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    transactions?: boolean | BankCountOutputTypeCountTransactionsArgs;
};
export type BankCountOutputTypeDefaultArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    select?: Prisma.BankCountOutputTypeSelect<ExtArgs> | null;
};
export type BankCountOutputTypeCountTransactionsArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    where?: Prisma.TransactionWhereInput;
};
export type BankSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
    id?: boolean;
    code?: boolean;
    name?: boolean;
    status?: boolean;
    createdAt?: boolean;
    modifiedAt?: boolean;
    transactions?: boolean | Prisma.Bank$transactionsArgs<ExtArgs>;
    _count?: boolean | Prisma.BankCountOutputTypeDefaultArgs<ExtArgs>;
}, ExtArgs["result"]["bank"]>;
export type BankSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
    id?: boolean;
    code?: boolean;
    name?: boolean;
    status?: boolean;
    createdAt?: boolean;
    modifiedAt?: boolean;
}, ExtArgs["result"]["bank"]>;
export type BankSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
    id?: boolean;
    code?: boolean;
    name?: boolean;
    status?: boolean;
    createdAt?: boolean;
    modifiedAt?: boolean;
}, ExtArgs["result"]["bank"]>;
export type BankSelectScalar = {
    id?: boolean;
    code?: boolean;
    name?: boolean;
    status?: boolean;
    createdAt?: boolean;
    modifiedAt?: boolean;
};
export type BankOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "code" | "name" | "status" | "createdAt" | "modifiedAt", ExtArgs["result"]["bank"]>;
export type BankInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    transactions?: boolean | Prisma.Bank$transactionsArgs<ExtArgs>;
    _count?: boolean | Prisma.BankCountOutputTypeDefaultArgs<ExtArgs>;
};
export type BankIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {};
export type BankIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {};
export type $BankPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    name: "Bank";
    objects: {
        transactions: Prisma.$TransactionPayload<ExtArgs>[];
    };
    scalars: runtime.Types.Extensions.GetPayloadResult<{
        id: string;
        code: string;
        name: string;
        status: $Enums.SettingStatus;
        createdAt: Date;
        modifiedAt: Date;
    }, ExtArgs["result"]["bank"]>;
    composites: {};
};
export type BankGetPayload<S extends boolean | null | undefined | BankDefaultArgs> = runtime.Types.Result.GetResult<Prisma.$BankPayload, S>;
export type BankCountArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = Omit<BankFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
    select?: BankCountAggregateInputType | true;
};
export interface BankDelegate<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: {
        types: Prisma.TypeMap<ExtArgs>['model']['Bank'];
        meta: {
            name: 'Bank';
        };
    };
    findUnique<T extends BankFindUniqueArgs>(args: Prisma.SelectSubset<T, BankFindUniqueArgs<ExtArgs>>): Prisma.Prisma__BankClient<runtime.Types.Result.GetResult<Prisma.$BankPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>;
    findUniqueOrThrow<T extends BankFindUniqueOrThrowArgs>(args: Prisma.SelectSubset<T, BankFindUniqueOrThrowArgs<ExtArgs>>): Prisma.Prisma__BankClient<runtime.Types.Result.GetResult<Prisma.$BankPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>;
    findFirst<T extends BankFindFirstArgs>(args?: Prisma.SelectSubset<T, BankFindFirstArgs<ExtArgs>>): Prisma.Prisma__BankClient<runtime.Types.Result.GetResult<Prisma.$BankPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>;
    findFirstOrThrow<T extends BankFindFirstOrThrowArgs>(args?: Prisma.SelectSubset<T, BankFindFirstOrThrowArgs<ExtArgs>>): Prisma.Prisma__BankClient<runtime.Types.Result.GetResult<Prisma.$BankPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>;
    findMany<T extends BankFindManyArgs>(args?: Prisma.SelectSubset<T, BankFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$BankPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>;
    create<T extends BankCreateArgs>(args: Prisma.SelectSubset<T, BankCreateArgs<ExtArgs>>): Prisma.Prisma__BankClient<runtime.Types.Result.GetResult<Prisma.$BankPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>;
    createMany<T extends BankCreateManyArgs>(args?: Prisma.SelectSubset<T, BankCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>;
    createManyAndReturn<T extends BankCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, BankCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$BankPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>;
    delete<T extends BankDeleteArgs>(args: Prisma.SelectSubset<T, BankDeleteArgs<ExtArgs>>): Prisma.Prisma__BankClient<runtime.Types.Result.GetResult<Prisma.$BankPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>;
    update<T extends BankUpdateArgs>(args: Prisma.SelectSubset<T, BankUpdateArgs<ExtArgs>>): Prisma.Prisma__BankClient<runtime.Types.Result.GetResult<Prisma.$BankPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>;
    deleteMany<T extends BankDeleteManyArgs>(args?: Prisma.SelectSubset<T, BankDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>;
    updateMany<T extends BankUpdateManyArgs>(args: Prisma.SelectSubset<T, BankUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>;
    updateManyAndReturn<T extends BankUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, BankUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$BankPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>;
    upsert<T extends BankUpsertArgs>(args: Prisma.SelectSubset<T, BankUpsertArgs<ExtArgs>>): Prisma.Prisma__BankClient<runtime.Types.Result.GetResult<Prisma.$BankPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>;
    count<T extends BankCountArgs>(args?: Prisma.Subset<T, BankCountArgs>): Prisma.PrismaPromise<T extends runtime.Types.Utils.Record<'select', any> ? T['select'] extends true ? number : Prisma.GetScalarType<T['select'], BankCountAggregateOutputType> : number>;
    aggregate<T extends BankAggregateArgs>(args: Prisma.Subset<T, BankAggregateArgs>): Prisma.PrismaPromise<GetBankAggregateType<T>>;
    groupBy<T extends BankGroupByArgs, HasSelectOrTake extends Prisma.Or<Prisma.Extends<'skip', Prisma.Keys<T>>, Prisma.Extends<'take', Prisma.Keys<T>>>, OrderByArg extends Prisma.True extends HasSelectOrTake ? {
        orderBy: BankGroupByArgs['orderBy'];
    } : {
        orderBy?: BankGroupByArgs['orderBy'];
    }, OrderFields extends Prisma.ExcludeUnderscoreKeys<Prisma.Keys<Prisma.MaybeTupleToUnion<T['orderBy']>>>, ByFields extends Prisma.MaybeTupleToUnion<T['by']>, ByValid extends Prisma.Has<ByFields, OrderFields>, HavingFields extends Prisma.GetHavingFields<T['having']>, HavingValid extends Prisma.Has<ByFields, HavingFields>, ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, InputErrors extends ByEmpty extends Prisma.True ? `Error: "by" must not be empty.` : HavingValid extends Prisma.False ? {
        [P in HavingFields]: P extends ByFields ? never : P extends string ? `Error: Field "${P}" used in "having" needs to be provided in "by".` : [
            Error,
            'Field ',
            P,
            ` in "having" needs to be provided in "by"`
        ];
    }[HavingFields] : 'take' extends Prisma.Keys<T> ? 'orderBy' extends Prisma.Keys<T> ? ByValid extends Prisma.True ? {} : {
        [P in OrderFields]: P extends ByFields ? never : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`;
    }[OrderFields] : 'Error: If you provide "take", you also need to provide "orderBy"' : 'skip' extends Prisma.Keys<T> ? 'orderBy' extends Prisma.Keys<T> ? ByValid extends Prisma.True ? {} : {
        [P in OrderFields]: P extends ByFields ? never : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`;
    }[OrderFields] : 'Error: If you provide "skip", you also need to provide "orderBy"' : ByValid extends Prisma.True ? {} : {
        [P in OrderFields]: P extends ByFields ? never : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`;
    }[OrderFields]>(args: Prisma.SubsetIntersection<T, BankGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetBankGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>;
    readonly fields: BankFieldRefs;
}
export interface Prisma__BankClient<T, Null = never, ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise";
    transactions<T extends Prisma.Bank$transactionsArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.Bank$transactionsArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$TransactionPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>;
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): runtime.Types.Utils.JsPromise<TResult1 | TResult2>;
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): runtime.Types.Utils.JsPromise<T | TResult>;
    finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise<T>;
}
export interface BankFieldRefs {
    readonly id: Prisma.FieldRef<"Bank", 'String'>;
    readonly code: Prisma.FieldRef<"Bank", 'String'>;
    readonly name: Prisma.FieldRef<"Bank", 'String'>;
    readonly status: Prisma.FieldRef<"Bank", 'SettingStatus'>;
    readonly createdAt: Prisma.FieldRef<"Bank", 'DateTime'>;
    readonly modifiedAt: Prisma.FieldRef<"Bank", 'DateTime'>;
}
export type BankFindUniqueArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    select?: Prisma.BankSelect<ExtArgs> | null;
    omit?: Prisma.BankOmit<ExtArgs> | null;
    include?: Prisma.BankInclude<ExtArgs> | null;
    where: Prisma.BankWhereUniqueInput;
};
export type BankFindUniqueOrThrowArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    select?: Prisma.BankSelect<ExtArgs> | null;
    omit?: Prisma.BankOmit<ExtArgs> | null;
    include?: Prisma.BankInclude<ExtArgs> | null;
    where: Prisma.BankWhereUniqueInput;
};
export type BankFindFirstArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    select?: Prisma.BankSelect<ExtArgs> | null;
    omit?: Prisma.BankOmit<ExtArgs> | null;
    include?: Prisma.BankInclude<ExtArgs> | null;
    where?: Prisma.BankWhereInput;
    orderBy?: Prisma.BankOrderByWithRelationInput | Prisma.BankOrderByWithRelationInput[];
    cursor?: Prisma.BankWhereUniqueInput;
    take?: number;
    skip?: number;
    distinct?: Prisma.BankScalarFieldEnum | Prisma.BankScalarFieldEnum[];
};
export type BankFindFirstOrThrowArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    select?: Prisma.BankSelect<ExtArgs> | null;
    omit?: Prisma.BankOmit<ExtArgs> | null;
    include?: Prisma.BankInclude<ExtArgs> | null;
    where?: Prisma.BankWhereInput;
    orderBy?: Prisma.BankOrderByWithRelationInput | Prisma.BankOrderByWithRelationInput[];
    cursor?: Prisma.BankWhereUniqueInput;
    take?: number;
    skip?: number;
    distinct?: Prisma.BankScalarFieldEnum | Prisma.BankScalarFieldEnum[];
};
export type BankFindManyArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    select?: Prisma.BankSelect<ExtArgs> | null;
    omit?: Prisma.BankOmit<ExtArgs> | null;
    include?: Prisma.BankInclude<ExtArgs> | null;
    where?: Prisma.BankWhereInput;
    orderBy?: Prisma.BankOrderByWithRelationInput | Prisma.BankOrderByWithRelationInput[];
    cursor?: Prisma.BankWhereUniqueInput;
    take?: number;
    skip?: number;
    distinct?: Prisma.BankScalarFieldEnum | Prisma.BankScalarFieldEnum[];
};
export type BankCreateArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    select?: Prisma.BankSelect<ExtArgs> | null;
    omit?: Prisma.BankOmit<ExtArgs> | null;
    include?: Prisma.BankInclude<ExtArgs> | null;
    data: Prisma.XOR<Prisma.BankCreateInput, Prisma.BankUncheckedCreateInput>;
};
export type BankCreateManyArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    data: Prisma.BankCreateManyInput | Prisma.BankCreateManyInput[];
    skipDuplicates?: boolean;
};
export type BankCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    select?: Prisma.BankSelectCreateManyAndReturn<ExtArgs> | null;
    omit?: Prisma.BankOmit<ExtArgs> | null;
    data: Prisma.BankCreateManyInput | Prisma.BankCreateManyInput[];
    skipDuplicates?: boolean;
};
export type BankUpdateArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    select?: Prisma.BankSelect<ExtArgs> | null;
    omit?: Prisma.BankOmit<ExtArgs> | null;
    include?: Prisma.BankInclude<ExtArgs> | null;
    data: Prisma.XOR<Prisma.BankUpdateInput, Prisma.BankUncheckedUpdateInput>;
    where: Prisma.BankWhereUniqueInput;
};
export type BankUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    data: Prisma.XOR<Prisma.BankUpdateManyMutationInput, Prisma.BankUncheckedUpdateManyInput>;
    where?: Prisma.BankWhereInput;
    limit?: number;
};
export type BankUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    select?: Prisma.BankSelectUpdateManyAndReturn<ExtArgs> | null;
    omit?: Prisma.BankOmit<ExtArgs> | null;
    data: Prisma.XOR<Prisma.BankUpdateManyMutationInput, Prisma.BankUncheckedUpdateManyInput>;
    where?: Prisma.BankWhereInput;
    limit?: number;
};
export type BankUpsertArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    select?: Prisma.BankSelect<ExtArgs> | null;
    omit?: Prisma.BankOmit<ExtArgs> | null;
    include?: Prisma.BankInclude<ExtArgs> | null;
    where: Prisma.BankWhereUniqueInput;
    create: Prisma.XOR<Prisma.BankCreateInput, Prisma.BankUncheckedCreateInput>;
    update: Prisma.XOR<Prisma.BankUpdateInput, Prisma.BankUncheckedUpdateInput>;
};
export type BankDeleteArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    select?: Prisma.BankSelect<ExtArgs> | null;
    omit?: Prisma.BankOmit<ExtArgs> | null;
    include?: Prisma.BankInclude<ExtArgs> | null;
    where: Prisma.BankWhereUniqueInput;
};
export type BankDeleteManyArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    where?: Prisma.BankWhereInput;
    limit?: number;
};
export type Bank$transactionsArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    select?: Prisma.TransactionSelect<ExtArgs> | null;
    omit?: Prisma.TransactionOmit<ExtArgs> | null;
    include?: Prisma.TransactionInclude<ExtArgs> | null;
    where?: Prisma.TransactionWhereInput;
    orderBy?: Prisma.TransactionOrderByWithRelationInput | Prisma.TransactionOrderByWithRelationInput[];
    cursor?: Prisma.TransactionWhereUniqueInput;
    take?: number;
    skip?: number;
    distinct?: Prisma.TransactionScalarFieldEnum | Prisma.TransactionScalarFieldEnum[];
};
export type BankDefaultArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
    select?: Prisma.BankSelect<ExtArgs> | null;
    omit?: Prisma.BankOmit<ExtArgs> | null;
    include?: Prisma.BankInclude<ExtArgs> | null;
};
export {};
