
/**
 * Client
**/

import * as runtime from './runtime/client.js';
import $Types = runtime.Types // general types
import $Public = runtime.Types.Public
import $Utils = runtime.Types.Utils
import $Extensions = runtime.Types.Extensions
import $Result = runtime.Types.Result

export type PrismaPromise<T> = $Public.PrismaPromise<T>


/**
 * Model Company
 * 
 */
export type Company = $Result.DefaultSelection<Prisma.$CompanyPayload>
/**
 * Model Role
 * 
 */
export type Role = $Result.DefaultSelection<Prisma.$RolePayload>
/**
 * Model User
 * 
 */
export type User = $Result.DefaultSelection<Prisma.$UserPayload>
/**
 * Model RefreshToken
 * 
 */
export type RefreshToken = $Result.DefaultSelection<Prisma.$RefreshTokenPayload>
/**
 * Model EmailVerificationOtp
 * 
 */
export type EmailVerificationOtp = $Result.DefaultSelection<Prisma.$EmailVerificationOtpPayload>
/**
 * Model PasswordResetToken
 * 
 */
export type PasswordResetToken = $Result.DefaultSelection<Prisma.$PasswordResetTokenPayload>
/**
 * Model UserCompany
 * 
 */
export type UserCompany = $Result.DefaultSelection<Prisma.$UserCompanyPayload>
/**
 * Model BillPayment
 * 
 */
export type BillPayment = $Result.DefaultSelection<Prisma.$BillPaymentPayload>
/**
 * Model BillAccount
 * 
 */
export type BillAccount = $Result.DefaultSelection<Prisma.$BillAccountPayload>
/**
 * Model SavedCard
 * 
 */
export type SavedCard = $Result.DefaultSelection<Prisma.$SavedCardPayload>
/**
 * Model LowBalanceAlert
 * 
 */
export type LowBalanceAlert = $Result.DefaultSelection<Prisma.$LowBalanceAlertPayload>
/**
 * Model Department
 * 
 */
export type Department = $Result.DefaultSelection<Prisma.$DepartmentPayload>
/**
 * Model SMS_Template
 * 
 */
export type SMS_Template = $Result.DefaultSelection<Prisma.$SMS_TemplatePayload>
/**
 * Model SenderMask
 * 
 */
export type SenderMask = $Result.DefaultSelection<Prisma.$SenderMaskPayload>
/**
 * Model DepartmentSenderMask
 * 
 */
export type DepartmentSenderMask = $Result.DefaultSelection<Prisma.$DepartmentSenderMaskPayload>
/**
 * Model ContactParamSettings
 * 
 */
export type ContactParamSettings = $Result.DefaultSelection<Prisma.$ContactParamSettingsPayload>
/**
 * Model Campaign
 * 
 */
export type Campaign = $Result.DefaultSelection<Prisma.$CampaignPayload>
/**
 * Model CampaignServerRef
 * 
 */
export type CampaignServerRef = $Result.DefaultSelection<Prisma.$CampaignServerRefPayload>
/**
 * Model CampaignRecipient
 * 
 */
export type CampaignRecipient = $Result.DefaultSelection<Prisma.$CampaignRecipientPayload>
/**
 * Model MobileNumberList
 * 
 */
export type MobileNumberList = $Result.DefaultSelection<Prisma.$MobileNumberListPayload>
/**
 * Model MobileNumber
 * 
 */
export type MobileNumber = $Result.DefaultSelection<Prisma.$MobileNumberPayload>
/**
 * Model SMS_Report
 * 
 */
export type SMS_Report = $Result.DefaultSelection<Prisma.$SMS_ReportPayload>
/**
 * Model ExternalApiClient
 * 
 */
export type ExternalApiClient = $Result.DefaultSelection<Prisma.$ExternalApiClientPayload>
/**
 * Model SystemConfig
 * 
 */
export type SystemConfig = $Result.DefaultSelection<Prisma.$SystemConfigPayload>
/**
 * Model AuditLog
 * 
 */
export type AuditLog = $Result.DefaultSelection<Prisma.$AuditLogPayload>

/**
 * ##  Prisma Client ʲˢ
 *
 * Type-safe database client for TypeScript & Node.js
 * @example
 * ```
 * const prisma = new PrismaClient()
 * // Fetch zero or more Companies
 * const companies = await prisma.company.findMany()
 * ```
 *
 *
 * Read more in our [docs](https://pris.ly/d/client).
 */
export class PrismaClient<
  ClientOptions extends Prisma.PrismaClientOptions = Prisma.PrismaClientOptions,
  const U = 'log' extends keyof ClientOptions ? ClientOptions['log'] extends Array<Prisma.LogLevel | Prisma.LogDefinition> ? Prisma.GetEvents<ClientOptions['log']> : never : never,
  ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs
> {
  [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['other'] }

    /**
   * ##  Prisma Client ʲˢ
   *
   * Type-safe database client for TypeScript & Node.js
   * @example
   * ```
   * const prisma = new PrismaClient()
   * // Fetch zero or more Companies
   * const companies = await prisma.company.findMany()
   * ```
   *
   *
   * Read more in our [docs](https://pris.ly/d/client).
   */

  constructor(optionsArg ?: Prisma.Subset<ClientOptions, Prisma.PrismaClientOptions>);
  $on<V extends U>(eventType: V, callback: (event: V extends 'query' ? Prisma.QueryEvent : Prisma.LogEvent) => void): PrismaClient;

  /**
   * Connect with the database
   */
  $connect(): $Utils.JsPromise<void>;

  /**
   * Disconnect from the database
   */
  $disconnect(): $Utils.JsPromise<void>;

/**
   * Executes a prepared raw query and returns the number of affected rows.
   * @example
   * ```
   * const result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};`
   * ```
   *
   * Read more in our [docs](https://pris.ly/d/raw-queries).
   */
  $executeRaw<T = unknown>(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise<number>;

  /**
   * Executes a raw query and returns the number of affected rows.
   * Susceptible to SQL injections, see documentation.
   * @example
   * ```
   * const result = await prisma.$executeRawUnsafe('UPDATE User SET cool = $1 WHERE email = $2 ;', true, 'user@email.com')
   * ```
   *
   * Read more in our [docs](https://pris.ly/d/raw-queries).
   */
  $executeRawUnsafe<T = unknown>(query: string, ...values: any[]): Prisma.PrismaPromise<number>;

  /**
   * Performs a prepared raw query and returns the `SELECT` data.
   * @example
   * ```
   * const result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};`
   * ```
   *
   * Read more in our [docs](https://pris.ly/d/raw-queries).
   */
  $queryRaw<T = unknown>(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise<T>;

  /**
   * Performs a raw query and returns the `SELECT` data.
   * Susceptible to SQL injections, see documentation.
   * @example
   * ```
   * const result = await prisma.$queryRawUnsafe('SELECT * FROM User WHERE id = $1 OR email = $2;', 1, 'user@email.com')
   * ```
   *
   * Read more in our [docs](https://pris.ly/d/raw-queries).
   */
  $queryRawUnsafe<T = unknown>(query: string, ...values: any[]): Prisma.PrismaPromise<T>;


  /**
   * Allows the running of a sequence of read/write operations that are guaranteed to either succeed or fail as a whole.
   * @example
   * ```
   * const [george, bob, alice] = await prisma.$transaction([
   *   prisma.user.create({ data: { name: 'George' } }),
   *   prisma.user.create({ data: { name: 'Bob' } }),
   *   prisma.user.create({ data: { name: 'Alice' } }),
   * ])
   * ```
   * 
   * Read more in our [docs](https://www.prisma.io/docs/concepts/components/prisma-client/transactions).
   */
  $transaction<P extends Prisma.PrismaPromise<any>[]>(arg: [...P], options?: { isolationLevel?: Prisma.TransactionIsolationLevel }): $Utils.JsPromise<runtime.Types.Utils.UnwrapTuple<P>>

  $transaction<R>(fn: (prisma: Omit<PrismaClient, runtime.ITXClientDenyList>) => $Utils.JsPromise<R>, options?: { maxWait?: number, timeout?: number, isolationLevel?: Prisma.TransactionIsolationLevel }): $Utils.JsPromise<R>

  $extends: $Extensions.ExtendsHook<"extends", Prisma.TypeMapCb<ClientOptions>, ExtArgs, $Utils.Call<Prisma.TypeMapCb<ClientOptions>, {
    extArgs: ExtArgs
  }>>

      /**
   * `prisma.company`: Exposes CRUD operations for the **Company** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Companies
    * const companies = await prisma.company.findMany()
    * ```
    */
  get company(): Prisma.CompanyDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.role`: Exposes CRUD operations for the **Role** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Roles
    * const roles = await prisma.role.findMany()
    * ```
    */
  get role(): Prisma.RoleDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.user`: Exposes CRUD operations for the **User** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Users
    * const users = await prisma.user.findMany()
    * ```
    */
  get user(): Prisma.UserDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.refreshToken`: Exposes CRUD operations for the **RefreshToken** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more RefreshTokens
    * const refreshTokens = await prisma.refreshToken.findMany()
    * ```
    */
  get refreshToken(): Prisma.RefreshTokenDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.emailVerificationOtp`: Exposes CRUD operations for the **EmailVerificationOtp** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more EmailVerificationOtps
    * const emailVerificationOtps = await prisma.emailVerificationOtp.findMany()
    * ```
    */
  get emailVerificationOtp(): Prisma.EmailVerificationOtpDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.passwordResetToken`: Exposes CRUD operations for the **PasswordResetToken** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more PasswordResetTokens
    * const passwordResetTokens = await prisma.passwordResetToken.findMany()
    * ```
    */
  get passwordResetToken(): Prisma.PasswordResetTokenDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.userCompany`: Exposes CRUD operations for the **UserCompany** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more UserCompanies
    * const userCompanies = await prisma.userCompany.findMany()
    * ```
    */
  get userCompany(): Prisma.UserCompanyDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.billPayment`: Exposes CRUD operations for the **BillPayment** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more BillPayments
    * const billPayments = await prisma.billPayment.findMany()
    * ```
    */
  get billPayment(): Prisma.BillPaymentDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.billAccount`: Exposes CRUD operations for the **BillAccount** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more BillAccounts
    * const billAccounts = await prisma.billAccount.findMany()
    * ```
    */
  get billAccount(): Prisma.BillAccountDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.savedCard`: Exposes CRUD operations for the **SavedCard** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more SavedCards
    * const savedCards = await prisma.savedCard.findMany()
    * ```
    */
  get savedCard(): Prisma.SavedCardDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.lowBalanceAlert`: Exposes CRUD operations for the **LowBalanceAlert** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more LowBalanceAlerts
    * const lowBalanceAlerts = await prisma.lowBalanceAlert.findMany()
    * ```
    */
  get lowBalanceAlert(): Prisma.LowBalanceAlertDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.department`: Exposes CRUD operations for the **Department** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Departments
    * const departments = await prisma.department.findMany()
    * ```
    */
  get department(): Prisma.DepartmentDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.sMS_Template`: Exposes CRUD operations for the **SMS_Template** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more SMS_Templates
    * const sMS_Templates = await prisma.sMS_Template.findMany()
    * ```
    */
  get sMS_Template(): Prisma.SMS_TemplateDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.senderMask`: Exposes CRUD operations for the **SenderMask** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more SenderMasks
    * const senderMasks = await prisma.senderMask.findMany()
    * ```
    */
  get senderMask(): Prisma.SenderMaskDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.departmentSenderMask`: Exposes CRUD operations for the **DepartmentSenderMask** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more DepartmentSenderMasks
    * const departmentSenderMasks = await prisma.departmentSenderMask.findMany()
    * ```
    */
  get departmentSenderMask(): Prisma.DepartmentSenderMaskDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.contactParamSettings`: Exposes CRUD operations for the **ContactParamSettings** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more ContactParamSettings
    * const contactParamSettings = await prisma.contactParamSettings.findMany()
    * ```
    */
  get contactParamSettings(): Prisma.ContactParamSettingsDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.campaign`: Exposes CRUD operations for the **Campaign** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Campaigns
    * const campaigns = await prisma.campaign.findMany()
    * ```
    */
  get campaign(): Prisma.CampaignDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.campaignServerRef`: Exposes CRUD operations for the **CampaignServerRef** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more CampaignServerRefs
    * const campaignServerRefs = await prisma.campaignServerRef.findMany()
    * ```
    */
  get campaignServerRef(): Prisma.CampaignServerRefDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.campaignRecipient`: Exposes CRUD operations for the **CampaignRecipient** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more CampaignRecipients
    * const campaignRecipients = await prisma.campaignRecipient.findMany()
    * ```
    */
  get campaignRecipient(): Prisma.CampaignRecipientDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.mobileNumberList`: Exposes CRUD operations for the **MobileNumberList** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more MobileNumberLists
    * const mobileNumberLists = await prisma.mobileNumberList.findMany()
    * ```
    */
  get mobileNumberList(): Prisma.MobileNumberListDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.mobileNumber`: Exposes CRUD operations for the **MobileNumber** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more MobileNumbers
    * const mobileNumbers = await prisma.mobileNumber.findMany()
    * ```
    */
  get mobileNumber(): Prisma.MobileNumberDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.sMS_Report`: Exposes CRUD operations for the **SMS_Report** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more SMS_Reports
    * const sMS_Reports = await prisma.sMS_Report.findMany()
    * ```
    */
  get sMS_Report(): Prisma.SMS_ReportDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.externalApiClient`: Exposes CRUD operations for the **ExternalApiClient** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more ExternalApiClients
    * const externalApiClients = await prisma.externalApiClient.findMany()
    * ```
    */
  get externalApiClient(): Prisma.ExternalApiClientDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.systemConfig`: Exposes CRUD operations for the **SystemConfig** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more SystemConfigs
    * const systemConfigs = await prisma.systemConfig.findMany()
    * ```
    */
  get systemConfig(): Prisma.SystemConfigDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.auditLog`: Exposes CRUD operations for the **AuditLog** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more AuditLogs
    * const auditLogs = await prisma.auditLog.findMany()
    * ```
    */
  get auditLog(): Prisma.AuditLogDelegate<ExtArgs, ClientOptions>;
}

export namespace Prisma {
  export import DMMF = runtime.DMMF

  export type PrismaPromise<T> = $Public.PrismaPromise<T>

  /**
   * Validator
   */
  export import validator = runtime.Public.validator

  /**
   * Prisma Errors
   */
  export import PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError
  export import PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError
  export import PrismaClientRustPanicError = runtime.PrismaClientRustPanicError
  export import PrismaClientInitializationError = runtime.PrismaClientInitializationError
  export import PrismaClientValidationError = runtime.PrismaClientValidationError

  /**
   * Re-export of sql-template-tag
   */
  export import sql = runtime.sqltag
  export import empty = runtime.empty
  export import join = runtime.join
  export import raw = runtime.raw
  export import Sql = runtime.Sql



  /**
   * Decimal.js
   */
  export import Decimal = runtime.Decimal

  export type DecimalJsLike = runtime.DecimalJsLike

  /**
  * Extensions
  */
  export import Extension = $Extensions.UserArgs
  export import getExtensionContext = runtime.Extensions.getExtensionContext
  export import Args = $Public.Args
  export import Payload = $Public.Payload
  export import Result = $Public.Result
  export import Exact = $Public.Exact

  /**
   * Prisma Client JS version: 7.3.0
   * Query Engine version: 9d6ad21cbbceab97458517b147a6a09ff43aa735
   */
  export type PrismaVersion = {
    client: string
    engine: string
  }

  export const prismaVersion: PrismaVersion

  /**
   * Utility Types
   */


  export import Bytes = runtime.Bytes
  export import JsonObject = runtime.JsonObject
  export import JsonArray = runtime.JsonArray
  export import JsonValue = runtime.JsonValue
  export import InputJsonObject = runtime.InputJsonObject
  export import InputJsonArray = runtime.InputJsonArray
  export import InputJsonValue = runtime.InputJsonValue

  /**
   * Types of the values used to represent different kinds of `null` values when working with JSON fields.
   *
   * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
   */
  namespace NullTypes {
    /**
    * Type of `Prisma.DbNull`.
    *
    * You cannot use other instances of this class. Please use the `Prisma.DbNull` value.
    *
    * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
    */
    class DbNull {
      private DbNull: never
      private constructor()
    }

    /**
    * Type of `Prisma.JsonNull`.
    *
    * You cannot use other instances of this class. Please use the `Prisma.JsonNull` value.
    *
    * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
    */
    class JsonNull {
      private JsonNull: never
      private constructor()
    }

    /**
    * Type of `Prisma.AnyNull`.
    *
    * You cannot use other instances of this class. Please use the `Prisma.AnyNull` value.
    *
    * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
    */
    class AnyNull {
      private AnyNull: never
      private constructor()
    }
  }

  /**
   * Helper for filtering JSON entries that have `null` on the database (empty on the db)
   *
   * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
   */
  export const DbNull: NullTypes.DbNull

  /**
   * Helper for filtering JSON entries that have JSON `null` values (not empty on the db)
   *
   * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
   */
  export const JsonNull: NullTypes.JsonNull

  /**
   * Helper for filtering JSON entries that are `Prisma.DbNull` or `Prisma.JsonNull`
   *
   * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
   */
  export const AnyNull: NullTypes.AnyNull

  type SelectAndInclude = {
    select: any
    include: any
  }

  type SelectAndOmit = {
    select: any
    omit: any
  }

  /**
   * Get the type of the value, that the Promise holds.
   */
  export type PromiseType<T extends PromiseLike<any>> = T extends PromiseLike<infer U> ? U : T;

  /**
   * Get the return type of a function which returns a Promise.
   */
  export type PromiseReturnType<T extends (...args: any) => $Utils.JsPromise<any>> = PromiseType<ReturnType<T>>

  /**
   * From T, pick a set of properties whose keys are in the union K
   */
  type Prisma__Pick<T, K extends keyof T> = {
      [P in K]: T[P];
  };


  export type Enumerable<T> = T | Array<T>;

  export type RequiredKeys<T> = {
    [K in keyof T]-?: {} extends Prisma__Pick<T, K> ? never : K
  }[keyof T]

  export type TruthyKeys<T> = keyof {
    [K in keyof T as T[K] extends false | undefined | null ? never : K]: K
  }

  export type TrueKeys<T> = TruthyKeys<Prisma__Pick<T, RequiredKeys<T>>>

  /**
   * Subset
   * @desc From `T` pick properties that exist in `U`. Simple version of Intersection
   */
  export type Subset<T, U> = {
    [key in keyof T]: key extends keyof U ? T[key] : never;
  };

  /**
   * SelectSubset
   * @desc From `T` pick properties that exist in `U`. Simple version of Intersection.
   * Additionally, it validates, if both select and include are present. If the case, it errors.
   */
  export type SelectSubset<T, U> = {
    [key in keyof T]: key extends keyof U ? T[key] : never
  } &
    (T extends SelectAndInclude
      ? 'Please either choose `select` or `include`.'
      : T extends SelectAndOmit
        ? 'Please either choose `select` or `omit`.'
        : {})

  /**
   * Subset + Intersection
   * @desc From `T` pick properties that exist in `U` and intersect `K`
   */
  export type SubsetIntersection<T, U, K> = {
    [key in keyof T]: key extends keyof U ? T[key] : never
  } &
    K

  type Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never };

  /**
   * XOR is needed to have a real mutually exclusive union type
   * https://stackoverflow.com/questions/42123407/does-typescript-support-mutually-exclusive-types
   */
  type XOR<T, U> =
    T extends object ?
    U extends object ?
      (Without<T, U> & U) | (Without<U, T> & T)
    : U : T


  /**
   * Is T a Record?
   */
  type IsObject<T extends any> = T extends Array<any>
  ? False
  : T extends Date
  ? False
  : T extends Uint8Array
  ? False
  : T extends BigInt
  ? False
  : T extends object
  ? True
  : False


  /**
   * If it's T[], return T
   */
  export type UnEnumerate<T extends unknown> = T extends Array<infer U> ? U : T

  /**
   * From ts-toolbelt
   */

  type __Either<O extends object, K extends Key> = Omit<O, K> &
    {
      // Merge all but K
      [P in K]: Prisma__Pick<O, P & keyof O> // With K possibilities
    }[K]

  type EitherStrict<O extends object, K extends Key> = Strict<__Either<O, K>>

  type EitherLoose<O extends object, K extends Key> = ComputeRaw<__Either<O, K>>

  type _Either<
    O extends object,
    K extends Key,
    strict extends Boolean
  > = {
    1: EitherStrict<O, K>
    0: EitherLoose<O, K>
  }[strict]

  type Either<
    O extends object,
    K extends Key,
    strict extends Boolean = 1
  > = O extends unknown ? _Either<O, K, strict> : never

  export type Union = any

  type PatchUndefined<O extends object, O1 extends object> = {
    [K in keyof O]: O[K] extends undefined ? At<O1, K> : O[K]
  } & {}

  /** Helper Types for "Merge" **/
  export type IntersectOf<U extends Union> = (
    U extends unknown ? (k: U) => void : never
  ) extends (k: infer I) => void
    ? I
    : never

  export type Overwrite<O extends object, O1 extends object> = {
      [K in keyof O]: K extends keyof O1 ? O1[K] : O[K];
  } & {};

  type _Merge<U extends object> = IntersectOf<Overwrite<U, {
      [K in keyof U]-?: At<U, K>;
  }>>;

  type Key = string | number | symbol;
  type AtBasic<O extends object, K extends Key> = K extends keyof O ? O[K] : never;
  type AtStrict<O extends object, K extends Key> = O[K & keyof O];
  type AtLoose<O extends object, K extends Key> = O extends unknown ? AtStrict<O, K> : never;
  export type At<O extends object, K extends Key, strict extends Boolean = 1> = {
      1: AtStrict<O, K>;
      0: AtLoose<O, K>;
  }[strict];

  export type ComputeRaw<A extends any> = A extends Function ? A : {
    [K in keyof A]: A[K];
  } & {};

  export type OptionalFlat<O> = {
    [K in keyof O]?: O[K];
  } & {};

  type _Record<K extends keyof any, T> = {
    [P in K]: T;
  };

  // cause typescript not to expand types and preserve names
  type NoExpand<T> = T extends unknown ? T : never;

  // this type assumes the passed object is entirely optional
  type AtLeast<O extends object, K extends string> = NoExpand<
    O extends unknown
    ? | (K extends keyof O ? { [P in K]: O[P] } & O : O)
      | {[P in keyof O as P extends K ? P : never]-?: O[P]} & O
    : never>;

  type _Strict<U, _U = U> = U extends unknown ? U & OptionalFlat<_Record<Exclude<Keys<_U>, keyof U>, never>> : never;

  export type Strict<U extends object> = ComputeRaw<_Strict<U>>;
  /** End Helper Types for "Merge" **/

  export type Merge<U extends object> = ComputeRaw<_Merge<Strict<U>>>;

  /**
  A [[Boolean]]
  */
  export type Boolean = True | False

  // /**
  // 1
  // */
  export type True = 1

  /**
  0
  */
  export type False = 0

  export type Not<B extends Boolean> = {
    0: 1
    1: 0
  }[B]

  export type Extends<A1 extends any, A2 extends any> = [A1] extends [never]
    ? 0 // anything `never` is false
    : A1 extends A2
    ? 1
    : 0

  export type Has<U extends Union, U1 extends Union> = Not<
    Extends<Exclude<U1, U>, U1>
  >

  export type Or<B1 extends Boolean, B2 extends Boolean> = {
    0: {
      0: 0
      1: 1
    }
    1: {
      0: 1
      1: 1
    }
  }[B1][B2]

  export type Keys<U extends Union> = U extends unknown ? keyof U : never

  type Cast<A, B> = A extends B ? A : B;

  export const type: unique symbol;



  /**
   * Used by group by
   */

  export type GetScalarType<T, O> = O extends object ? {
    [P in keyof T]: P extends keyof O
      ? O[P]
      : never
  } : never

  type FieldPaths<
    T,
    U = Omit<T, '_avg' | '_sum' | '_count' | '_min' | '_max'>
  > = IsObject<T> extends True ? U : T

  type GetHavingFields<T> = {
    [K in keyof T]: Or<
      Or<Extends<'OR', K>, Extends<'AND', K>>,
      Extends<'NOT', K>
    > extends True
      ? // infer is only needed to not hit TS limit
        // based on the brilliant idea of Pierre-Antoine Mills
        // https://github.com/microsoft/TypeScript/issues/30188#issuecomment-478938437
        T[K] extends infer TK
        ? GetHavingFields<UnEnumerate<TK> extends object ? Merge<UnEnumerate<TK>> : never>
        : never
      : {} extends FieldPaths<T[K]>
      ? never
      : K
  }[keyof T]

  /**
   * Convert tuple to union
   */
  type _TupleToUnion<T> = T extends (infer E)[] ? E : never
  type TupleToUnion<K extends readonly any[]> = _TupleToUnion<K>
  type MaybeTupleToUnion<T> = T extends any[] ? TupleToUnion<T> : T

  /**
   * Like `Pick`, but additionally can also accept an array of keys
   */
  type PickEnumerable<T, K extends Enumerable<keyof T> | keyof T> = Prisma__Pick<T, MaybeTupleToUnion<K>>

  /**
   * Exclude all keys with underscores
   */
  type ExcludeUnderscoreKeys<T extends string> = T extends `_${string}` ? never : T


  export type FieldRef<Model, FieldType> = runtime.FieldRef<Model, FieldType>

  type FieldRefInputType<Model, FieldType> = Model extends never ? never : FieldRef<Model, FieldType>


  export const ModelName: {
    Company: 'Company',
    Role: 'Role',
    User: 'User',
    RefreshToken: 'RefreshToken',
    EmailVerificationOtp: 'EmailVerificationOtp',
    PasswordResetToken: 'PasswordResetToken',
    UserCompany: 'UserCompany',
    BillPayment: 'BillPayment',
    BillAccount: 'BillAccount',
    SavedCard: 'SavedCard',
    LowBalanceAlert: 'LowBalanceAlert',
    Department: 'Department',
    SMS_Template: 'SMS_Template',
    SenderMask: 'SenderMask',
    DepartmentSenderMask: 'DepartmentSenderMask',
    ContactParamSettings: 'ContactParamSettings',
    Campaign: 'Campaign',
    CampaignServerRef: 'CampaignServerRef',
    CampaignRecipient: 'CampaignRecipient',
    MobileNumberList: 'MobileNumberList',
    MobileNumber: 'MobileNumber',
    SMS_Report: 'SMS_Report',
    ExternalApiClient: 'ExternalApiClient',
    SystemConfig: 'SystemConfig',
    AuditLog: 'AuditLog'
  };

  export type ModelName = (typeof ModelName)[keyof typeof ModelName]



  interface TypeMapCb<ClientOptions = {}> extends $Utils.Fn<{extArgs: $Extensions.InternalArgs }, $Utils.Record<string, any>> {
    returns: Prisma.TypeMap<this['params']['extArgs'], ClientOptions extends { omit: infer OmitOptions } ? OmitOptions : {}>
  }

  export type TypeMap<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> = {
    globalOmitOptions: {
      omit: GlobalOmitOptions
    }
    meta: {
      modelProps: "company" | "role" | "user" | "refreshToken" | "emailVerificationOtp" | "passwordResetToken" | "userCompany" | "billPayment" | "billAccount" | "savedCard" | "lowBalanceAlert" | "department" | "sMS_Template" | "senderMask" | "departmentSenderMask" | "contactParamSettings" | "campaign" | "campaignServerRef" | "campaignRecipient" | "mobileNumberList" | "mobileNumber" | "sMS_Report" | "externalApiClient" | "systemConfig" | "auditLog"
      txIsolationLevel: Prisma.TransactionIsolationLevel
    }
    model: {
      Company: {
        payload: Prisma.$CompanyPayload<ExtArgs>
        fields: Prisma.CompanyFieldRefs
        operations: {
          findUnique: {
            args: Prisma.CompanyFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CompanyPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.CompanyFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CompanyPayload>
          }
          findFirst: {
            args: Prisma.CompanyFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CompanyPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.CompanyFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CompanyPayload>
          }
          findMany: {
            args: Prisma.CompanyFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CompanyPayload>[]
          }
          create: {
            args: Prisma.CompanyCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CompanyPayload>
          }
          createMany: {
            args: Prisma.CompanyCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.CompanyDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CompanyPayload>
          }
          update: {
            args: Prisma.CompanyUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CompanyPayload>
          }
          deleteMany: {
            args: Prisma.CompanyDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.CompanyUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.CompanyUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CompanyPayload>
          }
          aggregate: {
            args: Prisma.CompanyAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateCompany>
          }
          groupBy: {
            args: Prisma.CompanyGroupByArgs<ExtArgs>
            result: $Utils.Optional<CompanyGroupByOutputType>[]
          }
          count: {
            args: Prisma.CompanyCountArgs<ExtArgs>
            result: $Utils.Optional<CompanyCountAggregateOutputType> | number
          }
        }
      }
      Role: {
        payload: Prisma.$RolePayload<ExtArgs>
        fields: Prisma.RoleFieldRefs
        operations: {
          findUnique: {
            args: Prisma.RoleFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RolePayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.RoleFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RolePayload>
          }
          findFirst: {
            args: Prisma.RoleFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RolePayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.RoleFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RolePayload>
          }
          findMany: {
            args: Prisma.RoleFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RolePayload>[]
          }
          create: {
            args: Prisma.RoleCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RolePayload>
          }
          createMany: {
            args: Prisma.RoleCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.RoleDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RolePayload>
          }
          update: {
            args: Prisma.RoleUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RolePayload>
          }
          deleteMany: {
            args: Prisma.RoleDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.RoleUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.RoleUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RolePayload>
          }
          aggregate: {
            args: Prisma.RoleAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateRole>
          }
          groupBy: {
            args: Prisma.RoleGroupByArgs<ExtArgs>
            result: $Utils.Optional<RoleGroupByOutputType>[]
          }
          count: {
            args: Prisma.RoleCountArgs<ExtArgs>
            result: $Utils.Optional<RoleCountAggregateOutputType> | number
          }
        }
      }
      User: {
        payload: Prisma.$UserPayload<ExtArgs>
        fields: Prisma.UserFieldRefs
        operations: {
          findUnique: {
            args: Prisma.UserFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.UserFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserPayload>
          }
          findFirst: {
            args: Prisma.UserFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.UserFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserPayload>
          }
          findMany: {
            args: Prisma.UserFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserPayload>[]
          }
          create: {
            args: Prisma.UserCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserPayload>
          }
          createMany: {
            args: Prisma.UserCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.UserDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserPayload>
          }
          update: {
            args: Prisma.UserUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserPayload>
          }
          deleteMany: {
            args: Prisma.UserDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.UserUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.UserUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserPayload>
          }
          aggregate: {
            args: Prisma.UserAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateUser>
          }
          groupBy: {
            args: Prisma.UserGroupByArgs<ExtArgs>
            result: $Utils.Optional<UserGroupByOutputType>[]
          }
          count: {
            args: Prisma.UserCountArgs<ExtArgs>
            result: $Utils.Optional<UserCountAggregateOutputType> | number
          }
        }
      }
      RefreshToken: {
        payload: Prisma.$RefreshTokenPayload<ExtArgs>
        fields: Prisma.RefreshTokenFieldRefs
        operations: {
          findUnique: {
            args: Prisma.RefreshTokenFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RefreshTokenPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.RefreshTokenFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RefreshTokenPayload>
          }
          findFirst: {
            args: Prisma.RefreshTokenFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RefreshTokenPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.RefreshTokenFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RefreshTokenPayload>
          }
          findMany: {
            args: Prisma.RefreshTokenFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RefreshTokenPayload>[]
          }
          create: {
            args: Prisma.RefreshTokenCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RefreshTokenPayload>
          }
          createMany: {
            args: Prisma.RefreshTokenCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.RefreshTokenDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RefreshTokenPayload>
          }
          update: {
            args: Prisma.RefreshTokenUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RefreshTokenPayload>
          }
          deleteMany: {
            args: Prisma.RefreshTokenDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.RefreshTokenUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.RefreshTokenUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RefreshTokenPayload>
          }
          aggregate: {
            args: Prisma.RefreshTokenAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateRefreshToken>
          }
          groupBy: {
            args: Prisma.RefreshTokenGroupByArgs<ExtArgs>
            result: $Utils.Optional<RefreshTokenGroupByOutputType>[]
          }
          count: {
            args: Prisma.RefreshTokenCountArgs<ExtArgs>
            result: $Utils.Optional<RefreshTokenCountAggregateOutputType> | number
          }
        }
      }
      EmailVerificationOtp: {
        payload: Prisma.$EmailVerificationOtpPayload<ExtArgs>
        fields: Prisma.EmailVerificationOtpFieldRefs
        operations: {
          findUnique: {
            args: Prisma.EmailVerificationOtpFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EmailVerificationOtpPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.EmailVerificationOtpFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EmailVerificationOtpPayload>
          }
          findFirst: {
            args: Prisma.EmailVerificationOtpFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EmailVerificationOtpPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.EmailVerificationOtpFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EmailVerificationOtpPayload>
          }
          findMany: {
            args: Prisma.EmailVerificationOtpFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EmailVerificationOtpPayload>[]
          }
          create: {
            args: Prisma.EmailVerificationOtpCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EmailVerificationOtpPayload>
          }
          createMany: {
            args: Prisma.EmailVerificationOtpCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.EmailVerificationOtpDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EmailVerificationOtpPayload>
          }
          update: {
            args: Prisma.EmailVerificationOtpUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EmailVerificationOtpPayload>
          }
          deleteMany: {
            args: Prisma.EmailVerificationOtpDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.EmailVerificationOtpUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.EmailVerificationOtpUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EmailVerificationOtpPayload>
          }
          aggregate: {
            args: Prisma.EmailVerificationOtpAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateEmailVerificationOtp>
          }
          groupBy: {
            args: Prisma.EmailVerificationOtpGroupByArgs<ExtArgs>
            result: $Utils.Optional<EmailVerificationOtpGroupByOutputType>[]
          }
          count: {
            args: Prisma.EmailVerificationOtpCountArgs<ExtArgs>
            result: $Utils.Optional<EmailVerificationOtpCountAggregateOutputType> | number
          }
        }
      }
      PasswordResetToken: {
        payload: Prisma.$PasswordResetTokenPayload<ExtArgs>
        fields: Prisma.PasswordResetTokenFieldRefs
        operations: {
          findUnique: {
            args: Prisma.PasswordResetTokenFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$PasswordResetTokenPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.PasswordResetTokenFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$PasswordResetTokenPayload>
          }
          findFirst: {
            args: Prisma.PasswordResetTokenFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$PasswordResetTokenPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.PasswordResetTokenFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$PasswordResetTokenPayload>
          }
          findMany: {
            args: Prisma.PasswordResetTokenFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$PasswordResetTokenPayload>[]
          }
          create: {
            args: Prisma.PasswordResetTokenCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$PasswordResetTokenPayload>
          }
          createMany: {
            args: Prisma.PasswordResetTokenCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.PasswordResetTokenDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$PasswordResetTokenPayload>
          }
          update: {
            args: Prisma.PasswordResetTokenUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$PasswordResetTokenPayload>
          }
          deleteMany: {
            args: Prisma.PasswordResetTokenDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.PasswordResetTokenUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.PasswordResetTokenUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$PasswordResetTokenPayload>
          }
          aggregate: {
            args: Prisma.PasswordResetTokenAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregatePasswordResetToken>
          }
          groupBy: {
            args: Prisma.PasswordResetTokenGroupByArgs<ExtArgs>
            result: $Utils.Optional<PasswordResetTokenGroupByOutputType>[]
          }
          count: {
            args: Prisma.PasswordResetTokenCountArgs<ExtArgs>
            result: $Utils.Optional<PasswordResetTokenCountAggregateOutputType> | number
          }
        }
      }
      UserCompany: {
        payload: Prisma.$UserCompanyPayload<ExtArgs>
        fields: Prisma.UserCompanyFieldRefs
        operations: {
          findUnique: {
            args: Prisma.UserCompanyFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserCompanyPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.UserCompanyFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserCompanyPayload>
          }
          findFirst: {
            args: Prisma.UserCompanyFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserCompanyPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.UserCompanyFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserCompanyPayload>
          }
          findMany: {
            args: Prisma.UserCompanyFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserCompanyPayload>[]
          }
          create: {
            args: Prisma.UserCompanyCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserCompanyPayload>
          }
          createMany: {
            args: Prisma.UserCompanyCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.UserCompanyDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserCompanyPayload>
          }
          update: {
            args: Prisma.UserCompanyUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserCompanyPayload>
          }
          deleteMany: {
            args: Prisma.UserCompanyDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.UserCompanyUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.UserCompanyUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$UserCompanyPayload>
          }
          aggregate: {
            args: Prisma.UserCompanyAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateUserCompany>
          }
          groupBy: {
            args: Prisma.UserCompanyGroupByArgs<ExtArgs>
            result: $Utils.Optional<UserCompanyGroupByOutputType>[]
          }
          count: {
            args: Prisma.UserCompanyCountArgs<ExtArgs>
            result: $Utils.Optional<UserCompanyCountAggregateOutputType> | number
          }
        }
      }
      BillPayment: {
        payload: Prisma.$BillPaymentPayload<ExtArgs>
        fields: Prisma.BillPaymentFieldRefs
        operations: {
          findUnique: {
            args: Prisma.BillPaymentFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillPaymentPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.BillPaymentFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillPaymentPayload>
          }
          findFirst: {
            args: Prisma.BillPaymentFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillPaymentPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.BillPaymentFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillPaymentPayload>
          }
          findMany: {
            args: Prisma.BillPaymentFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillPaymentPayload>[]
          }
          create: {
            args: Prisma.BillPaymentCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillPaymentPayload>
          }
          createMany: {
            args: Prisma.BillPaymentCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.BillPaymentDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillPaymentPayload>
          }
          update: {
            args: Prisma.BillPaymentUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillPaymentPayload>
          }
          deleteMany: {
            args: Prisma.BillPaymentDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.BillPaymentUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.BillPaymentUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillPaymentPayload>
          }
          aggregate: {
            args: Prisma.BillPaymentAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateBillPayment>
          }
          groupBy: {
            args: Prisma.BillPaymentGroupByArgs<ExtArgs>
            result: $Utils.Optional<BillPaymentGroupByOutputType>[]
          }
          count: {
            args: Prisma.BillPaymentCountArgs<ExtArgs>
            result: $Utils.Optional<BillPaymentCountAggregateOutputType> | number
          }
        }
      }
      BillAccount: {
        payload: Prisma.$BillAccountPayload<ExtArgs>
        fields: Prisma.BillAccountFieldRefs
        operations: {
          findUnique: {
            args: Prisma.BillAccountFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillAccountPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.BillAccountFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillAccountPayload>
          }
          findFirst: {
            args: Prisma.BillAccountFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillAccountPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.BillAccountFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillAccountPayload>
          }
          findMany: {
            args: Prisma.BillAccountFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillAccountPayload>[]
          }
          create: {
            args: Prisma.BillAccountCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillAccountPayload>
          }
          createMany: {
            args: Prisma.BillAccountCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.BillAccountDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillAccountPayload>
          }
          update: {
            args: Prisma.BillAccountUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillAccountPayload>
          }
          deleteMany: {
            args: Prisma.BillAccountDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.BillAccountUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.BillAccountUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BillAccountPayload>
          }
          aggregate: {
            args: Prisma.BillAccountAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateBillAccount>
          }
          groupBy: {
            args: Prisma.BillAccountGroupByArgs<ExtArgs>
            result: $Utils.Optional<BillAccountGroupByOutputType>[]
          }
          count: {
            args: Prisma.BillAccountCountArgs<ExtArgs>
            result: $Utils.Optional<BillAccountCountAggregateOutputType> | number
          }
        }
      }
      SavedCard: {
        payload: Prisma.$SavedCardPayload<ExtArgs>
        fields: Prisma.SavedCardFieldRefs
        operations: {
          findUnique: {
            args: Prisma.SavedCardFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SavedCardPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.SavedCardFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SavedCardPayload>
          }
          findFirst: {
            args: Prisma.SavedCardFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SavedCardPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.SavedCardFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SavedCardPayload>
          }
          findMany: {
            args: Prisma.SavedCardFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SavedCardPayload>[]
          }
          create: {
            args: Prisma.SavedCardCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SavedCardPayload>
          }
          createMany: {
            args: Prisma.SavedCardCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.SavedCardDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SavedCardPayload>
          }
          update: {
            args: Prisma.SavedCardUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SavedCardPayload>
          }
          deleteMany: {
            args: Prisma.SavedCardDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.SavedCardUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.SavedCardUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SavedCardPayload>
          }
          aggregate: {
            args: Prisma.SavedCardAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateSavedCard>
          }
          groupBy: {
            args: Prisma.SavedCardGroupByArgs<ExtArgs>
            result: $Utils.Optional<SavedCardGroupByOutputType>[]
          }
          count: {
            args: Prisma.SavedCardCountArgs<ExtArgs>
            result: $Utils.Optional<SavedCardCountAggregateOutputType> | number
          }
        }
      }
      LowBalanceAlert: {
        payload: Prisma.$LowBalanceAlertPayload<ExtArgs>
        fields: Prisma.LowBalanceAlertFieldRefs
        operations: {
          findUnique: {
            args: Prisma.LowBalanceAlertFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LowBalanceAlertPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.LowBalanceAlertFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LowBalanceAlertPayload>
          }
          findFirst: {
            args: Prisma.LowBalanceAlertFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LowBalanceAlertPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.LowBalanceAlertFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LowBalanceAlertPayload>
          }
          findMany: {
            args: Prisma.LowBalanceAlertFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LowBalanceAlertPayload>[]
          }
          create: {
            args: Prisma.LowBalanceAlertCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LowBalanceAlertPayload>
          }
          createMany: {
            args: Prisma.LowBalanceAlertCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.LowBalanceAlertDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LowBalanceAlertPayload>
          }
          update: {
            args: Prisma.LowBalanceAlertUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LowBalanceAlertPayload>
          }
          deleteMany: {
            args: Prisma.LowBalanceAlertDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.LowBalanceAlertUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.LowBalanceAlertUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LowBalanceAlertPayload>
          }
          aggregate: {
            args: Prisma.LowBalanceAlertAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateLowBalanceAlert>
          }
          groupBy: {
            args: Prisma.LowBalanceAlertGroupByArgs<ExtArgs>
            result: $Utils.Optional<LowBalanceAlertGroupByOutputType>[]
          }
          count: {
            args: Prisma.LowBalanceAlertCountArgs<ExtArgs>
            result: $Utils.Optional<LowBalanceAlertCountAggregateOutputType> | number
          }
        }
      }
      Department: {
        payload: Prisma.$DepartmentPayload<ExtArgs>
        fields: Prisma.DepartmentFieldRefs
        operations: {
          findUnique: {
            args: Prisma.DepartmentFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.DepartmentFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentPayload>
          }
          findFirst: {
            args: Prisma.DepartmentFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.DepartmentFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentPayload>
          }
          findMany: {
            args: Prisma.DepartmentFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentPayload>[]
          }
          create: {
            args: Prisma.DepartmentCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentPayload>
          }
          createMany: {
            args: Prisma.DepartmentCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.DepartmentDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentPayload>
          }
          update: {
            args: Prisma.DepartmentUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentPayload>
          }
          deleteMany: {
            args: Prisma.DepartmentDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.DepartmentUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.DepartmentUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentPayload>
          }
          aggregate: {
            args: Prisma.DepartmentAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateDepartment>
          }
          groupBy: {
            args: Prisma.DepartmentGroupByArgs<ExtArgs>
            result: $Utils.Optional<DepartmentGroupByOutputType>[]
          }
          count: {
            args: Prisma.DepartmentCountArgs<ExtArgs>
            result: $Utils.Optional<DepartmentCountAggregateOutputType> | number
          }
        }
      }
      SMS_Template: {
        payload: Prisma.$SMS_TemplatePayload<ExtArgs>
        fields: Prisma.SMS_TemplateFieldRefs
        operations: {
          findUnique: {
            args: Prisma.SMS_TemplateFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_TemplatePayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.SMS_TemplateFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_TemplatePayload>
          }
          findFirst: {
            args: Prisma.SMS_TemplateFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_TemplatePayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.SMS_TemplateFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_TemplatePayload>
          }
          findMany: {
            args: Prisma.SMS_TemplateFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_TemplatePayload>[]
          }
          create: {
            args: Prisma.SMS_TemplateCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_TemplatePayload>
          }
          createMany: {
            args: Prisma.SMS_TemplateCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.SMS_TemplateDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_TemplatePayload>
          }
          update: {
            args: Prisma.SMS_TemplateUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_TemplatePayload>
          }
          deleteMany: {
            args: Prisma.SMS_TemplateDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.SMS_TemplateUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.SMS_TemplateUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_TemplatePayload>
          }
          aggregate: {
            args: Prisma.SMS_TemplateAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateSMS_Template>
          }
          groupBy: {
            args: Prisma.SMS_TemplateGroupByArgs<ExtArgs>
            result: $Utils.Optional<SMS_TemplateGroupByOutputType>[]
          }
          count: {
            args: Prisma.SMS_TemplateCountArgs<ExtArgs>
            result: $Utils.Optional<SMS_TemplateCountAggregateOutputType> | number
          }
        }
      }
      SenderMask: {
        payload: Prisma.$SenderMaskPayload<ExtArgs>
        fields: Prisma.SenderMaskFieldRefs
        operations: {
          findUnique: {
            args: Prisma.SenderMaskFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SenderMaskPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.SenderMaskFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SenderMaskPayload>
          }
          findFirst: {
            args: Prisma.SenderMaskFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SenderMaskPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.SenderMaskFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SenderMaskPayload>
          }
          findMany: {
            args: Prisma.SenderMaskFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SenderMaskPayload>[]
          }
          create: {
            args: Prisma.SenderMaskCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SenderMaskPayload>
          }
          createMany: {
            args: Prisma.SenderMaskCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.SenderMaskDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SenderMaskPayload>
          }
          update: {
            args: Prisma.SenderMaskUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SenderMaskPayload>
          }
          deleteMany: {
            args: Prisma.SenderMaskDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.SenderMaskUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.SenderMaskUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SenderMaskPayload>
          }
          aggregate: {
            args: Prisma.SenderMaskAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateSenderMask>
          }
          groupBy: {
            args: Prisma.SenderMaskGroupByArgs<ExtArgs>
            result: $Utils.Optional<SenderMaskGroupByOutputType>[]
          }
          count: {
            args: Prisma.SenderMaskCountArgs<ExtArgs>
            result: $Utils.Optional<SenderMaskCountAggregateOutputType> | number
          }
        }
      }
      DepartmentSenderMask: {
        payload: Prisma.$DepartmentSenderMaskPayload<ExtArgs>
        fields: Prisma.DepartmentSenderMaskFieldRefs
        operations: {
          findUnique: {
            args: Prisma.DepartmentSenderMaskFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentSenderMaskPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.DepartmentSenderMaskFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentSenderMaskPayload>
          }
          findFirst: {
            args: Prisma.DepartmentSenderMaskFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentSenderMaskPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.DepartmentSenderMaskFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentSenderMaskPayload>
          }
          findMany: {
            args: Prisma.DepartmentSenderMaskFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentSenderMaskPayload>[]
          }
          create: {
            args: Prisma.DepartmentSenderMaskCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentSenderMaskPayload>
          }
          createMany: {
            args: Prisma.DepartmentSenderMaskCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.DepartmentSenderMaskDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentSenderMaskPayload>
          }
          update: {
            args: Prisma.DepartmentSenderMaskUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentSenderMaskPayload>
          }
          deleteMany: {
            args: Prisma.DepartmentSenderMaskDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.DepartmentSenderMaskUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.DepartmentSenderMaskUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DepartmentSenderMaskPayload>
          }
          aggregate: {
            args: Prisma.DepartmentSenderMaskAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateDepartmentSenderMask>
          }
          groupBy: {
            args: Prisma.DepartmentSenderMaskGroupByArgs<ExtArgs>
            result: $Utils.Optional<DepartmentSenderMaskGroupByOutputType>[]
          }
          count: {
            args: Prisma.DepartmentSenderMaskCountArgs<ExtArgs>
            result: $Utils.Optional<DepartmentSenderMaskCountAggregateOutputType> | number
          }
        }
      }
      ContactParamSettings: {
        payload: Prisma.$ContactParamSettingsPayload<ExtArgs>
        fields: Prisma.ContactParamSettingsFieldRefs
        operations: {
          findUnique: {
            args: Prisma.ContactParamSettingsFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ContactParamSettingsPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.ContactParamSettingsFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ContactParamSettingsPayload>
          }
          findFirst: {
            args: Prisma.ContactParamSettingsFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ContactParamSettingsPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.ContactParamSettingsFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ContactParamSettingsPayload>
          }
          findMany: {
            args: Prisma.ContactParamSettingsFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ContactParamSettingsPayload>[]
          }
          create: {
            args: Prisma.ContactParamSettingsCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ContactParamSettingsPayload>
          }
          createMany: {
            args: Prisma.ContactParamSettingsCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.ContactParamSettingsDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ContactParamSettingsPayload>
          }
          update: {
            args: Prisma.ContactParamSettingsUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ContactParamSettingsPayload>
          }
          deleteMany: {
            args: Prisma.ContactParamSettingsDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.ContactParamSettingsUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.ContactParamSettingsUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ContactParamSettingsPayload>
          }
          aggregate: {
            args: Prisma.ContactParamSettingsAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateContactParamSettings>
          }
          groupBy: {
            args: Prisma.ContactParamSettingsGroupByArgs<ExtArgs>
            result: $Utils.Optional<ContactParamSettingsGroupByOutputType>[]
          }
          count: {
            args: Prisma.ContactParamSettingsCountArgs<ExtArgs>
            result: $Utils.Optional<ContactParamSettingsCountAggregateOutputType> | number
          }
        }
      }
      Campaign: {
        payload: Prisma.$CampaignPayload<ExtArgs>
        fields: Prisma.CampaignFieldRefs
        operations: {
          findUnique: {
            args: Prisma.CampaignFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.CampaignFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignPayload>
          }
          findFirst: {
            args: Prisma.CampaignFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.CampaignFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignPayload>
          }
          findMany: {
            args: Prisma.CampaignFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignPayload>[]
          }
          create: {
            args: Prisma.CampaignCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignPayload>
          }
          createMany: {
            args: Prisma.CampaignCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.CampaignDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignPayload>
          }
          update: {
            args: Prisma.CampaignUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignPayload>
          }
          deleteMany: {
            args: Prisma.CampaignDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.CampaignUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.CampaignUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignPayload>
          }
          aggregate: {
            args: Prisma.CampaignAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateCampaign>
          }
          groupBy: {
            args: Prisma.CampaignGroupByArgs<ExtArgs>
            result: $Utils.Optional<CampaignGroupByOutputType>[]
          }
          count: {
            args: Prisma.CampaignCountArgs<ExtArgs>
            result: $Utils.Optional<CampaignCountAggregateOutputType> | number
          }
        }
      }
      CampaignServerRef: {
        payload: Prisma.$CampaignServerRefPayload<ExtArgs>
        fields: Prisma.CampaignServerRefFieldRefs
        operations: {
          findUnique: {
            args: Prisma.CampaignServerRefFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignServerRefPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.CampaignServerRefFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignServerRefPayload>
          }
          findFirst: {
            args: Prisma.CampaignServerRefFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignServerRefPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.CampaignServerRefFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignServerRefPayload>
          }
          findMany: {
            args: Prisma.CampaignServerRefFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignServerRefPayload>[]
          }
          create: {
            args: Prisma.CampaignServerRefCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignServerRefPayload>
          }
          createMany: {
            args: Prisma.CampaignServerRefCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.CampaignServerRefDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignServerRefPayload>
          }
          update: {
            args: Prisma.CampaignServerRefUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignServerRefPayload>
          }
          deleteMany: {
            args: Prisma.CampaignServerRefDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.CampaignServerRefUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.CampaignServerRefUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignServerRefPayload>
          }
          aggregate: {
            args: Prisma.CampaignServerRefAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateCampaignServerRef>
          }
          groupBy: {
            args: Prisma.CampaignServerRefGroupByArgs<ExtArgs>
            result: $Utils.Optional<CampaignServerRefGroupByOutputType>[]
          }
          count: {
            args: Prisma.CampaignServerRefCountArgs<ExtArgs>
            result: $Utils.Optional<CampaignServerRefCountAggregateOutputType> | number
          }
        }
      }
      CampaignRecipient: {
        payload: Prisma.$CampaignRecipientPayload<ExtArgs>
        fields: Prisma.CampaignRecipientFieldRefs
        operations: {
          findUnique: {
            args: Prisma.CampaignRecipientFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignRecipientPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.CampaignRecipientFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignRecipientPayload>
          }
          findFirst: {
            args: Prisma.CampaignRecipientFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignRecipientPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.CampaignRecipientFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignRecipientPayload>
          }
          findMany: {
            args: Prisma.CampaignRecipientFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignRecipientPayload>[]
          }
          create: {
            args: Prisma.CampaignRecipientCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignRecipientPayload>
          }
          createMany: {
            args: Prisma.CampaignRecipientCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.CampaignRecipientDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignRecipientPayload>
          }
          update: {
            args: Prisma.CampaignRecipientUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignRecipientPayload>
          }
          deleteMany: {
            args: Prisma.CampaignRecipientDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.CampaignRecipientUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.CampaignRecipientUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CampaignRecipientPayload>
          }
          aggregate: {
            args: Prisma.CampaignRecipientAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateCampaignRecipient>
          }
          groupBy: {
            args: Prisma.CampaignRecipientGroupByArgs<ExtArgs>
            result: $Utils.Optional<CampaignRecipientGroupByOutputType>[]
          }
          count: {
            args: Prisma.CampaignRecipientCountArgs<ExtArgs>
            result: $Utils.Optional<CampaignRecipientCountAggregateOutputType> | number
          }
        }
      }
      MobileNumberList: {
        payload: Prisma.$MobileNumberListPayload<ExtArgs>
        fields: Prisma.MobileNumberListFieldRefs
        operations: {
          findUnique: {
            args: Prisma.MobileNumberListFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberListPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.MobileNumberListFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberListPayload>
          }
          findFirst: {
            args: Prisma.MobileNumberListFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberListPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.MobileNumberListFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberListPayload>
          }
          findMany: {
            args: Prisma.MobileNumberListFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberListPayload>[]
          }
          create: {
            args: Prisma.MobileNumberListCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberListPayload>
          }
          createMany: {
            args: Prisma.MobileNumberListCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.MobileNumberListDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberListPayload>
          }
          update: {
            args: Prisma.MobileNumberListUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberListPayload>
          }
          deleteMany: {
            args: Prisma.MobileNumberListDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.MobileNumberListUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.MobileNumberListUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberListPayload>
          }
          aggregate: {
            args: Prisma.MobileNumberListAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateMobileNumberList>
          }
          groupBy: {
            args: Prisma.MobileNumberListGroupByArgs<ExtArgs>
            result: $Utils.Optional<MobileNumberListGroupByOutputType>[]
          }
          count: {
            args: Prisma.MobileNumberListCountArgs<ExtArgs>
            result: $Utils.Optional<MobileNumberListCountAggregateOutputType> | number
          }
        }
      }
      MobileNumber: {
        payload: Prisma.$MobileNumberPayload<ExtArgs>
        fields: Prisma.MobileNumberFieldRefs
        operations: {
          findUnique: {
            args: Prisma.MobileNumberFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.MobileNumberFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberPayload>
          }
          findFirst: {
            args: Prisma.MobileNumberFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.MobileNumberFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberPayload>
          }
          findMany: {
            args: Prisma.MobileNumberFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberPayload>[]
          }
          create: {
            args: Prisma.MobileNumberCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberPayload>
          }
          createMany: {
            args: Prisma.MobileNumberCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.MobileNumberDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberPayload>
          }
          update: {
            args: Prisma.MobileNumberUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberPayload>
          }
          deleteMany: {
            args: Prisma.MobileNumberDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.MobileNumberUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.MobileNumberUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$MobileNumberPayload>
          }
          aggregate: {
            args: Prisma.MobileNumberAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateMobileNumber>
          }
          groupBy: {
            args: Prisma.MobileNumberGroupByArgs<ExtArgs>
            result: $Utils.Optional<MobileNumberGroupByOutputType>[]
          }
          count: {
            args: Prisma.MobileNumberCountArgs<ExtArgs>
            result: $Utils.Optional<MobileNumberCountAggregateOutputType> | number
          }
        }
      }
      SMS_Report: {
        payload: Prisma.$SMS_ReportPayload<ExtArgs>
        fields: Prisma.SMS_ReportFieldRefs
        operations: {
          findUnique: {
            args: Prisma.SMS_ReportFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_ReportPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.SMS_ReportFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_ReportPayload>
          }
          findFirst: {
            args: Prisma.SMS_ReportFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_ReportPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.SMS_ReportFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_ReportPayload>
          }
          findMany: {
            args: Prisma.SMS_ReportFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_ReportPayload>[]
          }
          create: {
            args: Prisma.SMS_ReportCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_ReportPayload>
          }
          createMany: {
            args: Prisma.SMS_ReportCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.SMS_ReportDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_ReportPayload>
          }
          update: {
            args: Prisma.SMS_ReportUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_ReportPayload>
          }
          deleteMany: {
            args: Prisma.SMS_ReportDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.SMS_ReportUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.SMS_ReportUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SMS_ReportPayload>
          }
          aggregate: {
            args: Prisma.SMS_ReportAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateSMS_Report>
          }
          groupBy: {
            args: Prisma.SMS_ReportGroupByArgs<ExtArgs>
            result: $Utils.Optional<SMS_ReportGroupByOutputType>[]
          }
          count: {
            args: Prisma.SMS_ReportCountArgs<ExtArgs>
            result: $Utils.Optional<SMS_ReportCountAggregateOutputType> | number
          }
        }
      }
      ExternalApiClient: {
        payload: Prisma.$ExternalApiClientPayload<ExtArgs>
        fields: Prisma.ExternalApiClientFieldRefs
        operations: {
          findUnique: {
            args: Prisma.ExternalApiClientFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ExternalApiClientPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.ExternalApiClientFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ExternalApiClientPayload>
          }
          findFirst: {
            args: Prisma.ExternalApiClientFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ExternalApiClientPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.ExternalApiClientFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ExternalApiClientPayload>
          }
          findMany: {
            args: Prisma.ExternalApiClientFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ExternalApiClientPayload>[]
          }
          create: {
            args: Prisma.ExternalApiClientCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ExternalApiClientPayload>
          }
          createMany: {
            args: Prisma.ExternalApiClientCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.ExternalApiClientDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ExternalApiClientPayload>
          }
          update: {
            args: Prisma.ExternalApiClientUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ExternalApiClientPayload>
          }
          deleteMany: {
            args: Prisma.ExternalApiClientDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.ExternalApiClientUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.ExternalApiClientUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ExternalApiClientPayload>
          }
          aggregate: {
            args: Prisma.ExternalApiClientAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateExternalApiClient>
          }
          groupBy: {
            args: Prisma.ExternalApiClientGroupByArgs<ExtArgs>
            result: $Utils.Optional<ExternalApiClientGroupByOutputType>[]
          }
          count: {
            args: Prisma.ExternalApiClientCountArgs<ExtArgs>
            result: $Utils.Optional<ExternalApiClientCountAggregateOutputType> | number
          }
        }
      }
      SystemConfig: {
        payload: Prisma.$SystemConfigPayload<ExtArgs>
        fields: Prisma.SystemConfigFieldRefs
        operations: {
          findUnique: {
            args: Prisma.SystemConfigFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SystemConfigPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.SystemConfigFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SystemConfigPayload>
          }
          findFirst: {
            args: Prisma.SystemConfigFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SystemConfigPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.SystemConfigFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SystemConfigPayload>
          }
          findMany: {
            args: Prisma.SystemConfigFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SystemConfigPayload>[]
          }
          create: {
            args: Prisma.SystemConfigCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SystemConfigPayload>
          }
          createMany: {
            args: Prisma.SystemConfigCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.SystemConfigDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SystemConfigPayload>
          }
          update: {
            args: Prisma.SystemConfigUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SystemConfigPayload>
          }
          deleteMany: {
            args: Prisma.SystemConfigDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.SystemConfigUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.SystemConfigUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SystemConfigPayload>
          }
          aggregate: {
            args: Prisma.SystemConfigAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateSystemConfig>
          }
          groupBy: {
            args: Prisma.SystemConfigGroupByArgs<ExtArgs>
            result: $Utils.Optional<SystemConfigGroupByOutputType>[]
          }
          count: {
            args: Prisma.SystemConfigCountArgs<ExtArgs>
            result: $Utils.Optional<SystemConfigCountAggregateOutputType> | number
          }
        }
      }
      AuditLog: {
        payload: Prisma.$AuditLogPayload<ExtArgs>
        fields: Prisma.AuditLogFieldRefs
        operations: {
          findUnique: {
            args: Prisma.AuditLogFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$AuditLogPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.AuditLogFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$AuditLogPayload>
          }
          findFirst: {
            args: Prisma.AuditLogFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$AuditLogPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.AuditLogFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$AuditLogPayload>
          }
          findMany: {
            args: Prisma.AuditLogFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$AuditLogPayload>[]
          }
          create: {
            args: Prisma.AuditLogCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$AuditLogPayload>
          }
          createMany: {
            args: Prisma.AuditLogCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          delete: {
            args: Prisma.AuditLogDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$AuditLogPayload>
          }
          update: {
            args: Prisma.AuditLogUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$AuditLogPayload>
          }
          deleteMany: {
            args: Prisma.AuditLogDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.AuditLogUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.AuditLogUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$AuditLogPayload>
          }
          aggregate: {
            args: Prisma.AuditLogAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateAuditLog>
          }
          groupBy: {
            args: Prisma.AuditLogGroupByArgs<ExtArgs>
            result: $Utils.Optional<AuditLogGroupByOutputType>[]
          }
          count: {
            args: Prisma.AuditLogCountArgs<ExtArgs>
            result: $Utils.Optional<AuditLogCountAggregateOutputType> | number
          }
        }
      }
    }
  } & {
    other: {
      payload: any
      operations: {
        $executeRaw: {
          args: [query: TemplateStringsArray | Prisma.Sql, ...values: any[]],
          result: any
        }
        $executeRawUnsafe: {
          args: [query: string, ...values: any[]],
          result: any
        }
        $queryRaw: {
          args: [query: TemplateStringsArray | Prisma.Sql, ...values: any[]],
          result: any
        }
        $queryRawUnsafe: {
          args: [query: string, ...values: any[]],
          result: any
        }
      }
    }
  }
  export const defineExtension: $Extensions.ExtendsHook<"define", Prisma.TypeMapCb, $Extensions.DefaultArgs>
  export type DefaultPrismaClient = PrismaClient
  export type ErrorFormat = 'pretty' | 'colorless' | 'minimal'
  export interface PrismaClientOptions {
    /**
     * @default "colorless"
     */
    errorFormat?: ErrorFormat
    /**
     * @example
     * ```
     * // Shorthand for `emit: 'stdout'`
     * log: ['query', 'info', 'warn', 'error']
     * 
     * // Emit as events only
     * log: [
     *   { emit: 'event', level: 'query' },
     *   { emit: 'event', level: 'info' },
     *   { emit: 'event', level: 'warn' }
     *   { emit: 'event', level: 'error' }
     * ]
     * 
     * / Emit as events and log to stdout
     * og: [
     *  { emit: 'stdout', level: 'query' },
     *  { emit: 'stdout', level: 'info' },
     *  { emit: 'stdout', level: 'warn' }
     *  { emit: 'stdout', level: 'error' }
     * 
     * ```
     * Read more in our [docs](https://pris.ly/d/logging).
     */
    log?: (LogLevel | LogDefinition)[]
    /**
     * The default values for transactionOptions
     * maxWait ?= 2000
     * timeout ?= 5000
     */
    transactionOptions?: {
      maxWait?: number
      timeout?: number
      isolationLevel?: Prisma.TransactionIsolationLevel
    }
    /**
     * Instance of a Driver Adapter, e.g., like one provided by `@prisma/adapter-planetscale`
     */
    adapter?: runtime.SqlDriverAdapterFactory
    /**
     * Prisma Accelerate URL allowing the client to connect through Accelerate instead of a direct database.
     */
    accelerateUrl?: string
    /**
     * Global configuration for omitting model fields by default.
     * 
     * @example
     * ```
     * const prisma = new PrismaClient({
     *   omit: {
     *     user: {
     *       password: true
     *     }
     *   }
     * })
     * ```
     */
    omit?: Prisma.GlobalOmitConfig
    /**
     * SQL commenter plugins that add metadata to SQL queries as comments.
     * Comments follow the sqlcommenter format: https://google.github.io/sqlcommenter/
     * 
     * @example
     * ```
     * const prisma = new PrismaClient({
     *   adapter,
     *   comments: [
     *     traceContext(),
     *     queryInsights(),
     *   ],
     * })
     * ```
     */
    comments?: runtime.SqlCommenterPlugin[]
  }
  export type GlobalOmitConfig = {
    company?: CompanyOmit
    role?: RoleOmit
    user?: UserOmit
    refreshToken?: RefreshTokenOmit
    emailVerificationOtp?: EmailVerificationOtpOmit
    passwordResetToken?: PasswordResetTokenOmit
    userCompany?: UserCompanyOmit
    billPayment?: BillPaymentOmit
    billAccount?: BillAccountOmit
    savedCard?: SavedCardOmit
    lowBalanceAlert?: LowBalanceAlertOmit
    department?: DepartmentOmit
    sMS_Template?: SMS_TemplateOmit
    senderMask?: SenderMaskOmit
    departmentSenderMask?: DepartmentSenderMaskOmit
    contactParamSettings?: ContactParamSettingsOmit
    campaign?: CampaignOmit
    campaignServerRef?: CampaignServerRefOmit
    campaignRecipient?: CampaignRecipientOmit
    mobileNumberList?: MobileNumberListOmit
    mobileNumber?: MobileNumberOmit
    sMS_Report?: SMS_ReportOmit
    externalApiClient?: ExternalApiClientOmit
    systemConfig?: SystemConfigOmit
    auditLog?: AuditLogOmit
  }

  /* Types for Logging */
  export type LogLevel = 'info' | 'query' | 'warn' | 'error'
  export type LogDefinition = {
    level: LogLevel
    emit: 'stdout' | 'event'
  }

  export type CheckIsLogLevel<T> = T extends LogLevel ? T : never;

  export type GetLogType<T> = CheckIsLogLevel<
    T extends LogDefinition ? T['level'] : T
  >;

  export type GetEvents<T extends any[]> = T extends Array<LogLevel | LogDefinition>
    ? GetLogType<T[number]>
    : never;

  export type QueryEvent = {
    timestamp: Date
    query: string
    params: string
    duration: number
    target: string
  }

  export type LogEvent = {
    timestamp: Date
    message: string
    target: string
  }
  /* End Types for Logging */


  export type PrismaAction =
    | 'findUnique'
    | 'findUniqueOrThrow'
    | 'findMany'
    | 'findFirst'
    | 'findFirstOrThrow'
    | 'create'
    | 'createMany'
    | 'createManyAndReturn'
    | 'update'
    | 'updateMany'
    | 'updateManyAndReturn'
    | 'upsert'
    | 'delete'
    | 'deleteMany'
    | 'executeRaw'
    | 'queryRaw'
    | 'aggregate'
    | 'count'
    | 'runCommandRaw'
    | 'findRaw'
    | 'groupBy'

  // tested in getLogLevel.test.ts
  export function getLogLevel(log: Array<LogLevel | LogDefinition>): LogLevel | undefined;

  /**
   * `PrismaClient` proxy available in interactive transactions.
   */
  export type TransactionClient = Omit<Prisma.DefaultPrismaClient, runtime.ITXClientDenyList>

  export type Datasource = {
    url?: string
  }

  /**
   * Count Types
   */


  /**
   * Count Type CompanyCountOutputType
   */

  export type CompanyCountOutputType = {
    userCompanies: number
    billAccounts: number
    departments: number
    mobileNumberLists: number
    senderMasks: number
  }

  export type CompanyCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    userCompanies?: boolean | CompanyCountOutputTypeCountUserCompaniesArgs
    billAccounts?: boolean | CompanyCountOutputTypeCountBillAccountsArgs
    departments?: boolean | CompanyCountOutputTypeCountDepartmentsArgs
    mobileNumberLists?: boolean | CompanyCountOutputTypeCountMobileNumberListsArgs
    senderMasks?: boolean | CompanyCountOutputTypeCountSenderMasksArgs
  }

  // Custom InputTypes
  /**
   * CompanyCountOutputType without action
   */
  export type CompanyCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CompanyCountOutputType
     */
    select?: CompanyCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * CompanyCountOutputType without action
   */
  export type CompanyCountOutputTypeCountUserCompaniesArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: UserCompanyWhereInput
  }

  /**
   * CompanyCountOutputType without action
   */
  export type CompanyCountOutputTypeCountBillAccountsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: BillAccountWhereInput
  }

  /**
   * CompanyCountOutputType without action
   */
  export type CompanyCountOutputTypeCountDepartmentsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: DepartmentWhereInput
  }

  /**
   * CompanyCountOutputType without action
   */
  export type CompanyCountOutputTypeCountMobileNumberListsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: MobileNumberListWhereInput
  }

  /**
   * CompanyCountOutputType without action
   */
  export type CompanyCountOutputTypeCountSenderMasksArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: SenderMaskWhereInput
  }


  /**
   * Count Type RoleCountOutputType
   */

  export type RoleCountOutputType = {
    users: number
  }

  export type RoleCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    users?: boolean | RoleCountOutputTypeCountUsersArgs
  }

  // Custom InputTypes
  /**
   * RoleCountOutputType without action
   */
  export type RoleCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RoleCountOutputType
     */
    select?: RoleCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * RoleCountOutputType without action
   */
  export type RoleCountOutputTypeCountUsersArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: UserWhereInput
  }


  /**
   * Count Type UserCountOutputType
   */

  export type UserCountOutputType = {
    companies: number
    refreshTokens: number
    savedCards: number
    passwordResetTokens: number
  }

  export type UserCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    companies?: boolean | UserCountOutputTypeCountCompaniesArgs
    refreshTokens?: boolean | UserCountOutputTypeCountRefreshTokensArgs
    savedCards?: boolean | UserCountOutputTypeCountSavedCardsArgs
    passwordResetTokens?: boolean | UserCountOutputTypeCountPasswordResetTokensArgs
  }

  // Custom InputTypes
  /**
   * UserCountOutputType without action
   */
  export type UserCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the UserCountOutputType
     */
    select?: UserCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * UserCountOutputType without action
   */
  export type UserCountOutputTypeCountCompaniesArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: UserCompanyWhereInput
  }

  /**
   * UserCountOutputType without action
   */
  export type UserCountOutputTypeCountRefreshTokensArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: RefreshTokenWhereInput
  }

  /**
   * UserCountOutputType without action
   */
  export type UserCountOutputTypeCountSavedCardsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: SavedCardWhereInput
  }

  /**
   * UserCountOutputType without action
   */
  export type UserCountOutputTypeCountPasswordResetTokensArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: PasswordResetTokenWhereInput
  }


  /**
   * Count Type BillAccountCountOutputType
   */

  export type BillAccountCountOutputType = {
    billPayments: number
    campaigns: number
    lowBalanceAlerts: number
  }

  export type BillAccountCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    billPayments?: boolean | BillAccountCountOutputTypeCountBillPaymentsArgs
    campaigns?: boolean | BillAccountCountOutputTypeCountCampaignsArgs
    lowBalanceAlerts?: boolean | BillAccountCountOutputTypeCountLowBalanceAlertsArgs
  }

  // Custom InputTypes
  /**
   * BillAccountCountOutputType without action
   */
  export type BillAccountCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillAccountCountOutputType
     */
    select?: BillAccountCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * BillAccountCountOutputType without action
   */
  export type BillAccountCountOutputTypeCountBillPaymentsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: BillPaymentWhereInput
  }

  /**
   * BillAccountCountOutputType without action
   */
  export type BillAccountCountOutputTypeCountCampaignsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: CampaignWhereInput
  }

  /**
   * BillAccountCountOutputType without action
   */
  export type BillAccountCountOutputTypeCountLowBalanceAlertsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: LowBalanceAlertWhereInput
  }


  /**
   * Count Type SavedCardCountOutputType
   */

  export type SavedCardCountOutputType = {
    billPayments: number
  }

  export type SavedCardCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    billPayments?: boolean | SavedCardCountOutputTypeCountBillPaymentsArgs
  }

  // Custom InputTypes
  /**
   * SavedCardCountOutputType without action
   */
  export type SavedCardCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SavedCardCountOutputType
     */
    select?: SavedCardCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * SavedCardCountOutputType without action
   */
  export type SavedCardCountOutputTypeCountBillPaymentsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: BillPaymentWhereInput
  }


  /**
   * Count Type DepartmentCountOutputType
   */

  export type DepartmentCountOutputType = {
    smsTemplates: number
    senderMasks: number
  }

  export type DepartmentCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    smsTemplates?: boolean | DepartmentCountOutputTypeCountSmsTemplatesArgs
    senderMasks?: boolean | DepartmentCountOutputTypeCountSenderMasksArgs
  }

  // Custom InputTypes
  /**
   * DepartmentCountOutputType without action
   */
  export type DepartmentCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DepartmentCountOutputType
     */
    select?: DepartmentCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * DepartmentCountOutputType without action
   */
  export type DepartmentCountOutputTypeCountSmsTemplatesArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: SMS_TemplateWhereInput
  }

  /**
   * DepartmentCountOutputType without action
   */
  export type DepartmentCountOutputTypeCountSenderMasksArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: DepartmentSenderMaskWhereInput
  }


  /**
   * Count Type SMS_TemplateCountOutputType
   */

  export type SMS_TemplateCountOutputType = {
    campaigns: number
  }

  export type SMS_TemplateCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    campaigns?: boolean | SMS_TemplateCountOutputTypeCountCampaignsArgs
  }

  // Custom InputTypes
  /**
   * SMS_TemplateCountOutputType without action
   */
  export type SMS_TemplateCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_TemplateCountOutputType
     */
    select?: SMS_TemplateCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * SMS_TemplateCountOutputType without action
   */
  export type SMS_TemplateCountOutputTypeCountCampaignsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: CampaignWhereInput
  }


  /**
   * Count Type SenderMaskCountOutputType
   */

  export type SenderMaskCountOutputType = {
    campaigns: number
    departments: number
  }

  export type SenderMaskCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    campaigns?: boolean | SenderMaskCountOutputTypeCountCampaignsArgs
    departments?: boolean | SenderMaskCountOutputTypeCountDepartmentsArgs
  }

  // Custom InputTypes
  /**
   * SenderMaskCountOutputType without action
   */
  export type SenderMaskCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SenderMaskCountOutputType
     */
    select?: SenderMaskCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * SenderMaskCountOutputType without action
   */
  export type SenderMaskCountOutputTypeCountCampaignsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: CampaignWhereInput
  }

  /**
   * SenderMaskCountOutputType without action
   */
  export type SenderMaskCountOutputTypeCountDepartmentsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: DepartmentSenderMaskWhereInput
  }


  /**
   * Count Type CampaignCountOutputType
   */

  export type CampaignCountOutputType = {
    smsReports: number
    bulkServerRefs: number
    recipients: number
  }

  export type CampaignCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    smsReports?: boolean | CampaignCountOutputTypeCountSmsReportsArgs
    bulkServerRefs?: boolean | CampaignCountOutputTypeCountBulkServerRefsArgs
    recipients?: boolean | CampaignCountOutputTypeCountRecipientsArgs
  }

  // Custom InputTypes
  /**
   * CampaignCountOutputType without action
   */
  export type CampaignCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignCountOutputType
     */
    select?: CampaignCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * CampaignCountOutputType without action
   */
  export type CampaignCountOutputTypeCountSmsReportsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: SMS_ReportWhereInput
  }

  /**
   * CampaignCountOutputType without action
   */
  export type CampaignCountOutputTypeCountBulkServerRefsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: CampaignServerRefWhereInput
  }

  /**
   * CampaignCountOutputType without action
   */
  export type CampaignCountOutputTypeCountRecipientsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: CampaignRecipientWhereInput
  }


  /**
   * Count Type MobileNumberListCountOutputType
   */

  export type MobileNumberListCountOutputType = {
    campaigns: number
    mobileNumbers: number
  }

  export type MobileNumberListCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    campaigns?: boolean | MobileNumberListCountOutputTypeCountCampaignsArgs
    mobileNumbers?: boolean | MobileNumberListCountOutputTypeCountMobileNumbersArgs
  }

  // Custom InputTypes
  /**
   * MobileNumberListCountOutputType without action
   */
  export type MobileNumberListCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumberListCountOutputType
     */
    select?: MobileNumberListCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * MobileNumberListCountOutputType without action
   */
  export type MobileNumberListCountOutputTypeCountCampaignsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: CampaignWhereInput
  }

  /**
   * MobileNumberListCountOutputType without action
   */
  export type MobileNumberListCountOutputTypeCountMobileNumbersArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: MobileNumberWhereInput
  }


  /**
   * Models
   */

  /**
   * Model Company
   */

  export type AggregateCompany = {
    _count: CompanyCountAggregateOutputType | null
    _avg: CompanyAvgAggregateOutputType | null
    _sum: CompanySumAggregateOutputType | null
    _min: CompanyMinAggregateOutputType | null
    _max: CompanyMaxAggregateOutputType | null
  }

  export type CompanyAvgAggregateOutputType = {
    id: number | null
    externalCompanyId: number | null
    smsCostTransactional: number | null
    smsCostPromotional: number | null
    smsCostIndividual: number | null
  }

  export type CompanySumAggregateOutputType = {
    id: number | null
    externalCompanyId: number | null
    smsCostTransactional: number | null
    smsCostPromotional: number | null
    smsCostIndividual: number | null
  }

  export type CompanyMinAggregateOutputType = {
    id: number | null
    uuid: string | null
    externalCompanyId: number | null
    source: string | null
    brNumber: string | null
    companyName: string | null
    contactNumber: string | null
    address: string | null
    smsCostTransactional: number | null
    smsCostPromotional: number | null
    smsCostIndividual: number | null
    deletedAt: Date | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type CompanyMaxAggregateOutputType = {
    id: number | null
    uuid: string | null
    externalCompanyId: number | null
    source: string | null
    brNumber: string | null
    companyName: string | null
    contactNumber: string | null
    address: string | null
    smsCostTransactional: number | null
    smsCostPromotional: number | null
    smsCostIndividual: number | null
    deletedAt: Date | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type CompanyCountAggregateOutputType = {
    id: number
    uuid: number
    externalCompanyId: number
    source: number
    brNumber: number
    companyName: number
    contactNumber: number
    address: number
    smsCostTransactional: number
    smsCostPromotional: number
    smsCostIndividual: number
    deletedAt: number
    createdAt: number
    updatedAt: number
    _all: number
  }


  export type CompanyAvgAggregateInputType = {
    id?: true
    externalCompanyId?: true
    smsCostTransactional?: true
    smsCostPromotional?: true
    smsCostIndividual?: true
  }

  export type CompanySumAggregateInputType = {
    id?: true
    externalCompanyId?: true
    smsCostTransactional?: true
    smsCostPromotional?: true
    smsCostIndividual?: true
  }

  export type CompanyMinAggregateInputType = {
    id?: true
    uuid?: true
    externalCompanyId?: true
    source?: true
    brNumber?: true
    companyName?: true
    contactNumber?: true
    address?: true
    smsCostTransactional?: true
    smsCostPromotional?: true
    smsCostIndividual?: true
    deletedAt?: true
    createdAt?: true
    updatedAt?: true
  }

  export type CompanyMaxAggregateInputType = {
    id?: true
    uuid?: true
    externalCompanyId?: true
    source?: true
    brNumber?: true
    companyName?: true
    contactNumber?: true
    address?: true
    smsCostTransactional?: true
    smsCostPromotional?: true
    smsCostIndividual?: true
    deletedAt?: true
    createdAt?: true
    updatedAt?: true
  }

  export type CompanyCountAggregateInputType = {
    id?: true
    uuid?: true
    externalCompanyId?: true
    source?: true
    brNumber?: true
    companyName?: true
    contactNumber?: true
    address?: true
    smsCostTransactional?: true
    smsCostPromotional?: true
    smsCostIndividual?: true
    deletedAt?: true
    createdAt?: true
    updatedAt?: true
    _all?: true
  }

  export type CompanyAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Company to aggregate.
     */
    where?: CompanyWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Companies to fetch.
     */
    orderBy?: CompanyOrderByWithRelationInput | CompanyOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: CompanyWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Companies from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Companies.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned Companies
    **/
    _count?: true | CompanyCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: CompanyAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: CompanySumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: CompanyMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: CompanyMaxAggregateInputType
  }

  export type GetCompanyAggregateType<T extends CompanyAggregateArgs> = {
        [P in keyof T & keyof AggregateCompany]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateCompany[P]>
      : GetScalarType<T[P], AggregateCompany[P]>
  }




  export type CompanyGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: CompanyWhereInput
    orderBy?: CompanyOrderByWithAggregationInput | CompanyOrderByWithAggregationInput[]
    by: CompanyScalarFieldEnum[] | CompanyScalarFieldEnum
    having?: CompanyScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: CompanyCountAggregateInputType | true
    _avg?: CompanyAvgAggregateInputType
    _sum?: CompanySumAggregateInputType
    _min?: CompanyMinAggregateInputType
    _max?: CompanyMaxAggregateInputType
  }

  export type CompanyGroupByOutputType = {
    id: number
    uuid: string
    externalCompanyId: number | null
    source: string | null
    brNumber: string | null
    companyName: string
    contactNumber: string | null
    address: string | null
    smsCostTransactional: number | null
    smsCostPromotional: number | null
    smsCostIndividual: number | null
    deletedAt: Date | null
    createdAt: Date
    updatedAt: Date
    _count: CompanyCountAggregateOutputType | null
    _avg: CompanyAvgAggregateOutputType | null
    _sum: CompanySumAggregateOutputType | null
    _min: CompanyMinAggregateOutputType | null
    _max: CompanyMaxAggregateOutputType | null
  }

  type GetCompanyGroupByPayload<T extends CompanyGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<CompanyGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof CompanyGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], CompanyGroupByOutputType[P]>
            : GetScalarType<T[P], CompanyGroupByOutputType[P]>
        }
      >
    >


  export type CompanySelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    uuid?: boolean
    externalCompanyId?: boolean
    source?: boolean
    brNumber?: boolean
    companyName?: boolean
    contactNumber?: boolean
    address?: boolean
    smsCostTransactional?: boolean
    smsCostPromotional?: boolean
    smsCostIndividual?: boolean
    deletedAt?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    userCompanies?: boolean | Company$userCompaniesArgs<ExtArgs>
    billAccounts?: boolean | Company$billAccountsArgs<ExtArgs>
    departments?: boolean | Company$departmentsArgs<ExtArgs>
    mobileNumberLists?: boolean | Company$mobileNumberListsArgs<ExtArgs>
    senderMasks?: boolean | Company$senderMasksArgs<ExtArgs>
    contactParamSettings?: boolean | Company$contactParamSettingsArgs<ExtArgs>
    _count?: boolean | CompanyCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["company"]>



  export type CompanySelectScalar = {
    id?: boolean
    uuid?: boolean
    externalCompanyId?: boolean
    source?: boolean
    brNumber?: boolean
    companyName?: boolean
    contactNumber?: boolean
    address?: boolean
    smsCostTransactional?: boolean
    smsCostPromotional?: boolean
    smsCostIndividual?: boolean
    deletedAt?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }

  export type CompanyOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "uuid" | "externalCompanyId" | "source" | "brNumber" | "companyName" | "contactNumber" | "address" | "smsCostTransactional" | "smsCostPromotional" | "smsCostIndividual" | "deletedAt" | "createdAt" | "updatedAt", ExtArgs["result"]["company"]>
  export type CompanyInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    userCompanies?: boolean | Company$userCompaniesArgs<ExtArgs>
    billAccounts?: boolean | Company$billAccountsArgs<ExtArgs>
    departments?: boolean | Company$departmentsArgs<ExtArgs>
    mobileNumberLists?: boolean | Company$mobileNumberListsArgs<ExtArgs>
    senderMasks?: boolean | Company$senderMasksArgs<ExtArgs>
    contactParamSettings?: boolean | Company$contactParamSettingsArgs<ExtArgs>
    _count?: boolean | CompanyCountOutputTypeDefaultArgs<ExtArgs>
  }

  export type $CompanyPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "Company"
    objects: {
      userCompanies: Prisma.$UserCompanyPayload<ExtArgs>[]
      billAccounts: Prisma.$BillAccountPayload<ExtArgs>[]
      departments: Prisma.$DepartmentPayload<ExtArgs>[]
      mobileNumberLists: Prisma.$MobileNumberListPayload<ExtArgs>[]
      senderMasks: Prisma.$SenderMaskPayload<ExtArgs>[]
      contactParamSettings: Prisma.$ContactParamSettingsPayload<ExtArgs> | null
    }
    scalars: $Extensions.GetPayloadResult<{
      id: number
      uuid: string
      externalCompanyId: number | null
      source: string | null
      brNumber: string | null
      companyName: string
      contactNumber: string | null
      address: string | null
      smsCostTransactional: number | null
      smsCostPromotional: number | null
      smsCostIndividual: number | null
      deletedAt: Date | null
      createdAt: Date
      updatedAt: Date
    }, ExtArgs["result"]["company"]>
    composites: {}
  }

  type CompanyGetPayload<S extends boolean | null | undefined | CompanyDefaultArgs> = $Result.GetResult<Prisma.$CompanyPayload, S>

  type CompanyCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<CompanyFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: CompanyCountAggregateInputType | true
    }

  export interface CompanyDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['Company'], meta: { name: 'Company' } }
    /**
     * Find zero or one Company that matches the filter.
     * @param {CompanyFindUniqueArgs} args - Arguments to find a Company
     * @example
     * // Get one Company
     * const company = await prisma.company.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends CompanyFindUniqueArgs>(args: SelectSubset<T, CompanyFindUniqueArgs<ExtArgs>>): Prisma__CompanyClient<$Result.GetResult<Prisma.$CompanyPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one Company that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {CompanyFindUniqueOrThrowArgs} args - Arguments to find a Company
     * @example
     * // Get one Company
     * const company = await prisma.company.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends CompanyFindUniqueOrThrowArgs>(args: SelectSubset<T, CompanyFindUniqueOrThrowArgs<ExtArgs>>): Prisma__CompanyClient<$Result.GetResult<Prisma.$CompanyPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Company that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CompanyFindFirstArgs} args - Arguments to find a Company
     * @example
     * // Get one Company
     * const company = await prisma.company.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends CompanyFindFirstArgs>(args?: SelectSubset<T, CompanyFindFirstArgs<ExtArgs>>): Prisma__CompanyClient<$Result.GetResult<Prisma.$CompanyPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Company that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CompanyFindFirstOrThrowArgs} args - Arguments to find a Company
     * @example
     * // Get one Company
     * const company = await prisma.company.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends CompanyFindFirstOrThrowArgs>(args?: SelectSubset<T, CompanyFindFirstOrThrowArgs<ExtArgs>>): Prisma__CompanyClient<$Result.GetResult<Prisma.$CompanyPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more Companies that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CompanyFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Companies
     * const companies = await prisma.company.findMany()
     * 
     * // Get first 10 Companies
     * const companies = await prisma.company.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const companyWithIdOnly = await prisma.company.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends CompanyFindManyArgs>(args?: SelectSubset<T, CompanyFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$CompanyPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a Company.
     * @param {CompanyCreateArgs} args - Arguments to create a Company.
     * @example
     * // Create one Company
     * const Company = await prisma.company.create({
     *   data: {
     *     // ... data to create a Company
     *   }
     * })
     * 
     */
    create<T extends CompanyCreateArgs>(args: SelectSubset<T, CompanyCreateArgs<ExtArgs>>): Prisma__CompanyClient<$Result.GetResult<Prisma.$CompanyPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many Companies.
     * @param {CompanyCreateManyArgs} args - Arguments to create many Companies.
     * @example
     * // Create many Companies
     * const company = await prisma.company.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends CompanyCreateManyArgs>(args?: SelectSubset<T, CompanyCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a Company.
     * @param {CompanyDeleteArgs} args - Arguments to delete one Company.
     * @example
     * // Delete one Company
     * const Company = await prisma.company.delete({
     *   where: {
     *     // ... filter to delete one Company
     *   }
     * })
     * 
     */
    delete<T extends CompanyDeleteArgs>(args: SelectSubset<T, CompanyDeleteArgs<ExtArgs>>): Prisma__CompanyClient<$Result.GetResult<Prisma.$CompanyPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one Company.
     * @param {CompanyUpdateArgs} args - Arguments to update one Company.
     * @example
     * // Update one Company
     * const company = await prisma.company.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends CompanyUpdateArgs>(args: SelectSubset<T, CompanyUpdateArgs<ExtArgs>>): Prisma__CompanyClient<$Result.GetResult<Prisma.$CompanyPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more Companies.
     * @param {CompanyDeleteManyArgs} args - Arguments to filter Companies to delete.
     * @example
     * // Delete a few Companies
     * const { count } = await prisma.company.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends CompanyDeleteManyArgs>(args?: SelectSubset<T, CompanyDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Companies.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CompanyUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many Companies
     * const company = await prisma.company.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends CompanyUpdateManyArgs>(args: SelectSubset<T, CompanyUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one Company.
     * @param {CompanyUpsertArgs} args - Arguments to update or create a Company.
     * @example
     * // Update or create a Company
     * const company = await prisma.company.upsert({
     *   create: {
     *     // ... data to create a Company
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the Company we want to update
     *   }
     * })
     */
    upsert<T extends CompanyUpsertArgs>(args: SelectSubset<T, CompanyUpsertArgs<ExtArgs>>): Prisma__CompanyClient<$Result.GetResult<Prisma.$CompanyPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of Companies.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CompanyCountArgs} args - Arguments to filter Companies to count.
     * @example
     * // Count the number of Companies
     * const count = await prisma.company.count({
     *   where: {
     *     // ... the filter for the Companies we want to count
     *   }
     * })
    **/
    count<T extends CompanyCountArgs>(
      args?: Subset<T, CompanyCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], CompanyCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a Company.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CompanyAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends CompanyAggregateArgs>(args: Subset<T, CompanyAggregateArgs>): Prisma.PrismaPromise<GetCompanyAggregateType<T>>

    /**
     * Group by Company.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CompanyGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends CompanyGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: CompanyGroupByArgs['orderBy'] }
        : { orderBy?: CompanyGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, CompanyGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetCompanyGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the Company model
   */
  readonly fields: CompanyFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for Company.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__CompanyClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    userCompanies<T extends Company$userCompaniesArgs<ExtArgs> = {}>(args?: Subset<T, Company$userCompaniesArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$UserCompanyPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    billAccounts<T extends Company$billAccountsArgs<ExtArgs> = {}>(args?: Subset<T, Company$billAccountsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$BillAccountPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    departments<T extends Company$departmentsArgs<ExtArgs> = {}>(args?: Subset<T, Company$departmentsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$DepartmentPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    mobileNumberLists<T extends Company$mobileNumberListsArgs<ExtArgs> = {}>(args?: Subset<T, Company$mobileNumberListsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$MobileNumberListPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    senderMasks<T extends Company$senderMasksArgs<ExtArgs> = {}>(args?: Subset<T, Company$senderMasksArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$SenderMaskPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    contactParamSettings<T extends Company$contactParamSettingsArgs<ExtArgs> = {}>(args?: Subset<T, Company$contactParamSettingsArgs<ExtArgs>>): Prisma__ContactParamSettingsClient<$Result.GetResult<Prisma.$ContactParamSettingsPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the Company model
   */
  interface CompanyFieldRefs {
    readonly id: FieldRef<"Company", 'Int'>
    readonly uuid: FieldRef<"Company", 'String'>
    readonly externalCompanyId: FieldRef<"Company", 'Int'>
    readonly source: FieldRef<"Company", 'String'>
    readonly brNumber: FieldRef<"Company", 'String'>
    readonly companyName: FieldRef<"Company", 'String'>
    readonly contactNumber: FieldRef<"Company", 'String'>
    readonly address: FieldRef<"Company", 'String'>
    readonly smsCostTransactional: FieldRef<"Company", 'Float'>
    readonly smsCostPromotional: FieldRef<"Company", 'Float'>
    readonly smsCostIndividual: FieldRef<"Company", 'Float'>
    readonly deletedAt: FieldRef<"Company", 'DateTime'>
    readonly createdAt: FieldRef<"Company", 'DateTime'>
    readonly updatedAt: FieldRef<"Company", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * Company findUnique
   */
  export type CompanyFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Company
     */
    select?: CompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the Company
     */
    omit?: CompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CompanyInclude<ExtArgs> | null
    /**
     * Filter, which Company to fetch.
     */
    where: CompanyWhereUniqueInput
  }

  /**
   * Company findUniqueOrThrow
   */
  export type CompanyFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Company
     */
    select?: CompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the Company
     */
    omit?: CompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CompanyInclude<ExtArgs> | null
    /**
     * Filter, which Company to fetch.
     */
    where: CompanyWhereUniqueInput
  }

  /**
   * Company findFirst
   */
  export type CompanyFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Company
     */
    select?: CompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the Company
     */
    omit?: CompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CompanyInclude<ExtArgs> | null
    /**
     * Filter, which Company to fetch.
     */
    where?: CompanyWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Companies to fetch.
     */
    orderBy?: CompanyOrderByWithRelationInput | CompanyOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Companies.
     */
    cursor?: CompanyWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Companies from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Companies.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Companies.
     */
    distinct?: CompanyScalarFieldEnum | CompanyScalarFieldEnum[]
  }

  /**
   * Company findFirstOrThrow
   */
  export type CompanyFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Company
     */
    select?: CompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the Company
     */
    omit?: CompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CompanyInclude<ExtArgs> | null
    /**
     * Filter, which Company to fetch.
     */
    where?: CompanyWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Companies to fetch.
     */
    orderBy?: CompanyOrderByWithRelationInput | CompanyOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Companies.
     */
    cursor?: CompanyWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Companies from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Companies.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Companies.
     */
    distinct?: CompanyScalarFieldEnum | CompanyScalarFieldEnum[]
  }

  /**
   * Company findMany
   */
  export type CompanyFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Company
     */
    select?: CompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the Company
     */
    omit?: CompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CompanyInclude<ExtArgs> | null
    /**
     * Filter, which Companies to fetch.
     */
    where?: CompanyWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Companies to fetch.
     */
    orderBy?: CompanyOrderByWithRelationInput | CompanyOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing Companies.
     */
    cursor?: CompanyWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Companies from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Companies.
     */
    skip?: number
    distinct?: CompanyScalarFieldEnum | CompanyScalarFieldEnum[]
  }

  /**
   * Company create
   */
  export type CompanyCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Company
     */
    select?: CompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the Company
     */
    omit?: CompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CompanyInclude<ExtArgs> | null
    /**
     * The data needed to create a Company.
     */
    data: XOR<CompanyCreateInput, CompanyUncheckedCreateInput>
  }

  /**
   * Company createMany
   */
  export type CompanyCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many Companies.
     */
    data: CompanyCreateManyInput | CompanyCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * Company update
   */
  export type CompanyUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Company
     */
    select?: CompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the Company
     */
    omit?: CompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CompanyInclude<ExtArgs> | null
    /**
     * The data needed to update a Company.
     */
    data: XOR<CompanyUpdateInput, CompanyUncheckedUpdateInput>
    /**
     * Choose, which Company to update.
     */
    where: CompanyWhereUniqueInput
  }

  /**
   * Company updateMany
   */
  export type CompanyUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update Companies.
     */
    data: XOR<CompanyUpdateManyMutationInput, CompanyUncheckedUpdateManyInput>
    /**
     * Filter which Companies to update
     */
    where?: CompanyWhereInput
    /**
     * Limit how many Companies to update.
     */
    limit?: number
  }

  /**
   * Company upsert
   */
  export type CompanyUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Company
     */
    select?: CompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the Company
     */
    omit?: CompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CompanyInclude<ExtArgs> | null
    /**
     * The filter to search for the Company to update in case it exists.
     */
    where: CompanyWhereUniqueInput
    /**
     * In case the Company found by the `where` argument doesn't exist, create a new Company with this data.
     */
    create: XOR<CompanyCreateInput, CompanyUncheckedCreateInput>
    /**
     * In case the Company was found with the provided `where` argument, update it with this data.
     */
    update: XOR<CompanyUpdateInput, CompanyUncheckedUpdateInput>
  }

  /**
   * Company delete
   */
  export type CompanyDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Company
     */
    select?: CompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the Company
     */
    omit?: CompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CompanyInclude<ExtArgs> | null
    /**
     * Filter which Company to delete.
     */
    where: CompanyWhereUniqueInput
  }

  /**
   * Company deleteMany
   */
  export type CompanyDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Companies to delete
     */
    where?: CompanyWhereInput
    /**
     * Limit how many Companies to delete.
     */
    limit?: number
  }

  /**
   * Company.userCompanies
   */
  export type Company$userCompaniesArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the UserCompany
     */
    select?: UserCompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the UserCompany
     */
    omit?: UserCompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserCompanyInclude<ExtArgs> | null
    where?: UserCompanyWhereInput
    orderBy?: UserCompanyOrderByWithRelationInput | UserCompanyOrderByWithRelationInput[]
    cursor?: UserCompanyWhereUniqueInput
    take?: number
    skip?: number
    distinct?: UserCompanyScalarFieldEnum | UserCompanyScalarFieldEnum[]
  }

  /**
   * Company.billAccounts
   */
  export type Company$billAccountsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillAccount
     */
    select?: BillAccountSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillAccount
     */
    omit?: BillAccountOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillAccountInclude<ExtArgs> | null
    where?: BillAccountWhereInput
    orderBy?: BillAccountOrderByWithRelationInput | BillAccountOrderByWithRelationInput[]
    cursor?: BillAccountWhereUniqueInput
    take?: number
    skip?: number
    distinct?: BillAccountScalarFieldEnum | BillAccountScalarFieldEnum[]
  }

  /**
   * Company.departments
   */
  export type Company$departmentsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Department
     */
    select?: DepartmentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Department
     */
    omit?: DepartmentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentInclude<ExtArgs> | null
    where?: DepartmentWhereInput
    orderBy?: DepartmentOrderByWithRelationInput | DepartmentOrderByWithRelationInput[]
    cursor?: DepartmentWhereUniqueInput
    take?: number
    skip?: number
    distinct?: DepartmentScalarFieldEnum | DepartmentScalarFieldEnum[]
  }

  /**
   * Company.mobileNumberLists
   */
  export type Company$mobileNumberListsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumberList
     */
    select?: MobileNumberListSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumberList
     */
    omit?: MobileNumberListOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberListInclude<ExtArgs> | null
    where?: MobileNumberListWhereInput
    orderBy?: MobileNumberListOrderByWithRelationInput | MobileNumberListOrderByWithRelationInput[]
    cursor?: MobileNumberListWhereUniqueInput
    take?: number
    skip?: number
    distinct?: MobileNumberListScalarFieldEnum | MobileNumberListScalarFieldEnum[]
  }

  /**
   * Company.senderMasks
   */
  export type Company$senderMasksArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SenderMask
     */
    select?: SenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SenderMask
     */
    omit?: SenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SenderMaskInclude<ExtArgs> | null
    where?: SenderMaskWhereInput
    orderBy?: SenderMaskOrderByWithRelationInput | SenderMaskOrderByWithRelationInput[]
    cursor?: SenderMaskWhereUniqueInput
    take?: number
    skip?: number
    distinct?: SenderMaskScalarFieldEnum | SenderMaskScalarFieldEnum[]
  }

  /**
   * Company.contactParamSettings
   */
  export type Company$contactParamSettingsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ContactParamSettings
     */
    select?: ContactParamSettingsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ContactParamSettings
     */
    omit?: ContactParamSettingsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ContactParamSettingsInclude<ExtArgs> | null
    where?: ContactParamSettingsWhereInput
  }

  /**
   * Company without action
   */
  export type CompanyDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Company
     */
    select?: CompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the Company
     */
    omit?: CompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CompanyInclude<ExtArgs> | null
  }


  /**
   * Model Role
   */

  export type AggregateRole = {
    _count: RoleCountAggregateOutputType | null
    _avg: RoleAvgAggregateOutputType | null
    _sum: RoleSumAggregateOutputType | null
    _min: RoleMinAggregateOutputType | null
    _max: RoleMaxAggregateOutputType | null
  }

  export type RoleAvgAggregateOutputType = {
    id: number | null
  }

  export type RoleSumAggregateOutputType = {
    id: number | null
  }

  export type RoleMinAggregateOutputType = {
    id: number | null
    uuid: string | null
    name: string | null
    displayName: string | null
    isSystem: boolean | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type RoleMaxAggregateOutputType = {
    id: number | null
    uuid: string | null
    name: string | null
    displayName: string | null
    isSystem: boolean | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type RoleCountAggregateOutputType = {
    id: number
    uuid: number
    name: number
    displayName: number
    isSystem: number
    createdAt: number
    updatedAt: number
    _all: number
  }


  export type RoleAvgAggregateInputType = {
    id?: true
  }

  export type RoleSumAggregateInputType = {
    id?: true
  }

  export type RoleMinAggregateInputType = {
    id?: true
    uuid?: true
    name?: true
    displayName?: true
    isSystem?: true
    createdAt?: true
    updatedAt?: true
  }

  export type RoleMaxAggregateInputType = {
    id?: true
    uuid?: true
    name?: true
    displayName?: true
    isSystem?: true
    createdAt?: true
    updatedAt?: true
  }

  export type RoleCountAggregateInputType = {
    id?: true
    uuid?: true
    name?: true
    displayName?: true
    isSystem?: true
    createdAt?: true
    updatedAt?: true
    _all?: true
  }

  export type RoleAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Role to aggregate.
     */
    where?: RoleWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Roles to fetch.
     */
    orderBy?: RoleOrderByWithRelationInput | RoleOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: RoleWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Roles from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Roles.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned Roles
    **/
    _count?: true | RoleCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: RoleAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: RoleSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: RoleMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: RoleMaxAggregateInputType
  }

  export type GetRoleAggregateType<T extends RoleAggregateArgs> = {
        [P in keyof T & keyof AggregateRole]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateRole[P]>
      : GetScalarType<T[P], AggregateRole[P]>
  }




  export type RoleGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: RoleWhereInput
    orderBy?: RoleOrderByWithAggregationInput | RoleOrderByWithAggregationInput[]
    by: RoleScalarFieldEnum[] | RoleScalarFieldEnum
    having?: RoleScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: RoleCountAggregateInputType | true
    _avg?: RoleAvgAggregateInputType
    _sum?: RoleSumAggregateInputType
    _min?: RoleMinAggregateInputType
    _max?: RoleMaxAggregateInputType
  }

  export type RoleGroupByOutputType = {
    id: number
    uuid: string
    name: string
    displayName: string
    isSystem: boolean
    createdAt: Date
    updatedAt: Date
    _count: RoleCountAggregateOutputType | null
    _avg: RoleAvgAggregateOutputType | null
    _sum: RoleSumAggregateOutputType | null
    _min: RoleMinAggregateOutputType | null
    _max: RoleMaxAggregateOutputType | null
  }

  type GetRoleGroupByPayload<T extends RoleGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<RoleGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof RoleGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], RoleGroupByOutputType[P]>
            : GetScalarType<T[P], RoleGroupByOutputType[P]>
        }
      >
    >


  export type RoleSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    uuid?: boolean
    name?: boolean
    displayName?: boolean
    isSystem?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    users?: boolean | Role$usersArgs<ExtArgs>
    _count?: boolean | RoleCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["role"]>



  export type RoleSelectScalar = {
    id?: boolean
    uuid?: boolean
    name?: boolean
    displayName?: boolean
    isSystem?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }

  export type RoleOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "uuid" | "name" | "displayName" | "isSystem" | "createdAt" | "updatedAt", ExtArgs["result"]["role"]>
  export type RoleInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    users?: boolean | Role$usersArgs<ExtArgs>
    _count?: boolean | RoleCountOutputTypeDefaultArgs<ExtArgs>
  }

  export type $RolePayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "Role"
    objects: {
      users: Prisma.$UserPayload<ExtArgs>[]
    }
    scalars: $Extensions.GetPayloadResult<{
      id: number
      uuid: string
      name: string
      displayName: string
      isSystem: boolean
      createdAt: Date
      updatedAt: Date
    }, ExtArgs["result"]["role"]>
    composites: {}
  }

  type RoleGetPayload<S extends boolean | null | undefined | RoleDefaultArgs> = $Result.GetResult<Prisma.$RolePayload, S>

  type RoleCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<RoleFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: RoleCountAggregateInputType | true
    }

  export interface RoleDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['Role'], meta: { name: 'Role' } }
    /**
     * Find zero or one Role that matches the filter.
     * @param {RoleFindUniqueArgs} args - Arguments to find a Role
     * @example
     * // Get one Role
     * const role = await prisma.role.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends RoleFindUniqueArgs>(args: SelectSubset<T, RoleFindUniqueArgs<ExtArgs>>): Prisma__RoleClient<$Result.GetResult<Prisma.$RolePayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one Role that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {RoleFindUniqueOrThrowArgs} args - Arguments to find a Role
     * @example
     * // Get one Role
     * const role = await prisma.role.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends RoleFindUniqueOrThrowArgs>(args: SelectSubset<T, RoleFindUniqueOrThrowArgs<ExtArgs>>): Prisma__RoleClient<$Result.GetResult<Prisma.$RolePayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Role that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RoleFindFirstArgs} args - Arguments to find a Role
     * @example
     * // Get one Role
     * const role = await prisma.role.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends RoleFindFirstArgs>(args?: SelectSubset<T, RoleFindFirstArgs<ExtArgs>>): Prisma__RoleClient<$Result.GetResult<Prisma.$RolePayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Role that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RoleFindFirstOrThrowArgs} args - Arguments to find a Role
     * @example
     * // Get one Role
     * const role = await prisma.role.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends RoleFindFirstOrThrowArgs>(args?: SelectSubset<T, RoleFindFirstOrThrowArgs<ExtArgs>>): Prisma__RoleClient<$Result.GetResult<Prisma.$RolePayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more Roles that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RoleFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Roles
     * const roles = await prisma.role.findMany()
     * 
     * // Get first 10 Roles
     * const roles = await prisma.role.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const roleWithIdOnly = await prisma.role.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends RoleFindManyArgs>(args?: SelectSubset<T, RoleFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$RolePayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a Role.
     * @param {RoleCreateArgs} args - Arguments to create a Role.
     * @example
     * // Create one Role
     * const Role = await prisma.role.create({
     *   data: {
     *     // ... data to create a Role
     *   }
     * })
     * 
     */
    create<T extends RoleCreateArgs>(args: SelectSubset<T, RoleCreateArgs<ExtArgs>>): Prisma__RoleClient<$Result.GetResult<Prisma.$RolePayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many Roles.
     * @param {RoleCreateManyArgs} args - Arguments to create many Roles.
     * @example
     * // Create many Roles
     * const role = await prisma.role.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends RoleCreateManyArgs>(args?: SelectSubset<T, RoleCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a Role.
     * @param {RoleDeleteArgs} args - Arguments to delete one Role.
     * @example
     * // Delete one Role
     * const Role = await prisma.role.delete({
     *   where: {
     *     // ... filter to delete one Role
     *   }
     * })
     * 
     */
    delete<T extends RoleDeleteArgs>(args: SelectSubset<T, RoleDeleteArgs<ExtArgs>>): Prisma__RoleClient<$Result.GetResult<Prisma.$RolePayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one Role.
     * @param {RoleUpdateArgs} args - Arguments to update one Role.
     * @example
     * // Update one Role
     * const role = await prisma.role.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends RoleUpdateArgs>(args: SelectSubset<T, RoleUpdateArgs<ExtArgs>>): Prisma__RoleClient<$Result.GetResult<Prisma.$RolePayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more Roles.
     * @param {RoleDeleteManyArgs} args - Arguments to filter Roles to delete.
     * @example
     * // Delete a few Roles
     * const { count } = await prisma.role.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends RoleDeleteManyArgs>(args?: SelectSubset<T, RoleDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Roles.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RoleUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many Roles
     * const role = await prisma.role.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends RoleUpdateManyArgs>(args: SelectSubset<T, RoleUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one Role.
     * @param {RoleUpsertArgs} args - Arguments to update or create a Role.
     * @example
     * // Update or create a Role
     * const role = await prisma.role.upsert({
     *   create: {
     *     // ... data to create a Role
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the Role we want to update
     *   }
     * })
     */
    upsert<T extends RoleUpsertArgs>(args: SelectSubset<T, RoleUpsertArgs<ExtArgs>>): Prisma__RoleClient<$Result.GetResult<Prisma.$RolePayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of Roles.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RoleCountArgs} args - Arguments to filter Roles to count.
     * @example
     * // Count the number of Roles
     * const count = await prisma.role.count({
     *   where: {
     *     // ... the filter for the Roles we want to count
     *   }
     * })
    **/
    count<T extends RoleCountArgs>(
      args?: Subset<T, RoleCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], RoleCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a Role.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RoleAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends RoleAggregateArgs>(args: Subset<T, RoleAggregateArgs>): Prisma.PrismaPromise<GetRoleAggregateType<T>>

    /**
     * Group by Role.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RoleGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends RoleGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: RoleGroupByArgs['orderBy'] }
        : { orderBy?: RoleGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, RoleGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetRoleGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the Role model
   */
  readonly fields: RoleFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for Role.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__RoleClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    users<T extends Role$usersArgs<ExtArgs> = {}>(args?: Subset<T, Role$usersArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$UserPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the Role model
   */
  interface RoleFieldRefs {
    readonly id: FieldRef<"Role", 'Int'>
    readonly uuid: FieldRef<"Role", 'String'>
    readonly name: FieldRef<"Role", 'String'>
    readonly displayName: FieldRef<"Role", 'String'>
    readonly isSystem: FieldRef<"Role", 'Boolean'>
    readonly createdAt: FieldRef<"Role", 'DateTime'>
    readonly updatedAt: FieldRef<"Role", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * Role findUnique
   */
  export type RoleFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Role
     */
    select?: RoleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Role
     */
    omit?: RoleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RoleInclude<ExtArgs> | null
    /**
     * Filter, which Role to fetch.
     */
    where: RoleWhereUniqueInput
  }

  /**
   * Role findUniqueOrThrow
   */
  export type RoleFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Role
     */
    select?: RoleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Role
     */
    omit?: RoleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RoleInclude<ExtArgs> | null
    /**
     * Filter, which Role to fetch.
     */
    where: RoleWhereUniqueInput
  }

  /**
   * Role findFirst
   */
  export type RoleFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Role
     */
    select?: RoleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Role
     */
    omit?: RoleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RoleInclude<ExtArgs> | null
    /**
     * Filter, which Role to fetch.
     */
    where?: RoleWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Roles to fetch.
     */
    orderBy?: RoleOrderByWithRelationInput | RoleOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Roles.
     */
    cursor?: RoleWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Roles from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Roles.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Roles.
     */
    distinct?: RoleScalarFieldEnum | RoleScalarFieldEnum[]
  }

  /**
   * Role findFirstOrThrow
   */
  export type RoleFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Role
     */
    select?: RoleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Role
     */
    omit?: RoleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RoleInclude<ExtArgs> | null
    /**
     * Filter, which Role to fetch.
     */
    where?: RoleWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Roles to fetch.
     */
    orderBy?: RoleOrderByWithRelationInput | RoleOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Roles.
     */
    cursor?: RoleWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Roles from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Roles.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Roles.
     */
    distinct?: RoleScalarFieldEnum | RoleScalarFieldEnum[]
  }

  /**
   * Role findMany
   */
  export type RoleFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Role
     */
    select?: RoleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Role
     */
    omit?: RoleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RoleInclude<ExtArgs> | null
    /**
     * Filter, which Roles to fetch.
     */
    where?: RoleWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Roles to fetch.
     */
    orderBy?: RoleOrderByWithRelationInput | RoleOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing Roles.
     */
    cursor?: RoleWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Roles from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Roles.
     */
    skip?: number
    distinct?: RoleScalarFieldEnum | RoleScalarFieldEnum[]
  }

  /**
   * Role create
   */
  export type RoleCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Role
     */
    select?: RoleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Role
     */
    omit?: RoleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RoleInclude<ExtArgs> | null
    /**
     * The data needed to create a Role.
     */
    data: XOR<RoleCreateInput, RoleUncheckedCreateInput>
  }

  /**
   * Role createMany
   */
  export type RoleCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many Roles.
     */
    data: RoleCreateManyInput | RoleCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * Role update
   */
  export type RoleUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Role
     */
    select?: RoleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Role
     */
    omit?: RoleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RoleInclude<ExtArgs> | null
    /**
     * The data needed to update a Role.
     */
    data: XOR<RoleUpdateInput, RoleUncheckedUpdateInput>
    /**
     * Choose, which Role to update.
     */
    where: RoleWhereUniqueInput
  }

  /**
   * Role updateMany
   */
  export type RoleUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update Roles.
     */
    data: XOR<RoleUpdateManyMutationInput, RoleUncheckedUpdateManyInput>
    /**
     * Filter which Roles to update
     */
    where?: RoleWhereInput
    /**
     * Limit how many Roles to update.
     */
    limit?: number
  }

  /**
   * Role upsert
   */
  export type RoleUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Role
     */
    select?: RoleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Role
     */
    omit?: RoleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RoleInclude<ExtArgs> | null
    /**
     * The filter to search for the Role to update in case it exists.
     */
    where: RoleWhereUniqueInput
    /**
     * In case the Role found by the `where` argument doesn't exist, create a new Role with this data.
     */
    create: XOR<RoleCreateInput, RoleUncheckedCreateInput>
    /**
     * In case the Role was found with the provided `where` argument, update it with this data.
     */
    update: XOR<RoleUpdateInput, RoleUncheckedUpdateInput>
  }

  /**
   * Role delete
   */
  export type RoleDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Role
     */
    select?: RoleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Role
     */
    omit?: RoleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RoleInclude<ExtArgs> | null
    /**
     * Filter which Role to delete.
     */
    where: RoleWhereUniqueInput
  }

  /**
   * Role deleteMany
   */
  export type RoleDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Roles to delete
     */
    where?: RoleWhereInput
    /**
     * Limit how many Roles to delete.
     */
    limit?: number
  }

  /**
   * Role.users
   */
  export type Role$usersArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the User
     */
    select?: UserSelect<ExtArgs> | null
    /**
     * Omit specific fields from the User
     */
    omit?: UserOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserInclude<ExtArgs> | null
    where?: UserWhereInput
    orderBy?: UserOrderByWithRelationInput | UserOrderByWithRelationInput[]
    cursor?: UserWhereUniqueInput
    take?: number
    skip?: number
    distinct?: UserScalarFieldEnum | UserScalarFieldEnum[]
  }

  /**
   * Role without action
   */
  export type RoleDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Role
     */
    select?: RoleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Role
     */
    omit?: RoleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RoleInclude<ExtArgs> | null
  }


  /**
   * Model User
   */

  export type AggregateUser = {
    _count: UserCountAggregateOutputType | null
    _avg: UserAvgAggregateOutputType | null
    _sum: UserSumAggregateOutputType | null
    _min: UserMinAggregateOutputType | null
    _max: UserMaxAggregateOutputType | null
  }

  export type UserAvgAggregateOutputType = {
    id: number | null
    externalUserId: number | null
    roleId: number | null
  }

  export type UserSumAggregateOutputType = {
    id: number | null
    externalUserId: number | null
    roleId: number | null
  }

  export type UserMinAggregateOutputType = {
    id: number | null
    uuid: string | null
    externalUserId: number | null
    fullName: string | null
    email: string | null
    contactNumber: string | null
    passwordHash: string | null
    userType: string | null
    isActive: boolean | null
    hasSeenGuide: boolean | null
    roleId: number | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type UserMaxAggregateOutputType = {
    id: number | null
    uuid: string | null
    externalUserId: number | null
    fullName: string | null
    email: string | null
    contactNumber: string | null
    passwordHash: string | null
    userType: string | null
    isActive: boolean | null
    hasSeenGuide: boolean | null
    roleId: number | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type UserCountAggregateOutputType = {
    id: number
    uuid: number
    externalUserId: number
    fullName: number
    email: number
    contactNumber: number
    passwordHash: number
    userType: number
    isActive: number
    hasSeenGuide: number
    roleId: number
    createdAt: number
    updatedAt: number
    _all: number
  }


  export type UserAvgAggregateInputType = {
    id?: true
    externalUserId?: true
    roleId?: true
  }

  export type UserSumAggregateInputType = {
    id?: true
    externalUserId?: true
    roleId?: true
  }

  export type UserMinAggregateInputType = {
    id?: true
    uuid?: true
    externalUserId?: true
    fullName?: true
    email?: true
    contactNumber?: true
    passwordHash?: true
    userType?: true
    isActive?: true
    hasSeenGuide?: true
    roleId?: true
    createdAt?: true
    updatedAt?: true
  }

  export type UserMaxAggregateInputType = {
    id?: true
    uuid?: true
    externalUserId?: true
    fullName?: true
    email?: true
    contactNumber?: true
    passwordHash?: true
    userType?: true
    isActive?: true
    hasSeenGuide?: true
    roleId?: true
    createdAt?: true
    updatedAt?: true
  }

  export type UserCountAggregateInputType = {
    id?: true
    uuid?: true
    externalUserId?: true
    fullName?: true
    email?: true
    contactNumber?: true
    passwordHash?: true
    userType?: true
    isActive?: true
    hasSeenGuide?: true
    roleId?: true
    createdAt?: true
    updatedAt?: true
    _all?: true
  }

  export type UserAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which User to aggregate.
     */
    where?: UserWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Users to fetch.
     */
    orderBy?: UserOrderByWithRelationInput | UserOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: UserWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Users from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Users.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned Users
    **/
    _count?: true | UserCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: UserAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: UserSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: UserMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: UserMaxAggregateInputType
  }

  export type GetUserAggregateType<T extends UserAggregateArgs> = {
        [P in keyof T & keyof AggregateUser]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateUser[P]>
      : GetScalarType<T[P], AggregateUser[P]>
  }




  export type UserGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: UserWhereInput
    orderBy?: UserOrderByWithAggregationInput | UserOrderByWithAggregationInput[]
    by: UserScalarFieldEnum[] | UserScalarFieldEnum
    having?: UserScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: UserCountAggregateInputType | true
    _avg?: UserAvgAggregateInputType
    _sum?: UserSumAggregateInputType
    _min?: UserMinAggregateInputType
    _max?: UserMaxAggregateInputType
  }

  export type UserGroupByOutputType = {
    id: number
    uuid: string
    externalUserId: number | null
    fullName: string
    email: string
    contactNumber: string | null
    passwordHash: string | null
    userType: string
    isActive: boolean
    hasSeenGuide: boolean
    roleId: number | null
    createdAt: Date
    updatedAt: Date
    _count: UserCountAggregateOutputType | null
    _avg: UserAvgAggregateOutputType | null
    _sum: UserSumAggregateOutputType | null
    _min: UserMinAggregateOutputType | null
    _max: UserMaxAggregateOutputType | null
  }

  type GetUserGroupByPayload<T extends UserGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<UserGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof UserGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], UserGroupByOutputType[P]>
            : GetScalarType<T[P], UserGroupByOutputType[P]>
        }
      >
    >


  export type UserSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    uuid?: boolean
    externalUserId?: boolean
    fullName?: boolean
    email?: boolean
    contactNumber?: boolean
    passwordHash?: boolean
    userType?: boolean
    isActive?: boolean
    hasSeenGuide?: boolean
    roleId?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    role?: boolean | User$roleArgs<ExtArgs>
    companies?: boolean | User$companiesArgs<ExtArgs>
    refreshTokens?: boolean | User$refreshTokensArgs<ExtArgs>
    savedCards?: boolean | User$savedCardsArgs<ExtArgs>
    passwordResetTokens?: boolean | User$passwordResetTokensArgs<ExtArgs>
    _count?: boolean | UserCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["user"]>



  export type UserSelectScalar = {
    id?: boolean
    uuid?: boolean
    externalUserId?: boolean
    fullName?: boolean
    email?: boolean
    contactNumber?: boolean
    passwordHash?: boolean
    userType?: boolean
    isActive?: boolean
    hasSeenGuide?: boolean
    roleId?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }

  export type UserOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "uuid" | "externalUserId" | "fullName" | "email" | "contactNumber" | "passwordHash" | "userType" | "isActive" | "hasSeenGuide" | "roleId" | "createdAt" | "updatedAt", ExtArgs["result"]["user"]>
  export type UserInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    role?: boolean | User$roleArgs<ExtArgs>
    companies?: boolean | User$companiesArgs<ExtArgs>
    refreshTokens?: boolean | User$refreshTokensArgs<ExtArgs>
    savedCards?: boolean | User$savedCardsArgs<ExtArgs>
    passwordResetTokens?: boolean | User$passwordResetTokensArgs<ExtArgs>
    _count?: boolean | UserCountOutputTypeDefaultArgs<ExtArgs>
  }

  export type $UserPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "User"
    objects: {
      role: Prisma.$RolePayload<ExtArgs> | null
      companies: Prisma.$UserCompanyPayload<ExtArgs>[]
      refreshTokens: Prisma.$RefreshTokenPayload<ExtArgs>[]
      savedCards: Prisma.$SavedCardPayload<ExtArgs>[]
      passwordResetTokens: Prisma.$PasswordResetTokenPayload<ExtArgs>[]
    }
    scalars: $Extensions.GetPayloadResult<{
      id: number
      uuid: string
      externalUserId: number | null
      fullName: string
      email: string
      contactNumber: string | null
      passwordHash: string | null
      userType: string
      isActive: boolean
      hasSeenGuide: boolean
      roleId: number | null
      createdAt: Date
      updatedAt: Date
    }, ExtArgs["result"]["user"]>
    composites: {}
  }

  type UserGetPayload<S extends boolean | null | undefined | UserDefaultArgs> = $Result.GetResult<Prisma.$UserPayload, S>

  type UserCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<UserFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: UserCountAggregateInputType | true
    }

  export interface UserDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['User'], meta: { name: 'User' } }
    /**
     * Find zero or one User that matches the filter.
     * @param {UserFindUniqueArgs} args - Arguments to find a User
     * @example
     * // Get one User
     * const user = await prisma.user.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends UserFindUniqueArgs>(args: SelectSubset<T, UserFindUniqueArgs<ExtArgs>>): Prisma__UserClient<$Result.GetResult<Prisma.$UserPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one User that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {UserFindUniqueOrThrowArgs} args - Arguments to find a User
     * @example
     * // Get one User
     * const user = await prisma.user.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends UserFindUniqueOrThrowArgs>(args: SelectSubset<T, UserFindUniqueOrThrowArgs<ExtArgs>>): Prisma__UserClient<$Result.GetResult<Prisma.$UserPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first User that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {UserFindFirstArgs} args - Arguments to find a User
     * @example
     * // Get one User
     * const user = await prisma.user.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends UserFindFirstArgs>(args?: SelectSubset<T, UserFindFirstArgs<ExtArgs>>): Prisma__UserClient<$Result.GetResult<Prisma.$UserPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first User that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {UserFindFirstOrThrowArgs} args - Arguments to find a User
     * @example
     * // Get one User
     * const user = await prisma.user.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends UserFindFirstOrThrowArgs>(args?: SelectSubset<T, UserFindFirstOrThrowArgs<ExtArgs>>): Prisma__UserClient<$Result.GetResult<Prisma.$UserPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more Users that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {UserFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Users
     * const users = await prisma.user.findMany()
     * 
     * // Get first 10 Users
     * const users = await prisma.user.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const userWithIdOnly = await prisma.user.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends UserFindManyArgs>(args?: SelectSubset<T, UserFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$UserPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a User.
     * @param {UserCreateArgs} args - Arguments to create a User.
     * @example
     * // Create one User
     * const User = await prisma.user.create({
     *   data: {
     *     // ... data to create a User
     *   }
     * })
     * 
     */
    create<T extends UserCreateArgs>(args: SelectSubset<T, UserCreateArgs<ExtArgs>>): Prisma__UserClient<$Result.GetResult<Prisma.$UserPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many Users.
     * @param {UserCreateManyArgs} args - Arguments to create many Users.
     * @example
     * // Create many Users
     * const user = await prisma.user.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends UserCreateManyArgs>(args?: SelectSubset<T, UserCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a User.
     * @param {UserDeleteArgs} args - Arguments to delete one User.
     * @example
     * // Delete one User
     * const User = await prisma.user.delete({
     *   where: {
     *     // ... filter to delete one User
     *   }
     * })
     * 
     */
    delete<T extends UserDeleteArgs>(args: SelectSubset<T, UserDeleteArgs<ExtArgs>>): Prisma__UserClient<$Result.GetResult<Prisma.$UserPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one User.
     * @param {UserUpdateArgs} args - Arguments to update one User.
     * @example
     * // Update one User
     * const user = await prisma.user.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends UserUpdateArgs>(args: SelectSubset<T, UserUpdateArgs<ExtArgs>>): Prisma__UserClient<$Result.GetResult<Prisma.$UserPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more Users.
     * @param {UserDeleteManyArgs} args - Arguments to filter Users to delete.
     * @example
     * // Delete a few Users
     * const { count } = await prisma.user.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends UserDeleteManyArgs>(args?: SelectSubset<T, UserDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Users.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {UserUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many Users
     * const user = await prisma.user.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends UserUpdateManyArgs>(args: SelectSubset<T, UserUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one User.
     * @param {UserUpsertArgs} args - Arguments to update or create a User.
     * @example
     * // Update or create a User
     * const user = await prisma.user.upsert({
     *   create: {
     *     // ... data to create a User
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the User we want to update
     *   }
     * })
     */
    upsert<T extends UserUpsertArgs>(args: SelectSubset<T, UserUpsertArgs<ExtArgs>>): Prisma__UserClient<$Result.GetResult<Prisma.$UserPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of Users.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {UserCountArgs} args - Arguments to filter Users to count.
     * @example
     * // Count the number of Users
     * const count = await prisma.user.count({
     *   where: {
     *     // ... the filter for the Users we want to count
     *   }
     * })
    **/
    count<T extends UserCountArgs>(
      args?: Subset<T, UserCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], UserCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a User.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {UserAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends UserAggregateArgs>(args: Subset<T, UserAggregateArgs>): Prisma.PrismaPromise<GetUserAggregateType<T>>

    /**
     * Group by User.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {UserGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends UserGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: UserGroupByArgs['orderBy'] }
        : { orderBy?: UserGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, UserGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetUserGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the User model
   */
  readonly fields: UserFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for User.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__UserClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    role<T extends User$roleArgs<ExtArgs> = {}>(args?: Subset<T, User$roleArgs<ExtArgs>>): Prisma__RoleClient<$Result.GetResult<Prisma.$RolePayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
    companies<T extends User$companiesArgs<ExtArgs> = {}>(args?: Subset<T, User$companiesArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$UserCompanyPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    refreshTokens<T extends User$refreshTokensArgs<ExtArgs> = {}>(args?: Subset<T, User$refreshTokensArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$RefreshTokenPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    savedCards<T extends User$savedCardsArgs<ExtArgs> = {}>(args?: Subset<T, User$savedCardsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$SavedCardPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    passwordResetTokens<T extends User$passwordResetTokensArgs<ExtArgs> = {}>(args?: Subset<T, User$passwordResetTokensArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$PasswordResetTokenPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the User model
   */
  interface UserFieldRefs {
    readonly id: FieldRef<"User", 'Int'>
    readonly uuid: FieldRef<"User", 'String'>
    readonly externalUserId: FieldRef<"User", 'Int'>
    readonly fullName: FieldRef<"User", 'String'>
    readonly email: FieldRef<"User", 'String'>
    readonly contactNumber: FieldRef<"User", 'String'>
    readonly passwordHash: FieldRef<"User", 'String'>
    readonly userType: FieldRef<"User", 'String'>
    readonly isActive: FieldRef<"User", 'Boolean'>
    readonly hasSeenGuide: FieldRef<"User", 'Boolean'>
    readonly roleId: FieldRef<"User", 'Int'>
    readonly createdAt: FieldRef<"User", 'DateTime'>
    readonly updatedAt: FieldRef<"User", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * User findUnique
   */
  export type UserFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the User
     */
    select?: UserSelect<ExtArgs> | null
    /**
     * Omit specific fields from the User
     */
    omit?: UserOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserInclude<ExtArgs> | null
    /**
     * Filter, which User to fetch.
     */
    where: UserWhereUniqueInput
  }

  /**
   * User findUniqueOrThrow
   */
  export type UserFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the User
     */
    select?: UserSelect<ExtArgs> | null
    /**
     * Omit specific fields from the User
     */
    omit?: UserOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserInclude<ExtArgs> | null
    /**
     * Filter, which User to fetch.
     */
    where: UserWhereUniqueInput
  }

  /**
   * User findFirst
   */
  export type UserFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the User
     */
    select?: UserSelect<ExtArgs> | null
    /**
     * Omit specific fields from the User
     */
    omit?: UserOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserInclude<ExtArgs> | null
    /**
     * Filter, which User to fetch.
     */
    where?: UserWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Users to fetch.
     */
    orderBy?: UserOrderByWithRelationInput | UserOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Users.
     */
    cursor?: UserWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Users from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Users.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Users.
     */
    distinct?: UserScalarFieldEnum | UserScalarFieldEnum[]
  }

  /**
   * User findFirstOrThrow
   */
  export type UserFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the User
     */
    select?: UserSelect<ExtArgs> | null
    /**
     * Omit specific fields from the User
     */
    omit?: UserOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserInclude<ExtArgs> | null
    /**
     * Filter, which User to fetch.
     */
    where?: UserWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Users to fetch.
     */
    orderBy?: UserOrderByWithRelationInput | UserOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Users.
     */
    cursor?: UserWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Users from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Users.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Users.
     */
    distinct?: UserScalarFieldEnum | UserScalarFieldEnum[]
  }

  /**
   * User findMany
   */
  export type UserFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the User
     */
    select?: UserSelect<ExtArgs> | null
    /**
     * Omit specific fields from the User
     */
    omit?: UserOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserInclude<ExtArgs> | null
    /**
     * Filter, which Users to fetch.
     */
    where?: UserWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Users to fetch.
     */
    orderBy?: UserOrderByWithRelationInput | UserOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing Users.
     */
    cursor?: UserWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Users from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Users.
     */
    skip?: number
    distinct?: UserScalarFieldEnum | UserScalarFieldEnum[]
  }

  /**
   * User create
   */
  export type UserCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the User
     */
    select?: UserSelect<ExtArgs> | null
    /**
     * Omit specific fields from the User
     */
    omit?: UserOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserInclude<ExtArgs> | null
    /**
     * The data needed to create a User.
     */
    data: XOR<UserCreateInput, UserUncheckedCreateInput>
  }

  /**
   * User createMany
   */
  export type UserCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many Users.
     */
    data: UserCreateManyInput | UserCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * User update
   */
  export type UserUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the User
     */
    select?: UserSelect<ExtArgs> | null
    /**
     * Omit specific fields from the User
     */
    omit?: UserOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserInclude<ExtArgs> | null
    /**
     * The data needed to update a User.
     */
    data: XOR<UserUpdateInput, UserUncheckedUpdateInput>
    /**
     * Choose, which User to update.
     */
    where: UserWhereUniqueInput
  }

  /**
   * User updateMany
   */
  export type UserUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update Users.
     */
    data: XOR<UserUpdateManyMutationInput, UserUncheckedUpdateManyInput>
    /**
     * Filter which Users to update
     */
    where?: UserWhereInput
    /**
     * Limit how many Users to update.
     */
    limit?: number
  }

  /**
   * User upsert
   */
  export type UserUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the User
     */
    select?: UserSelect<ExtArgs> | null
    /**
     * Omit specific fields from the User
     */
    omit?: UserOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserInclude<ExtArgs> | null
    /**
     * The filter to search for the User to update in case it exists.
     */
    where: UserWhereUniqueInput
    /**
     * In case the User found by the `where` argument doesn't exist, create a new User with this data.
     */
    create: XOR<UserCreateInput, UserUncheckedCreateInput>
    /**
     * In case the User was found with the provided `where` argument, update it with this data.
     */
    update: XOR<UserUpdateInput, UserUncheckedUpdateInput>
  }

  /**
   * User delete
   */
  export type UserDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the User
     */
    select?: UserSelect<ExtArgs> | null
    /**
     * Omit specific fields from the User
     */
    omit?: UserOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserInclude<ExtArgs> | null
    /**
     * Filter which User to delete.
     */
    where: UserWhereUniqueInput
  }

  /**
   * User deleteMany
   */
  export type UserDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Users to delete
     */
    where?: UserWhereInput
    /**
     * Limit how many Users to delete.
     */
    limit?: number
  }

  /**
   * User.role
   */
  export type User$roleArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Role
     */
    select?: RoleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Role
     */
    omit?: RoleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RoleInclude<ExtArgs> | null
    where?: RoleWhereInput
  }

  /**
   * User.companies
   */
  export type User$companiesArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the UserCompany
     */
    select?: UserCompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the UserCompany
     */
    omit?: UserCompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserCompanyInclude<ExtArgs> | null
    where?: UserCompanyWhereInput
    orderBy?: UserCompanyOrderByWithRelationInput | UserCompanyOrderByWithRelationInput[]
    cursor?: UserCompanyWhereUniqueInput
    take?: number
    skip?: number
    distinct?: UserCompanyScalarFieldEnum | UserCompanyScalarFieldEnum[]
  }

  /**
   * User.refreshTokens
   */
  export type User$refreshTokensArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RefreshToken
     */
    select?: RefreshTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the RefreshToken
     */
    omit?: RefreshTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RefreshTokenInclude<ExtArgs> | null
    where?: RefreshTokenWhereInput
    orderBy?: RefreshTokenOrderByWithRelationInput | RefreshTokenOrderByWithRelationInput[]
    cursor?: RefreshTokenWhereUniqueInput
    take?: number
    skip?: number
    distinct?: RefreshTokenScalarFieldEnum | RefreshTokenScalarFieldEnum[]
  }

  /**
   * User.savedCards
   */
  export type User$savedCardsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SavedCard
     */
    select?: SavedCardSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SavedCard
     */
    omit?: SavedCardOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SavedCardInclude<ExtArgs> | null
    where?: SavedCardWhereInput
    orderBy?: SavedCardOrderByWithRelationInput | SavedCardOrderByWithRelationInput[]
    cursor?: SavedCardWhereUniqueInput
    take?: number
    skip?: number
    distinct?: SavedCardScalarFieldEnum | SavedCardScalarFieldEnum[]
  }

  /**
   * User.passwordResetTokens
   */
  export type User$passwordResetTokensArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the PasswordResetToken
     */
    select?: PasswordResetTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the PasswordResetToken
     */
    omit?: PasswordResetTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: PasswordResetTokenInclude<ExtArgs> | null
    where?: PasswordResetTokenWhereInput
    orderBy?: PasswordResetTokenOrderByWithRelationInput | PasswordResetTokenOrderByWithRelationInput[]
    cursor?: PasswordResetTokenWhereUniqueInput
    take?: number
    skip?: number
    distinct?: PasswordResetTokenScalarFieldEnum | PasswordResetTokenScalarFieldEnum[]
  }

  /**
   * User without action
   */
  export type UserDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the User
     */
    select?: UserSelect<ExtArgs> | null
    /**
     * Omit specific fields from the User
     */
    omit?: UserOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserInclude<ExtArgs> | null
  }


  /**
   * Model RefreshToken
   */

  export type AggregateRefreshToken = {
    _count: RefreshTokenCountAggregateOutputType | null
    _avg: RefreshTokenAvgAggregateOutputType | null
    _sum: RefreshTokenSumAggregateOutputType | null
    _min: RefreshTokenMinAggregateOutputType | null
    _max: RefreshTokenMaxAggregateOutputType | null
  }

  export type RefreshTokenAvgAggregateOutputType = {
    id: number | null
    userId: number | null
  }

  export type RefreshTokenSumAggregateOutputType = {
    id: number | null
    userId: number | null
  }

  export type RefreshTokenMinAggregateOutputType = {
    id: number | null
    token: string | null
    userId: number | null
    expiresAt: Date | null
    isRevoked: boolean | null
    createdAt: Date | null
  }

  export type RefreshTokenMaxAggregateOutputType = {
    id: number | null
    token: string | null
    userId: number | null
    expiresAt: Date | null
    isRevoked: boolean | null
    createdAt: Date | null
  }

  export type RefreshTokenCountAggregateOutputType = {
    id: number
    token: number
    userId: number
    expiresAt: number
    isRevoked: number
    createdAt: number
    _all: number
  }


  export type RefreshTokenAvgAggregateInputType = {
    id?: true
    userId?: true
  }

  export type RefreshTokenSumAggregateInputType = {
    id?: true
    userId?: true
  }

  export type RefreshTokenMinAggregateInputType = {
    id?: true
    token?: true
    userId?: true
    expiresAt?: true
    isRevoked?: true
    createdAt?: true
  }

  export type RefreshTokenMaxAggregateInputType = {
    id?: true
    token?: true
    userId?: true
    expiresAt?: true
    isRevoked?: true
    createdAt?: true
  }

  export type RefreshTokenCountAggregateInputType = {
    id?: true
    token?: true
    userId?: true
    expiresAt?: true
    isRevoked?: true
    createdAt?: true
    _all?: true
  }

  export type RefreshTokenAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which RefreshToken to aggregate.
     */
    where?: RefreshTokenWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RefreshTokens to fetch.
     */
    orderBy?: RefreshTokenOrderByWithRelationInput | RefreshTokenOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: RefreshTokenWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RefreshTokens from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RefreshTokens.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned RefreshTokens
    **/
    _count?: true | RefreshTokenCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: RefreshTokenAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: RefreshTokenSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: RefreshTokenMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: RefreshTokenMaxAggregateInputType
  }

  export type GetRefreshTokenAggregateType<T extends RefreshTokenAggregateArgs> = {
        [P in keyof T & keyof AggregateRefreshToken]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateRefreshToken[P]>
      : GetScalarType<T[P], AggregateRefreshToken[P]>
  }




  export type RefreshTokenGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: RefreshTokenWhereInput
    orderBy?: RefreshTokenOrderByWithAggregationInput | RefreshTokenOrderByWithAggregationInput[]
    by: RefreshTokenScalarFieldEnum[] | RefreshTokenScalarFieldEnum
    having?: RefreshTokenScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: RefreshTokenCountAggregateInputType | true
    _avg?: RefreshTokenAvgAggregateInputType
    _sum?: RefreshTokenSumAggregateInputType
    _min?: RefreshTokenMinAggregateInputType
    _max?: RefreshTokenMaxAggregateInputType
  }

  export type RefreshTokenGroupByOutputType = {
    id: number
    token: string
    userId: number
    expiresAt: Date
    isRevoked: boolean
    createdAt: Date
    _count: RefreshTokenCountAggregateOutputType | null
    _avg: RefreshTokenAvgAggregateOutputType | null
    _sum: RefreshTokenSumAggregateOutputType | null
    _min: RefreshTokenMinAggregateOutputType | null
    _max: RefreshTokenMaxAggregateOutputType | null
  }

  type GetRefreshTokenGroupByPayload<T extends RefreshTokenGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<RefreshTokenGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof RefreshTokenGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], RefreshTokenGroupByOutputType[P]>
            : GetScalarType<T[P], RefreshTokenGroupByOutputType[P]>
        }
      >
    >


  export type RefreshTokenSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    token?: boolean
    userId?: boolean
    expiresAt?: boolean
    isRevoked?: boolean
    createdAt?: boolean
    user?: boolean | UserDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["refreshToken"]>



  export type RefreshTokenSelectScalar = {
    id?: boolean
    token?: boolean
    userId?: boolean
    expiresAt?: boolean
    isRevoked?: boolean
    createdAt?: boolean
  }

  export type RefreshTokenOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "token" | "userId" | "expiresAt" | "isRevoked" | "createdAt", ExtArgs["result"]["refreshToken"]>
  export type RefreshTokenInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    user?: boolean | UserDefaultArgs<ExtArgs>
  }

  export type $RefreshTokenPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "RefreshToken"
    objects: {
      user: Prisma.$UserPayload<ExtArgs>
    }
    scalars: $Extensions.GetPayloadResult<{
      id: number
      token: string
      userId: number
      expiresAt: Date
      isRevoked: boolean
      createdAt: Date
    }, ExtArgs["result"]["refreshToken"]>
    composites: {}
  }

  type RefreshTokenGetPayload<S extends boolean | null | undefined | RefreshTokenDefaultArgs> = $Result.GetResult<Prisma.$RefreshTokenPayload, S>

  type RefreshTokenCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<RefreshTokenFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: RefreshTokenCountAggregateInputType | true
    }

  export interface RefreshTokenDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['RefreshToken'], meta: { name: 'RefreshToken' } }
    /**
     * Find zero or one RefreshToken that matches the filter.
     * @param {RefreshTokenFindUniqueArgs} args - Arguments to find a RefreshToken
     * @example
     * // Get one RefreshToken
     * const refreshToken = await prisma.refreshToken.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends RefreshTokenFindUniqueArgs>(args: SelectSubset<T, RefreshTokenFindUniqueArgs<ExtArgs>>): Prisma__RefreshTokenClient<$Result.GetResult<Prisma.$RefreshTokenPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one RefreshToken that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {RefreshTokenFindUniqueOrThrowArgs} args - Arguments to find a RefreshToken
     * @example
     * // Get one RefreshToken
     * const refreshToken = await prisma.refreshToken.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends RefreshTokenFindUniqueOrThrowArgs>(args: SelectSubset<T, RefreshTokenFindUniqueOrThrowArgs<ExtArgs>>): Prisma__RefreshTokenClient<$Result.GetResult<Prisma.$RefreshTokenPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first RefreshToken that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RefreshTokenFindFirstArgs} args - Arguments to find a RefreshToken
     * @example
     * // Get one RefreshToken
     * const refreshToken = await prisma.refreshToken.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends RefreshTokenFindFirstArgs>(args?: SelectSubset<T, RefreshTokenFindFirstArgs<ExtArgs>>): Prisma__RefreshTokenClient<$Result.GetResult<Prisma.$RefreshTokenPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first RefreshToken that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RefreshTokenFindFirstOrThrowArgs} args - Arguments to find a RefreshToken
     * @example
     * // Get one RefreshToken
     * const refreshToken = await prisma.refreshToken.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends RefreshTokenFindFirstOrThrowArgs>(args?: SelectSubset<T, RefreshTokenFindFirstOrThrowArgs<ExtArgs>>): Prisma__RefreshTokenClient<$Result.GetResult<Prisma.$RefreshTokenPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more RefreshTokens that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RefreshTokenFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all RefreshTokens
     * const refreshTokens = await prisma.refreshToken.findMany()
     * 
     * // Get first 10 RefreshTokens
     * const refreshTokens = await prisma.refreshToken.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const refreshTokenWithIdOnly = await prisma.refreshToken.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends RefreshTokenFindManyArgs>(args?: SelectSubset<T, RefreshTokenFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$RefreshTokenPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a RefreshToken.
     * @param {RefreshTokenCreateArgs} args - Arguments to create a RefreshToken.
     * @example
     * // Create one RefreshToken
     * const RefreshToken = await prisma.refreshToken.create({
     *   data: {
     *     // ... data to create a RefreshToken
     *   }
     * })
     * 
     */
    create<T extends RefreshTokenCreateArgs>(args: SelectSubset<T, RefreshTokenCreateArgs<ExtArgs>>): Prisma__RefreshTokenClient<$Result.GetResult<Prisma.$RefreshTokenPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many RefreshTokens.
     * @param {RefreshTokenCreateManyArgs} args - Arguments to create many RefreshTokens.
     * @example
     * // Create many RefreshTokens
     * const refreshToken = await prisma.refreshToken.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends RefreshTokenCreateManyArgs>(args?: SelectSubset<T, RefreshTokenCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a RefreshToken.
     * @param {RefreshTokenDeleteArgs} args - Arguments to delete one RefreshToken.
     * @example
     * // Delete one RefreshToken
     * const RefreshToken = await prisma.refreshToken.delete({
     *   where: {
     *     // ... filter to delete one RefreshToken
     *   }
     * })
     * 
     */
    delete<T extends RefreshTokenDeleteArgs>(args: SelectSubset<T, RefreshTokenDeleteArgs<ExtArgs>>): Prisma__RefreshTokenClient<$Result.GetResult<Prisma.$RefreshTokenPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one RefreshToken.
     * @param {RefreshTokenUpdateArgs} args - Arguments to update one RefreshToken.
     * @example
     * // Update one RefreshToken
     * const refreshToken = await prisma.refreshToken.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends RefreshTokenUpdateArgs>(args: SelectSubset<T, RefreshTokenUpdateArgs<ExtArgs>>): Prisma__RefreshTokenClient<$Result.GetResult<Prisma.$RefreshTokenPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more RefreshTokens.
     * @param {RefreshTokenDeleteManyArgs} args - Arguments to filter RefreshTokens to delete.
     * @example
     * // Delete a few RefreshTokens
     * const { count } = await prisma.refreshToken.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends RefreshTokenDeleteManyArgs>(args?: SelectSubset<T, RefreshTokenDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more RefreshTokens.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RefreshTokenUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many RefreshTokens
     * const refreshToken = await prisma.refreshToken.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends RefreshTokenUpdateManyArgs>(args: SelectSubset<T, RefreshTokenUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one RefreshToken.
     * @param {RefreshTokenUpsertArgs} args - Arguments to update or create a RefreshToken.
     * @example
     * // Update or create a RefreshToken
     * const refreshToken = await prisma.refreshToken.upsert({
     *   create: {
     *     // ... data to create a RefreshToken
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the RefreshToken we want to update
     *   }
     * })
     */
    upsert<T extends RefreshTokenUpsertArgs>(args: SelectSubset<T, RefreshTokenUpsertArgs<ExtArgs>>): Prisma__RefreshTokenClient<$Result.GetResult<Prisma.$RefreshTokenPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of RefreshTokens.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RefreshTokenCountArgs} args - Arguments to filter RefreshTokens to count.
     * @example
     * // Count the number of RefreshTokens
     * const count = await prisma.refreshToken.count({
     *   where: {
     *     // ... the filter for the RefreshTokens we want to count
     *   }
     * })
    **/
    count<T extends RefreshTokenCountArgs>(
      args?: Subset<T, RefreshTokenCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], RefreshTokenCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a RefreshToken.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RefreshTokenAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends RefreshTokenAggregateArgs>(args: Subset<T, RefreshTokenAggregateArgs>): Prisma.PrismaPromise<GetRefreshTokenAggregateType<T>>

    /**
     * Group by RefreshToken.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RefreshTokenGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends RefreshTokenGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: RefreshTokenGroupByArgs['orderBy'] }
        : { orderBy?: RefreshTokenGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, RefreshTokenGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetRefreshTokenGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the RefreshToken model
   */
  readonly fields: RefreshTokenFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for RefreshToken.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__RefreshTokenClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    user<T extends UserDefaultArgs<ExtArgs> = {}>(args?: Subset<T, UserDefaultArgs<ExtArgs>>): Prisma__UserClient<$Result.GetResult<Prisma.$UserPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the RefreshToken model
   */
  interface RefreshTokenFieldRefs {
    readonly id: FieldRef<"RefreshToken", 'Int'>
    readonly token: FieldRef<"RefreshToken", 'String'>
    readonly userId: FieldRef<"RefreshToken", 'Int'>
    readonly expiresAt: FieldRef<"RefreshToken", 'DateTime'>
    readonly isRevoked: FieldRef<"RefreshToken", 'Boolean'>
    readonly createdAt: FieldRef<"RefreshToken", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * RefreshToken findUnique
   */
  export type RefreshTokenFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RefreshToken
     */
    select?: RefreshTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the RefreshToken
     */
    omit?: RefreshTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RefreshTokenInclude<ExtArgs> | null
    /**
     * Filter, which RefreshToken to fetch.
     */
    where: RefreshTokenWhereUniqueInput
  }

  /**
   * RefreshToken findUniqueOrThrow
   */
  export type RefreshTokenFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RefreshToken
     */
    select?: RefreshTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the RefreshToken
     */
    omit?: RefreshTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RefreshTokenInclude<ExtArgs> | null
    /**
     * Filter, which RefreshToken to fetch.
     */
    where: RefreshTokenWhereUniqueInput
  }

  /**
   * RefreshToken findFirst
   */
  export type RefreshTokenFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RefreshToken
     */
    select?: RefreshTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the RefreshToken
     */
    omit?: RefreshTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RefreshTokenInclude<ExtArgs> | null
    /**
     * Filter, which RefreshToken to fetch.
     */
    where?: RefreshTokenWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RefreshTokens to fetch.
     */
    orderBy?: RefreshTokenOrderByWithRelationInput | RefreshTokenOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for RefreshTokens.
     */
    cursor?: RefreshTokenWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RefreshTokens from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RefreshTokens.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of RefreshTokens.
     */
    distinct?: RefreshTokenScalarFieldEnum | RefreshTokenScalarFieldEnum[]
  }

  /**
   * RefreshToken findFirstOrThrow
   */
  export type RefreshTokenFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RefreshToken
     */
    select?: RefreshTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the RefreshToken
     */
    omit?: RefreshTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RefreshTokenInclude<ExtArgs> | null
    /**
     * Filter, which RefreshToken to fetch.
     */
    where?: RefreshTokenWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RefreshTokens to fetch.
     */
    orderBy?: RefreshTokenOrderByWithRelationInput | RefreshTokenOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for RefreshTokens.
     */
    cursor?: RefreshTokenWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RefreshTokens from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RefreshTokens.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of RefreshTokens.
     */
    distinct?: RefreshTokenScalarFieldEnum | RefreshTokenScalarFieldEnum[]
  }

  /**
   * RefreshToken findMany
   */
  export type RefreshTokenFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RefreshToken
     */
    select?: RefreshTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the RefreshToken
     */
    omit?: RefreshTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RefreshTokenInclude<ExtArgs> | null
    /**
     * Filter, which RefreshTokens to fetch.
     */
    where?: RefreshTokenWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RefreshTokens to fetch.
     */
    orderBy?: RefreshTokenOrderByWithRelationInput | RefreshTokenOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing RefreshTokens.
     */
    cursor?: RefreshTokenWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RefreshTokens from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RefreshTokens.
     */
    skip?: number
    distinct?: RefreshTokenScalarFieldEnum | RefreshTokenScalarFieldEnum[]
  }

  /**
   * RefreshToken create
   */
  export type RefreshTokenCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RefreshToken
     */
    select?: RefreshTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the RefreshToken
     */
    omit?: RefreshTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RefreshTokenInclude<ExtArgs> | null
    /**
     * The data needed to create a RefreshToken.
     */
    data: XOR<RefreshTokenCreateInput, RefreshTokenUncheckedCreateInput>
  }

  /**
   * RefreshToken createMany
   */
  export type RefreshTokenCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many RefreshTokens.
     */
    data: RefreshTokenCreateManyInput | RefreshTokenCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * RefreshToken update
   */
  export type RefreshTokenUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RefreshToken
     */
    select?: RefreshTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the RefreshToken
     */
    omit?: RefreshTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RefreshTokenInclude<ExtArgs> | null
    /**
     * The data needed to update a RefreshToken.
     */
    data: XOR<RefreshTokenUpdateInput, RefreshTokenUncheckedUpdateInput>
    /**
     * Choose, which RefreshToken to update.
     */
    where: RefreshTokenWhereUniqueInput
  }

  /**
   * RefreshToken updateMany
   */
  export type RefreshTokenUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update RefreshTokens.
     */
    data: XOR<RefreshTokenUpdateManyMutationInput, RefreshTokenUncheckedUpdateManyInput>
    /**
     * Filter which RefreshTokens to update
     */
    where?: RefreshTokenWhereInput
    /**
     * Limit how many RefreshTokens to update.
     */
    limit?: number
  }

  /**
   * RefreshToken upsert
   */
  export type RefreshTokenUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RefreshToken
     */
    select?: RefreshTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the RefreshToken
     */
    omit?: RefreshTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RefreshTokenInclude<ExtArgs> | null
    /**
     * The filter to search for the RefreshToken to update in case it exists.
     */
    where: RefreshTokenWhereUniqueInput
    /**
     * In case the RefreshToken found by the `where` argument doesn't exist, create a new RefreshToken with this data.
     */
    create: XOR<RefreshTokenCreateInput, RefreshTokenUncheckedCreateInput>
    /**
     * In case the RefreshToken was found with the provided `where` argument, update it with this data.
     */
    update: XOR<RefreshTokenUpdateInput, RefreshTokenUncheckedUpdateInput>
  }

  /**
   * RefreshToken delete
   */
  export type RefreshTokenDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RefreshToken
     */
    select?: RefreshTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the RefreshToken
     */
    omit?: RefreshTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RefreshTokenInclude<ExtArgs> | null
    /**
     * Filter which RefreshToken to delete.
     */
    where: RefreshTokenWhereUniqueInput
  }

  /**
   * RefreshToken deleteMany
   */
  export type RefreshTokenDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which RefreshTokens to delete
     */
    where?: RefreshTokenWhereInput
    /**
     * Limit how many RefreshTokens to delete.
     */
    limit?: number
  }

  /**
   * RefreshToken without action
   */
  export type RefreshTokenDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RefreshToken
     */
    select?: RefreshTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the RefreshToken
     */
    omit?: RefreshTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RefreshTokenInclude<ExtArgs> | null
  }


  /**
   * Model EmailVerificationOtp
   */

  export type AggregateEmailVerificationOtp = {
    _count: EmailVerificationOtpCountAggregateOutputType | null
    _avg: EmailVerificationOtpAvgAggregateOutputType | null
    _sum: EmailVerificationOtpSumAggregateOutputType | null
    _min: EmailVerificationOtpMinAggregateOutputType | null
    _max: EmailVerificationOtpMaxAggregateOutputType | null
  }

  export type EmailVerificationOtpAvgAggregateOutputType = {
    id: number | null
  }

  export type EmailVerificationOtpSumAggregateOutputType = {
    id: number | null
  }

  export type EmailVerificationOtpMinAggregateOutputType = {
    id: number | null
    otpHash: string | null
    email: string | null
    expiresAt: Date | null
    isUsed: boolean | null
    createdAt: Date | null
  }

  export type EmailVerificationOtpMaxAggregateOutputType = {
    id: number | null
    otpHash: string | null
    email: string | null
    expiresAt: Date | null
    isUsed: boolean | null
    createdAt: Date | null
  }

  export type EmailVerificationOtpCountAggregateOutputType = {
    id: number
    otpHash: number
    email: number
    expiresAt: number
    isUsed: number
    createdAt: number
    _all: number
  }


  export type EmailVerificationOtpAvgAggregateInputType = {
    id?: true
  }

  export type EmailVerificationOtpSumAggregateInputType = {
    id?: true
  }

  export type EmailVerificationOtpMinAggregateInputType = {
    id?: true
    otpHash?: true
    email?: true
    expiresAt?: true
    isUsed?: true
    createdAt?: true
  }

  export type EmailVerificationOtpMaxAggregateInputType = {
    id?: true
    otpHash?: true
    email?: true
    expiresAt?: true
    isUsed?: true
    createdAt?: true
  }

  export type EmailVerificationOtpCountAggregateInputType = {
    id?: true
    otpHash?: true
    email?: true
    expiresAt?: true
    isUsed?: true
    createdAt?: true
    _all?: true
  }

  export type EmailVerificationOtpAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which EmailVerificationOtp to aggregate.
     */
    where?: EmailVerificationOtpWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of EmailVerificationOtps to fetch.
     */
    orderBy?: EmailVerificationOtpOrderByWithRelationInput | EmailVerificationOtpOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: EmailVerificationOtpWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` EmailVerificationOtps from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` EmailVerificationOtps.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned EmailVerificationOtps
    **/
    _count?: true | EmailVerificationOtpCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: EmailVerificationOtpAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: EmailVerificationOtpSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: EmailVerificationOtpMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: EmailVerificationOtpMaxAggregateInputType
  }

  export type GetEmailVerificationOtpAggregateType<T extends EmailVerificationOtpAggregateArgs> = {
        [P in keyof T & keyof AggregateEmailVerificationOtp]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateEmailVerificationOtp[P]>
      : GetScalarType<T[P], AggregateEmailVerificationOtp[P]>
  }




  export type EmailVerificationOtpGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: EmailVerificationOtpWhereInput
    orderBy?: EmailVerificationOtpOrderByWithAggregationInput | EmailVerificationOtpOrderByWithAggregationInput[]
    by: EmailVerificationOtpScalarFieldEnum[] | EmailVerificationOtpScalarFieldEnum
    having?: EmailVerificationOtpScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: EmailVerificationOtpCountAggregateInputType | true
    _avg?: EmailVerificationOtpAvgAggregateInputType
    _sum?: EmailVerificationOtpSumAggregateInputType
    _min?: EmailVerificationOtpMinAggregateInputType
    _max?: EmailVerificationOtpMaxAggregateInputType
  }

  export type EmailVerificationOtpGroupByOutputType = {
    id: number
    otpHash: string
    email: string
    expiresAt: Date
    isUsed: boolean
    createdAt: Date
    _count: EmailVerificationOtpCountAggregateOutputType | null
    _avg: EmailVerificationOtpAvgAggregateOutputType | null
    _sum: EmailVerificationOtpSumAggregateOutputType | null
    _min: EmailVerificationOtpMinAggregateOutputType | null
    _max: EmailVerificationOtpMaxAggregateOutputType | null
  }

  type GetEmailVerificationOtpGroupByPayload<T extends EmailVerificationOtpGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<EmailVerificationOtpGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof EmailVerificationOtpGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], EmailVerificationOtpGroupByOutputType[P]>
            : GetScalarType<T[P], EmailVerificationOtpGroupByOutputType[P]>
        }
      >
    >


  export type EmailVerificationOtpSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    otpHash?: boolean
    email?: boolean
    expiresAt?: boolean
    isUsed?: boolean
    createdAt?: boolean
  }, ExtArgs["result"]["emailVerificationOtp"]>



  export type EmailVerificationOtpSelectScalar = {
    id?: boolean
    otpHash?: boolean
    email?: boolean
    expiresAt?: boolean
    isUsed?: boolean
    createdAt?: boolean
  }

  export type EmailVerificationOtpOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "otpHash" | "email" | "expiresAt" | "isUsed" | "createdAt", ExtArgs["result"]["emailVerificationOtp"]>

  export type $EmailVerificationOtpPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "EmailVerificationOtp"
    objects: {}
    scalars: $Extensions.GetPayloadResult<{
      id: number
      otpHash: string
      email: string
      expiresAt: Date
      isUsed: boolean
      createdAt: Date
    }, ExtArgs["result"]["emailVerificationOtp"]>
    composites: {}
  }

  type EmailVerificationOtpGetPayload<S extends boolean | null | undefined | EmailVerificationOtpDefaultArgs> = $Result.GetResult<Prisma.$EmailVerificationOtpPayload, S>

  type EmailVerificationOtpCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<EmailVerificationOtpFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: EmailVerificationOtpCountAggregateInputType | true
    }

  export interface EmailVerificationOtpDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['EmailVerificationOtp'], meta: { name: 'EmailVerificationOtp' } }
    /**
     * Find zero or one EmailVerificationOtp that matches the filter.
     * @param {EmailVerificationOtpFindUniqueArgs} args - Arguments to find a EmailVerificationOtp
     * @example
     * // Get one EmailVerificationOtp
     * const emailVerificationOtp = await prisma.emailVerificationOtp.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends EmailVerificationOtpFindUniqueArgs>(args: SelectSubset<T, EmailVerificationOtpFindUniqueArgs<ExtArgs>>): Prisma__EmailVerificationOtpClient<$Result.GetResult<Prisma.$EmailVerificationOtpPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one EmailVerificationOtp that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {EmailVerificationOtpFindUniqueOrThrowArgs} args - Arguments to find a EmailVerificationOtp
     * @example
     * // Get one EmailVerificationOtp
     * const emailVerificationOtp = await prisma.emailVerificationOtp.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends EmailVerificationOtpFindUniqueOrThrowArgs>(args: SelectSubset<T, EmailVerificationOtpFindUniqueOrThrowArgs<ExtArgs>>): Prisma__EmailVerificationOtpClient<$Result.GetResult<Prisma.$EmailVerificationOtpPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first EmailVerificationOtp that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EmailVerificationOtpFindFirstArgs} args - Arguments to find a EmailVerificationOtp
     * @example
     * // Get one EmailVerificationOtp
     * const emailVerificationOtp = await prisma.emailVerificationOtp.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends EmailVerificationOtpFindFirstArgs>(args?: SelectSubset<T, EmailVerificationOtpFindFirstArgs<ExtArgs>>): Prisma__EmailVerificationOtpClient<$Result.GetResult<Prisma.$EmailVerificationOtpPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first EmailVerificationOtp that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EmailVerificationOtpFindFirstOrThrowArgs} args - Arguments to find a EmailVerificationOtp
     * @example
     * // Get one EmailVerificationOtp
     * const emailVerificationOtp = await prisma.emailVerificationOtp.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends EmailVerificationOtpFindFirstOrThrowArgs>(args?: SelectSubset<T, EmailVerificationOtpFindFirstOrThrowArgs<ExtArgs>>): Prisma__EmailVerificationOtpClient<$Result.GetResult<Prisma.$EmailVerificationOtpPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more EmailVerificationOtps that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EmailVerificationOtpFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all EmailVerificationOtps
     * const emailVerificationOtps = await prisma.emailVerificationOtp.findMany()
     * 
     * // Get first 10 EmailVerificationOtps
     * const emailVerificationOtps = await prisma.emailVerificationOtp.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const emailVerificationOtpWithIdOnly = await prisma.emailVerificationOtp.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends EmailVerificationOtpFindManyArgs>(args?: SelectSubset<T, EmailVerificationOtpFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$EmailVerificationOtpPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a EmailVerificationOtp.
     * @param {EmailVerificationOtpCreateArgs} args - Arguments to create a EmailVerificationOtp.
     * @example
     * // Create one EmailVerificationOtp
     * const EmailVerificationOtp = await prisma.emailVerificationOtp.create({
     *   data: {
     *     // ... data to create a EmailVerificationOtp
     *   }
     * })
     * 
     */
    create<T extends EmailVerificationOtpCreateArgs>(args: SelectSubset<T, EmailVerificationOtpCreateArgs<ExtArgs>>): Prisma__EmailVerificationOtpClient<$Result.GetResult<Prisma.$EmailVerificationOtpPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many EmailVerificationOtps.
     * @param {EmailVerificationOtpCreateManyArgs} args - Arguments to create many EmailVerificationOtps.
     * @example
     * // Create many EmailVerificationOtps
     * const emailVerificationOtp = await prisma.emailVerificationOtp.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends EmailVerificationOtpCreateManyArgs>(args?: SelectSubset<T, EmailVerificationOtpCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a EmailVerificationOtp.
     * @param {EmailVerificationOtpDeleteArgs} args - Arguments to delete one EmailVerificationOtp.
     * @example
     * // Delete one EmailVerificationOtp
     * const EmailVerificationOtp = await prisma.emailVerificationOtp.delete({
     *   where: {
     *     // ... filter to delete one EmailVerificationOtp
     *   }
     * })
     * 
     */
    delete<T extends EmailVerificationOtpDeleteArgs>(args: SelectSubset<T, EmailVerificationOtpDeleteArgs<ExtArgs>>): Prisma__EmailVerificationOtpClient<$Result.GetResult<Prisma.$EmailVerificationOtpPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one EmailVerificationOtp.
     * @param {EmailVerificationOtpUpdateArgs} args - Arguments to update one EmailVerificationOtp.
     * @example
     * // Update one EmailVerificationOtp
     * const emailVerificationOtp = await prisma.emailVerificationOtp.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends EmailVerificationOtpUpdateArgs>(args: SelectSubset<T, EmailVerificationOtpUpdateArgs<ExtArgs>>): Prisma__EmailVerificationOtpClient<$Result.GetResult<Prisma.$EmailVerificationOtpPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more EmailVerificationOtps.
     * @param {EmailVerificationOtpDeleteManyArgs} args - Arguments to filter EmailVerificationOtps to delete.
     * @example
     * // Delete a few EmailVerificationOtps
     * const { count } = await prisma.emailVerificationOtp.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends EmailVerificationOtpDeleteManyArgs>(args?: SelectSubset<T, EmailVerificationOtpDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more EmailVerificationOtps.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EmailVerificationOtpUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many EmailVerificationOtps
     * const emailVerificationOtp = await prisma.emailVerificationOtp.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends EmailVerificationOtpUpdateManyArgs>(args: SelectSubset<T, EmailVerificationOtpUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one EmailVerificationOtp.
     * @param {EmailVerificationOtpUpsertArgs} args - Arguments to update or create a EmailVerificationOtp.
     * @example
     * // Update or create a EmailVerificationOtp
     * const emailVerificationOtp = await prisma.emailVerificationOtp.upsert({
     *   create: {
     *     // ... data to create a EmailVerificationOtp
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the EmailVerificationOtp we want to update
     *   }
     * })
     */
    upsert<T extends EmailVerificationOtpUpsertArgs>(args: SelectSubset<T, EmailVerificationOtpUpsertArgs<ExtArgs>>): Prisma__EmailVerificationOtpClient<$Result.GetResult<Prisma.$EmailVerificationOtpPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of EmailVerificationOtps.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EmailVerificationOtpCountArgs} args - Arguments to filter EmailVerificationOtps to count.
     * @example
     * // Count the number of EmailVerificationOtps
     * const count = await prisma.emailVerificationOtp.count({
     *   where: {
     *     // ... the filter for the EmailVerificationOtps we want to count
     *   }
     * })
    **/
    count<T extends EmailVerificationOtpCountArgs>(
      args?: Subset<T, EmailVerificationOtpCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], EmailVerificationOtpCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a EmailVerificationOtp.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EmailVerificationOtpAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends EmailVerificationOtpAggregateArgs>(args: Subset<T, EmailVerificationOtpAggregateArgs>): Prisma.PrismaPromise<GetEmailVerificationOtpAggregateType<T>>

    /**
     * Group by EmailVerificationOtp.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EmailVerificationOtpGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends EmailVerificationOtpGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: EmailVerificationOtpGroupByArgs['orderBy'] }
        : { orderBy?: EmailVerificationOtpGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, EmailVerificationOtpGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetEmailVerificationOtpGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the EmailVerificationOtp model
   */
  readonly fields: EmailVerificationOtpFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for EmailVerificationOtp.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__EmailVerificationOtpClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the EmailVerificationOtp model
   */
  interface EmailVerificationOtpFieldRefs {
    readonly id: FieldRef<"EmailVerificationOtp", 'Int'>
    readonly otpHash: FieldRef<"EmailVerificationOtp", 'String'>
    readonly email: FieldRef<"EmailVerificationOtp", 'String'>
    readonly expiresAt: FieldRef<"EmailVerificationOtp", 'DateTime'>
    readonly isUsed: FieldRef<"EmailVerificationOtp", 'Boolean'>
    readonly createdAt: FieldRef<"EmailVerificationOtp", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * EmailVerificationOtp findUnique
   */
  export type EmailVerificationOtpFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EmailVerificationOtp
     */
    select?: EmailVerificationOtpSelect<ExtArgs> | null
    /**
     * Omit specific fields from the EmailVerificationOtp
     */
    omit?: EmailVerificationOtpOmit<ExtArgs> | null
    /**
     * Filter, which EmailVerificationOtp to fetch.
     */
    where: EmailVerificationOtpWhereUniqueInput
  }

  /**
   * EmailVerificationOtp findUniqueOrThrow
   */
  export type EmailVerificationOtpFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EmailVerificationOtp
     */
    select?: EmailVerificationOtpSelect<ExtArgs> | null
    /**
     * Omit specific fields from the EmailVerificationOtp
     */
    omit?: EmailVerificationOtpOmit<ExtArgs> | null
    /**
     * Filter, which EmailVerificationOtp to fetch.
     */
    where: EmailVerificationOtpWhereUniqueInput
  }

  /**
   * EmailVerificationOtp findFirst
   */
  export type EmailVerificationOtpFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EmailVerificationOtp
     */
    select?: EmailVerificationOtpSelect<ExtArgs> | null
    /**
     * Omit specific fields from the EmailVerificationOtp
     */
    omit?: EmailVerificationOtpOmit<ExtArgs> | null
    /**
     * Filter, which EmailVerificationOtp to fetch.
     */
    where?: EmailVerificationOtpWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of EmailVerificationOtps to fetch.
     */
    orderBy?: EmailVerificationOtpOrderByWithRelationInput | EmailVerificationOtpOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for EmailVerificationOtps.
     */
    cursor?: EmailVerificationOtpWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` EmailVerificationOtps from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` EmailVerificationOtps.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of EmailVerificationOtps.
     */
    distinct?: EmailVerificationOtpScalarFieldEnum | EmailVerificationOtpScalarFieldEnum[]
  }

  /**
   * EmailVerificationOtp findFirstOrThrow
   */
  export type EmailVerificationOtpFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EmailVerificationOtp
     */
    select?: EmailVerificationOtpSelect<ExtArgs> | null
    /**
     * Omit specific fields from the EmailVerificationOtp
     */
    omit?: EmailVerificationOtpOmit<ExtArgs> | null
    /**
     * Filter, which EmailVerificationOtp to fetch.
     */
    where?: EmailVerificationOtpWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of EmailVerificationOtps to fetch.
     */
    orderBy?: EmailVerificationOtpOrderByWithRelationInput | EmailVerificationOtpOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for EmailVerificationOtps.
     */
    cursor?: EmailVerificationOtpWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` EmailVerificationOtps from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` EmailVerificationOtps.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of EmailVerificationOtps.
     */
    distinct?: EmailVerificationOtpScalarFieldEnum | EmailVerificationOtpScalarFieldEnum[]
  }

  /**
   * EmailVerificationOtp findMany
   */
  export type EmailVerificationOtpFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EmailVerificationOtp
     */
    select?: EmailVerificationOtpSelect<ExtArgs> | null
    /**
     * Omit specific fields from the EmailVerificationOtp
     */
    omit?: EmailVerificationOtpOmit<ExtArgs> | null
    /**
     * Filter, which EmailVerificationOtps to fetch.
     */
    where?: EmailVerificationOtpWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of EmailVerificationOtps to fetch.
     */
    orderBy?: EmailVerificationOtpOrderByWithRelationInput | EmailVerificationOtpOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing EmailVerificationOtps.
     */
    cursor?: EmailVerificationOtpWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` EmailVerificationOtps from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` EmailVerificationOtps.
     */
    skip?: number
    distinct?: EmailVerificationOtpScalarFieldEnum | EmailVerificationOtpScalarFieldEnum[]
  }

  /**
   * EmailVerificationOtp create
   */
  export type EmailVerificationOtpCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EmailVerificationOtp
     */
    select?: EmailVerificationOtpSelect<ExtArgs> | null
    /**
     * Omit specific fields from the EmailVerificationOtp
     */
    omit?: EmailVerificationOtpOmit<ExtArgs> | null
    /**
     * The data needed to create a EmailVerificationOtp.
     */
    data: XOR<EmailVerificationOtpCreateInput, EmailVerificationOtpUncheckedCreateInput>
  }

  /**
   * EmailVerificationOtp createMany
   */
  export type EmailVerificationOtpCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many EmailVerificationOtps.
     */
    data: EmailVerificationOtpCreateManyInput | EmailVerificationOtpCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * EmailVerificationOtp update
   */
  export type EmailVerificationOtpUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EmailVerificationOtp
     */
    select?: EmailVerificationOtpSelect<ExtArgs> | null
    /**
     * Omit specific fields from the EmailVerificationOtp
     */
    omit?: EmailVerificationOtpOmit<ExtArgs> | null
    /**
     * The data needed to update a EmailVerificationOtp.
     */
    data: XOR<EmailVerificationOtpUpdateInput, EmailVerificationOtpUncheckedUpdateInput>
    /**
     * Choose, which EmailVerificationOtp to update.
     */
    where: EmailVerificationOtpWhereUniqueInput
  }

  /**
   * EmailVerificationOtp updateMany
   */
  export type EmailVerificationOtpUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update EmailVerificationOtps.
     */
    data: XOR<EmailVerificationOtpUpdateManyMutationInput, EmailVerificationOtpUncheckedUpdateManyInput>
    /**
     * Filter which EmailVerificationOtps to update
     */
    where?: EmailVerificationOtpWhereInput
    /**
     * Limit how many EmailVerificationOtps to update.
     */
    limit?: number
  }

  /**
   * EmailVerificationOtp upsert
   */
  export type EmailVerificationOtpUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EmailVerificationOtp
     */
    select?: EmailVerificationOtpSelect<ExtArgs> | null
    /**
     * Omit specific fields from the EmailVerificationOtp
     */
    omit?: EmailVerificationOtpOmit<ExtArgs> | null
    /**
     * The filter to search for the EmailVerificationOtp to update in case it exists.
     */
    where: EmailVerificationOtpWhereUniqueInput
    /**
     * In case the EmailVerificationOtp found by the `where` argument doesn't exist, create a new EmailVerificationOtp with this data.
     */
    create: XOR<EmailVerificationOtpCreateInput, EmailVerificationOtpUncheckedCreateInput>
    /**
     * In case the EmailVerificationOtp was found with the provided `where` argument, update it with this data.
     */
    update: XOR<EmailVerificationOtpUpdateInput, EmailVerificationOtpUncheckedUpdateInput>
  }

  /**
   * EmailVerificationOtp delete
   */
  export type EmailVerificationOtpDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EmailVerificationOtp
     */
    select?: EmailVerificationOtpSelect<ExtArgs> | null
    /**
     * Omit specific fields from the EmailVerificationOtp
     */
    omit?: EmailVerificationOtpOmit<ExtArgs> | null
    /**
     * Filter which EmailVerificationOtp to delete.
     */
    where: EmailVerificationOtpWhereUniqueInput
  }

  /**
   * EmailVerificationOtp deleteMany
   */
  export type EmailVerificationOtpDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which EmailVerificationOtps to delete
     */
    where?: EmailVerificationOtpWhereInput
    /**
     * Limit how many EmailVerificationOtps to delete.
     */
    limit?: number
  }

  /**
   * EmailVerificationOtp without action
   */
  export type EmailVerificationOtpDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EmailVerificationOtp
     */
    select?: EmailVerificationOtpSelect<ExtArgs> | null
    /**
     * Omit specific fields from the EmailVerificationOtp
     */
    omit?: EmailVerificationOtpOmit<ExtArgs> | null
  }


  /**
   * Model PasswordResetToken
   */

  export type AggregatePasswordResetToken = {
    _count: PasswordResetTokenCountAggregateOutputType | null
    _avg: PasswordResetTokenAvgAggregateOutputType | null
    _sum: PasswordResetTokenSumAggregateOutputType | null
    _min: PasswordResetTokenMinAggregateOutputType | null
    _max: PasswordResetTokenMaxAggregateOutputType | null
  }

  export type PasswordResetTokenAvgAggregateOutputType = {
    id: number | null
    userId: number | null
  }

  export type PasswordResetTokenSumAggregateOutputType = {
    id: number | null
    userId: number | null
  }

  export type PasswordResetTokenMinAggregateOutputType = {
    id: number | null
    tokenHash: string | null
    userId: number | null
    expiresAt: Date | null
    isUsed: boolean | null
    createdAt: Date | null
  }

  export type PasswordResetTokenMaxAggregateOutputType = {
    id: number | null
    tokenHash: string | null
    userId: number | null
    expiresAt: Date | null
    isUsed: boolean | null
    createdAt: Date | null
  }

  export type PasswordResetTokenCountAggregateOutputType = {
    id: number
    tokenHash: number
    userId: number
    expiresAt: number
    isUsed: number
    createdAt: number
    _all: number
  }


  export type PasswordResetTokenAvgAggregateInputType = {
    id?: true
    userId?: true
  }

  export type PasswordResetTokenSumAggregateInputType = {
    id?: true
    userId?: true
  }

  export type PasswordResetTokenMinAggregateInputType = {
    id?: true
    tokenHash?: true
    userId?: true
    expiresAt?: true
    isUsed?: true
    createdAt?: true
  }

  export type PasswordResetTokenMaxAggregateInputType = {
    id?: true
    tokenHash?: true
    userId?: true
    expiresAt?: true
    isUsed?: true
    createdAt?: true
  }

  export type PasswordResetTokenCountAggregateInputType = {
    id?: true
    tokenHash?: true
    userId?: true
    expiresAt?: true
    isUsed?: true
    createdAt?: true
    _all?: true
  }

  export type PasswordResetTokenAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which PasswordResetToken to aggregate.
     */
    where?: PasswordResetTokenWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of PasswordResetTokens to fetch.
     */
    orderBy?: PasswordResetTokenOrderByWithRelationInput | PasswordResetTokenOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: PasswordResetTokenWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` PasswordResetTokens from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` PasswordResetTokens.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned PasswordResetTokens
    **/
    _count?: true | PasswordResetTokenCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: PasswordResetTokenAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: PasswordResetTokenSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: PasswordResetTokenMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: PasswordResetTokenMaxAggregateInputType
  }

  export type GetPasswordResetTokenAggregateType<T extends PasswordResetTokenAggregateArgs> = {
        [P in keyof T & keyof AggregatePasswordResetToken]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregatePasswordResetToken[P]>
      : GetScalarType<T[P], AggregatePasswordResetToken[P]>
  }




  export type PasswordResetTokenGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: PasswordResetTokenWhereInput
    orderBy?: PasswordResetTokenOrderByWithAggregationInput | PasswordResetTokenOrderByWithAggregationInput[]
    by: PasswordResetTokenScalarFieldEnum[] | PasswordResetTokenScalarFieldEnum
    having?: PasswordResetTokenScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: PasswordResetTokenCountAggregateInputType | true
    _avg?: PasswordResetTokenAvgAggregateInputType
    _sum?: PasswordResetTokenSumAggregateInputType
    _min?: PasswordResetTokenMinAggregateInputType
    _max?: PasswordResetTokenMaxAggregateInputType
  }

  export type PasswordResetTokenGroupByOutputType = {
    id: number
    tokenHash: string
    userId: number
    expiresAt: Date
    isUsed: boolean
    createdAt: Date
    _count: PasswordResetTokenCountAggregateOutputType | null
    _avg: PasswordResetTokenAvgAggregateOutputType | null
    _sum: PasswordResetTokenSumAggregateOutputType | null
    _min: PasswordResetTokenMinAggregateOutputType | null
    _max: PasswordResetTokenMaxAggregateOutputType | null
  }

  type GetPasswordResetTokenGroupByPayload<T extends PasswordResetTokenGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<PasswordResetTokenGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof PasswordResetTokenGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], PasswordResetTokenGroupByOutputType[P]>
            : GetScalarType<T[P], PasswordResetTokenGroupByOutputType[P]>
        }
      >
    >


  export type PasswordResetTokenSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    tokenHash?: boolean
    userId?: boolean
    expiresAt?: boolean
    isUsed?: boolean
    createdAt?: boolean
    user?: boolean | UserDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["passwordResetToken"]>



  export type PasswordResetTokenSelectScalar = {
    id?: boolean
    tokenHash?: boolean
    userId?: boolean
    expiresAt?: boolean
    isUsed?: boolean
    createdAt?: boolean
  }

  export type PasswordResetTokenOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "tokenHash" | "userId" | "expiresAt" | "isUsed" | "createdAt", ExtArgs["result"]["passwordResetToken"]>
  export type PasswordResetTokenInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    user?: boolean | UserDefaultArgs<ExtArgs>
  }

  export type $PasswordResetTokenPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "PasswordResetToken"
    objects: {
      user: Prisma.$UserPayload<ExtArgs>
    }
    scalars: $Extensions.GetPayloadResult<{
      id: number
      tokenHash: string
      userId: number
      expiresAt: Date
      isUsed: boolean
      createdAt: Date
    }, ExtArgs["result"]["passwordResetToken"]>
    composites: {}
  }

  type PasswordResetTokenGetPayload<S extends boolean | null | undefined | PasswordResetTokenDefaultArgs> = $Result.GetResult<Prisma.$PasswordResetTokenPayload, S>

  type PasswordResetTokenCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<PasswordResetTokenFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: PasswordResetTokenCountAggregateInputType | true
    }

  export interface PasswordResetTokenDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['PasswordResetToken'], meta: { name: 'PasswordResetToken' } }
    /**
     * Find zero or one PasswordResetToken that matches the filter.
     * @param {PasswordResetTokenFindUniqueArgs} args - Arguments to find a PasswordResetToken
     * @example
     * // Get one PasswordResetToken
     * const passwordResetToken = await prisma.passwordResetToken.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends PasswordResetTokenFindUniqueArgs>(args: SelectSubset<T, PasswordResetTokenFindUniqueArgs<ExtArgs>>): Prisma__PasswordResetTokenClient<$Result.GetResult<Prisma.$PasswordResetTokenPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one PasswordResetToken that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {PasswordResetTokenFindUniqueOrThrowArgs} args - Arguments to find a PasswordResetToken
     * @example
     * // Get one PasswordResetToken
     * const passwordResetToken = await prisma.passwordResetToken.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends PasswordResetTokenFindUniqueOrThrowArgs>(args: SelectSubset<T, PasswordResetTokenFindUniqueOrThrowArgs<ExtArgs>>): Prisma__PasswordResetTokenClient<$Result.GetResult<Prisma.$PasswordResetTokenPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first PasswordResetToken that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {PasswordResetTokenFindFirstArgs} args - Arguments to find a PasswordResetToken
     * @example
     * // Get one PasswordResetToken
     * const passwordResetToken = await prisma.passwordResetToken.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends PasswordResetTokenFindFirstArgs>(args?: SelectSubset<T, PasswordResetTokenFindFirstArgs<ExtArgs>>): Prisma__PasswordResetTokenClient<$Result.GetResult<Prisma.$PasswordResetTokenPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first PasswordResetToken that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {PasswordResetTokenFindFirstOrThrowArgs} args - Arguments to find a PasswordResetToken
     * @example
     * // Get one PasswordResetToken
     * const passwordResetToken = await prisma.passwordResetToken.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends PasswordResetTokenFindFirstOrThrowArgs>(args?: SelectSubset<T, PasswordResetTokenFindFirstOrThrowArgs<ExtArgs>>): Prisma__PasswordResetTokenClient<$Result.GetResult<Prisma.$PasswordResetTokenPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more PasswordResetTokens that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {PasswordResetTokenFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all PasswordResetTokens
     * const passwordResetTokens = await prisma.passwordResetToken.findMany()
     * 
     * // Get first 10 PasswordResetTokens
     * const passwordResetTokens = await prisma.passwordResetToken.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const passwordResetTokenWithIdOnly = await prisma.passwordResetToken.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends PasswordResetTokenFindManyArgs>(args?: SelectSubset<T, PasswordResetTokenFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$PasswordResetTokenPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a PasswordResetToken.
     * @param {PasswordResetTokenCreateArgs} args - Arguments to create a PasswordResetToken.
     * @example
     * // Create one PasswordResetToken
     * const PasswordResetToken = await prisma.passwordResetToken.create({
     *   data: {
     *     // ... data to create a PasswordResetToken
     *   }
     * })
     * 
     */
    create<T extends PasswordResetTokenCreateArgs>(args: SelectSubset<T, PasswordResetTokenCreateArgs<ExtArgs>>): Prisma__PasswordResetTokenClient<$Result.GetResult<Prisma.$PasswordResetTokenPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many PasswordResetTokens.
     * @param {PasswordResetTokenCreateManyArgs} args - Arguments to create many PasswordResetTokens.
     * @example
     * // Create many PasswordResetTokens
     * const passwordResetToken = await prisma.passwordResetToken.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends PasswordResetTokenCreateManyArgs>(args?: SelectSubset<T, PasswordResetTokenCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a PasswordResetToken.
     * @param {PasswordResetTokenDeleteArgs} args - Arguments to delete one PasswordResetToken.
     * @example
     * // Delete one PasswordResetToken
     * const PasswordResetToken = await prisma.passwordResetToken.delete({
     *   where: {
     *     // ... filter to delete one PasswordResetToken
     *   }
     * })
     * 
     */
    delete<T extends PasswordResetTokenDeleteArgs>(args: SelectSubset<T, PasswordResetTokenDeleteArgs<ExtArgs>>): Prisma__PasswordResetTokenClient<$Result.GetResult<Prisma.$PasswordResetTokenPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one PasswordResetToken.
     * @param {PasswordResetTokenUpdateArgs} args - Arguments to update one PasswordResetToken.
     * @example
     * // Update one PasswordResetToken
     * const passwordResetToken = await prisma.passwordResetToken.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends PasswordResetTokenUpdateArgs>(args: SelectSubset<T, PasswordResetTokenUpdateArgs<ExtArgs>>): Prisma__PasswordResetTokenClient<$Result.GetResult<Prisma.$PasswordResetTokenPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more PasswordResetTokens.
     * @param {PasswordResetTokenDeleteManyArgs} args - Arguments to filter PasswordResetTokens to delete.
     * @example
     * // Delete a few PasswordResetTokens
     * const { count } = await prisma.passwordResetToken.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends PasswordResetTokenDeleteManyArgs>(args?: SelectSubset<T, PasswordResetTokenDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more PasswordResetTokens.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {PasswordResetTokenUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many PasswordResetTokens
     * const passwordResetToken = await prisma.passwordResetToken.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends PasswordResetTokenUpdateManyArgs>(args: SelectSubset<T, PasswordResetTokenUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one PasswordResetToken.
     * @param {PasswordResetTokenUpsertArgs} args - Arguments to update or create a PasswordResetToken.
     * @example
     * // Update or create a PasswordResetToken
     * const passwordResetToken = await prisma.passwordResetToken.upsert({
     *   create: {
     *     // ... data to create a PasswordResetToken
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the PasswordResetToken we want to update
     *   }
     * })
     */
    upsert<T extends PasswordResetTokenUpsertArgs>(args: SelectSubset<T, PasswordResetTokenUpsertArgs<ExtArgs>>): Prisma__PasswordResetTokenClient<$Result.GetResult<Prisma.$PasswordResetTokenPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of PasswordResetTokens.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {PasswordResetTokenCountArgs} args - Arguments to filter PasswordResetTokens to count.
     * @example
     * // Count the number of PasswordResetTokens
     * const count = await prisma.passwordResetToken.count({
     *   where: {
     *     // ... the filter for the PasswordResetTokens we want to count
     *   }
     * })
    **/
    count<T extends PasswordResetTokenCountArgs>(
      args?: Subset<T, PasswordResetTokenCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], PasswordResetTokenCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a PasswordResetToken.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {PasswordResetTokenAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends PasswordResetTokenAggregateArgs>(args: Subset<T, PasswordResetTokenAggregateArgs>): Prisma.PrismaPromise<GetPasswordResetTokenAggregateType<T>>

    /**
     * Group by PasswordResetToken.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {PasswordResetTokenGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends PasswordResetTokenGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: PasswordResetTokenGroupByArgs['orderBy'] }
        : { orderBy?: PasswordResetTokenGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, PasswordResetTokenGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetPasswordResetTokenGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the PasswordResetToken model
   */
  readonly fields: PasswordResetTokenFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for PasswordResetToken.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__PasswordResetTokenClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    user<T extends UserDefaultArgs<ExtArgs> = {}>(args?: Subset<T, UserDefaultArgs<ExtArgs>>): Prisma__UserClient<$Result.GetResult<Prisma.$UserPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the PasswordResetToken model
   */
  interface PasswordResetTokenFieldRefs {
    readonly id: FieldRef<"PasswordResetToken", 'Int'>
    readonly tokenHash: FieldRef<"PasswordResetToken", 'String'>
    readonly userId: FieldRef<"PasswordResetToken", 'Int'>
    readonly expiresAt: FieldRef<"PasswordResetToken", 'DateTime'>
    readonly isUsed: FieldRef<"PasswordResetToken", 'Boolean'>
    readonly createdAt: FieldRef<"PasswordResetToken", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * PasswordResetToken findUnique
   */
  export type PasswordResetTokenFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the PasswordResetToken
     */
    select?: PasswordResetTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the PasswordResetToken
     */
    omit?: PasswordResetTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: PasswordResetTokenInclude<ExtArgs> | null
    /**
     * Filter, which PasswordResetToken to fetch.
     */
    where: PasswordResetTokenWhereUniqueInput
  }

  /**
   * PasswordResetToken findUniqueOrThrow
   */
  export type PasswordResetTokenFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the PasswordResetToken
     */
    select?: PasswordResetTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the PasswordResetToken
     */
    omit?: PasswordResetTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: PasswordResetTokenInclude<ExtArgs> | null
    /**
     * Filter, which PasswordResetToken to fetch.
     */
    where: PasswordResetTokenWhereUniqueInput
  }

  /**
   * PasswordResetToken findFirst
   */
  export type PasswordResetTokenFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the PasswordResetToken
     */
    select?: PasswordResetTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the PasswordResetToken
     */
    omit?: PasswordResetTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: PasswordResetTokenInclude<ExtArgs> | null
    /**
     * Filter, which PasswordResetToken to fetch.
     */
    where?: PasswordResetTokenWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of PasswordResetTokens to fetch.
     */
    orderBy?: PasswordResetTokenOrderByWithRelationInput | PasswordResetTokenOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for PasswordResetTokens.
     */
    cursor?: PasswordResetTokenWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` PasswordResetTokens from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` PasswordResetTokens.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of PasswordResetTokens.
     */
    distinct?: PasswordResetTokenScalarFieldEnum | PasswordResetTokenScalarFieldEnum[]
  }

  /**
   * PasswordResetToken findFirstOrThrow
   */
  export type PasswordResetTokenFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the PasswordResetToken
     */
    select?: PasswordResetTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the PasswordResetToken
     */
    omit?: PasswordResetTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: PasswordResetTokenInclude<ExtArgs> | null
    /**
     * Filter, which PasswordResetToken to fetch.
     */
    where?: PasswordResetTokenWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of PasswordResetTokens to fetch.
     */
    orderBy?: PasswordResetTokenOrderByWithRelationInput | PasswordResetTokenOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for PasswordResetTokens.
     */
    cursor?: PasswordResetTokenWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` PasswordResetTokens from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` PasswordResetTokens.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of PasswordResetTokens.
     */
    distinct?: PasswordResetTokenScalarFieldEnum | PasswordResetTokenScalarFieldEnum[]
  }

  /**
   * PasswordResetToken findMany
   */
  export type PasswordResetTokenFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the PasswordResetToken
     */
    select?: PasswordResetTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the PasswordResetToken
     */
    omit?: PasswordResetTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: PasswordResetTokenInclude<ExtArgs> | null
    /**
     * Filter, which PasswordResetTokens to fetch.
     */
    where?: PasswordResetTokenWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of PasswordResetTokens to fetch.
     */
    orderBy?: PasswordResetTokenOrderByWithRelationInput | PasswordResetTokenOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing PasswordResetTokens.
     */
    cursor?: PasswordResetTokenWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` PasswordResetTokens from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` PasswordResetTokens.
     */
    skip?: number
    distinct?: PasswordResetTokenScalarFieldEnum | PasswordResetTokenScalarFieldEnum[]
  }

  /**
   * PasswordResetToken create
   */
  export type PasswordResetTokenCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the PasswordResetToken
     */
    select?: PasswordResetTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the PasswordResetToken
     */
    omit?: PasswordResetTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: PasswordResetTokenInclude<ExtArgs> | null
    /**
     * The data needed to create a PasswordResetToken.
     */
    data: XOR<PasswordResetTokenCreateInput, PasswordResetTokenUncheckedCreateInput>
  }

  /**
   * PasswordResetToken createMany
   */
  export type PasswordResetTokenCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many PasswordResetTokens.
     */
    data: PasswordResetTokenCreateManyInput | PasswordResetTokenCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * PasswordResetToken update
   */
  export type PasswordResetTokenUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the PasswordResetToken
     */
    select?: PasswordResetTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the PasswordResetToken
     */
    omit?: PasswordResetTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: PasswordResetTokenInclude<ExtArgs> | null
    /**
     * The data needed to update a PasswordResetToken.
     */
    data: XOR<PasswordResetTokenUpdateInput, PasswordResetTokenUncheckedUpdateInput>
    /**
     * Choose, which PasswordResetToken to update.
     */
    where: PasswordResetTokenWhereUniqueInput
  }

  /**
   * PasswordResetToken updateMany
   */
  export type PasswordResetTokenUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update PasswordResetTokens.
     */
    data: XOR<PasswordResetTokenUpdateManyMutationInput, PasswordResetTokenUncheckedUpdateManyInput>
    /**
     * Filter which PasswordResetTokens to update
     */
    where?: PasswordResetTokenWhereInput
    /**
     * Limit how many PasswordResetTokens to update.
     */
    limit?: number
  }

  /**
   * PasswordResetToken upsert
   */
  export type PasswordResetTokenUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the PasswordResetToken
     */
    select?: PasswordResetTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the PasswordResetToken
     */
    omit?: PasswordResetTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: PasswordResetTokenInclude<ExtArgs> | null
    /**
     * The filter to search for the PasswordResetToken to update in case it exists.
     */
    where: PasswordResetTokenWhereUniqueInput
    /**
     * In case the PasswordResetToken found by the `where` argument doesn't exist, create a new PasswordResetToken with this data.
     */
    create: XOR<PasswordResetTokenCreateInput, PasswordResetTokenUncheckedCreateInput>
    /**
     * In case the PasswordResetToken was found with the provided `where` argument, update it with this data.
     */
    update: XOR<PasswordResetTokenUpdateInput, PasswordResetTokenUncheckedUpdateInput>
  }

  /**
   * PasswordResetToken delete
   */
  export type PasswordResetTokenDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the PasswordResetToken
     */
    select?: PasswordResetTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the PasswordResetToken
     */
    omit?: PasswordResetTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: PasswordResetTokenInclude<ExtArgs> | null
    /**
     * Filter which PasswordResetToken to delete.
     */
    where: PasswordResetTokenWhereUniqueInput
  }

  /**
   * PasswordResetToken deleteMany
   */
  export type PasswordResetTokenDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which PasswordResetTokens to delete
     */
    where?: PasswordResetTokenWhereInput
    /**
     * Limit how many PasswordResetTokens to delete.
     */
    limit?: number
  }

  /**
   * PasswordResetToken without action
   */
  export type PasswordResetTokenDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the PasswordResetToken
     */
    select?: PasswordResetTokenSelect<ExtArgs> | null
    /**
     * Omit specific fields from the PasswordResetToken
     */
    omit?: PasswordResetTokenOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: PasswordResetTokenInclude<ExtArgs> | null
  }


  /**
   * Model UserCompany
   */

  export type AggregateUserCompany = {
    _count: UserCompanyCountAggregateOutputType | null
    _avg: UserCompanyAvgAggregateOutputType | null
    _sum: UserCompanySumAggregateOutputType | null
    _min: UserCompanyMinAggregateOutputType | null
    _max: UserCompanyMaxAggregateOutputType | null
  }

  export type UserCompanyAvgAggregateOutputType = {
    id: number | null
    userId: number | null
    companyId: number | null
  }

  export type UserCompanySumAggregateOutputType = {
    id: number | null
    userId: number | null
    companyId: number | null
  }

  export type UserCompanyMinAggregateOutputType = {
    id: number | null
    uuid: string | null
    userId: number | null
    companyId: number | null
    createdAt: Date | null
  }

  export type UserCompanyMaxAggregateOutputType = {
    id: number | null
    uuid: string | null
    userId: number | null
    companyId: number | null
    createdAt: Date | null
  }

  export type UserCompanyCountAggregateOutputType = {
    id: number
    uuid: number
    userId: number
    companyId: number
    createdAt: number
    _all: number
  }


  export type UserCompanyAvgAggregateInputType = {
    id?: true
    userId?: true
    companyId?: true
  }

  export type UserCompanySumAggregateInputType = {
    id?: true
    userId?: true
    companyId?: true
  }

  export type UserCompanyMinAggregateInputType = {
    id?: true
    uuid?: true
    userId?: true
    companyId?: true
    createdAt?: true
  }

  export type UserCompanyMaxAggregateInputType = {
    id?: true
    uuid?: true
    userId?: true
    companyId?: true
    createdAt?: true
  }

  export type UserCompanyCountAggregateInputType = {
    id?: true
    uuid?: true
    userId?: true
    companyId?: true
    createdAt?: true
    _all?: true
  }

  export type UserCompanyAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which UserCompany to aggregate.
     */
    where?: UserCompanyWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of UserCompanies to fetch.
     */
    orderBy?: UserCompanyOrderByWithRelationInput | UserCompanyOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: UserCompanyWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` UserCompanies from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` UserCompanies.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned UserCompanies
    **/
    _count?: true | UserCompanyCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: UserCompanyAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: UserCompanySumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: UserCompanyMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: UserCompanyMaxAggregateInputType
  }

  export type GetUserCompanyAggregateType<T extends UserCompanyAggregateArgs> = {
        [P in keyof T & keyof AggregateUserCompany]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateUserCompany[P]>
      : GetScalarType<T[P], AggregateUserCompany[P]>
  }




  export type UserCompanyGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: UserCompanyWhereInput
    orderBy?: UserCompanyOrderByWithAggregationInput | UserCompanyOrderByWithAggregationInput[]
    by: UserCompanyScalarFieldEnum[] | UserCompanyScalarFieldEnum
    having?: UserCompanyScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: UserCompanyCountAggregateInputType | true
    _avg?: UserCompanyAvgAggregateInputType
    _sum?: UserCompanySumAggregateInputType
    _min?: UserCompanyMinAggregateInputType
    _max?: UserCompanyMaxAggregateInputType
  }

  export type UserCompanyGroupByOutputType = {
    id: number
    uuid: string
    userId: number
    companyId: number
    createdAt: Date
    _count: UserCompanyCountAggregateOutputType | null
    _avg: UserCompanyAvgAggregateOutputType | null
    _sum: UserCompanySumAggregateOutputType | null
    _min: UserCompanyMinAggregateOutputType | null
    _max: UserCompanyMaxAggregateOutputType | null
  }

  type GetUserCompanyGroupByPayload<T extends UserCompanyGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<UserCompanyGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof UserCompanyGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], UserCompanyGroupByOutputType[P]>
            : GetScalarType<T[P], UserCompanyGroupByOutputType[P]>
        }
      >
    >


  export type UserCompanySelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    uuid?: boolean
    userId?: boolean
    companyId?: boolean
    createdAt?: boolean
    user?: boolean | UserDefaultArgs<ExtArgs>
    company?: boolean | CompanyDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["userCompany"]>



  export type UserCompanySelectScalar = {
    id?: boolean
    uuid?: boolean
    userId?: boolean
    companyId?: boolean
    createdAt?: boolean
  }

  export type UserCompanyOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "uuid" | "userId" | "companyId" | "createdAt", ExtArgs["result"]["userCompany"]>
  export type UserCompanyInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    user?: boolean | UserDefaultArgs<ExtArgs>
    company?: boolean | CompanyDefaultArgs<ExtArgs>
  }

  export type $UserCompanyPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "UserCompany"
    objects: {
      user: Prisma.$UserPayload<ExtArgs>
      company: Prisma.$CompanyPayload<ExtArgs>
    }
    scalars: $Extensions.GetPayloadResult<{
      id: number
      uuid: string
      userId: number
      companyId: number
      createdAt: Date
    }, ExtArgs["result"]["userCompany"]>
    composites: {}
  }

  type UserCompanyGetPayload<S extends boolean | null | undefined | UserCompanyDefaultArgs> = $Result.GetResult<Prisma.$UserCompanyPayload, S>

  type UserCompanyCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<UserCompanyFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: UserCompanyCountAggregateInputType | true
    }

  export interface UserCompanyDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['UserCompany'], meta: { name: 'UserCompany' } }
    /**
     * Find zero or one UserCompany that matches the filter.
     * @param {UserCompanyFindUniqueArgs} args - Arguments to find a UserCompany
     * @example
     * // Get one UserCompany
     * const userCompany = await prisma.userCompany.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends UserCompanyFindUniqueArgs>(args: SelectSubset<T, UserCompanyFindUniqueArgs<ExtArgs>>): Prisma__UserCompanyClient<$Result.GetResult<Prisma.$UserCompanyPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one UserCompany that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {UserCompanyFindUniqueOrThrowArgs} args - Arguments to find a UserCompany
     * @example
     * // Get one UserCompany
     * const userCompany = await prisma.userCompany.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends UserCompanyFindUniqueOrThrowArgs>(args: SelectSubset<T, UserCompanyFindUniqueOrThrowArgs<ExtArgs>>): Prisma__UserCompanyClient<$Result.GetResult<Prisma.$UserCompanyPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first UserCompany that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {UserCompanyFindFirstArgs} args - Arguments to find a UserCompany
     * @example
     * // Get one UserCompany
     * const userCompany = await prisma.userCompany.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends UserCompanyFindFirstArgs>(args?: SelectSubset<T, UserCompanyFindFirstArgs<ExtArgs>>): Prisma__UserCompanyClient<$Result.GetResult<Prisma.$UserCompanyPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first UserCompany that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {UserCompanyFindFirstOrThrowArgs} args - Arguments to find a UserCompany
     * @example
     * // Get one UserCompany
     * const userCompany = await prisma.userCompany.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends UserCompanyFindFirstOrThrowArgs>(args?: SelectSubset<T, UserCompanyFindFirstOrThrowArgs<ExtArgs>>): Prisma__UserCompanyClient<$Result.GetResult<Prisma.$UserCompanyPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more UserCompanies that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {UserCompanyFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all UserCompanies
     * const userCompanies = await prisma.userCompany.findMany()
     * 
     * // Get first 10 UserCompanies
     * const userCompanies = await prisma.userCompany.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const userCompanyWithIdOnly = await prisma.userCompany.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends UserCompanyFindManyArgs>(args?: SelectSubset<T, UserCompanyFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$UserCompanyPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a UserCompany.
     * @param {UserCompanyCreateArgs} args - Arguments to create a UserCompany.
     * @example
     * // Create one UserCompany
     * const UserCompany = await prisma.userCompany.create({
     *   data: {
     *     // ... data to create a UserCompany
     *   }
     * })
     * 
     */
    create<T extends UserCompanyCreateArgs>(args: SelectSubset<T, UserCompanyCreateArgs<ExtArgs>>): Prisma__UserCompanyClient<$Result.GetResult<Prisma.$UserCompanyPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many UserCompanies.
     * @param {UserCompanyCreateManyArgs} args - Arguments to create many UserCompanies.
     * @example
     * // Create many UserCompanies
     * const userCompany = await prisma.userCompany.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends UserCompanyCreateManyArgs>(args?: SelectSubset<T, UserCompanyCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a UserCompany.
     * @param {UserCompanyDeleteArgs} args - Arguments to delete one UserCompany.
     * @example
     * // Delete one UserCompany
     * const UserCompany = await prisma.userCompany.delete({
     *   where: {
     *     // ... filter to delete one UserCompany
     *   }
     * })
     * 
     */
    delete<T extends UserCompanyDeleteArgs>(args: SelectSubset<T, UserCompanyDeleteArgs<ExtArgs>>): Prisma__UserCompanyClient<$Result.GetResult<Prisma.$UserCompanyPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one UserCompany.
     * @param {UserCompanyUpdateArgs} args - Arguments to update one UserCompany.
     * @example
     * // Update one UserCompany
     * const userCompany = await prisma.userCompany.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends UserCompanyUpdateArgs>(args: SelectSubset<T, UserCompanyUpdateArgs<ExtArgs>>): Prisma__UserCompanyClient<$Result.GetResult<Prisma.$UserCompanyPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more UserCompanies.
     * @param {UserCompanyDeleteManyArgs} args - Arguments to filter UserCompanies to delete.
     * @example
     * // Delete a few UserCompanies
     * const { count } = await prisma.userCompany.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends UserCompanyDeleteManyArgs>(args?: SelectSubset<T, UserCompanyDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more UserCompanies.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {UserCompanyUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many UserCompanies
     * const userCompany = await prisma.userCompany.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends UserCompanyUpdateManyArgs>(args: SelectSubset<T, UserCompanyUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one UserCompany.
     * @param {UserCompanyUpsertArgs} args - Arguments to update or create a UserCompany.
     * @example
     * // Update or create a UserCompany
     * const userCompany = await prisma.userCompany.upsert({
     *   create: {
     *     // ... data to create a UserCompany
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the UserCompany we want to update
     *   }
     * })
     */
    upsert<T extends UserCompanyUpsertArgs>(args: SelectSubset<T, UserCompanyUpsertArgs<ExtArgs>>): Prisma__UserCompanyClient<$Result.GetResult<Prisma.$UserCompanyPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of UserCompanies.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {UserCompanyCountArgs} args - Arguments to filter UserCompanies to count.
     * @example
     * // Count the number of UserCompanies
     * const count = await prisma.userCompany.count({
     *   where: {
     *     // ... the filter for the UserCompanies we want to count
     *   }
     * })
    **/
    count<T extends UserCompanyCountArgs>(
      args?: Subset<T, UserCompanyCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], UserCompanyCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a UserCompany.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {UserCompanyAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends UserCompanyAggregateArgs>(args: Subset<T, UserCompanyAggregateArgs>): Prisma.PrismaPromise<GetUserCompanyAggregateType<T>>

    /**
     * Group by UserCompany.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {UserCompanyGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends UserCompanyGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: UserCompanyGroupByArgs['orderBy'] }
        : { orderBy?: UserCompanyGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, UserCompanyGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetUserCompanyGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the UserCompany model
   */
  readonly fields: UserCompanyFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for UserCompany.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__UserCompanyClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    user<T extends UserDefaultArgs<ExtArgs> = {}>(args?: Subset<T, UserDefaultArgs<ExtArgs>>): Prisma__UserClient<$Result.GetResult<Prisma.$UserPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    company<T extends CompanyDefaultArgs<ExtArgs> = {}>(args?: Subset<T, CompanyDefaultArgs<ExtArgs>>): Prisma__CompanyClient<$Result.GetResult<Prisma.$CompanyPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the UserCompany model
   */
  interface UserCompanyFieldRefs {
    readonly id: FieldRef<"UserCompany", 'Int'>
    readonly uuid: FieldRef<"UserCompany", 'String'>
    readonly userId: FieldRef<"UserCompany", 'Int'>
    readonly companyId: FieldRef<"UserCompany", 'Int'>
    readonly createdAt: FieldRef<"UserCompany", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * UserCompany findUnique
   */
  export type UserCompanyFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the UserCompany
     */
    select?: UserCompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the UserCompany
     */
    omit?: UserCompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserCompanyInclude<ExtArgs> | null
    /**
     * Filter, which UserCompany to fetch.
     */
    where: UserCompanyWhereUniqueInput
  }

  /**
   * UserCompany findUniqueOrThrow
   */
  export type UserCompanyFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the UserCompany
     */
    select?: UserCompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the UserCompany
     */
    omit?: UserCompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserCompanyInclude<ExtArgs> | null
    /**
     * Filter, which UserCompany to fetch.
     */
    where: UserCompanyWhereUniqueInput
  }

  /**
   * UserCompany findFirst
   */
  export type UserCompanyFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the UserCompany
     */
    select?: UserCompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the UserCompany
     */
    omit?: UserCompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserCompanyInclude<ExtArgs> | null
    /**
     * Filter, which UserCompany to fetch.
     */
    where?: UserCompanyWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of UserCompanies to fetch.
     */
    orderBy?: UserCompanyOrderByWithRelationInput | UserCompanyOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for UserCompanies.
     */
    cursor?: UserCompanyWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` UserCompanies from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` UserCompanies.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of UserCompanies.
     */
    distinct?: UserCompanyScalarFieldEnum | UserCompanyScalarFieldEnum[]
  }

  /**
   * UserCompany findFirstOrThrow
   */
  export type UserCompanyFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the UserCompany
     */
    select?: UserCompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the UserCompany
     */
    omit?: UserCompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserCompanyInclude<ExtArgs> | null
    /**
     * Filter, which UserCompany to fetch.
     */
    where?: UserCompanyWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of UserCompanies to fetch.
     */
    orderBy?: UserCompanyOrderByWithRelationInput | UserCompanyOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for UserCompanies.
     */
    cursor?: UserCompanyWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` UserCompanies from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` UserCompanies.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of UserCompanies.
     */
    distinct?: UserCompanyScalarFieldEnum | UserCompanyScalarFieldEnum[]
  }

  /**
   * UserCompany findMany
   */
  export type UserCompanyFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the UserCompany
     */
    select?: UserCompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the UserCompany
     */
    omit?: UserCompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserCompanyInclude<ExtArgs> | null
    /**
     * Filter, which UserCompanies to fetch.
     */
    where?: UserCompanyWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of UserCompanies to fetch.
     */
    orderBy?: UserCompanyOrderByWithRelationInput | UserCompanyOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing UserCompanies.
     */
    cursor?: UserCompanyWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` UserCompanies from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` UserCompanies.
     */
    skip?: number
    distinct?: UserCompanyScalarFieldEnum | UserCompanyScalarFieldEnum[]
  }

  /**
   * UserCompany create
   */
  export type UserCompanyCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the UserCompany
     */
    select?: UserCompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the UserCompany
     */
    omit?: UserCompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserCompanyInclude<ExtArgs> | null
    /**
     * The data needed to create a UserCompany.
     */
    data: XOR<UserCompanyCreateInput, UserCompanyUncheckedCreateInput>
  }

  /**
   * UserCompany createMany
   */
  export type UserCompanyCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many UserCompanies.
     */
    data: UserCompanyCreateManyInput | UserCompanyCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * UserCompany update
   */
  export type UserCompanyUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the UserCompany
     */
    select?: UserCompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the UserCompany
     */
    omit?: UserCompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserCompanyInclude<ExtArgs> | null
    /**
     * The data needed to update a UserCompany.
     */
    data: XOR<UserCompanyUpdateInput, UserCompanyUncheckedUpdateInput>
    /**
     * Choose, which UserCompany to update.
     */
    where: UserCompanyWhereUniqueInput
  }

  /**
   * UserCompany updateMany
   */
  export type UserCompanyUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update UserCompanies.
     */
    data: XOR<UserCompanyUpdateManyMutationInput, UserCompanyUncheckedUpdateManyInput>
    /**
     * Filter which UserCompanies to update
     */
    where?: UserCompanyWhereInput
    /**
     * Limit how many UserCompanies to update.
     */
    limit?: number
  }

  /**
   * UserCompany upsert
   */
  export type UserCompanyUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the UserCompany
     */
    select?: UserCompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the UserCompany
     */
    omit?: UserCompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserCompanyInclude<ExtArgs> | null
    /**
     * The filter to search for the UserCompany to update in case it exists.
     */
    where: UserCompanyWhereUniqueInput
    /**
     * In case the UserCompany found by the `where` argument doesn't exist, create a new UserCompany with this data.
     */
    create: XOR<UserCompanyCreateInput, UserCompanyUncheckedCreateInput>
    /**
     * In case the UserCompany was found with the provided `where` argument, update it with this data.
     */
    update: XOR<UserCompanyUpdateInput, UserCompanyUncheckedUpdateInput>
  }

  /**
   * UserCompany delete
   */
  export type UserCompanyDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the UserCompany
     */
    select?: UserCompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the UserCompany
     */
    omit?: UserCompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserCompanyInclude<ExtArgs> | null
    /**
     * Filter which UserCompany to delete.
     */
    where: UserCompanyWhereUniqueInput
  }

  /**
   * UserCompany deleteMany
   */
  export type UserCompanyDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which UserCompanies to delete
     */
    where?: UserCompanyWhereInput
    /**
     * Limit how many UserCompanies to delete.
     */
    limit?: number
  }

  /**
   * UserCompany without action
   */
  export type UserCompanyDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the UserCompany
     */
    select?: UserCompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the UserCompany
     */
    omit?: UserCompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: UserCompanyInclude<ExtArgs> | null
  }


  /**
   * Model BillPayment
   */

  export type AggregateBillPayment = {
    _count: BillPaymentCountAggregateOutputType | null
    _avg: BillPaymentAvgAggregateOutputType | null
    _sum: BillPaymentSumAggregateOutputType | null
    _min: BillPaymentMinAggregateOutputType | null
    _max: BillPaymentMaxAggregateOutputType | null
  }

  export type BillPaymentAvgAggregateOutputType = {
    id: number | null
    billingAccountId: number | null
    amount: number | null
    paidUserId: number | null
    savedCardId: number | null
  }

  export type BillPaymentSumAggregateOutputType = {
    id: number | null
    billingAccountId: number | null
    amount: number | null
    paidUserId: number | null
    savedCardId: number | null
  }

  export type BillPaymentMinAggregateOutputType = {
    id: number | null
    uuid: string | null
    billingAccountId: number | null
    amount: number | null
    paymentMethod: string | null
    status: string | null
    orderId: string | null
    orderReference: string | null
    errorCode: string | null
    failureReason: string | null
    paidUserId: number | null
    savedCardId: number | null
    createdAt: Date | null
  }

  export type BillPaymentMaxAggregateOutputType = {
    id: number | null
    uuid: string | null
    billingAccountId: number | null
    amount: number | null
    paymentMethod: string | null
    status: string | null
    orderId: string | null
    orderReference: string | null
    errorCode: string | null
    failureReason: string | null
    paidUserId: number | null
    savedCardId: number | null
    createdAt: Date | null
  }

  export type BillPaymentCountAggregateOutputType = {
    id: number
    uuid: number
    billingAccountId: number
    amount: number
    paymentMethod: number
    status: number
    orderId: number
    orderReference: number
    errorCode: number
    failureReason: number
    paidUserId: number
    savedCardId: number
    createdAt: number
    _all: number
  }


  export type BillPaymentAvgAggregateInputType = {
    id?: true
    billingAccountId?: true
    amount?: true
    paidUserId?: true
    savedCardId?: true
  }

  export type BillPaymentSumAggregateInputType = {
    id?: true
    billingAccountId?: true
    amount?: true
    paidUserId?: true
    savedCardId?: true
  }

  export type BillPaymentMinAggregateInputType = {
    id?: true
    uuid?: true
    billingAccountId?: true
    amount?: true
    paymentMethod?: true
    status?: true
    orderId?: true
    orderReference?: true
    errorCode?: true
    failureReason?: true
    paidUserId?: true
    savedCardId?: true
    createdAt?: true
  }

  export type BillPaymentMaxAggregateInputType = {
    id?: true
    uuid?: true
    billingAccountId?: true
    amount?: true
    paymentMethod?: true
    status?: true
    orderId?: true
    orderReference?: true
    errorCode?: true
    failureReason?: true
    paidUserId?: true
    savedCardId?: true
    createdAt?: true
  }

  export type BillPaymentCountAggregateInputType = {
    id?: true
    uuid?: true
    billingAccountId?: true
    amount?: true
    paymentMethod?: true
    status?: true
    orderId?: true
    orderReference?: true
    errorCode?: true
    failureReason?: true
    paidUserId?: true
    savedCardId?: true
    createdAt?: true
    _all?: true
  }

  export type BillPaymentAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which BillPayment to aggregate.
     */
    where?: BillPaymentWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of BillPayments to fetch.
     */
    orderBy?: BillPaymentOrderByWithRelationInput | BillPaymentOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: BillPaymentWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` BillPayments from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` BillPayments.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned BillPayments
    **/
    _count?: true | BillPaymentCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: BillPaymentAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: BillPaymentSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: BillPaymentMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: BillPaymentMaxAggregateInputType
  }

  export type GetBillPaymentAggregateType<T extends BillPaymentAggregateArgs> = {
        [P in keyof T & keyof AggregateBillPayment]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateBillPayment[P]>
      : GetScalarType<T[P], AggregateBillPayment[P]>
  }




  export type BillPaymentGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: BillPaymentWhereInput
    orderBy?: BillPaymentOrderByWithAggregationInput | BillPaymentOrderByWithAggregationInput[]
    by: BillPaymentScalarFieldEnum[] | BillPaymentScalarFieldEnum
    having?: BillPaymentScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: BillPaymentCountAggregateInputType | true
    _avg?: BillPaymentAvgAggregateInputType
    _sum?: BillPaymentSumAggregateInputType
    _min?: BillPaymentMinAggregateInputType
    _max?: BillPaymentMaxAggregateInputType
  }

  export type BillPaymentGroupByOutputType = {
    id: number
    uuid: string
    billingAccountId: number
    amount: number
    paymentMethod: string
    status: string
    orderId: string
    orderReference: string | null
    errorCode: string | null
    failureReason: string | null
    paidUserId: number
    savedCardId: number | null
    createdAt: Date
    _count: BillPaymentCountAggregateOutputType | null
    _avg: BillPaymentAvgAggregateOutputType | null
    _sum: BillPaymentSumAggregateOutputType | null
    _min: BillPaymentMinAggregateOutputType | null
    _max: BillPaymentMaxAggregateOutputType | null
  }

  type GetBillPaymentGroupByPayload<T extends BillPaymentGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<BillPaymentGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof BillPaymentGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], BillPaymentGroupByOutputType[P]>
            : GetScalarType<T[P], BillPaymentGroupByOutputType[P]>
        }
      >
    >


  export type BillPaymentSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    uuid?: boolean
    billingAccountId?: boolean
    amount?: boolean
    paymentMethod?: boolean
    status?: boolean
    orderId?: boolean
    orderReference?: boolean
    errorCode?: boolean
    failureReason?: boolean
    paidUserId?: boolean
    savedCardId?: boolean
    createdAt?: boolean
    billAccount?: boolean | BillAccountDefaultArgs<ExtArgs>
    savedCard?: boolean | BillPayment$savedCardArgs<ExtArgs>
  }, ExtArgs["result"]["billPayment"]>



  export type BillPaymentSelectScalar = {
    id?: boolean
    uuid?: boolean
    billingAccountId?: boolean
    amount?: boolean
    paymentMethod?: boolean
    status?: boolean
    orderId?: boolean
    orderReference?: boolean
    errorCode?: boolean
    failureReason?: boolean
    paidUserId?: boolean
    savedCardId?: boolean
    createdAt?: boolean
  }

  export type BillPaymentOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "uuid" | "billingAccountId" | "amount" | "paymentMethod" | "status" | "orderId" | "orderReference" | "errorCode" | "failureReason" | "paidUserId" | "savedCardId" | "createdAt", ExtArgs["result"]["billPayment"]>
  export type BillPaymentInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    billAccount?: boolean | BillAccountDefaultArgs<ExtArgs>
    savedCard?: boolean | BillPayment$savedCardArgs<ExtArgs>
  }

  export type $BillPaymentPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "BillPayment"
    objects: {
      billAccount: Prisma.$BillAccountPayload<ExtArgs>
      savedCard: Prisma.$SavedCardPayload<ExtArgs> | null
    }
    scalars: $Extensions.GetPayloadResult<{
      id: number
      uuid: string
      billingAccountId: number
      amount: number
      paymentMethod: string
      status: string
      orderId: string
      orderReference: string | null
      errorCode: string | null
      failureReason: string | null
      paidUserId: number
      savedCardId: number | null
      createdAt: Date
    }, ExtArgs["result"]["billPayment"]>
    composites: {}
  }

  type BillPaymentGetPayload<S extends boolean | null | undefined | BillPaymentDefaultArgs> = $Result.GetResult<Prisma.$BillPaymentPayload, S>

  type BillPaymentCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<BillPaymentFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: BillPaymentCountAggregateInputType | true
    }

  export interface BillPaymentDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['BillPayment'], meta: { name: 'BillPayment' } }
    /**
     * Find zero or one BillPayment that matches the filter.
     * @param {BillPaymentFindUniqueArgs} args - Arguments to find a BillPayment
     * @example
     * // Get one BillPayment
     * const billPayment = await prisma.billPayment.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends BillPaymentFindUniqueArgs>(args: SelectSubset<T, BillPaymentFindUniqueArgs<ExtArgs>>): Prisma__BillPaymentClient<$Result.GetResult<Prisma.$BillPaymentPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one BillPayment that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {BillPaymentFindUniqueOrThrowArgs} args - Arguments to find a BillPayment
     * @example
     * // Get one BillPayment
     * const billPayment = await prisma.billPayment.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends BillPaymentFindUniqueOrThrowArgs>(args: SelectSubset<T, BillPaymentFindUniqueOrThrowArgs<ExtArgs>>): Prisma__BillPaymentClient<$Result.GetResult<Prisma.$BillPaymentPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first BillPayment that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BillPaymentFindFirstArgs} args - Arguments to find a BillPayment
     * @example
     * // Get one BillPayment
     * const billPayment = await prisma.billPayment.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends BillPaymentFindFirstArgs>(args?: SelectSubset<T, BillPaymentFindFirstArgs<ExtArgs>>): Prisma__BillPaymentClient<$Result.GetResult<Prisma.$BillPaymentPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first BillPayment that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BillPaymentFindFirstOrThrowArgs} args - Arguments to find a BillPayment
     * @example
     * // Get one BillPayment
     * const billPayment = await prisma.billPayment.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends BillPaymentFindFirstOrThrowArgs>(args?: SelectSubset<T, BillPaymentFindFirstOrThrowArgs<ExtArgs>>): Prisma__BillPaymentClient<$Result.GetResult<Prisma.$BillPaymentPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more BillPayments that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BillPaymentFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all BillPayments
     * const billPayments = await prisma.billPayment.findMany()
     * 
     * // Get first 10 BillPayments
     * const billPayments = await prisma.billPayment.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const billPaymentWithIdOnly = await prisma.billPayment.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends BillPaymentFindManyArgs>(args?: SelectSubset<T, BillPaymentFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$BillPaymentPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a BillPayment.
     * @param {BillPaymentCreateArgs} args - Arguments to create a BillPayment.
     * @example
     * // Create one BillPayment
     * const BillPayment = await prisma.billPayment.create({
     *   data: {
     *     // ... data to create a BillPayment
     *   }
     * })
     * 
     */
    create<T extends BillPaymentCreateArgs>(args: SelectSubset<T, BillPaymentCreateArgs<ExtArgs>>): Prisma__BillPaymentClient<$Result.GetResult<Prisma.$BillPaymentPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many BillPayments.
     * @param {BillPaymentCreateManyArgs} args - Arguments to create many BillPayments.
     * @example
     * // Create many BillPayments
     * const billPayment = await prisma.billPayment.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends BillPaymentCreateManyArgs>(args?: SelectSubset<T, BillPaymentCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a BillPayment.
     * @param {BillPaymentDeleteArgs} args - Arguments to delete one BillPayment.
     * @example
     * // Delete one BillPayment
     * const BillPayment = await prisma.billPayment.delete({
     *   where: {
     *     // ... filter to delete one BillPayment
     *   }
     * })
     * 
     */
    delete<T extends BillPaymentDeleteArgs>(args: SelectSubset<T, BillPaymentDeleteArgs<ExtArgs>>): Prisma__BillPaymentClient<$Result.GetResult<Prisma.$BillPaymentPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one BillPayment.
     * @param {BillPaymentUpdateArgs} args - Arguments to update one BillPayment.
     * @example
     * // Update one BillPayment
     * const billPayment = await prisma.billPayment.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends BillPaymentUpdateArgs>(args: SelectSubset<T, BillPaymentUpdateArgs<ExtArgs>>): Prisma__BillPaymentClient<$Result.GetResult<Prisma.$BillPaymentPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more BillPayments.
     * @param {BillPaymentDeleteManyArgs} args - Arguments to filter BillPayments to delete.
     * @example
     * // Delete a few BillPayments
     * const { count } = await prisma.billPayment.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends BillPaymentDeleteManyArgs>(args?: SelectSubset<T, BillPaymentDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more BillPayments.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BillPaymentUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many BillPayments
     * const billPayment = await prisma.billPayment.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends BillPaymentUpdateManyArgs>(args: SelectSubset<T, BillPaymentUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one BillPayment.
     * @param {BillPaymentUpsertArgs} args - Arguments to update or create a BillPayment.
     * @example
     * // Update or create a BillPayment
     * const billPayment = await prisma.billPayment.upsert({
     *   create: {
     *     // ... data to create a BillPayment
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the BillPayment we want to update
     *   }
     * })
     */
    upsert<T extends BillPaymentUpsertArgs>(args: SelectSubset<T, BillPaymentUpsertArgs<ExtArgs>>): Prisma__BillPaymentClient<$Result.GetResult<Prisma.$BillPaymentPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of BillPayments.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BillPaymentCountArgs} args - Arguments to filter BillPayments to count.
     * @example
     * // Count the number of BillPayments
     * const count = await prisma.billPayment.count({
     *   where: {
     *     // ... the filter for the BillPayments we want to count
     *   }
     * })
    **/
    count<T extends BillPaymentCountArgs>(
      args?: Subset<T, BillPaymentCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], BillPaymentCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a BillPayment.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BillPaymentAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends BillPaymentAggregateArgs>(args: Subset<T, BillPaymentAggregateArgs>): Prisma.PrismaPromise<GetBillPaymentAggregateType<T>>

    /**
     * Group by BillPayment.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BillPaymentGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends BillPaymentGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: BillPaymentGroupByArgs['orderBy'] }
        : { orderBy?: BillPaymentGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, BillPaymentGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetBillPaymentGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the BillPayment model
   */
  readonly fields: BillPaymentFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for BillPayment.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__BillPaymentClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    billAccount<T extends BillAccountDefaultArgs<ExtArgs> = {}>(args?: Subset<T, BillAccountDefaultArgs<ExtArgs>>): Prisma__BillAccountClient<$Result.GetResult<Prisma.$BillAccountPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    savedCard<T extends BillPayment$savedCardArgs<ExtArgs> = {}>(args?: Subset<T, BillPayment$savedCardArgs<ExtArgs>>): Prisma__SavedCardClient<$Result.GetResult<Prisma.$SavedCardPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the BillPayment model
   */
  interface BillPaymentFieldRefs {
    readonly id: FieldRef<"BillPayment", 'Int'>
    readonly uuid: FieldRef<"BillPayment", 'String'>
    readonly billingAccountId: FieldRef<"BillPayment", 'Int'>
    readonly amount: FieldRef<"BillPayment", 'Float'>
    readonly paymentMethod: FieldRef<"BillPayment", 'String'>
    readonly status: FieldRef<"BillPayment", 'String'>
    readonly orderId: FieldRef<"BillPayment", 'String'>
    readonly orderReference: FieldRef<"BillPayment", 'String'>
    readonly errorCode: FieldRef<"BillPayment", 'String'>
    readonly failureReason: FieldRef<"BillPayment", 'String'>
    readonly paidUserId: FieldRef<"BillPayment", 'Int'>
    readonly savedCardId: FieldRef<"BillPayment", 'Int'>
    readonly createdAt: FieldRef<"BillPayment", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * BillPayment findUnique
   */
  export type BillPaymentFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillPayment
     */
    select?: BillPaymentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillPayment
     */
    omit?: BillPaymentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillPaymentInclude<ExtArgs> | null
    /**
     * Filter, which BillPayment to fetch.
     */
    where: BillPaymentWhereUniqueInput
  }

  /**
   * BillPayment findUniqueOrThrow
   */
  export type BillPaymentFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillPayment
     */
    select?: BillPaymentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillPayment
     */
    omit?: BillPaymentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillPaymentInclude<ExtArgs> | null
    /**
     * Filter, which BillPayment to fetch.
     */
    where: BillPaymentWhereUniqueInput
  }

  /**
   * BillPayment findFirst
   */
  export type BillPaymentFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillPayment
     */
    select?: BillPaymentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillPayment
     */
    omit?: BillPaymentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillPaymentInclude<ExtArgs> | null
    /**
     * Filter, which BillPayment to fetch.
     */
    where?: BillPaymentWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of BillPayments to fetch.
     */
    orderBy?: BillPaymentOrderByWithRelationInput | BillPaymentOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for BillPayments.
     */
    cursor?: BillPaymentWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` BillPayments from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` BillPayments.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of BillPayments.
     */
    distinct?: BillPaymentScalarFieldEnum | BillPaymentScalarFieldEnum[]
  }

  /**
   * BillPayment findFirstOrThrow
   */
  export type BillPaymentFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillPayment
     */
    select?: BillPaymentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillPayment
     */
    omit?: BillPaymentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillPaymentInclude<ExtArgs> | null
    /**
     * Filter, which BillPayment to fetch.
     */
    where?: BillPaymentWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of BillPayments to fetch.
     */
    orderBy?: BillPaymentOrderByWithRelationInput | BillPaymentOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for BillPayments.
     */
    cursor?: BillPaymentWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` BillPayments from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` BillPayments.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of BillPayments.
     */
    distinct?: BillPaymentScalarFieldEnum | BillPaymentScalarFieldEnum[]
  }

  /**
   * BillPayment findMany
   */
  export type BillPaymentFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillPayment
     */
    select?: BillPaymentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillPayment
     */
    omit?: BillPaymentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillPaymentInclude<ExtArgs> | null
    /**
     * Filter, which BillPayments to fetch.
     */
    where?: BillPaymentWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of BillPayments to fetch.
     */
    orderBy?: BillPaymentOrderByWithRelationInput | BillPaymentOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing BillPayments.
     */
    cursor?: BillPaymentWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` BillPayments from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` BillPayments.
     */
    skip?: number
    distinct?: BillPaymentScalarFieldEnum | BillPaymentScalarFieldEnum[]
  }

  /**
   * BillPayment create
   */
  export type BillPaymentCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillPayment
     */
    select?: BillPaymentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillPayment
     */
    omit?: BillPaymentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillPaymentInclude<ExtArgs> | null
    /**
     * The data needed to create a BillPayment.
     */
    data: XOR<BillPaymentCreateInput, BillPaymentUncheckedCreateInput>
  }

  /**
   * BillPayment createMany
   */
  export type BillPaymentCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many BillPayments.
     */
    data: BillPaymentCreateManyInput | BillPaymentCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * BillPayment update
   */
  export type BillPaymentUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillPayment
     */
    select?: BillPaymentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillPayment
     */
    omit?: BillPaymentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillPaymentInclude<ExtArgs> | null
    /**
     * The data needed to update a BillPayment.
     */
    data: XOR<BillPaymentUpdateInput, BillPaymentUncheckedUpdateInput>
    /**
     * Choose, which BillPayment to update.
     */
    where: BillPaymentWhereUniqueInput
  }

  /**
   * BillPayment updateMany
   */
  export type BillPaymentUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update BillPayments.
     */
    data: XOR<BillPaymentUpdateManyMutationInput, BillPaymentUncheckedUpdateManyInput>
    /**
     * Filter which BillPayments to update
     */
    where?: BillPaymentWhereInput
    /**
     * Limit how many BillPayments to update.
     */
    limit?: number
  }

  /**
   * BillPayment upsert
   */
  export type BillPaymentUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillPayment
     */
    select?: BillPaymentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillPayment
     */
    omit?: BillPaymentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillPaymentInclude<ExtArgs> | null
    /**
     * The filter to search for the BillPayment to update in case it exists.
     */
    where: BillPaymentWhereUniqueInput
    /**
     * In case the BillPayment found by the `where` argument doesn't exist, create a new BillPayment with this data.
     */
    create: XOR<BillPaymentCreateInput, BillPaymentUncheckedCreateInput>
    /**
     * In case the BillPayment was found with the provided `where` argument, update it with this data.
     */
    update: XOR<BillPaymentUpdateInput, BillPaymentUncheckedUpdateInput>
  }

  /**
   * BillPayment delete
   */
  export type BillPaymentDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillPayment
     */
    select?: BillPaymentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillPayment
     */
    omit?: BillPaymentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillPaymentInclude<ExtArgs> | null
    /**
     * Filter which BillPayment to delete.
     */
    where: BillPaymentWhereUniqueInput
  }

  /**
   * BillPayment deleteMany
   */
  export type BillPaymentDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which BillPayments to delete
     */
    where?: BillPaymentWhereInput
    /**
     * Limit how many BillPayments to delete.
     */
    limit?: number
  }

  /**
   * BillPayment.savedCard
   */
  export type BillPayment$savedCardArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SavedCard
     */
    select?: SavedCardSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SavedCard
     */
    omit?: SavedCardOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SavedCardInclude<ExtArgs> | null
    where?: SavedCardWhereInput
  }

  /**
   * BillPayment without action
   */
  export type BillPaymentDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillPayment
     */
    select?: BillPaymentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillPayment
     */
    omit?: BillPaymentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillPaymentInclude<ExtArgs> | null
  }


  /**
   * Model BillAccount
   */

  export type AggregateBillAccount = {
    _count: BillAccountCountAggregateOutputType | null
    _avg: BillAccountAvgAggregateOutputType | null
    _sum: BillAccountSumAggregateOutputType | null
    _min: BillAccountMinAggregateOutputType | null
    _max: BillAccountMaxAggregateOutputType | null
  }

  export type BillAccountAvgAggregateOutputType = {
    id: number | null
    outstandingBalance: number | null
    reservedBalance: number | null
    companyId: number | null
  }

  export type BillAccountSumAggregateOutputType = {
    id: number | null
    outstandingBalance: number | null
    reservedBalance: number | null
    companyId: number | null
  }

  export type BillAccountMinAggregateOutputType = {
    id: number | null
    uuid: string | null
    accountNumber: string | null
    accountName: string | null
    outstandingBalance: number | null
    reservedBalance: number | null
    accountStatus: string | null
    createdAt: Date | null
    updatedAt: Date | null
    companyId: number | null
  }

  export type BillAccountMaxAggregateOutputType = {
    id: number | null
    uuid: string | null
    accountNumber: string | null
    accountName: string | null
    outstandingBalance: number | null
    reservedBalance: number | null
    accountStatus: string | null
    createdAt: Date | null
    updatedAt: Date | null
    companyId: number | null
  }

  export type BillAccountCountAggregateOutputType = {
    id: number
    uuid: number
    accountNumber: number
    accountName: number
    outstandingBalance: number
    reservedBalance: number
    accountStatus: number
    createdAt: number
    updatedAt: number
    companyId: number
    _all: number
  }


  export type BillAccountAvgAggregateInputType = {
    id?: true
    outstandingBalance?: true
    reservedBalance?: true
    companyId?: true
  }

  export type BillAccountSumAggregateInputType = {
    id?: true
    outstandingBalance?: true
    reservedBalance?: true
    companyId?: true
  }

  export type BillAccountMinAggregateInputType = {
    id?: true
    uuid?: true
    accountNumber?: true
    accountName?: true
    outstandingBalance?: true
    reservedBalance?: true
    accountStatus?: true
    createdAt?: true
    updatedAt?: true
    companyId?: true
  }

  export type BillAccountMaxAggregateInputType = {
    id?: true
    uuid?: true
    accountNumber?: true
    accountName?: true
    outstandingBalance?: true
    reservedBalance?: true
    accountStatus?: true
    createdAt?: true
    updatedAt?: true
    companyId?: true
  }

  export type BillAccountCountAggregateInputType = {
    id?: true
    uuid?: true
    accountNumber?: true
    accountName?: true
    outstandingBalance?: true
    reservedBalance?: true
    accountStatus?: true
    createdAt?: true
    updatedAt?: true
    companyId?: true
    _all?: true
  }

  export type BillAccountAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which BillAccount to aggregate.
     */
    where?: BillAccountWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of BillAccounts to fetch.
     */
    orderBy?: BillAccountOrderByWithRelationInput | BillAccountOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: BillAccountWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` BillAccounts from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` BillAccounts.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned BillAccounts
    **/
    _count?: true | BillAccountCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: BillAccountAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: BillAccountSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: BillAccountMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: BillAccountMaxAggregateInputType
  }

  export type GetBillAccountAggregateType<T extends BillAccountAggregateArgs> = {
        [P in keyof T & keyof AggregateBillAccount]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateBillAccount[P]>
      : GetScalarType<T[P], AggregateBillAccount[P]>
  }




  export type BillAccountGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: BillAccountWhereInput
    orderBy?: BillAccountOrderByWithAggregationInput | BillAccountOrderByWithAggregationInput[]
    by: BillAccountScalarFieldEnum[] | BillAccountScalarFieldEnum
    having?: BillAccountScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: BillAccountCountAggregateInputType | true
    _avg?: BillAccountAvgAggregateInputType
    _sum?: BillAccountSumAggregateInputType
    _min?: BillAccountMinAggregateInputType
    _max?: BillAccountMaxAggregateInputType
  }

  export type BillAccountGroupByOutputType = {
    id: number
    uuid: string
    accountNumber: string
    accountName: string
    outstandingBalance: number
    reservedBalance: number
    accountStatus: string
    createdAt: Date
    updatedAt: Date
    companyId: number
    _count: BillAccountCountAggregateOutputType | null
    _avg: BillAccountAvgAggregateOutputType | null
    _sum: BillAccountSumAggregateOutputType | null
    _min: BillAccountMinAggregateOutputType | null
    _max: BillAccountMaxAggregateOutputType | null
  }

  type GetBillAccountGroupByPayload<T extends BillAccountGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<BillAccountGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof BillAccountGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], BillAccountGroupByOutputType[P]>
            : GetScalarType<T[P], BillAccountGroupByOutputType[P]>
        }
      >
    >


  export type BillAccountSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    uuid?: boolean
    accountNumber?: boolean
    accountName?: boolean
    outstandingBalance?: boolean
    reservedBalance?: boolean
    accountStatus?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    companyId?: boolean
    company?: boolean | CompanyDefaultArgs<ExtArgs>
    billPayments?: boolean | BillAccount$billPaymentsArgs<ExtArgs>
    campaigns?: boolean | BillAccount$campaignsArgs<ExtArgs>
    lowBalanceAlerts?: boolean | BillAccount$lowBalanceAlertsArgs<ExtArgs>
    _count?: boolean | BillAccountCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["billAccount"]>



  export type BillAccountSelectScalar = {
    id?: boolean
    uuid?: boolean
    accountNumber?: boolean
    accountName?: boolean
    outstandingBalance?: boolean
    reservedBalance?: boolean
    accountStatus?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    companyId?: boolean
  }

  export type BillAccountOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "uuid" | "accountNumber" | "accountName" | "outstandingBalance" | "reservedBalance" | "accountStatus" | "createdAt" | "updatedAt" | "companyId", ExtArgs["result"]["billAccount"]>
  export type BillAccountInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    company?: boolean | CompanyDefaultArgs<ExtArgs>
    billPayments?: boolean | BillAccount$billPaymentsArgs<ExtArgs>
    campaigns?: boolean | BillAccount$campaignsArgs<ExtArgs>
    lowBalanceAlerts?: boolean | BillAccount$lowBalanceAlertsArgs<ExtArgs>
    _count?: boolean | BillAccountCountOutputTypeDefaultArgs<ExtArgs>
  }

  export type $BillAccountPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "BillAccount"
    objects: {
      company: Prisma.$CompanyPayload<ExtArgs>
      billPayments: Prisma.$BillPaymentPayload<ExtArgs>[]
      campaigns: Prisma.$CampaignPayload<ExtArgs>[]
      lowBalanceAlerts: Prisma.$LowBalanceAlertPayload<ExtArgs>[]
    }
    scalars: $Extensions.GetPayloadResult<{
      id: number
      uuid: string
      accountNumber: string
      accountName: string
      outstandingBalance: number
      reservedBalance: number
      accountStatus: string
      createdAt: Date
      updatedAt: Date
      companyId: number
    }, ExtArgs["result"]["billAccount"]>
    composites: {}
  }

  type BillAccountGetPayload<S extends boolean | null | undefined | BillAccountDefaultArgs> = $Result.GetResult<Prisma.$BillAccountPayload, S>

  type BillAccountCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<BillAccountFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: BillAccountCountAggregateInputType | true
    }

  export interface BillAccountDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['BillAccount'], meta: { name: 'BillAccount' } }
    /**
     * Find zero or one BillAccount that matches the filter.
     * @param {BillAccountFindUniqueArgs} args - Arguments to find a BillAccount
     * @example
     * // Get one BillAccount
     * const billAccount = await prisma.billAccount.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends BillAccountFindUniqueArgs>(args: SelectSubset<T, BillAccountFindUniqueArgs<ExtArgs>>): Prisma__BillAccountClient<$Result.GetResult<Prisma.$BillAccountPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one BillAccount that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {BillAccountFindUniqueOrThrowArgs} args - Arguments to find a BillAccount
     * @example
     * // Get one BillAccount
     * const billAccount = await prisma.billAccount.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends BillAccountFindUniqueOrThrowArgs>(args: SelectSubset<T, BillAccountFindUniqueOrThrowArgs<ExtArgs>>): Prisma__BillAccountClient<$Result.GetResult<Prisma.$BillAccountPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first BillAccount that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BillAccountFindFirstArgs} args - Arguments to find a BillAccount
     * @example
     * // Get one BillAccount
     * const billAccount = await prisma.billAccount.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends BillAccountFindFirstArgs>(args?: SelectSubset<T, BillAccountFindFirstArgs<ExtArgs>>): Prisma__BillAccountClient<$Result.GetResult<Prisma.$BillAccountPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first BillAccount that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BillAccountFindFirstOrThrowArgs} args - Arguments to find a BillAccount
     * @example
     * // Get one BillAccount
     * const billAccount = await prisma.billAccount.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends BillAccountFindFirstOrThrowArgs>(args?: SelectSubset<T, BillAccountFindFirstOrThrowArgs<ExtArgs>>): Prisma__BillAccountClient<$Result.GetResult<Prisma.$BillAccountPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more BillAccounts that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BillAccountFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all BillAccounts
     * const billAccounts = await prisma.billAccount.findMany()
     * 
     * // Get first 10 BillAccounts
     * const billAccounts = await prisma.billAccount.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const billAccountWithIdOnly = await prisma.billAccount.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends BillAccountFindManyArgs>(args?: SelectSubset<T, BillAccountFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$BillAccountPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a BillAccount.
     * @param {BillAccountCreateArgs} args - Arguments to create a BillAccount.
     * @example
     * // Create one BillAccount
     * const BillAccount = await prisma.billAccount.create({
     *   data: {
     *     // ... data to create a BillAccount
     *   }
     * })
     * 
     */
    create<T extends BillAccountCreateArgs>(args: SelectSubset<T, BillAccountCreateArgs<ExtArgs>>): Prisma__BillAccountClient<$Result.GetResult<Prisma.$BillAccountPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many BillAccounts.
     * @param {BillAccountCreateManyArgs} args - Arguments to create many BillAccounts.
     * @example
     * // Create many BillAccounts
     * const billAccount = await prisma.billAccount.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends BillAccountCreateManyArgs>(args?: SelectSubset<T, BillAccountCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a BillAccount.
     * @param {BillAccountDeleteArgs} args - Arguments to delete one BillAccount.
     * @example
     * // Delete one BillAccount
     * const BillAccount = await prisma.billAccount.delete({
     *   where: {
     *     // ... filter to delete one BillAccount
     *   }
     * })
     * 
     */
    delete<T extends BillAccountDeleteArgs>(args: SelectSubset<T, BillAccountDeleteArgs<ExtArgs>>): Prisma__BillAccountClient<$Result.GetResult<Prisma.$BillAccountPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one BillAccount.
     * @param {BillAccountUpdateArgs} args - Arguments to update one BillAccount.
     * @example
     * // Update one BillAccount
     * const billAccount = await prisma.billAccount.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends BillAccountUpdateArgs>(args: SelectSubset<T, BillAccountUpdateArgs<ExtArgs>>): Prisma__BillAccountClient<$Result.GetResult<Prisma.$BillAccountPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more BillAccounts.
     * @param {BillAccountDeleteManyArgs} args - Arguments to filter BillAccounts to delete.
     * @example
     * // Delete a few BillAccounts
     * const { count } = await prisma.billAccount.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends BillAccountDeleteManyArgs>(args?: SelectSubset<T, BillAccountDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more BillAccounts.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BillAccountUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many BillAccounts
     * const billAccount = await prisma.billAccount.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends BillAccountUpdateManyArgs>(args: SelectSubset<T, BillAccountUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one BillAccount.
     * @param {BillAccountUpsertArgs} args - Arguments to update or create a BillAccount.
     * @example
     * // Update or create a BillAccount
     * const billAccount = await prisma.billAccount.upsert({
     *   create: {
     *     // ... data to create a BillAccount
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the BillAccount we want to update
     *   }
     * })
     */
    upsert<T extends BillAccountUpsertArgs>(args: SelectSubset<T, BillAccountUpsertArgs<ExtArgs>>): Prisma__BillAccountClient<$Result.GetResult<Prisma.$BillAccountPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of BillAccounts.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BillAccountCountArgs} args - Arguments to filter BillAccounts to count.
     * @example
     * // Count the number of BillAccounts
     * const count = await prisma.billAccount.count({
     *   where: {
     *     // ... the filter for the BillAccounts we want to count
     *   }
     * })
    **/
    count<T extends BillAccountCountArgs>(
      args?: Subset<T, BillAccountCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], BillAccountCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a BillAccount.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BillAccountAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends BillAccountAggregateArgs>(args: Subset<T, BillAccountAggregateArgs>): Prisma.PrismaPromise<GetBillAccountAggregateType<T>>

    /**
     * Group by BillAccount.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BillAccountGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends BillAccountGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: BillAccountGroupByArgs['orderBy'] }
        : { orderBy?: BillAccountGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, BillAccountGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetBillAccountGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the BillAccount model
   */
  readonly fields: BillAccountFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for BillAccount.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__BillAccountClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    company<T extends CompanyDefaultArgs<ExtArgs> = {}>(args?: Subset<T, CompanyDefaultArgs<ExtArgs>>): Prisma__CompanyClient<$Result.GetResult<Prisma.$CompanyPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    billPayments<T extends BillAccount$billPaymentsArgs<ExtArgs> = {}>(args?: Subset<T, BillAccount$billPaymentsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$BillPaymentPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    campaigns<T extends BillAccount$campaignsArgs<ExtArgs> = {}>(args?: Subset<T, BillAccount$campaignsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$CampaignPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    lowBalanceAlerts<T extends BillAccount$lowBalanceAlertsArgs<ExtArgs> = {}>(args?: Subset<T, BillAccount$lowBalanceAlertsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$LowBalanceAlertPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the BillAccount model
   */
  interface BillAccountFieldRefs {
    readonly id: FieldRef<"BillAccount", 'Int'>
    readonly uuid: FieldRef<"BillAccount", 'String'>
    readonly accountNumber: FieldRef<"BillAccount", 'String'>
    readonly accountName: FieldRef<"BillAccount", 'String'>
    readonly outstandingBalance: FieldRef<"BillAccount", 'Float'>
    readonly reservedBalance: FieldRef<"BillAccount", 'Float'>
    readonly accountStatus: FieldRef<"BillAccount", 'String'>
    readonly createdAt: FieldRef<"BillAccount", 'DateTime'>
    readonly updatedAt: FieldRef<"BillAccount", 'DateTime'>
    readonly companyId: FieldRef<"BillAccount", 'Int'>
  }
    

  // Custom InputTypes
  /**
   * BillAccount findUnique
   */
  export type BillAccountFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillAccount
     */
    select?: BillAccountSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillAccount
     */
    omit?: BillAccountOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillAccountInclude<ExtArgs> | null
    /**
     * Filter, which BillAccount to fetch.
     */
    where: BillAccountWhereUniqueInput
  }

  /**
   * BillAccount findUniqueOrThrow
   */
  export type BillAccountFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillAccount
     */
    select?: BillAccountSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillAccount
     */
    omit?: BillAccountOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillAccountInclude<ExtArgs> | null
    /**
     * Filter, which BillAccount to fetch.
     */
    where: BillAccountWhereUniqueInput
  }

  /**
   * BillAccount findFirst
   */
  export type BillAccountFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillAccount
     */
    select?: BillAccountSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillAccount
     */
    omit?: BillAccountOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillAccountInclude<ExtArgs> | null
    /**
     * Filter, which BillAccount to fetch.
     */
    where?: BillAccountWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of BillAccounts to fetch.
     */
    orderBy?: BillAccountOrderByWithRelationInput | BillAccountOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for BillAccounts.
     */
    cursor?: BillAccountWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` BillAccounts from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` BillAccounts.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of BillAccounts.
     */
    distinct?: BillAccountScalarFieldEnum | BillAccountScalarFieldEnum[]
  }

  /**
   * BillAccount findFirstOrThrow
   */
  export type BillAccountFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillAccount
     */
    select?: BillAccountSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillAccount
     */
    omit?: BillAccountOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillAccountInclude<ExtArgs> | null
    /**
     * Filter, which BillAccount to fetch.
     */
    where?: BillAccountWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of BillAccounts to fetch.
     */
    orderBy?: BillAccountOrderByWithRelationInput | BillAccountOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for BillAccounts.
     */
    cursor?: BillAccountWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` BillAccounts from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` BillAccounts.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of BillAccounts.
     */
    distinct?: BillAccountScalarFieldEnum | BillAccountScalarFieldEnum[]
  }

  /**
   * BillAccount findMany
   */
  export type BillAccountFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillAccount
     */
    select?: BillAccountSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillAccount
     */
    omit?: BillAccountOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillAccountInclude<ExtArgs> | null
    /**
     * Filter, which BillAccounts to fetch.
     */
    where?: BillAccountWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of BillAccounts to fetch.
     */
    orderBy?: BillAccountOrderByWithRelationInput | BillAccountOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing BillAccounts.
     */
    cursor?: BillAccountWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` BillAccounts from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` BillAccounts.
     */
    skip?: number
    distinct?: BillAccountScalarFieldEnum | BillAccountScalarFieldEnum[]
  }

  /**
   * BillAccount create
   */
  export type BillAccountCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillAccount
     */
    select?: BillAccountSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillAccount
     */
    omit?: BillAccountOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillAccountInclude<ExtArgs> | null
    /**
     * The data needed to create a BillAccount.
     */
    data: XOR<BillAccountCreateInput, BillAccountUncheckedCreateInput>
  }

  /**
   * BillAccount createMany
   */
  export type BillAccountCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many BillAccounts.
     */
    data: BillAccountCreateManyInput | BillAccountCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * BillAccount update
   */
  export type BillAccountUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillAccount
     */
    select?: BillAccountSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillAccount
     */
    omit?: BillAccountOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillAccountInclude<ExtArgs> | null
    /**
     * The data needed to update a BillAccount.
     */
    data: XOR<BillAccountUpdateInput, BillAccountUncheckedUpdateInput>
    /**
     * Choose, which BillAccount to update.
     */
    where: BillAccountWhereUniqueInput
  }

  /**
   * BillAccount updateMany
   */
  export type BillAccountUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update BillAccounts.
     */
    data: XOR<BillAccountUpdateManyMutationInput, BillAccountUncheckedUpdateManyInput>
    /**
     * Filter which BillAccounts to update
     */
    where?: BillAccountWhereInput
    /**
     * Limit how many BillAccounts to update.
     */
    limit?: number
  }

  /**
   * BillAccount upsert
   */
  export type BillAccountUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillAccount
     */
    select?: BillAccountSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillAccount
     */
    omit?: BillAccountOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillAccountInclude<ExtArgs> | null
    /**
     * The filter to search for the BillAccount to update in case it exists.
     */
    where: BillAccountWhereUniqueInput
    /**
     * In case the BillAccount found by the `where` argument doesn't exist, create a new BillAccount with this data.
     */
    create: XOR<BillAccountCreateInput, BillAccountUncheckedCreateInput>
    /**
     * In case the BillAccount was found with the provided `where` argument, update it with this data.
     */
    update: XOR<BillAccountUpdateInput, BillAccountUncheckedUpdateInput>
  }

  /**
   * BillAccount delete
   */
  export type BillAccountDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillAccount
     */
    select?: BillAccountSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillAccount
     */
    omit?: BillAccountOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillAccountInclude<ExtArgs> | null
    /**
     * Filter which BillAccount to delete.
     */
    where: BillAccountWhereUniqueInput
  }

  /**
   * BillAccount deleteMany
   */
  export type BillAccountDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which BillAccounts to delete
     */
    where?: BillAccountWhereInput
    /**
     * Limit how many BillAccounts to delete.
     */
    limit?: number
  }

  /**
   * BillAccount.billPayments
   */
  export type BillAccount$billPaymentsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillPayment
     */
    select?: BillPaymentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillPayment
     */
    omit?: BillPaymentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillPaymentInclude<ExtArgs> | null
    where?: BillPaymentWhereInput
    orderBy?: BillPaymentOrderByWithRelationInput | BillPaymentOrderByWithRelationInput[]
    cursor?: BillPaymentWhereUniqueInput
    take?: number
    skip?: number
    distinct?: BillPaymentScalarFieldEnum | BillPaymentScalarFieldEnum[]
  }

  /**
   * BillAccount.campaigns
   */
  export type BillAccount$campaignsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Campaign
     */
    select?: CampaignSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Campaign
     */
    omit?: CampaignOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignInclude<ExtArgs> | null
    where?: CampaignWhereInput
    orderBy?: CampaignOrderByWithRelationInput | CampaignOrderByWithRelationInput[]
    cursor?: CampaignWhereUniqueInput
    take?: number
    skip?: number
    distinct?: CampaignScalarFieldEnum | CampaignScalarFieldEnum[]
  }

  /**
   * BillAccount.lowBalanceAlerts
   */
  export type BillAccount$lowBalanceAlertsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the LowBalanceAlert
     */
    select?: LowBalanceAlertSelect<ExtArgs> | null
    /**
     * Omit specific fields from the LowBalanceAlert
     */
    omit?: LowBalanceAlertOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: LowBalanceAlertInclude<ExtArgs> | null
    where?: LowBalanceAlertWhereInput
    orderBy?: LowBalanceAlertOrderByWithRelationInput | LowBalanceAlertOrderByWithRelationInput[]
    cursor?: LowBalanceAlertWhereUniqueInput
    take?: number
    skip?: number
    distinct?: LowBalanceAlertScalarFieldEnum | LowBalanceAlertScalarFieldEnum[]
  }

  /**
   * BillAccount without action
   */
  export type BillAccountDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillAccount
     */
    select?: BillAccountSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillAccount
     */
    omit?: BillAccountOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillAccountInclude<ExtArgs> | null
  }


  /**
   * Model SavedCard
   */

  export type AggregateSavedCard = {
    _count: SavedCardCountAggregateOutputType | null
    _avg: SavedCardAvgAggregateOutputType | null
    _sum: SavedCardSumAggregateOutputType | null
    _min: SavedCardMinAggregateOutputType | null
    _max: SavedCardMaxAggregateOutputType | null
  }

  export type SavedCardAvgAggregateOutputType = {
    id: number | null
    userId: number | null
  }

  export type SavedCardSumAggregateOutputType = {
    id: number | null
    userId: number | null
  }

  export type SavedCardMinAggregateOutputType = {
    id: number | null
    uuid: string | null
    userId: number | null
    cardToken: string | null
    cardFirst6: string | null
    cardLast4: string | null
    cardHolderName: string | null
    customerEmail: string | null
    isActive: boolean | null
    deletedAt: Date | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type SavedCardMaxAggregateOutputType = {
    id: number | null
    uuid: string | null
    userId: number | null
    cardToken: string | null
    cardFirst6: string | null
    cardLast4: string | null
    cardHolderName: string | null
    customerEmail: string | null
    isActive: boolean | null
    deletedAt: Date | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type SavedCardCountAggregateOutputType = {
    id: number
    uuid: number
    userId: number
    cardToken: number
    cardFirst6: number
    cardLast4: number
    cardHolderName: number
    customerEmail: number
    isActive: number
    deletedAt: number
    createdAt: number
    updatedAt: number
    _all: number
  }


  export type SavedCardAvgAggregateInputType = {
    id?: true
    userId?: true
  }

  export type SavedCardSumAggregateInputType = {
    id?: true
    userId?: true
  }

  export type SavedCardMinAggregateInputType = {
    id?: true
    uuid?: true
    userId?: true
    cardToken?: true
    cardFirst6?: true
    cardLast4?: true
    cardHolderName?: true
    customerEmail?: true
    isActive?: true
    deletedAt?: true
    createdAt?: true
    updatedAt?: true
  }

  export type SavedCardMaxAggregateInputType = {
    id?: true
    uuid?: true
    userId?: true
    cardToken?: true
    cardFirst6?: true
    cardLast4?: true
    cardHolderName?: true
    customerEmail?: true
    isActive?: true
    deletedAt?: true
    createdAt?: true
    updatedAt?: true
  }

  export type SavedCardCountAggregateInputType = {
    id?: true
    uuid?: true
    userId?: true
    cardToken?: true
    cardFirst6?: true
    cardLast4?: true
    cardHolderName?: true
    customerEmail?: true
    isActive?: true
    deletedAt?: true
    createdAt?: true
    updatedAt?: true
    _all?: true
  }

  export type SavedCardAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which SavedCard to aggregate.
     */
    where?: SavedCardWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SavedCards to fetch.
     */
    orderBy?: SavedCardOrderByWithRelationInput | SavedCardOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: SavedCardWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SavedCards from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SavedCards.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned SavedCards
    **/
    _count?: true | SavedCardCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: SavedCardAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: SavedCardSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: SavedCardMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: SavedCardMaxAggregateInputType
  }

  export type GetSavedCardAggregateType<T extends SavedCardAggregateArgs> = {
        [P in keyof T & keyof AggregateSavedCard]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateSavedCard[P]>
      : GetScalarType<T[P], AggregateSavedCard[P]>
  }




  export type SavedCardGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: SavedCardWhereInput
    orderBy?: SavedCardOrderByWithAggregationInput | SavedCardOrderByWithAggregationInput[]
    by: SavedCardScalarFieldEnum[] | SavedCardScalarFieldEnum
    having?: SavedCardScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: SavedCardCountAggregateInputType | true
    _avg?: SavedCardAvgAggregateInputType
    _sum?: SavedCardSumAggregateInputType
    _min?: SavedCardMinAggregateInputType
    _max?: SavedCardMaxAggregateInputType
  }

  export type SavedCardGroupByOutputType = {
    id: number
    uuid: string
    userId: number
    cardToken: string
    cardFirst6: string
    cardLast4: string
    cardHolderName: string
    customerEmail: string
    isActive: boolean
    deletedAt: Date | null
    createdAt: Date
    updatedAt: Date
    _count: SavedCardCountAggregateOutputType | null
    _avg: SavedCardAvgAggregateOutputType | null
    _sum: SavedCardSumAggregateOutputType | null
    _min: SavedCardMinAggregateOutputType | null
    _max: SavedCardMaxAggregateOutputType | null
  }

  type GetSavedCardGroupByPayload<T extends SavedCardGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<SavedCardGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof SavedCardGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], SavedCardGroupByOutputType[P]>
            : GetScalarType<T[P], SavedCardGroupByOutputType[P]>
        }
      >
    >


  export type SavedCardSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    uuid?: boolean
    userId?: boolean
    cardToken?: boolean
    cardFirst6?: boolean
    cardLast4?: boolean
    cardHolderName?: boolean
    customerEmail?: boolean
    isActive?: boolean
    deletedAt?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    user?: boolean | UserDefaultArgs<ExtArgs>
    billPayments?: boolean | SavedCard$billPaymentsArgs<ExtArgs>
    _count?: boolean | SavedCardCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["savedCard"]>



  export type SavedCardSelectScalar = {
    id?: boolean
    uuid?: boolean
    userId?: boolean
    cardToken?: boolean
    cardFirst6?: boolean
    cardLast4?: boolean
    cardHolderName?: boolean
    customerEmail?: boolean
    isActive?: boolean
    deletedAt?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }

  export type SavedCardOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "uuid" | "userId" | "cardToken" | "cardFirst6" | "cardLast4" | "cardHolderName" | "customerEmail" | "isActive" | "deletedAt" | "createdAt" | "updatedAt", ExtArgs["result"]["savedCard"]>
  export type SavedCardInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    user?: boolean | UserDefaultArgs<ExtArgs>
    billPayments?: boolean | SavedCard$billPaymentsArgs<ExtArgs>
    _count?: boolean | SavedCardCountOutputTypeDefaultArgs<ExtArgs>
  }

  export type $SavedCardPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "SavedCard"
    objects: {
      user: Prisma.$UserPayload<ExtArgs>
      billPayments: Prisma.$BillPaymentPayload<ExtArgs>[]
    }
    scalars: $Extensions.GetPayloadResult<{
      id: number
      uuid: string
      userId: number
      cardToken: string
      cardFirst6: string
      cardLast4: string
      cardHolderName: string
      customerEmail: string
      isActive: boolean
      deletedAt: Date | null
      createdAt: Date
      updatedAt: Date
    }, ExtArgs["result"]["savedCard"]>
    composites: {}
  }

  type SavedCardGetPayload<S extends boolean | null | undefined | SavedCardDefaultArgs> = $Result.GetResult<Prisma.$SavedCardPayload, S>

  type SavedCardCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<SavedCardFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: SavedCardCountAggregateInputType | true
    }

  export interface SavedCardDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['SavedCard'], meta: { name: 'SavedCard' } }
    /**
     * Find zero or one SavedCard that matches the filter.
     * @param {SavedCardFindUniqueArgs} args - Arguments to find a SavedCard
     * @example
     * // Get one SavedCard
     * const savedCard = await prisma.savedCard.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends SavedCardFindUniqueArgs>(args: SelectSubset<T, SavedCardFindUniqueArgs<ExtArgs>>): Prisma__SavedCardClient<$Result.GetResult<Prisma.$SavedCardPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one SavedCard that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {SavedCardFindUniqueOrThrowArgs} args - Arguments to find a SavedCard
     * @example
     * // Get one SavedCard
     * const savedCard = await prisma.savedCard.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends SavedCardFindUniqueOrThrowArgs>(args: SelectSubset<T, SavedCardFindUniqueOrThrowArgs<ExtArgs>>): Prisma__SavedCardClient<$Result.GetResult<Prisma.$SavedCardPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first SavedCard that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SavedCardFindFirstArgs} args - Arguments to find a SavedCard
     * @example
     * // Get one SavedCard
     * const savedCard = await prisma.savedCard.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends SavedCardFindFirstArgs>(args?: SelectSubset<T, SavedCardFindFirstArgs<ExtArgs>>): Prisma__SavedCardClient<$Result.GetResult<Prisma.$SavedCardPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first SavedCard that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SavedCardFindFirstOrThrowArgs} args - Arguments to find a SavedCard
     * @example
     * // Get one SavedCard
     * const savedCard = await prisma.savedCard.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends SavedCardFindFirstOrThrowArgs>(args?: SelectSubset<T, SavedCardFindFirstOrThrowArgs<ExtArgs>>): Prisma__SavedCardClient<$Result.GetResult<Prisma.$SavedCardPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more SavedCards that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SavedCardFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all SavedCards
     * const savedCards = await prisma.savedCard.findMany()
     * 
     * // Get first 10 SavedCards
     * const savedCards = await prisma.savedCard.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const savedCardWithIdOnly = await prisma.savedCard.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends SavedCardFindManyArgs>(args?: SelectSubset<T, SavedCardFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$SavedCardPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a SavedCard.
     * @param {SavedCardCreateArgs} args - Arguments to create a SavedCard.
     * @example
     * // Create one SavedCard
     * const SavedCard = await prisma.savedCard.create({
     *   data: {
     *     // ... data to create a SavedCard
     *   }
     * })
     * 
     */
    create<T extends SavedCardCreateArgs>(args: SelectSubset<T, SavedCardCreateArgs<ExtArgs>>): Prisma__SavedCardClient<$Result.GetResult<Prisma.$SavedCardPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many SavedCards.
     * @param {SavedCardCreateManyArgs} args - Arguments to create many SavedCards.
     * @example
     * // Create many SavedCards
     * const savedCard = await prisma.savedCard.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends SavedCardCreateManyArgs>(args?: SelectSubset<T, SavedCardCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a SavedCard.
     * @param {SavedCardDeleteArgs} args - Arguments to delete one SavedCard.
     * @example
     * // Delete one SavedCard
     * const SavedCard = await prisma.savedCard.delete({
     *   where: {
     *     // ... filter to delete one SavedCard
     *   }
     * })
     * 
     */
    delete<T extends SavedCardDeleteArgs>(args: SelectSubset<T, SavedCardDeleteArgs<ExtArgs>>): Prisma__SavedCardClient<$Result.GetResult<Prisma.$SavedCardPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one SavedCard.
     * @param {SavedCardUpdateArgs} args - Arguments to update one SavedCard.
     * @example
     * // Update one SavedCard
     * const savedCard = await prisma.savedCard.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends SavedCardUpdateArgs>(args: SelectSubset<T, SavedCardUpdateArgs<ExtArgs>>): Prisma__SavedCardClient<$Result.GetResult<Prisma.$SavedCardPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more SavedCards.
     * @param {SavedCardDeleteManyArgs} args - Arguments to filter SavedCards to delete.
     * @example
     * // Delete a few SavedCards
     * const { count } = await prisma.savedCard.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends SavedCardDeleteManyArgs>(args?: SelectSubset<T, SavedCardDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more SavedCards.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SavedCardUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many SavedCards
     * const savedCard = await prisma.savedCard.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends SavedCardUpdateManyArgs>(args: SelectSubset<T, SavedCardUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one SavedCard.
     * @param {SavedCardUpsertArgs} args - Arguments to update or create a SavedCard.
     * @example
     * // Update or create a SavedCard
     * const savedCard = await prisma.savedCard.upsert({
     *   create: {
     *     // ... data to create a SavedCard
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the SavedCard we want to update
     *   }
     * })
     */
    upsert<T extends SavedCardUpsertArgs>(args: SelectSubset<T, SavedCardUpsertArgs<ExtArgs>>): Prisma__SavedCardClient<$Result.GetResult<Prisma.$SavedCardPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of SavedCards.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SavedCardCountArgs} args - Arguments to filter SavedCards to count.
     * @example
     * // Count the number of SavedCards
     * const count = await prisma.savedCard.count({
     *   where: {
     *     // ... the filter for the SavedCards we want to count
     *   }
     * })
    **/
    count<T extends SavedCardCountArgs>(
      args?: Subset<T, SavedCardCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], SavedCardCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a SavedCard.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SavedCardAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends SavedCardAggregateArgs>(args: Subset<T, SavedCardAggregateArgs>): Prisma.PrismaPromise<GetSavedCardAggregateType<T>>

    /**
     * Group by SavedCard.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SavedCardGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends SavedCardGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: SavedCardGroupByArgs['orderBy'] }
        : { orderBy?: SavedCardGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, SavedCardGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetSavedCardGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the SavedCard model
   */
  readonly fields: SavedCardFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for SavedCard.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__SavedCardClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    user<T extends UserDefaultArgs<ExtArgs> = {}>(args?: Subset<T, UserDefaultArgs<ExtArgs>>): Prisma__UserClient<$Result.GetResult<Prisma.$UserPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    billPayments<T extends SavedCard$billPaymentsArgs<ExtArgs> = {}>(args?: Subset<T, SavedCard$billPaymentsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$BillPaymentPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the SavedCard model
   */
  interface SavedCardFieldRefs {
    readonly id: FieldRef<"SavedCard", 'Int'>
    readonly uuid: FieldRef<"SavedCard", 'String'>
    readonly userId: FieldRef<"SavedCard", 'Int'>
    readonly cardToken: FieldRef<"SavedCard", 'String'>
    readonly cardFirst6: FieldRef<"SavedCard", 'String'>
    readonly cardLast4: FieldRef<"SavedCard", 'String'>
    readonly cardHolderName: FieldRef<"SavedCard", 'String'>
    readonly customerEmail: FieldRef<"SavedCard", 'String'>
    readonly isActive: FieldRef<"SavedCard", 'Boolean'>
    readonly deletedAt: FieldRef<"SavedCard", 'DateTime'>
    readonly createdAt: FieldRef<"SavedCard", 'DateTime'>
    readonly updatedAt: FieldRef<"SavedCard", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * SavedCard findUnique
   */
  export type SavedCardFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SavedCard
     */
    select?: SavedCardSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SavedCard
     */
    omit?: SavedCardOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SavedCardInclude<ExtArgs> | null
    /**
     * Filter, which SavedCard to fetch.
     */
    where: SavedCardWhereUniqueInput
  }

  /**
   * SavedCard findUniqueOrThrow
   */
  export type SavedCardFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SavedCard
     */
    select?: SavedCardSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SavedCard
     */
    omit?: SavedCardOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SavedCardInclude<ExtArgs> | null
    /**
     * Filter, which SavedCard to fetch.
     */
    where: SavedCardWhereUniqueInput
  }

  /**
   * SavedCard findFirst
   */
  export type SavedCardFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SavedCard
     */
    select?: SavedCardSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SavedCard
     */
    omit?: SavedCardOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SavedCardInclude<ExtArgs> | null
    /**
     * Filter, which SavedCard to fetch.
     */
    where?: SavedCardWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SavedCards to fetch.
     */
    orderBy?: SavedCardOrderByWithRelationInput | SavedCardOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for SavedCards.
     */
    cursor?: SavedCardWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SavedCards from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SavedCards.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of SavedCards.
     */
    distinct?: SavedCardScalarFieldEnum | SavedCardScalarFieldEnum[]
  }

  /**
   * SavedCard findFirstOrThrow
   */
  export type SavedCardFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SavedCard
     */
    select?: SavedCardSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SavedCard
     */
    omit?: SavedCardOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SavedCardInclude<ExtArgs> | null
    /**
     * Filter, which SavedCard to fetch.
     */
    where?: SavedCardWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SavedCards to fetch.
     */
    orderBy?: SavedCardOrderByWithRelationInput | SavedCardOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for SavedCards.
     */
    cursor?: SavedCardWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SavedCards from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SavedCards.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of SavedCards.
     */
    distinct?: SavedCardScalarFieldEnum | SavedCardScalarFieldEnum[]
  }

  /**
   * SavedCard findMany
   */
  export type SavedCardFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SavedCard
     */
    select?: SavedCardSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SavedCard
     */
    omit?: SavedCardOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SavedCardInclude<ExtArgs> | null
    /**
     * Filter, which SavedCards to fetch.
     */
    where?: SavedCardWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SavedCards to fetch.
     */
    orderBy?: SavedCardOrderByWithRelationInput | SavedCardOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing SavedCards.
     */
    cursor?: SavedCardWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SavedCards from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SavedCards.
     */
    skip?: number
    distinct?: SavedCardScalarFieldEnum | SavedCardScalarFieldEnum[]
  }

  /**
   * SavedCard create
   */
  export type SavedCardCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SavedCard
     */
    select?: SavedCardSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SavedCard
     */
    omit?: SavedCardOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SavedCardInclude<ExtArgs> | null
    /**
     * The data needed to create a SavedCard.
     */
    data: XOR<SavedCardCreateInput, SavedCardUncheckedCreateInput>
  }

  /**
   * SavedCard createMany
   */
  export type SavedCardCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many SavedCards.
     */
    data: SavedCardCreateManyInput | SavedCardCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * SavedCard update
   */
  export type SavedCardUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SavedCard
     */
    select?: SavedCardSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SavedCard
     */
    omit?: SavedCardOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SavedCardInclude<ExtArgs> | null
    /**
     * The data needed to update a SavedCard.
     */
    data: XOR<SavedCardUpdateInput, SavedCardUncheckedUpdateInput>
    /**
     * Choose, which SavedCard to update.
     */
    where: SavedCardWhereUniqueInput
  }

  /**
   * SavedCard updateMany
   */
  export type SavedCardUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update SavedCards.
     */
    data: XOR<SavedCardUpdateManyMutationInput, SavedCardUncheckedUpdateManyInput>
    /**
     * Filter which SavedCards to update
     */
    where?: SavedCardWhereInput
    /**
     * Limit how many SavedCards to update.
     */
    limit?: number
  }

  /**
   * SavedCard upsert
   */
  export type SavedCardUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SavedCard
     */
    select?: SavedCardSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SavedCard
     */
    omit?: SavedCardOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SavedCardInclude<ExtArgs> | null
    /**
     * The filter to search for the SavedCard to update in case it exists.
     */
    where: SavedCardWhereUniqueInput
    /**
     * In case the SavedCard found by the `where` argument doesn't exist, create a new SavedCard with this data.
     */
    create: XOR<SavedCardCreateInput, SavedCardUncheckedCreateInput>
    /**
     * In case the SavedCard was found with the provided `where` argument, update it with this data.
     */
    update: XOR<SavedCardUpdateInput, SavedCardUncheckedUpdateInput>
  }

  /**
   * SavedCard delete
   */
  export type SavedCardDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SavedCard
     */
    select?: SavedCardSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SavedCard
     */
    omit?: SavedCardOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SavedCardInclude<ExtArgs> | null
    /**
     * Filter which SavedCard to delete.
     */
    where: SavedCardWhereUniqueInput
  }

  /**
   * SavedCard deleteMany
   */
  export type SavedCardDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which SavedCards to delete
     */
    where?: SavedCardWhereInput
    /**
     * Limit how many SavedCards to delete.
     */
    limit?: number
  }

  /**
   * SavedCard.billPayments
   */
  export type SavedCard$billPaymentsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the BillPayment
     */
    select?: BillPaymentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the BillPayment
     */
    omit?: BillPaymentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: BillPaymentInclude<ExtArgs> | null
    where?: BillPaymentWhereInput
    orderBy?: BillPaymentOrderByWithRelationInput | BillPaymentOrderByWithRelationInput[]
    cursor?: BillPaymentWhereUniqueInput
    take?: number
    skip?: number
    distinct?: BillPaymentScalarFieldEnum | BillPaymentScalarFieldEnum[]
  }

  /**
   * SavedCard without action
   */
  export type SavedCardDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SavedCard
     */
    select?: SavedCardSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SavedCard
     */
    omit?: SavedCardOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SavedCardInclude<ExtArgs> | null
  }


  /**
   * Model LowBalanceAlert
   */

  export type AggregateLowBalanceAlert = {
    _count: LowBalanceAlertCountAggregateOutputType | null
    _avg: LowBalanceAlertAvgAggregateOutputType | null
    _sum: LowBalanceAlertSumAggregateOutputType | null
    _min: LowBalanceAlertMinAggregateOutputType | null
    _max: LowBalanceAlertMaxAggregateOutputType | null
  }

  export type LowBalanceAlertAvgAggregateOutputType = {
    id: number | null
    billingAccountId: number | null
    userId: number | null
    thresholdLevel: number | null
    balanceAtAlert: number | null
    chargedAmount: number | null
    serverRef: number | null
  }

  export type LowBalanceAlertSumAggregateOutputType = {
    id: number | null
    billingAccountId: number | null
    userId: number | null
    thresholdLevel: number | null
    balanceAtAlert: number | null
    chargedAmount: number | null
    serverRef: number | null
  }

  export type LowBalanceAlertMinAggregateOutputType = {
    id: number | null
    uuid: string | null
    billingAccountId: number | null
    userId: number | null
    thresholdLevel: number | null
    isActive: boolean | null
    balanceAtAlert: number | null
    chargedAmount: number | null
    sentTo: string | null
    maskUsed: string | null
    serverRef: number | null
    status: string | null
    failureReason: string | null
    createdAt: Date | null
  }

  export type LowBalanceAlertMaxAggregateOutputType = {
    id: number | null
    uuid: string | null
    billingAccountId: number | null
    userId: number | null
    thresholdLevel: number | null
    isActive: boolean | null
    balanceAtAlert: number | null
    chargedAmount: number | null
    sentTo: string | null
    maskUsed: string | null
    serverRef: number | null
    status: string | null
    failureReason: string | null
    createdAt: Date | null
  }

  export type LowBalanceAlertCountAggregateOutputType = {
    id: number
    uuid: number
    billingAccountId: number
    userId: number
    thresholdLevel: number
    isActive: number
    balanceAtAlert: number
    chargedAmount: number
    sentTo: number
    maskUsed: number
    serverRef: number
    status: number
    failureReason: number
    createdAt: number
    _all: number
  }


  export type LowBalanceAlertAvgAggregateInputType = {
    id?: true
    billingAccountId?: true
    userId?: true
    thresholdLevel?: true
    balanceAtAlert?: true
    chargedAmount?: true
    serverRef?: true
  }

  export type LowBalanceAlertSumAggregateInputType = {
    id?: true
    billingAccountId?: true
    userId?: true
    thresholdLevel?: true
    balanceAtAlert?: true
    chargedAmount?: true
    serverRef?: true
  }

  export type LowBalanceAlertMinAggregateInputType = {
    id?: true
    uuid?: true
    billingAccountId?: true
    userId?: true
    thresholdLevel?: true
    isActive?: true
    balanceAtAlert?: true
    chargedAmount?: true
    sentTo?: true
    maskUsed?: true
    serverRef?: true
    status?: true
    failureReason?: true
    createdAt?: true
  }

  export type LowBalanceAlertMaxAggregateInputType = {
    id?: true
    uuid?: true
    billingAccountId?: true
    userId?: true
    thresholdLevel?: true
    isActive?: true
    balanceAtAlert?: true
    chargedAmount?: true
    sentTo?: true
    maskUsed?: true
    serverRef?: true
    status?: true
    failureReason?: true
    createdAt?: true
  }

  export type LowBalanceAlertCountAggregateInputType = {
    id?: true
    uuid?: true
    billingAccountId?: true
    userId?: true
    thresholdLevel?: true
    isActive?: true
    balanceAtAlert?: true
    chargedAmount?: true
    sentTo?: true
    maskUsed?: true
    serverRef?: true
    status?: true
    failureReason?: true
    createdAt?: true
    _all?: true
  }

  export type LowBalanceAlertAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which LowBalanceAlert to aggregate.
     */
    where?: LowBalanceAlertWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of LowBalanceAlerts to fetch.
     */
    orderBy?: LowBalanceAlertOrderByWithRelationInput | LowBalanceAlertOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: LowBalanceAlertWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` LowBalanceAlerts from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` LowBalanceAlerts.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned LowBalanceAlerts
    **/
    _count?: true | LowBalanceAlertCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: LowBalanceAlertAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: LowBalanceAlertSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: LowBalanceAlertMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: LowBalanceAlertMaxAggregateInputType
  }

  export type GetLowBalanceAlertAggregateType<T extends LowBalanceAlertAggregateArgs> = {
        [P in keyof T & keyof AggregateLowBalanceAlert]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateLowBalanceAlert[P]>
      : GetScalarType<T[P], AggregateLowBalanceAlert[P]>
  }




  export type LowBalanceAlertGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: LowBalanceAlertWhereInput
    orderBy?: LowBalanceAlertOrderByWithAggregationInput | LowBalanceAlertOrderByWithAggregationInput[]
    by: LowBalanceAlertScalarFieldEnum[] | LowBalanceAlertScalarFieldEnum
    having?: LowBalanceAlertScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: LowBalanceAlertCountAggregateInputType | true
    _avg?: LowBalanceAlertAvgAggregateInputType
    _sum?: LowBalanceAlertSumAggregateInputType
    _min?: LowBalanceAlertMinAggregateInputType
    _max?: LowBalanceAlertMaxAggregateInputType
  }

  export type LowBalanceAlertGroupByOutputType = {
    id: number
    uuid: string
    billingAccountId: number
    userId: number
    thresholdLevel: number
    isActive: boolean
    balanceAtAlert: number
    chargedAmount: number
    sentTo: string
    maskUsed: string
    serverRef: number | null
    status: string
    failureReason: string | null
    createdAt: Date
    _count: LowBalanceAlertCountAggregateOutputType | null
    _avg: LowBalanceAlertAvgAggregateOutputType | null
    _sum: LowBalanceAlertSumAggregateOutputType | null
    _min: LowBalanceAlertMinAggregateOutputType | null
    _max: LowBalanceAlertMaxAggregateOutputType | null
  }

  type GetLowBalanceAlertGroupByPayload<T extends LowBalanceAlertGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<LowBalanceAlertGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof LowBalanceAlertGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], LowBalanceAlertGroupByOutputType[P]>
            : GetScalarType<T[P], LowBalanceAlertGroupByOutputType[P]>
        }
      >
    >


  export type LowBalanceAlertSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    uuid?: boolean
    billingAccountId?: boolean
    userId?: boolean
    thresholdLevel?: boolean
    isActive?: boolean
    balanceAtAlert?: boolean
    chargedAmount?: boolean
    sentTo?: boolean
    maskUsed?: boolean
    serverRef?: boolean
    status?: boolean
    failureReason?: boolean
    createdAt?: boolean
    billAccount?: boolean | BillAccountDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["lowBalanceAlert"]>



  export type LowBalanceAlertSelectScalar = {
    id?: boolean
    uuid?: boolean
    billingAccountId?: boolean
    userId?: boolean
    thresholdLevel?: boolean
    isActive?: boolean
    balanceAtAlert?: boolean
    chargedAmount?: boolean
    sentTo?: boolean
    maskUsed?: boolean
    serverRef?: boolean
    status?: boolean
    failureReason?: boolean
    createdAt?: boolean
  }

  export type LowBalanceAlertOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "uuid" | "billingAccountId" | "userId" | "thresholdLevel" | "isActive" | "balanceAtAlert" | "chargedAmount" | "sentTo" | "maskUsed" | "serverRef" | "status" | "failureReason" | "createdAt", ExtArgs["result"]["lowBalanceAlert"]>
  export type LowBalanceAlertInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    billAccount?: boolean | BillAccountDefaultArgs<ExtArgs>
  }

  export type $LowBalanceAlertPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "LowBalanceAlert"
    objects: {
      billAccount: Prisma.$BillAccountPayload<ExtArgs>
    }
    scalars: $Extensions.GetPayloadResult<{
      id: number
      uuid: string
      billingAccountId: number
      userId: number
      thresholdLevel: number
      isActive: boolean
      balanceAtAlert: number
      chargedAmount: number
      sentTo: string
      maskUsed: string
      serverRef: number | null
      status: string
      failureReason: string | null
      createdAt: Date
    }, ExtArgs["result"]["lowBalanceAlert"]>
    composites: {}
  }

  type LowBalanceAlertGetPayload<S extends boolean | null | undefined | LowBalanceAlertDefaultArgs> = $Result.GetResult<Prisma.$LowBalanceAlertPayload, S>

  type LowBalanceAlertCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<LowBalanceAlertFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: LowBalanceAlertCountAggregateInputType | true
    }

  export interface LowBalanceAlertDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['LowBalanceAlert'], meta: { name: 'LowBalanceAlert' } }
    /**
     * Find zero or one LowBalanceAlert that matches the filter.
     * @param {LowBalanceAlertFindUniqueArgs} args - Arguments to find a LowBalanceAlert
     * @example
     * // Get one LowBalanceAlert
     * const lowBalanceAlert = await prisma.lowBalanceAlert.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends LowBalanceAlertFindUniqueArgs>(args: SelectSubset<T, LowBalanceAlertFindUniqueArgs<ExtArgs>>): Prisma__LowBalanceAlertClient<$Result.GetResult<Prisma.$LowBalanceAlertPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one LowBalanceAlert that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {LowBalanceAlertFindUniqueOrThrowArgs} args - Arguments to find a LowBalanceAlert
     * @example
     * // Get one LowBalanceAlert
     * const lowBalanceAlert = await prisma.lowBalanceAlert.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends LowBalanceAlertFindUniqueOrThrowArgs>(args: SelectSubset<T, LowBalanceAlertFindUniqueOrThrowArgs<ExtArgs>>): Prisma__LowBalanceAlertClient<$Result.GetResult<Prisma.$LowBalanceAlertPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first LowBalanceAlert that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {LowBalanceAlertFindFirstArgs} args - Arguments to find a LowBalanceAlert
     * @example
     * // Get one LowBalanceAlert
     * const lowBalanceAlert = await prisma.lowBalanceAlert.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends LowBalanceAlertFindFirstArgs>(args?: SelectSubset<T, LowBalanceAlertFindFirstArgs<ExtArgs>>): Prisma__LowBalanceAlertClient<$Result.GetResult<Prisma.$LowBalanceAlertPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first LowBalanceAlert that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {LowBalanceAlertFindFirstOrThrowArgs} args - Arguments to find a LowBalanceAlert
     * @example
     * // Get one LowBalanceAlert
     * const lowBalanceAlert = await prisma.lowBalanceAlert.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends LowBalanceAlertFindFirstOrThrowArgs>(args?: SelectSubset<T, LowBalanceAlertFindFirstOrThrowArgs<ExtArgs>>): Prisma__LowBalanceAlertClient<$Result.GetResult<Prisma.$LowBalanceAlertPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more LowBalanceAlerts that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {LowBalanceAlertFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all LowBalanceAlerts
     * const lowBalanceAlerts = await prisma.lowBalanceAlert.findMany()
     * 
     * // Get first 10 LowBalanceAlerts
     * const lowBalanceAlerts = await prisma.lowBalanceAlert.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const lowBalanceAlertWithIdOnly = await prisma.lowBalanceAlert.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends LowBalanceAlertFindManyArgs>(args?: SelectSubset<T, LowBalanceAlertFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$LowBalanceAlertPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a LowBalanceAlert.
     * @param {LowBalanceAlertCreateArgs} args - Arguments to create a LowBalanceAlert.
     * @example
     * // Create one LowBalanceAlert
     * const LowBalanceAlert = await prisma.lowBalanceAlert.create({
     *   data: {
     *     // ... data to create a LowBalanceAlert
     *   }
     * })
     * 
     */
    create<T extends LowBalanceAlertCreateArgs>(args: SelectSubset<T, LowBalanceAlertCreateArgs<ExtArgs>>): Prisma__LowBalanceAlertClient<$Result.GetResult<Prisma.$LowBalanceAlertPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many LowBalanceAlerts.
     * @param {LowBalanceAlertCreateManyArgs} args - Arguments to create many LowBalanceAlerts.
     * @example
     * // Create many LowBalanceAlerts
     * const lowBalanceAlert = await prisma.lowBalanceAlert.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends LowBalanceAlertCreateManyArgs>(args?: SelectSubset<T, LowBalanceAlertCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a LowBalanceAlert.
     * @param {LowBalanceAlertDeleteArgs} args - Arguments to delete one LowBalanceAlert.
     * @example
     * // Delete one LowBalanceAlert
     * const LowBalanceAlert = await prisma.lowBalanceAlert.delete({
     *   where: {
     *     // ... filter to delete one LowBalanceAlert
     *   }
     * })
     * 
     */
    delete<T extends LowBalanceAlertDeleteArgs>(args: SelectSubset<T, LowBalanceAlertDeleteArgs<ExtArgs>>): Prisma__LowBalanceAlertClient<$Result.GetResult<Prisma.$LowBalanceAlertPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one LowBalanceAlert.
     * @param {LowBalanceAlertUpdateArgs} args - Arguments to update one LowBalanceAlert.
     * @example
     * // Update one LowBalanceAlert
     * const lowBalanceAlert = await prisma.lowBalanceAlert.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends LowBalanceAlertUpdateArgs>(args: SelectSubset<T, LowBalanceAlertUpdateArgs<ExtArgs>>): Prisma__LowBalanceAlertClient<$Result.GetResult<Prisma.$LowBalanceAlertPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more LowBalanceAlerts.
     * @param {LowBalanceAlertDeleteManyArgs} args - Arguments to filter LowBalanceAlerts to delete.
     * @example
     * // Delete a few LowBalanceAlerts
     * const { count } = await prisma.lowBalanceAlert.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends LowBalanceAlertDeleteManyArgs>(args?: SelectSubset<T, LowBalanceAlertDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more LowBalanceAlerts.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {LowBalanceAlertUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many LowBalanceAlerts
     * const lowBalanceAlert = await prisma.lowBalanceAlert.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends LowBalanceAlertUpdateManyArgs>(args: SelectSubset<T, LowBalanceAlertUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one LowBalanceAlert.
     * @param {LowBalanceAlertUpsertArgs} args - Arguments to update or create a LowBalanceAlert.
     * @example
     * // Update or create a LowBalanceAlert
     * const lowBalanceAlert = await prisma.lowBalanceAlert.upsert({
     *   create: {
     *     // ... data to create a LowBalanceAlert
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the LowBalanceAlert we want to update
     *   }
     * })
     */
    upsert<T extends LowBalanceAlertUpsertArgs>(args: SelectSubset<T, LowBalanceAlertUpsertArgs<ExtArgs>>): Prisma__LowBalanceAlertClient<$Result.GetResult<Prisma.$LowBalanceAlertPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of LowBalanceAlerts.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {LowBalanceAlertCountArgs} args - Arguments to filter LowBalanceAlerts to count.
     * @example
     * // Count the number of LowBalanceAlerts
     * const count = await prisma.lowBalanceAlert.count({
     *   where: {
     *     // ... the filter for the LowBalanceAlerts we want to count
     *   }
     * })
    **/
    count<T extends LowBalanceAlertCountArgs>(
      args?: Subset<T, LowBalanceAlertCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], LowBalanceAlertCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a LowBalanceAlert.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {LowBalanceAlertAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends LowBalanceAlertAggregateArgs>(args: Subset<T, LowBalanceAlertAggregateArgs>): Prisma.PrismaPromise<GetLowBalanceAlertAggregateType<T>>

    /**
     * Group by LowBalanceAlert.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {LowBalanceAlertGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends LowBalanceAlertGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: LowBalanceAlertGroupByArgs['orderBy'] }
        : { orderBy?: LowBalanceAlertGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, LowBalanceAlertGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetLowBalanceAlertGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the LowBalanceAlert model
   */
  readonly fields: LowBalanceAlertFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for LowBalanceAlert.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__LowBalanceAlertClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    billAccount<T extends BillAccountDefaultArgs<ExtArgs> = {}>(args?: Subset<T, BillAccountDefaultArgs<ExtArgs>>): Prisma__BillAccountClient<$Result.GetResult<Prisma.$BillAccountPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the LowBalanceAlert model
   */
  interface LowBalanceAlertFieldRefs {
    readonly id: FieldRef<"LowBalanceAlert", 'Int'>
    readonly uuid: FieldRef<"LowBalanceAlert", 'String'>
    readonly billingAccountId: FieldRef<"LowBalanceAlert", 'Int'>
    readonly userId: FieldRef<"LowBalanceAlert", 'Int'>
    readonly thresholdLevel: FieldRef<"LowBalanceAlert", 'Int'>
    readonly isActive: FieldRef<"LowBalanceAlert", 'Boolean'>
    readonly balanceAtAlert: FieldRef<"LowBalanceAlert", 'Float'>
    readonly chargedAmount: FieldRef<"LowBalanceAlert", 'Float'>
    readonly sentTo: FieldRef<"LowBalanceAlert", 'String'>
    readonly maskUsed: FieldRef<"LowBalanceAlert", 'String'>
    readonly serverRef: FieldRef<"LowBalanceAlert", 'Int'>
    readonly status: FieldRef<"LowBalanceAlert", 'String'>
    readonly failureReason: FieldRef<"LowBalanceAlert", 'String'>
    readonly createdAt: FieldRef<"LowBalanceAlert", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * LowBalanceAlert findUnique
   */
  export type LowBalanceAlertFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the LowBalanceAlert
     */
    select?: LowBalanceAlertSelect<ExtArgs> | null
    /**
     * Omit specific fields from the LowBalanceAlert
     */
    omit?: LowBalanceAlertOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: LowBalanceAlertInclude<ExtArgs> | null
    /**
     * Filter, which LowBalanceAlert to fetch.
     */
    where: LowBalanceAlertWhereUniqueInput
  }

  /**
   * LowBalanceAlert findUniqueOrThrow
   */
  export type LowBalanceAlertFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the LowBalanceAlert
     */
    select?: LowBalanceAlertSelect<ExtArgs> | null
    /**
     * Omit specific fields from the LowBalanceAlert
     */
    omit?: LowBalanceAlertOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: LowBalanceAlertInclude<ExtArgs> | null
    /**
     * Filter, which LowBalanceAlert to fetch.
     */
    where: LowBalanceAlertWhereUniqueInput
  }

  /**
   * LowBalanceAlert findFirst
   */
  export type LowBalanceAlertFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the LowBalanceAlert
     */
    select?: LowBalanceAlertSelect<ExtArgs> | null
    /**
     * Omit specific fields from the LowBalanceAlert
     */
    omit?: LowBalanceAlertOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: LowBalanceAlertInclude<ExtArgs> | null
    /**
     * Filter, which LowBalanceAlert to fetch.
     */
    where?: LowBalanceAlertWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of LowBalanceAlerts to fetch.
     */
    orderBy?: LowBalanceAlertOrderByWithRelationInput | LowBalanceAlertOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for LowBalanceAlerts.
     */
    cursor?: LowBalanceAlertWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` LowBalanceAlerts from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` LowBalanceAlerts.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of LowBalanceAlerts.
     */
    distinct?: LowBalanceAlertScalarFieldEnum | LowBalanceAlertScalarFieldEnum[]
  }

  /**
   * LowBalanceAlert findFirstOrThrow
   */
  export type LowBalanceAlertFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the LowBalanceAlert
     */
    select?: LowBalanceAlertSelect<ExtArgs> | null
    /**
     * Omit specific fields from the LowBalanceAlert
     */
    omit?: LowBalanceAlertOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: LowBalanceAlertInclude<ExtArgs> | null
    /**
     * Filter, which LowBalanceAlert to fetch.
     */
    where?: LowBalanceAlertWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of LowBalanceAlerts to fetch.
     */
    orderBy?: LowBalanceAlertOrderByWithRelationInput | LowBalanceAlertOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for LowBalanceAlerts.
     */
    cursor?: LowBalanceAlertWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` LowBalanceAlerts from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` LowBalanceAlerts.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of LowBalanceAlerts.
     */
    distinct?: LowBalanceAlertScalarFieldEnum | LowBalanceAlertScalarFieldEnum[]
  }

  /**
   * LowBalanceAlert findMany
   */
  export type LowBalanceAlertFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the LowBalanceAlert
     */
    select?: LowBalanceAlertSelect<ExtArgs> | null
    /**
     * Omit specific fields from the LowBalanceAlert
     */
    omit?: LowBalanceAlertOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: LowBalanceAlertInclude<ExtArgs> | null
    /**
     * Filter, which LowBalanceAlerts to fetch.
     */
    where?: LowBalanceAlertWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of LowBalanceAlerts to fetch.
     */
    orderBy?: LowBalanceAlertOrderByWithRelationInput | LowBalanceAlertOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing LowBalanceAlerts.
     */
    cursor?: LowBalanceAlertWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` LowBalanceAlerts from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` LowBalanceAlerts.
     */
    skip?: number
    distinct?: LowBalanceAlertScalarFieldEnum | LowBalanceAlertScalarFieldEnum[]
  }

  /**
   * LowBalanceAlert create
   */
  export type LowBalanceAlertCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the LowBalanceAlert
     */
    select?: LowBalanceAlertSelect<ExtArgs> | null
    /**
     * Omit specific fields from the LowBalanceAlert
     */
    omit?: LowBalanceAlertOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: LowBalanceAlertInclude<ExtArgs> | null
    /**
     * The data needed to create a LowBalanceAlert.
     */
    data: XOR<LowBalanceAlertCreateInput, LowBalanceAlertUncheckedCreateInput>
  }

  /**
   * LowBalanceAlert createMany
   */
  export type LowBalanceAlertCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many LowBalanceAlerts.
     */
    data: LowBalanceAlertCreateManyInput | LowBalanceAlertCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * LowBalanceAlert update
   */
  export type LowBalanceAlertUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the LowBalanceAlert
     */
    select?: LowBalanceAlertSelect<ExtArgs> | null
    /**
     * Omit specific fields from the LowBalanceAlert
     */
    omit?: LowBalanceAlertOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: LowBalanceAlertInclude<ExtArgs> | null
    /**
     * The data needed to update a LowBalanceAlert.
     */
    data: XOR<LowBalanceAlertUpdateInput, LowBalanceAlertUncheckedUpdateInput>
    /**
     * Choose, which LowBalanceAlert to update.
     */
    where: LowBalanceAlertWhereUniqueInput
  }

  /**
   * LowBalanceAlert updateMany
   */
  export type LowBalanceAlertUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update LowBalanceAlerts.
     */
    data: XOR<LowBalanceAlertUpdateManyMutationInput, LowBalanceAlertUncheckedUpdateManyInput>
    /**
     * Filter which LowBalanceAlerts to update
     */
    where?: LowBalanceAlertWhereInput
    /**
     * Limit how many LowBalanceAlerts to update.
     */
    limit?: number
  }

  /**
   * LowBalanceAlert upsert
   */
  export type LowBalanceAlertUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the LowBalanceAlert
     */
    select?: LowBalanceAlertSelect<ExtArgs> | null
    /**
     * Omit specific fields from the LowBalanceAlert
     */
    omit?: LowBalanceAlertOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: LowBalanceAlertInclude<ExtArgs> | null
    /**
     * The filter to search for the LowBalanceAlert to update in case it exists.
     */
    where: LowBalanceAlertWhereUniqueInput
    /**
     * In case the LowBalanceAlert found by the `where` argument doesn't exist, create a new LowBalanceAlert with this data.
     */
    create: XOR<LowBalanceAlertCreateInput, LowBalanceAlertUncheckedCreateInput>
    /**
     * In case the LowBalanceAlert was found with the provided `where` argument, update it with this data.
     */
    update: XOR<LowBalanceAlertUpdateInput, LowBalanceAlertUncheckedUpdateInput>
  }

  /**
   * LowBalanceAlert delete
   */
  export type LowBalanceAlertDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the LowBalanceAlert
     */
    select?: LowBalanceAlertSelect<ExtArgs> | null
    /**
     * Omit specific fields from the LowBalanceAlert
     */
    omit?: LowBalanceAlertOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: LowBalanceAlertInclude<ExtArgs> | null
    /**
     * Filter which LowBalanceAlert to delete.
     */
    where: LowBalanceAlertWhereUniqueInput
  }

  /**
   * LowBalanceAlert deleteMany
   */
  export type LowBalanceAlertDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which LowBalanceAlerts to delete
     */
    where?: LowBalanceAlertWhereInput
    /**
     * Limit how many LowBalanceAlerts to delete.
     */
    limit?: number
  }

  /**
   * LowBalanceAlert without action
   */
  export type LowBalanceAlertDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the LowBalanceAlert
     */
    select?: LowBalanceAlertSelect<ExtArgs> | null
    /**
     * Omit specific fields from the LowBalanceAlert
     */
    omit?: LowBalanceAlertOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: LowBalanceAlertInclude<ExtArgs> | null
  }


  /**
   * Model Department
   */

  export type AggregateDepartment = {
    _count: DepartmentCountAggregateOutputType | null
    _avg: DepartmentAvgAggregateOutputType | null
    _sum: DepartmentSumAggregateOutputType | null
    _min: DepartmentMinAggregateOutputType | null
    _max: DepartmentMaxAggregateOutputType | null
  }

  export type DepartmentAvgAggregateOutputType = {
    id: number | null
    companyId: number | null
    externalCompanyId: number | null
    smsCostTransactional: number | null
    smsCostPromotional: number | null
  }

  export type DepartmentSumAggregateOutputType = {
    id: number | null
    companyId: number | null
    externalCompanyId: number | null
    smsCostTransactional: number | null
    smsCostPromotional: number | null
  }

  export type DepartmentMinAggregateOutputType = {
    id: number | null
    uuid: string | null
    companyId: number | null
    name: string | null
    externalCompanyId: number | null
    smsCostTransactional: number | null
    smsCostPromotional: number | null
    is_enabled: boolean | null
    callBackUrl: string | null
    Signature: string | null
    createdAt: Date | null
    updatedAt: Date | null
    deletedAt: Date | null
  }

  export type DepartmentMaxAggregateOutputType = {
    id: number | null
    uuid: string | null
    companyId: number | null
    name: string | null
    externalCompanyId: number | null
    smsCostTransactional: number | null
    smsCostPromotional: number | null
    is_enabled: boolean | null
    callBackUrl: string | null
    Signature: string | null
    createdAt: Date | null
    updatedAt: Date | null
    deletedAt: Date | null
  }

  export type DepartmentCountAggregateOutputType = {
    id: number
    uuid: number
    companyId: number
    name: number
    externalCompanyId: number
    smsCostTransactional: number
    smsCostPromotional: number
    is_enabled: number
    callBackUrl: number
    Signature: number
    createdAt: number
    updatedAt: number
    deletedAt: number
    _all: number
  }


  export type DepartmentAvgAggregateInputType = {
    id?: true
    companyId?: true
    externalCompanyId?: true
    smsCostTransactional?: true
    smsCostPromotional?: true
  }

  export type DepartmentSumAggregateInputType = {
    id?: true
    companyId?: true
    externalCompanyId?: true
    smsCostTransactional?: true
    smsCostPromotional?: true
  }

  export type DepartmentMinAggregateInputType = {
    id?: true
    uuid?: true
    companyId?: true
    name?: true
    externalCompanyId?: true
    smsCostTransactional?: true
    smsCostPromotional?: true
    is_enabled?: true
    callBackUrl?: true
    Signature?: true
    createdAt?: true
    updatedAt?: true
    deletedAt?: true
  }

  export type DepartmentMaxAggregateInputType = {
    id?: true
    uuid?: true
    companyId?: true
    name?: true
    externalCompanyId?: true
    smsCostTransactional?: true
    smsCostPromotional?: true
    is_enabled?: true
    callBackUrl?: true
    Signature?: true
    createdAt?: true
    updatedAt?: true
    deletedAt?: true
  }

  export type DepartmentCountAggregateInputType = {
    id?: true
    uuid?: true
    companyId?: true
    name?: true
    externalCompanyId?: true
    smsCostTransactional?: true
    smsCostPromotional?: true
    is_enabled?: true
    callBackUrl?: true
    Signature?: true
    createdAt?: true
    updatedAt?: true
    deletedAt?: true
    _all?: true
  }

  export type DepartmentAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Department to aggregate.
     */
    where?: DepartmentWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Departments to fetch.
     */
    orderBy?: DepartmentOrderByWithRelationInput | DepartmentOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: DepartmentWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Departments from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Departments.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned Departments
    **/
    _count?: true | DepartmentCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: DepartmentAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: DepartmentSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: DepartmentMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: DepartmentMaxAggregateInputType
  }

  export type GetDepartmentAggregateType<T extends DepartmentAggregateArgs> = {
        [P in keyof T & keyof AggregateDepartment]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateDepartment[P]>
      : GetScalarType<T[P], AggregateDepartment[P]>
  }




  export type DepartmentGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: DepartmentWhereInput
    orderBy?: DepartmentOrderByWithAggregationInput | DepartmentOrderByWithAggregationInput[]
    by: DepartmentScalarFieldEnum[] | DepartmentScalarFieldEnum
    having?: DepartmentScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: DepartmentCountAggregateInputType | true
    _avg?: DepartmentAvgAggregateInputType
    _sum?: DepartmentSumAggregateInputType
    _min?: DepartmentMinAggregateInputType
    _max?: DepartmentMaxAggregateInputType
  }

  export type DepartmentGroupByOutputType = {
    id: number
    uuid: string
    companyId: number
    name: string
    externalCompanyId: number | null
    smsCostTransactional: number | null
    smsCostPromotional: number | null
    is_enabled: boolean
    callBackUrl: string | null
    Signature: string | null
    createdAt: Date
    updatedAt: Date
    deletedAt: Date | null
    _count: DepartmentCountAggregateOutputType | null
    _avg: DepartmentAvgAggregateOutputType | null
    _sum: DepartmentSumAggregateOutputType | null
    _min: DepartmentMinAggregateOutputType | null
    _max: DepartmentMaxAggregateOutputType | null
  }

  type GetDepartmentGroupByPayload<T extends DepartmentGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<DepartmentGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof DepartmentGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], DepartmentGroupByOutputType[P]>
            : GetScalarType<T[P], DepartmentGroupByOutputType[P]>
        }
      >
    >


  export type DepartmentSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    uuid?: boolean
    companyId?: boolean
    name?: boolean
    externalCompanyId?: boolean
    smsCostTransactional?: boolean
    smsCostPromotional?: boolean
    is_enabled?: boolean
    callBackUrl?: boolean
    Signature?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    deletedAt?: boolean
    company?: boolean | CompanyDefaultArgs<ExtArgs>
    smsTemplates?: boolean | Department$smsTemplatesArgs<ExtArgs>
    senderMasks?: boolean | Department$senderMasksArgs<ExtArgs>
    _count?: boolean | DepartmentCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["department"]>



  export type DepartmentSelectScalar = {
    id?: boolean
    uuid?: boolean
    companyId?: boolean
    name?: boolean
    externalCompanyId?: boolean
    smsCostTransactional?: boolean
    smsCostPromotional?: boolean
    is_enabled?: boolean
    callBackUrl?: boolean
    Signature?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    deletedAt?: boolean
  }

  export type DepartmentOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "uuid" | "companyId" | "name" | "externalCompanyId" | "smsCostTransactional" | "smsCostPromotional" | "is_enabled" | "callBackUrl" | "Signature" | "createdAt" | "updatedAt" | "deletedAt", ExtArgs["result"]["department"]>
  export type DepartmentInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    company?: boolean | CompanyDefaultArgs<ExtArgs>
    smsTemplates?: boolean | Department$smsTemplatesArgs<ExtArgs>
    senderMasks?: boolean | Department$senderMasksArgs<ExtArgs>
    _count?: boolean | DepartmentCountOutputTypeDefaultArgs<ExtArgs>
  }

  export type $DepartmentPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "Department"
    objects: {
      company: Prisma.$CompanyPayload<ExtArgs>
      smsTemplates: Prisma.$SMS_TemplatePayload<ExtArgs>[]
      senderMasks: Prisma.$DepartmentSenderMaskPayload<ExtArgs>[]
    }
    scalars: $Extensions.GetPayloadResult<{
      id: number
      uuid: string
      companyId: number
      name: string
      externalCompanyId: number | null
      smsCostTransactional: number | null
      smsCostPromotional: number | null
      is_enabled: boolean
      callBackUrl: string | null
      Signature: string | null
      createdAt: Date
      updatedAt: Date
      deletedAt: Date | null
    }, ExtArgs["result"]["department"]>
    composites: {}
  }

  type DepartmentGetPayload<S extends boolean | null | undefined | DepartmentDefaultArgs> = $Result.GetResult<Prisma.$DepartmentPayload, S>

  type DepartmentCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<DepartmentFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: DepartmentCountAggregateInputType | true
    }

  export interface DepartmentDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['Department'], meta: { name: 'Department' } }
    /**
     * Find zero or one Department that matches the filter.
     * @param {DepartmentFindUniqueArgs} args - Arguments to find a Department
     * @example
     * // Get one Department
     * const department = await prisma.department.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends DepartmentFindUniqueArgs>(args: SelectSubset<T, DepartmentFindUniqueArgs<ExtArgs>>): Prisma__DepartmentClient<$Result.GetResult<Prisma.$DepartmentPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one Department that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {DepartmentFindUniqueOrThrowArgs} args - Arguments to find a Department
     * @example
     * // Get one Department
     * const department = await prisma.department.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends DepartmentFindUniqueOrThrowArgs>(args: SelectSubset<T, DepartmentFindUniqueOrThrowArgs<ExtArgs>>): Prisma__DepartmentClient<$Result.GetResult<Prisma.$DepartmentPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Department that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DepartmentFindFirstArgs} args - Arguments to find a Department
     * @example
     * // Get one Department
     * const department = await prisma.department.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends DepartmentFindFirstArgs>(args?: SelectSubset<T, DepartmentFindFirstArgs<ExtArgs>>): Prisma__DepartmentClient<$Result.GetResult<Prisma.$DepartmentPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Department that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DepartmentFindFirstOrThrowArgs} args - Arguments to find a Department
     * @example
     * // Get one Department
     * const department = await prisma.department.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends DepartmentFindFirstOrThrowArgs>(args?: SelectSubset<T, DepartmentFindFirstOrThrowArgs<ExtArgs>>): Prisma__DepartmentClient<$Result.GetResult<Prisma.$DepartmentPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more Departments that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DepartmentFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Departments
     * const departments = await prisma.department.findMany()
     * 
     * // Get first 10 Departments
     * const departments = await prisma.department.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const departmentWithIdOnly = await prisma.department.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends DepartmentFindManyArgs>(args?: SelectSubset<T, DepartmentFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$DepartmentPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a Department.
     * @param {DepartmentCreateArgs} args - Arguments to create a Department.
     * @example
     * // Create one Department
     * const Department = await prisma.department.create({
     *   data: {
     *     // ... data to create a Department
     *   }
     * })
     * 
     */
    create<T extends DepartmentCreateArgs>(args: SelectSubset<T, DepartmentCreateArgs<ExtArgs>>): Prisma__DepartmentClient<$Result.GetResult<Prisma.$DepartmentPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many Departments.
     * @param {DepartmentCreateManyArgs} args - Arguments to create many Departments.
     * @example
     * // Create many Departments
     * const department = await prisma.department.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends DepartmentCreateManyArgs>(args?: SelectSubset<T, DepartmentCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a Department.
     * @param {DepartmentDeleteArgs} args - Arguments to delete one Department.
     * @example
     * // Delete one Department
     * const Department = await prisma.department.delete({
     *   where: {
     *     // ... filter to delete one Department
     *   }
     * })
     * 
     */
    delete<T extends DepartmentDeleteArgs>(args: SelectSubset<T, DepartmentDeleteArgs<ExtArgs>>): Prisma__DepartmentClient<$Result.GetResult<Prisma.$DepartmentPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one Department.
     * @param {DepartmentUpdateArgs} args - Arguments to update one Department.
     * @example
     * // Update one Department
     * const department = await prisma.department.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends DepartmentUpdateArgs>(args: SelectSubset<T, DepartmentUpdateArgs<ExtArgs>>): Prisma__DepartmentClient<$Result.GetResult<Prisma.$DepartmentPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more Departments.
     * @param {DepartmentDeleteManyArgs} args - Arguments to filter Departments to delete.
     * @example
     * // Delete a few Departments
     * const { count } = await prisma.department.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends DepartmentDeleteManyArgs>(args?: SelectSubset<T, DepartmentDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Departments.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DepartmentUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many Departments
     * const department = await prisma.department.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends DepartmentUpdateManyArgs>(args: SelectSubset<T, DepartmentUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one Department.
     * @param {DepartmentUpsertArgs} args - Arguments to update or create a Department.
     * @example
     * // Update or create a Department
     * const department = await prisma.department.upsert({
     *   create: {
     *     // ... data to create a Department
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the Department we want to update
     *   }
     * })
     */
    upsert<T extends DepartmentUpsertArgs>(args: SelectSubset<T, DepartmentUpsertArgs<ExtArgs>>): Prisma__DepartmentClient<$Result.GetResult<Prisma.$DepartmentPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of Departments.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DepartmentCountArgs} args - Arguments to filter Departments to count.
     * @example
     * // Count the number of Departments
     * const count = await prisma.department.count({
     *   where: {
     *     // ... the filter for the Departments we want to count
     *   }
     * })
    **/
    count<T extends DepartmentCountArgs>(
      args?: Subset<T, DepartmentCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], DepartmentCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a Department.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DepartmentAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends DepartmentAggregateArgs>(args: Subset<T, DepartmentAggregateArgs>): Prisma.PrismaPromise<GetDepartmentAggregateType<T>>

    /**
     * Group by Department.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DepartmentGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends DepartmentGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: DepartmentGroupByArgs['orderBy'] }
        : { orderBy?: DepartmentGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, DepartmentGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetDepartmentGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the Department model
   */
  readonly fields: DepartmentFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for Department.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__DepartmentClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    company<T extends CompanyDefaultArgs<ExtArgs> = {}>(args?: Subset<T, CompanyDefaultArgs<ExtArgs>>): Prisma__CompanyClient<$Result.GetResult<Prisma.$CompanyPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    smsTemplates<T extends Department$smsTemplatesArgs<ExtArgs> = {}>(args?: Subset<T, Department$smsTemplatesArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$SMS_TemplatePayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    senderMasks<T extends Department$senderMasksArgs<ExtArgs> = {}>(args?: Subset<T, Department$senderMasksArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$DepartmentSenderMaskPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the Department model
   */
  interface DepartmentFieldRefs {
    readonly id: FieldRef<"Department", 'Int'>
    readonly uuid: FieldRef<"Department", 'String'>
    readonly companyId: FieldRef<"Department", 'Int'>
    readonly name: FieldRef<"Department", 'String'>
    readonly externalCompanyId: FieldRef<"Department", 'Int'>
    readonly smsCostTransactional: FieldRef<"Department", 'Float'>
    readonly smsCostPromotional: FieldRef<"Department", 'Float'>
    readonly is_enabled: FieldRef<"Department", 'Boolean'>
    readonly callBackUrl: FieldRef<"Department", 'String'>
    readonly Signature: FieldRef<"Department", 'String'>
    readonly createdAt: FieldRef<"Department", 'DateTime'>
    readonly updatedAt: FieldRef<"Department", 'DateTime'>
    readonly deletedAt: FieldRef<"Department", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * Department findUnique
   */
  export type DepartmentFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Department
     */
    select?: DepartmentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Department
     */
    omit?: DepartmentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentInclude<ExtArgs> | null
    /**
     * Filter, which Department to fetch.
     */
    where: DepartmentWhereUniqueInput
  }

  /**
   * Department findUniqueOrThrow
   */
  export type DepartmentFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Department
     */
    select?: DepartmentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Department
     */
    omit?: DepartmentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentInclude<ExtArgs> | null
    /**
     * Filter, which Department to fetch.
     */
    where: DepartmentWhereUniqueInput
  }

  /**
   * Department findFirst
   */
  export type DepartmentFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Department
     */
    select?: DepartmentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Department
     */
    omit?: DepartmentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentInclude<ExtArgs> | null
    /**
     * Filter, which Department to fetch.
     */
    where?: DepartmentWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Departments to fetch.
     */
    orderBy?: DepartmentOrderByWithRelationInput | DepartmentOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Departments.
     */
    cursor?: DepartmentWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Departments from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Departments.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Departments.
     */
    distinct?: DepartmentScalarFieldEnum | DepartmentScalarFieldEnum[]
  }

  /**
   * Department findFirstOrThrow
   */
  export type DepartmentFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Department
     */
    select?: DepartmentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Department
     */
    omit?: DepartmentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentInclude<ExtArgs> | null
    /**
     * Filter, which Department to fetch.
     */
    where?: DepartmentWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Departments to fetch.
     */
    orderBy?: DepartmentOrderByWithRelationInput | DepartmentOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Departments.
     */
    cursor?: DepartmentWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Departments from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Departments.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Departments.
     */
    distinct?: DepartmentScalarFieldEnum | DepartmentScalarFieldEnum[]
  }

  /**
   * Department findMany
   */
  export type DepartmentFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Department
     */
    select?: DepartmentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Department
     */
    omit?: DepartmentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentInclude<ExtArgs> | null
    /**
     * Filter, which Departments to fetch.
     */
    where?: DepartmentWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Departments to fetch.
     */
    orderBy?: DepartmentOrderByWithRelationInput | DepartmentOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing Departments.
     */
    cursor?: DepartmentWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Departments from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Departments.
     */
    skip?: number
    distinct?: DepartmentScalarFieldEnum | DepartmentScalarFieldEnum[]
  }

  /**
   * Department create
   */
  export type DepartmentCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Department
     */
    select?: DepartmentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Department
     */
    omit?: DepartmentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentInclude<ExtArgs> | null
    /**
     * The data needed to create a Department.
     */
    data: XOR<DepartmentCreateInput, DepartmentUncheckedCreateInput>
  }

  /**
   * Department createMany
   */
  export type DepartmentCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many Departments.
     */
    data: DepartmentCreateManyInput | DepartmentCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * Department update
   */
  export type DepartmentUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Department
     */
    select?: DepartmentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Department
     */
    omit?: DepartmentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentInclude<ExtArgs> | null
    /**
     * The data needed to update a Department.
     */
    data: XOR<DepartmentUpdateInput, DepartmentUncheckedUpdateInput>
    /**
     * Choose, which Department to update.
     */
    where: DepartmentWhereUniqueInput
  }

  /**
   * Department updateMany
   */
  export type DepartmentUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update Departments.
     */
    data: XOR<DepartmentUpdateManyMutationInput, DepartmentUncheckedUpdateManyInput>
    /**
     * Filter which Departments to update
     */
    where?: DepartmentWhereInput
    /**
     * Limit how many Departments to update.
     */
    limit?: number
  }

  /**
   * Department upsert
   */
  export type DepartmentUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Department
     */
    select?: DepartmentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Department
     */
    omit?: DepartmentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentInclude<ExtArgs> | null
    /**
     * The filter to search for the Department to update in case it exists.
     */
    where: DepartmentWhereUniqueInput
    /**
     * In case the Department found by the `where` argument doesn't exist, create a new Department with this data.
     */
    create: XOR<DepartmentCreateInput, DepartmentUncheckedCreateInput>
    /**
     * In case the Department was found with the provided `where` argument, update it with this data.
     */
    update: XOR<DepartmentUpdateInput, DepartmentUncheckedUpdateInput>
  }

  /**
   * Department delete
   */
  export type DepartmentDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Department
     */
    select?: DepartmentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Department
     */
    omit?: DepartmentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentInclude<ExtArgs> | null
    /**
     * Filter which Department to delete.
     */
    where: DepartmentWhereUniqueInput
  }

  /**
   * Department deleteMany
   */
  export type DepartmentDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Departments to delete
     */
    where?: DepartmentWhereInput
    /**
     * Limit how many Departments to delete.
     */
    limit?: number
  }

  /**
   * Department.smsTemplates
   */
  export type Department$smsTemplatesArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Template
     */
    select?: SMS_TemplateSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Template
     */
    omit?: SMS_TemplateOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_TemplateInclude<ExtArgs> | null
    where?: SMS_TemplateWhereInput
    orderBy?: SMS_TemplateOrderByWithRelationInput | SMS_TemplateOrderByWithRelationInput[]
    cursor?: SMS_TemplateWhereUniqueInput
    take?: number
    skip?: number
    distinct?: SMS_TemplateScalarFieldEnum | SMS_TemplateScalarFieldEnum[]
  }

  /**
   * Department.senderMasks
   */
  export type Department$senderMasksArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DepartmentSenderMask
     */
    select?: DepartmentSenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the DepartmentSenderMask
     */
    omit?: DepartmentSenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentSenderMaskInclude<ExtArgs> | null
    where?: DepartmentSenderMaskWhereInput
    orderBy?: DepartmentSenderMaskOrderByWithRelationInput | DepartmentSenderMaskOrderByWithRelationInput[]
    cursor?: DepartmentSenderMaskWhereUniqueInput
    take?: number
    skip?: number
    distinct?: DepartmentSenderMaskScalarFieldEnum | DepartmentSenderMaskScalarFieldEnum[]
  }

  /**
   * Department without action
   */
  export type DepartmentDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Department
     */
    select?: DepartmentSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Department
     */
    omit?: DepartmentOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentInclude<ExtArgs> | null
  }


  /**
   * Model SMS_Template
   */

  export type AggregateSMS_Template = {
    _count: SMS_TemplateCountAggregateOutputType | null
    _avg: SMS_TemplateAvgAggregateOutputType | null
    _sum: SMS_TemplateSumAggregateOutputType | null
    _min: SMS_TemplateMinAggregateOutputType | null
    _max: SMS_TemplateMaxAggregateOutputType | null
  }

  export type SMS_TemplateAvgAggregateOutputType = {
    id: number | null
    deptId: number | null
  }

  export type SMS_TemplateSumAggregateOutputType = {
    id: number | null
    deptId: number | null
  }

  export type SMS_TemplateMinAggregateOutputType = {
    id: number | null
    uuid: string | null
    deptId: number | null
    name: string | null
    text_content: string | null
    smsType: string | null
    createdAt: Date | null
    updatedAt: Date | null
    deletedAt: Date | null
  }

  export type SMS_TemplateMaxAggregateOutputType = {
    id: number | null
    uuid: string | null
    deptId: number | null
    name: string | null
    text_content: string | null
    smsType: string | null
    createdAt: Date | null
    updatedAt: Date | null
    deletedAt: Date | null
  }

  export type SMS_TemplateCountAggregateOutputType = {
    id: number
    uuid: number
    deptId: number
    name: number
    text_content: number
    smsType: number
    createdAt: number
    updatedAt: number
    deletedAt: number
    _all: number
  }


  export type SMS_TemplateAvgAggregateInputType = {
    id?: true
    deptId?: true
  }

  export type SMS_TemplateSumAggregateInputType = {
    id?: true
    deptId?: true
  }

  export type SMS_TemplateMinAggregateInputType = {
    id?: true
    uuid?: true
    deptId?: true
    name?: true
    text_content?: true
    smsType?: true
    createdAt?: true
    updatedAt?: true
    deletedAt?: true
  }

  export type SMS_TemplateMaxAggregateInputType = {
    id?: true
    uuid?: true
    deptId?: true
    name?: true
    text_content?: true
    smsType?: true
    createdAt?: true
    updatedAt?: true
    deletedAt?: true
  }

  export type SMS_TemplateCountAggregateInputType = {
    id?: true
    uuid?: true
    deptId?: true
    name?: true
    text_content?: true
    smsType?: true
    createdAt?: true
    updatedAt?: true
    deletedAt?: true
    _all?: true
  }

  export type SMS_TemplateAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which SMS_Template to aggregate.
     */
    where?: SMS_TemplateWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SMS_Templates to fetch.
     */
    orderBy?: SMS_TemplateOrderByWithRelationInput | SMS_TemplateOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: SMS_TemplateWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SMS_Templates from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SMS_Templates.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned SMS_Templates
    **/
    _count?: true | SMS_TemplateCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: SMS_TemplateAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: SMS_TemplateSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: SMS_TemplateMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: SMS_TemplateMaxAggregateInputType
  }

  export type GetSMS_TemplateAggregateType<T extends SMS_TemplateAggregateArgs> = {
        [P in keyof T & keyof AggregateSMS_Template]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateSMS_Template[P]>
      : GetScalarType<T[P], AggregateSMS_Template[P]>
  }




  export type SMS_TemplateGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: SMS_TemplateWhereInput
    orderBy?: SMS_TemplateOrderByWithAggregationInput | SMS_TemplateOrderByWithAggregationInput[]
    by: SMS_TemplateScalarFieldEnum[] | SMS_TemplateScalarFieldEnum
    having?: SMS_TemplateScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: SMS_TemplateCountAggregateInputType | true
    _avg?: SMS_TemplateAvgAggregateInputType
    _sum?: SMS_TemplateSumAggregateInputType
    _min?: SMS_TemplateMinAggregateInputType
    _max?: SMS_TemplateMaxAggregateInputType
  }

  export type SMS_TemplateGroupByOutputType = {
    id: number
    uuid: string
    deptId: number
    name: string
    text_content: string
    smsType: string
    createdAt: Date
    updatedAt: Date
    deletedAt: Date | null
    _count: SMS_TemplateCountAggregateOutputType | null
    _avg: SMS_TemplateAvgAggregateOutputType | null
    _sum: SMS_TemplateSumAggregateOutputType | null
    _min: SMS_TemplateMinAggregateOutputType | null
    _max: SMS_TemplateMaxAggregateOutputType | null
  }

  type GetSMS_TemplateGroupByPayload<T extends SMS_TemplateGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<SMS_TemplateGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof SMS_TemplateGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], SMS_TemplateGroupByOutputType[P]>
            : GetScalarType<T[P], SMS_TemplateGroupByOutputType[P]>
        }
      >
    >


  export type SMS_TemplateSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    uuid?: boolean
    deptId?: boolean
    name?: boolean
    text_content?: boolean
    smsType?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    deletedAt?: boolean
    department?: boolean | DepartmentDefaultArgs<ExtArgs>
    campaigns?: boolean | SMS_Template$campaignsArgs<ExtArgs>
    _count?: boolean | SMS_TemplateCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["sMS_Template"]>



  export type SMS_TemplateSelectScalar = {
    id?: boolean
    uuid?: boolean
    deptId?: boolean
    name?: boolean
    text_content?: boolean
    smsType?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    deletedAt?: boolean
  }

  export type SMS_TemplateOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "uuid" | "deptId" | "name" | "text_content" | "smsType" | "createdAt" | "updatedAt" | "deletedAt", ExtArgs["result"]["sMS_Template"]>
  export type SMS_TemplateInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    department?: boolean | DepartmentDefaultArgs<ExtArgs>
    campaigns?: boolean | SMS_Template$campaignsArgs<ExtArgs>
    _count?: boolean | SMS_TemplateCountOutputTypeDefaultArgs<ExtArgs>
  }

  export type $SMS_TemplatePayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "SMS_Template"
    objects: {
      department: Prisma.$DepartmentPayload<ExtArgs>
      campaigns: Prisma.$CampaignPayload<ExtArgs>[]
    }
    scalars: $Extensions.GetPayloadResult<{
      id: number
      uuid: string
      deptId: number
      name: string
      text_content: string
      smsType: string
      createdAt: Date
      updatedAt: Date
      deletedAt: Date | null
    }, ExtArgs["result"]["sMS_Template"]>
    composites: {}
  }

  type SMS_TemplateGetPayload<S extends boolean | null | undefined | SMS_TemplateDefaultArgs> = $Result.GetResult<Prisma.$SMS_TemplatePayload, S>

  type SMS_TemplateCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<SMS_TemplateFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: SMS_TemplateCountAggregateInputType | true
    }

  export interface SMS_TemplateDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['SMS_Template'], meta: { name: 'SMS_Template' } }
    /**
     * Find zero or one SMS_Template that matches the filter.
     * @param {SMS_TemplateFindUniqueArgs} args - Arguments to find a SMS_Template
     * @example
     * // Get one SMS_Template
     * const sMS_Template = await prisma.sMS_Template.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends SMS_TemplateFindUniqueArgs>(args: SelectSubset<T, SMS_TemplateFindUniqueArgs<ExtArgs>>): Prisma__SMS_TemplateClient<$Result.GetResult<Prisma.$SMS_TemplatePayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one SMS_Template that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {SMS_TemplateFindUniqueOrThrowArgs} args - Arguments to find a SMS_Template
     * @example
     * // Get one SMS_Template
     * const sMS_Template = await prisma.sMS_Template.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends SMS_TemplateFindUniqueOrThrowArgs>(args: SelectSubset<T, SMS_TemplateFindUniqueOrThrowArgs<ExtArgs>>): Prisma__SMS_TemplateClient<$Result.GetResult<Prisma.$SMS_TemplatePayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first SMS_Template that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SMS_TemplateFindFirstArgs} args - Arguments to find a SMS_Template
     * @example
     * // Get one SMS_Template
     * const sMS_Template = await prisma.sMS_Template.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends SMS_TemplateFindFirstArgs>(args?: SelectSubset<T, SMS_TemplateFindFirstArgs<ExtArgs>>): Prisma__SMS_TemplateClient<$Result.GetResult<Prisma.$SMS_TemplatePayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first SMS_Template that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SMS_TemplateFindFirstOrThrowArgs} args - Arguments to find a SMS_Template
     * @example
     * // Get one SMS_Template
     * const sMS_Template = await prisma.sMS_Template.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends SMS_TemplateFindFirstOrThrowArgs>(args?: SelectSubset<T, SMS_TemplateFindFirstOrThrowArgs<ExtArgs>>): Prisma__SMS_TemplateClient<$Result.GetResult<Prisma.$SMS_TemplatePayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more SMS_Templates that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SMS_TemplateFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all SMS_Templates
     * const sMS_Templates = await prisma.sMS_Template.findMany()
     * 
     * // Get first 10 SMS_Templates
     * const sMS_Templates = await prisma.sMS_Template.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const sMS_TemplateWithIdOnly = await prisma.sMS_Template.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends SMS_TemplateFindManyArgs>(args?: SelectSubset<T, SMS_TemplateFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$SMS_TemplatePayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a SMS_Template.
     * @param {SMS_TemplateCreateArgs} args - Arguments to create a SMS_Template.
     * @example
     * // Create one SMS_Template
     * const SMS_Template = await prisma.sMS_Template.create({
     *   data: {
     *     // ... data to create a SMS_Template
     *   }
     * })
     * 
     */
    create<T extends SMS_TemplateCreateArgs>(args: SelectSubset<T, SMS_TemplateCreateArgs<ExtArgs>>): Prisma__SMS_TemplateClient<$Result.GetResult<Prisma.$SMS_TemplatePayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many SMS_Templates.
     * @param {SMS_TemplateCreateManyArgs} args - Arguments to create many SMS_Templates.
     * @example
     * // Create many SMS_Templates
     * const sMS_Template = await prisma.sMS_Template.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends SMS_TemplateCreateManyArgs>(args?: SelectSubset<T, SMS_TemplateCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a SMS_Template.
     * @param {SMS_TemplateDeleteArgs} args - Arguments to delete one SMS_Template.
     * @example
     * // Delete one SMS_Template
     * const SMS_Template = await prisma.sMS_Template.delete({
     *   where: {
     *     // ... filter to delete one SMS_Template
     *   }
     * })
     * 
     */
    delete<T extends SMS_TemplateDeleteArgs>(args: SelectSubset<T, SMS_TemplateDeleteArgs<ExtArgs>>): Prisma__SMS_TemplateClient<$Result.GetResult<Prisma.$SMS_TemplatePayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one SMS_Template.
     * @param {SMS_TemplateUpdateArgs} args - Arguments to update one SMS_Template.
     * @example
     * // Update one SMS_Template
     * const sMS_Template = await prisma.sMS_Template.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends SMS_TemplateUpdateArgs>(args: SelectSubset<T, SMS_TemplateUpdateArgs<ExtArgs>>): Prisma__SMS_TemplateClient<$Result.GetResult<Prisma.$SMS_TemplatePayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more SMS_Templates.
     * @param {SMS_TemplateDeleteManyArgs} args - Arguments to filter SMS_Templates to delete.
     * @example
     * // Delete a few SMS_Templates
     * const { count } = await prisma.sMS_Template.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends SMS_TemplateDeleteManyArgs>(args?: SelectSubset<T, SMS_TemplateDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more SMS_Templates.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SMS_TemplateUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many SMS_Templates
     * const sMS_Template = await prisma.sMS_Template.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends SMS_TemplateUpdateManyArgs>(args: SelectSubset<T, SMS_TemplateUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one SMS_Template.
     * @param {SMS_TemplateUpsertArgs} args - Arguments to update or create a SMS_Template.
     * @example
     * // Update or create a SMS_Template
     * const sMS_Template = await prisma.sMS_Template.upsert({
     *   create: {
     *     // ... data to create a SMS_Template
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the SMS_Template we want to update
     *   }
     * })
     */
    upsert<T extends SMS_TemplateUpsertArgs>(args: SelectSubset<T, SMS_TemplateUpsertArgs<ExtArgs>>): Prisma__SMS_TemplateClient<$Result.GetResult<Prisma.$SMS_TemplatePayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of SMS_Templates.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SMS_TemplateCountArgs} args - Arguments to filter SMS_Templates to count.
     * @example
     * // Count the number of SMS_Templates
     * const count = await prisma.sMS_Template.count({
     *   where: {
     *     // ... the filter for the SMS_Templates we want to count
     *   }
     * })
    **/
    count<T extends SMS_TemplateCountArgs>(
      args?: Subset<T, SMS_TemplateCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], SMS_TemplateCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a SMS_Template.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SMS_TemplateAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends SMS_TemplateAggregateArgs>(args: Subset<T, SMS_TemplateAggregateArgs>): Prisma.PrismaPromise<GetSMS_TemplateAggregateType<T>>

    /**
     * Group by SMS_Template.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SMS_TemplateGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends SMS_TemplateGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: SMS_TemplateGroupByArgs['orderBy'] }
        : { orderBy?: SMS_TemplateGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, SMS_TemplateGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetSMS_TemplateGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the SMS_Template model
   */
  readonly fields: SMS_TemplateFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for SMS_Template.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__SMS_TemplateClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    department<T extends DepartmentDefaultArgs<ExtArgs> = {}>(args?: Subset<T, DepartmentDefaultArgs<ExtArgs>>): Prisma__DepartmentClient<$Result.GetResult<Prisma.$DepartmentPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    campaigns<T extends SMS_Template$campaignsArgs<ExtArgs> = {}>(args?: Subset<T, SMS_Template$campaignsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$CampaignPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the SMS_Template model
   */
  interface SMS_TemplateFieldRefs {
    readonly id: FieldRef<"SMS_Template", 'Int'>
    readonly uuid: FieldRef<"SMS_Template", 'String'>
    readonly deptId: FieldRef<"SMS_Template", 'Int'>
    readonly name: FieldRef<"SMS_Template", 'String'>
    readonly text_content: FieldRef<"SMS_Template", 'String'>
    readonly smsType: FieldRef<"SMS_Template", 'String'>
    readonly createdAt: FieldRef<"SMS_Template", 'DateTime'>
    readonly updatedAt: FieldRef<"SMS_Template", 'DateTime'>
    readonly deletedAt: FieldRef<"SMS_Template", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * SMS_Template findUnique
   */
  export type SMS_TemplateFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Template
     */
    select?: SMS_TemplateSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Template
     */
    omit?: SMS_TemplateOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_TemplateInclude<ExtArgs> | null
    /**
     * Filter, which SMS_Template to fetch.
     */
    where: SMS_TemplateWhereUniqueInput
  }

  /**
   * SMS_Template findUniqueOrThrow
   */
  export type SMS_TemplateFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Template
     */
    select?: SMS_TemplateSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Template
     */
    omit?: SMS_TemplateOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_TemplateInclude<ExtArgs> | null
    /**
     * Filter, which SMS_Template to fetch.
     */
    where: SMS_TemplateWhereUniqueInput
  }

  /**
   * SMS_Template findFirst
   */
  export type SMS_TemplateFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Template
     */
    select?: SMS_TemplateSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Template
     */
    omit?: SMS_TemplateOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_TemplateInclude<ExtArgs> | null
    /**
     * Filter, which SMS_Template to fetch.
     */
    where?: SMS_TemplateWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SMS_Templates to fetch.
     */
    orderBy?: SMS_TemplateOrderByWithRelationInput | SMS_TemplateOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for SMS_Templates.
     */
    cursor?: SMS_TemplateWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SMS_Templates from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SMS_Templates.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of SMS_Templates.
     */
    distinct?: SMS_TemplateScalarFieldEnum | SMS_TemplateScalarFieldEnum[]
  }

  /**
   * SMS_Template findFirstOrThrow
   */
  export type SMS_TemplateFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Template
     */
    select?: SMS_TemplateSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Template
     */
    omit?: SMS_TemplateOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_TemplateInclude<ExtArgs> | null
    /**
     * Filter, which SMS_Template to fetch.
     */
    where?: SMS_TemplateWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SMS_Templates to fetch.
     */
    orderBy?: SMS_TemplateOrderByWithRelationInput | SMS_TemplateOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for SMS_Templates.
     */
    cursor?: SMS_TemplateWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SMS_Templates from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SMS_Templates.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of SMS_Templates.
     */
    distinct?: SMS_TemplateScalarFieldEnum | SMS_TemplateScalarFieldEnum[]
  }

  /**
   * SMS_Template findMany
   */
  export type SMS_TemplateFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Template
     */
    select?: SMS_TemplateSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Template
     */
    omit?: SMS_TemplateOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_TemplateInclude<ExtArgs> | null
    /**
     * Filter, which SMS_Templates to fetch.
     */
    where?: SMS_TemplateWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SMS_Templates to fetch.
     */
    orderBy?: SMS_TemplateOrderByWithRelationInput | SMS_TemplateOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing SMS_Templates.
     */
    cursor?: SMS_TemplateWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SMS_Templates from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SMS_Templates.
     */
    skip?: number
    distinct?: SMS_TemplateScalarFieldEnum | SMS_TemplateScalarFieldEnum[]
  }

  /**
   * SMS_Template create
   */
  export type SMS_TemplateCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Template
     */
    select?: SMS_TemplateSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Template
     */
    omit?: SMS_TemplateOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_TemplateInclude<ExtArgs> | null
    /**
     * The data needed to create a SMS_Template.
     */
    data: XOR<SMS_TemplateCreateInput, SMS_TemplateUncheckedCreateInput>
  }

  /**
   * SMS_Template createMany
   */
  export type SMS_TemplateCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many SMS_Templates.
     */
    data: SMS_TemplateCreateManyInput | SMS_TemplateCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * SMS_Template update
   */
  export type SMS_TemplateUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Template
     */
    select?: SMS_TemplateSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Template
     */
    omit?: SMS_TemplateOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_TemplateInclude<ExtArgs> | null
    /**
     * The data needed to update a SMS_Template.
     */
    data: XOR<SMS_TemplateUpdateInput, SMS_TemplateUncheckedUpdateInput>
    /**
     * Choose, which SMS_Template to update.
     */
    where: SMS_TemplateWhereUniqueInput
  }

  /**
   * SMS_Template updateMany
   */
  export type SMS_TemplateUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update SMS_Templates.
     */
    data: XOR<SMS_TemplateUpdateManyMutationInput, SMS_TemplateUncheckedUpdateManyInput>
    /**
     * Filter which SMS_Templates to update
     */
    where?: SMS_TemplateWhereInput
    /**
     * Limit how many SMS_Templates to update.
     */
    limit?: number
  }

  /**
   * SMS_Template upsert
   */
  export type SMS_TemplateUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Template
     */
    select?: SMS_TemplateSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Template
     */
    omit?: SMS_TemplateOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_TemplateInclude<ExtArgs> | null
    /**
     * The filter to search for the SMS_Template to update in case it exists.
     */
    where: SMS_TemplateWhereUniqueInput
    /**
     * In case the SMS_Template found by the `where` argument doesn't exist, create a new SMS_Template with this data.
     */
    create: XOR<SMS_TemplateCreateInput, SMS_TemplateUncheckedCreateInput>
    /**
     * In case the SMS_Template was found with the provided `where` argument, update it with this data.
     */
    update: XOR<SMS_TemplateUpdateInput, SMS_TemplateUncheckedUpdateInput>
  }

  /**
   * SMS_Template delete
   */
  export type SMS_TemplateDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Template
     */
    select?: SMS_TemplateSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Template
     */
    omit?: SMS_TemplateOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_TemplateInclude<ExtArgs> | null
    /**
     * Filter which SMS_Template to delete.
     */
    where: SMS_TemplateWhereUniqueInput
  }

  /**
   * SMS_Template deleteMany
   */
  export type SMS_TemplateDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which SMS_Templates to delete
     */
    where?: SMS_TemplateWhereInput
    /**
     * Limit how many SMS_Templates to delete.
     */
    limit?: number
  }

  /**
   * SMS_Template.campaigns
   */
  export type SMS_Template$campaignsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Campaign
     */
    select?: CampaignSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Campaign
     */
    omit?: CampaignOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignInclude<ExtArgs> | null
    where?: CampaignWhereInput
    orderBy?: CampaignOrderByWithRelationInput | CampaignOrderByWithRelationInput[]
    cursor?: CampaignWhereUniqueInput
    take?: number
    skip?: number
    distinct?: CampaignScalarFieldEnum | CampaignScalarFieldEnum[]
  }

  /**
   * SMS_Template without action
   */
  export type SMS_TemplateDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Template
     */
    select?: SMS_TemplateSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Template
     */
    omit?: SMS_TemplateOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_TemplateInclude<ExtArgs> | null
  }


  /**
   * Model SenderMask
   */

  export type AggregateSenderMask = {
    _count: SenderMaskCountAggregateOutputType | null
    _avg: SenderMaskAvgAggregateOutputType | null
    _sum: SenderMaskSumAggregateOutputType | null
    _min: SenderMaskMinAggregateOutputType | null
    _max: SenderMaskMaxAggregateOutputType | null
  }

  export type SenderMaskAvgAggregateOutputType = {
    id: number | null
    reservedAmount: number | null
    createdByUserId: number | null
    companyId: number | null
  }

  export type SenderMaskSumAggregateOutputType = {
    id: number | null
    reservedAmount: number | null
    createdByUserId: number | null
    companyId: number | null
  }

  export type SenderMaskMinAggregateOutputType = {
    id: number | null
    uuid: string | null
    maskName: string | null
    purpose: string | null
    is_default: boolean | null
    status: string | null
    maskType: string | null
    isExternal: boolean | null
    emailSent: boolean | null
    emailSentAt: Date | null
    approvalNotificationSent: boolean | null
    approvalNotificationSentAt: Date | null
    reservedAmount: number | null
    createdByUserId: number | null
    companyId: number | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type SenderMaskMaxAggregateOutputType = {
    id: number | null
    uuid: string | null
    maskName: string | null
    purpose: string | null
    is_default: boolean | null
    status: string | null
    maskType: string | null
    isExternal: boolean | null
    emailSent: boolean | null
    emailSentAt: Date | null
    approvalNotificationSent: boolean | null
    approvalNotificationSentAt: Date | null
    reservedAmount: number | null
    createdByUserId: number | null
    companyId: number | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type SenderMaskCountAggregateOutputType = {
    id: number
    uuid: number
    maskName: number
    purpose: number
    is_default: number
    status: number
    maskType: number
    isExternal: number
    emailSent: number
    emailSentAt: number
    approvalNotificationSent: number
    approvalNotificationSentAt: number
    reservedAmount: number
    createdByUserId: number
    companyId: number
    createdAt: number
    updatedAt: number
    _all: number
  }


  export type SenderMaskAvgAggregateInputType = {
    id?: true
    reservedAmount?: true
    createdByUserId?: true
    companyId?: true
  }

  export type SenderMaskSumAggregateInputType = {
    id?: true
    reservedAmount?: true
    createdByUserId?: true
    companyId?: true
  }

  export type SenderMaskMinAggregateInputType = {
    id?: true
    uuid?: true
    maskName?: true
    purpose?: true
    is_default?: true
    status?: true
    maskType?: true
    isExternal?: true
    emailSent?: true
    emailSentAt?: true
    approvalNotificationSent?: true
    approvalNotificationSentAt?: true
    reservedAmount?: true
    createdByUserId?: true
    companyId?: true
    createdAt?: true
    updatedAt?: true
  }

  export type SenderMaskMaxAggregateInputType = {
    id?: true
    uuid?: true
    maskName?: true
    purpose?: true
    is_default?: true
    status?: true
    maskType?: true
    isExternal?: true
    emailSent?: true
    emailSentAt?: true
    approvalNotificationSent?: true
    approvalNotificationSentAt?: true
    reservedAmount?: true
    createdByUserId?: true
    companyId?: true
    createdAt?: true
    updatedAt?: true
  }

  export type SenderMaskCountAggregateInputType = {
    id?: true
    uuid?: true
    maskName?: true
    purpose?: true
    is_default?: true
    status?: true
    maskType?: true
    isExternal?: true
    emailSent?: true
    emailSentAt?: true
    approvalNotificationSent?: true
    approvalNotificationSentAt?: true
    reservedAmount?: true
    createdByUserId?: true
    companyId?: true
    createdAt?: true
    updatedAt?: true
    _all?: true
  }

  export type SenderMaskAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which SenderMask to aggregate.
     */
    where?: SenderMaskWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SenderMasks to fetch.
     */
    orderBy?: SenderMaskOrderByWithRelationInput | SenderMaskOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: SenderMaskWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SenderMasks from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SenderMasks.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned SenderMasks
    **/
    _count?: true | SenderMaskCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: SenderMaskAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: SenderMaskSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: SenderMaskMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: SenderMaskMaxAggregateInputType
  }

  export type GetSenderMaskAggregateType<T extends SenderMaskAggregateArgs> = {
        [P in keyof T & keyof AggregateSenderMask]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateSenderMask[P]>
      : GetScalarType<T[P], AggregateSenderMask[P]>
  }




  export type SenderMaskGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: SenderMaskWhereInput
    orderBy?: SenderMaskOrderByWithAggregationInput | SenderMaskOrderByWithAggregationInput[]
    by: SenderMaskScalarFieldEnum[] | SenderMaskScalarFieldEnum
    having?: SenderMaskScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: SenderMaskCountAggregateInputType | true
    _avg?: SenderMaskAvgAggregateInputType
    _sum?: SenderMaskSumAggregateInputType
    _min?: SenderMaskMinAggregateInputType
    _max?: SenderMaskMaxAggregateInputType
  }

  export type SenderMaskGroupByOutputType = {
    id: number
    uuid: string
    maskName: string
    purpose: string
    is_default: boolean
    status: string
    maskType: string | null
    isExternal: boolean
    emailSent: boolean
    emailSentAt: Date | null
    approvalNotificationSent: boolean
    approvalNotificationSentAt: Date | null
    reservedAmount: number
    createdByUserId: number
    companyId: number | null
    createdAt: Date
    updatedAt: Date
    _count: SenderMaskCountAggregateOutputType | null
    _avg: SenderMaskAvgAggregateOutputType | null
    _sum: SenderMaskSumAggregateOutputType | null
    _min: SenderMaskMinAggregateOutputType | null
    _max: SenderMaskMaxAggregateOutputType | null
  }

  type GetSenderMaskGroupByPayload<T extends SenderMaskGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<SenderMaskGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof SenderMaskGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], SenderMaskGroupByOutputType[P]>
            : GetScalarType<T[P], SenderMaskGroupByOutputType[P]>
        }
      >
    >


  export type SenderMaskSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    uuid?: boolean
    maskName?: boolean
    purpose?: boolean
    is_default?: boolean
    status?: boolean
    maskType?: boolean
    isExternal?: boolean
    emailSent?: boolean
    emailSentAt?: boolean
    approvalNotificationSent?: boolean
    approvalNotificationSentAt?: boolean
    reservedAmount?: boolean
    createdByUserId?: boolean
    companyId?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    company?: boolean | SenderMask$companyArgs<ExtArgs>
    campaigns?: boolean | SenderMask$campaignsArgs<ExtArgs>
    departments?: boolean | SenderMask$departmentsArgs<ExtArgs>
    _count?: boolean | SenderMaskCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["senderMask"]>



  export type SenderMaskSelectScalar = {
    id?: boolean
    uuid?: boolean
    maskName?: boolean
    purpose?: boolean
    is_default?: boolean
    status?: boolean
    maskType?: boolean
    isExternal?: boolean
    emailSent?: boolean
    emailSentAt?: boolean
    approvalNotificationSent?: boolean
    approvalNotificationSentAt?: boolean
    reservedAmount?: boolean
    createdByUserId?: boolean
    companyId?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }

  export type SenderMaskOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "uuid" | "maskName" | "purpose" | "is_default" | "status" | "maskType" | "isExternal" | "emailSent" | "emailSentAt" | "approvalNotificationSent" | "approvalNotificationSentAt" | "reservedAmount" | "createdByUserId" | "companyId" | "createdAt" | "updatedAt", ExtArgs["result"]["senderMask"]>
  export type SenderMaskInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    company?: boolean | SenderMask$companyArgs<ExtArgs>
    campaigns?: boolean | SenderMask$campaignsArgs<ExtArgs>
    departments?: boolean | SenderMask$departmentsArgs<ExtArgs>
    _count?: boolean | SenderMaskCountOutputTypeDefaultArgs<ExtArgs>
  }

  export type $SenderMaskPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "SenderMask"
    objects: {
      company: Prisma.$CompanyPayload<ExtArgs> | null
      campaigns: Prisma.$CampaignPayload<ExtArgs>[]
      departments: Prisma.$DepartmentSenderMaskPayload<ExtArgs>[]
    }
    scalars: $Extensions.GetPayloadResult<{
      id: number
      uuid: string
      maskName: string
      purpose: string
      is_default: boolean
      status: string
      maskType: string | null
      isExternal: boolean
      emailSent: boolean
      emailSentAt: Date | null
      approvalNotificationSent: boolean
      approvalNotificationSentAt: Date | null
      reservedAmount: number
      createdByUserId: number
      companyId: number | null
      createdAt: Date
      updatedAt: Date
    }, ExtArgs["result"]["senderMask"]>
    composites: {}
  }

  type SenderMaskGetPayload<S extends boolean | null | undefined | SenderMaskDefaultArgs> = $Result.GetResult<Prisma.$SenderMaskPayload, S>

  type SenderMaskCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<SenderMaskFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: SenderMaskCountAggregateInputType | true
    }

  export interface SenderMaskDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['SenderMask'], meta: { name: 'SenderMask' } }
    /**
     * Find zero or one SenderMask that matches the filter.
     * @param {SenderMaskFindUniqueArgs} args - Arguments to find a SenderMask
     * @example
     * // Get one SenderMask
     * const senderMask = await prisma.senderMask.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends SenderMaskFindUniqueArgs>(args: SelectSubset<T, SenderMaskFindUniqueArgs<ExtArgs>>): Prisma__SenderMaskClient<$Result.GetResult<Prisma.$SenderMaskPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one SenderMask that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {SenderMaskFindUniqueOrThrowArgs} args - Arguments to find a SenderMask
     * @example
     * // Get one SenderMask
     * const senderMask = await prisma.senderMask.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends SenderMaskFindUniqueOrThrowArgs>(args: SelectSubset<T, SenderMaskFindUniqueOrThrowArgs<ExtArgs>>): Prisma__SenderMaskClient<$Result.GetResult<Prisma.$SenderMaskPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first SenderMask that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SenderMaskFindFirstArgs} args - Arguments to find a SenderMask
     * @example
     * // Get one SenderMask
     * const senderMask = await prisma.senderMask.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends SenderMaskFindFirstArgs>(args?: SelectSubset<T, SenderMaskFindFirstArgs<ExtArgs>>): Prisma__SenderMaskClient<$Result.GetResult<Prisma.$SenderMaskPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first SenderMask that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SenderMaskFindFirstOrThrowArgs} args - Arguments to find a SenderMask
     * @example
     * // Get one SenderMask
     * const senderMask = await prisma.senderMask.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends SenderMaskFindFirstOrThrowArgs>(args?: SelectSubset<T, SenderMaskFindFirstOrThrowArgs<ExtArgs>>): Prisma__SenderMaskClient<$Result.GetResult<Prisma.$SenderMaskPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more SenderMasks that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SenderMaskFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all SenderMasks
     * const senderMasks = await prisma.senderMask.findMany()
     * 
     * // Get first 10 SenderMasks
     * const senderMasks = await prisma.senderMask.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const senderMaskWithIdOnly = await prisma.senderMask.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends SenderMaskFindManyArgs>(args?: SelectSubset<T, SenderMaskFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$SenderMaskPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a SenderMask.
     * @param {SenderMaskCreateArgs} args - Arguments to create a SenderMask.
     * @example
     * // Create one SenderMask
     * const SenderMask = await prisma.senderMask.create({
     *   data: {
     *     // ... data to create a SenderMask
     *   }
     * })
     * 
     */
    create<T extends SenderMaskCreateArgs>(args: SelectSubset<T, SenderMaskCreateArgs<ExtArgs>>): Prisma__SenderMaskClient<$Result.GetResult<Prisma.$SenderMaskPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many SenderMasks.
     * @param {SenderMaskCreateManyArgs} args - Arguments to create many SenderMasks.
     * @example
     * // Create many SenderMasks
     * const senderMask = await prisma.senderMask.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends SenderMaskCreateManyArgs>(args?: SelectSubset<T, SenderMaskCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a SenderMask.
     * @param {SenderMaskDeleteArgs} args - Arguments to delete one SenderMask.
     * @example
     * // Delete one SenderMask
     * const SenderMask = await prisma.senderMask.delete({
     *   where: {
     *     // ... filter to delete one SenderMask
     *   }
     * })
     * 
     */
    delete<T extends SenderMaskDeleteArgs>(args: SelectSubset<T, SenderMaskDeleteArgs<ExtArgs>>): Prisma__SenderMaskClient<$Result.GetResult<Prisma.$SenderMaskPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one SenderMask.
     * @param {SenderMaskUpdateArgs} args - Arguments to update one SenderMask.
     * @example
     * // Update one SenderMask
     * const senderMask = await prisma.senderMask.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends SenderMaskUpdateArgs>(args: SelectSubset<T, SenderMaskUpdateArgs<ExtArgs>>): Prisma__SenderMaskClient<$Result.GetResult<Prisma.$SenderMaskPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more SenderMasks.
     * @param {SenderMaskDeleteManyArgs} args - Arguments to filter SenderMasks to delete.
     * @example
     * // Delete a few SenderMasks
     * const { count } = await prisma.senderMask.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends SenderMaskDeleteManyArgs>(args?: SelectSubset<T, SenderMaskDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more SenderMasks.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SenderMaskUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many SenderMasks
     * const senderMask = await prisma.senderMask.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends SenderMaskUpdateManyArgs>(args: SelectSubset<T, SenderMaskUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one SenderMask.
     * @param {SenderMaskUpsertArgs} args - Arguments to update or create a SenderMask.
     * @example
     * // Update or create a SenderMask
     * const senderMask = await prisma.senderMask.upsert({
     *   create: {
     *     // ... data to create a SenderMask
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the SenderMask we want to update
     *   }
     * })
     */
    upsert<T extends SenderMaskUpsertArgs>(args: SelectSubset<T, SenderMaskUpsertArgs<ExtArgs>>): Prisma__SenderMaskClient<$Result.GetResult<Prisma.$SenderMaskPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of SenderMasks.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SenderMaskCountArgs} args - Arguments to filter SenderMasks to count.
     * @example
     * // Count the number of SenderMasks
     * const count = await prisma.senderMask.count({
     *   where: {
     *     // ... the filter for the SenderMasks we want to count
     *   }
     * })
    **/
    count<T extends SenderMaskCountArgs>(
      args?: Subset<T, SenderMaskCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], SenderMaskCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a SenderMask.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SenderMaskAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends SenderMaskAggregateArgs>(args: Subset<T, SenderMaskAggregateArgs>): Prisma.PrismaPromise<GetSenderMaskAggregateType<T>>

    /**
     * Group by SenderMask.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SenderMaskGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends SenderMaskGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: SenderMaskGroupByArgs['orderBy'] }
        : { orderBy?: SenderMaskGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, SenderMaskGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetSenderMaskGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the SenderMask model
   */
  readonly fields: SenderMaskFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for SenderMask.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__SenderMaskClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    company<T extends SenderMask$companyArgs<ExtArgs> = {}>(args?: Subset<T, SenderMask$companyArgs<ExtArgs>>): Prisma__CompanyClient<$Result.GetResult<Prisma.$CompanyPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
    campaigns<T extends SenderMask$campaignsArgs<ExtArgs> = {}>(args?: Subset<T, SenderMask$campaignsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$CampaignPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    departments<T extends SenderMask$departmentsArgs<ExtArgs> = {}>(args?: Subset<T, SenderMask$departmentsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$DepartmentSenderMaskPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the SenderMask model
   */
  interface SenderMaskFieldRefs {
    readonly id: FieldRef<"SenderMask", 'Int'>
    readonly uuid: FieldRef<"SenderMask", 'String'>
    readonly maskName: FieldRef<"SenderMask", 'String'>
    readonly purpose: FieldRef<"SenderMask", 'String'>
    readonly is_default: FieldRef<"SenderMask", 'Boolean'>
    readonly status: FieldRef<"SenderMask", 'String'>
    readonly maskType: FieldRef<"SenderMask", 'String'>
    readonly isExternal: FieldRef<"SenderMask", 'Boolean'>
    readonly emailSent: FieldRef<"SenderMask", 'Boolean'>
    readonly emailSentAt: FieldRef<"SenderMask", 'DateTime'>
    readonly approvalNotificationSent: FieldRef<"SenderMask", 'Boolean'>
    readonly approvalNotificationSentAt: FieldRef<"SenderMask", 'DateTime'>
    readonly reservedAmount: FieldRef<"SenderMask", 'Float'>
    readonly createdByUserId: FieldRef<"SenderMask", 'Int'>
    readonly companyId: FieldRef<"SenderMask", 'Int'>
    readonly createdAt: FieldRef<"SenderMask", 'DateTime'>
    readonly updatedAt: FieldRef<"SenderMask", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * SenderMask findUnique
   */
  export type SenderMaskFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SenderMask
     */
    select?: SenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SenderMask
     */
    omit?: SenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SenderMaskInclude<ExtArgs> | null
    /**
     * Filter, which SenderMask to fetch.
     */
    where: SenderMaskWhereUniqueInput
  }

  /**
   * SenderMask findUniqueOrThrow
   */
  export type SenderMaskFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SenderMask
     */
    select?: SenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SenderMask
     */
    omit?: SenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SenderMaskInclude<ExtArgs> | null
    /**
     * Filter, which SenderMask to fetch.
     */
    where: SenderMaskWhereUniqueInput
  }

  /**
   * SenderMask findFirst
   */
  export type SenderMaskFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SenderMask
     */
    select?: SenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SenderMask
     */
    omit?: SenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SenderMaskInclude<ExtArgs> | null
    /**
     * Filter, which SenderMask to fetch.
     */
    where?: SenderMaskWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SenderMasks to fetch.
     */
    orderBy?: SenderMaskOrderByWithRelationInput | SenderMaskOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for SenderMasks.
     */
    cursor?: SenderMaskWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SenderMasks from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SenderMasks.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of SenderMasks.
     */
    distinct?: SenderMaskScalarFieldEnum | SenderMaskScalarFieldEnum[]
  }

  /**
   * SenderMask findFirstOrThrow
   */
  export type SenderMaskFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SenderMask
     */
    select?: SenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SenderMask
     */
    omit?: SenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SenderMaskInclude<ExtArgs> | null
    /**
     * Filter, which SenderMask to fetch.
     */
    where?: SenderMaskWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SenderMasks to fetch.
     */
    orderBy?: SenderMaskOrderByWithRelationInput | SenderMaskOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for SenderMasks.
     */
    cursor?: SenderMaskWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SenderMasks from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SenderMasks.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of SenderMasks.
     */
    distinct?: SenderMaskScalarFieldEnum | SenderMaskScalarFieldEnum[]
  }

  /**
   * SenderMask findMany
   */
  export type SenderMaskFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SenderMask
     */
    select?: SenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SenderMask
     */
    omit?: SenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SenderMaskInclude<ExtArgs> | null
    /**
     * Filter, which SenderMasks to fetch.
     */
    where?: SenderMaskWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SenderMasks to fetch.
     */
    orderBy?: SenderMaskOrderByWithRelationInput | SenderMaskOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing SenderMasks.
     */
    cursor?: SenderMaskWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SenderMasks from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SenderMasks.
     */
    skip?: number
    distinct?: SenderMaskScalarFieldEnum | SenderMaskScalarFieldEnum[]
  }

  /**
   * SenderMask create
   */
  export type SenderMaskCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SenderMask
     */
    select?: SenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SenderMask
     */
    omit?: SenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SenderMaskInclude<ExtArgs> | null
    /**
     * The data needed to create a SenderMask.
     */
    data: XOR<SenderMaskCreateInput, SenderMaskUncheckedCreateInput>
  }

  /**
   * SenderMask createMany
   */
  export type SenderMaskCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many SenderMasks.
     */
    data: SenderMaskCreateManyInput | SenderMaskCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * SenderMask update
   */
  export type SenderMaskUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SenderMask
     */
    select?: SenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SenderMask
     */
    omit?: SenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SenderMaskInclude<ExtArgs> | null
    /**
     * The data needed to update a SenderMask.
     */
    data: XOR<SenderMaskUpdateInput, SenderMaskUncheckedUpdateInput>
    /**
     * Choose, which SenderMask to update.
     */
    where: SenderMaskWhereUniqueInput
  }

  /**
   * SenderMask updateMany
   */
  export type SenderMaskUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update SenderMasks.
     */
    data: XOR<SenderMaskUpdateManyMutationInput, SenderMaskUncheckedUpdateManyInput>
    /**
     * Filter which SenderMasks to update
     */
    where?: SenderMaskWhereInput
    /**
     * Limit how many SenderMasks to update.
     */
    limit?: number
  }

  /**
   * SenderMask upsert
   */
  export type SenderMaskUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SenderMask
     */
    select?: SenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SenderMask
     */
    omit?: SenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SenderMaskInclude<ExtArgs> | null
    /**
     * The filter to search for the SenderMask to update in case it exists.
     */
    where: SenderMaskWhereUniqueInput
    /**
     * In case the SenderMask found by the `where` argument doesn't exist, create a new SenderMask with this data.
     */
    create: XOR<SenderMaskCreateInput, SenderMaskUncheckedCreateInput>
    /**
     * In case the SenderMask was found with the provided `where` argument, update it with this data.
     */
    update: XOR<SenderMaskUpdateInput, SenderMaskUncheckedUpdateInput>
  }

  /**
   * SenderMask delete
   */
  export type SenderMaskDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SenderMask
     */
    select?: SenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SenderMask
     */
    omit?: SenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SenderMaskInclude<ExtArgs> | null
    /**
     * Filter which SenderMask to delete.
     */
    where: SenderMaskWhereUniqueInput
  }

  /**
   * SenderMask deleteMany
   */
  export type SenderMaskDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which SenderMasks to delete
     */
    where?: SenderMaskWhereInput
    /**
     * Limit how many SenderMasks to delete.
     */
    limit?: number
  }

  /**
   * SenderMask.company
   */
  export type SenderMask$companyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Company
     */
    select?: CompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the Company
     */
    omit?: CompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CompanyInclude<ExtArgs> | null
    where?: CompanyWhereInput
  }

  /**
   * SenderMask.campaigns
   */
  export type SenderMask$campaignsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Campaign
     */
    select?: CampaignSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Campaign
     */
    omit?: CampaignOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignInclude<ExtArgs> | null
    where?: CampaignWhereInput
    orderBy?: CampaignOrderByWithRelationInput | CampaignOrderByWithRelationInput[]
    cursor?: CampaignWhereUniqueInput
    take?: number
    skip?: number
    distinct?: CampaignScalarFieldEnum | CampaignScalarFieldEnum[]
  }

  /**
   * SenderMask.departments
   */
  export type SenderMask$departmentsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DepartmentSenderMask
     */
    select?: DepartmentSenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the DepartmentSenderMask
     */
    omit?: DepartmentSenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentSenderMaskInclude<ExtArgs> | null
    where?: DepartmentSenderMaskWhereInput
    orderBy?: DepartmentSenderMaskOrderByWithRelationInput | DepartmentSenderMaskOrderByWithRelationInput[]
    cursor?: DepartmentSenderMaskWhereUniqueInput
    take?: number
    skip?: number
    distinct?: DepartmentSenderMaskScalarFieldEnum | DepartmentSenderMaskScalarFieldEnum[]
  }

  /**
   * SenderMask without action
   */
  export type SenderMaskDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SenderMask
     */
    select?: SenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SenderMask
     */
    omit?: SenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SenderMaskInclude<ExtArgs> | null
  }


  /**
   * Model DepartmentSenderMask
   */

  export type AggregateDepartmentSenderMask = {
    _count: DepartmentSenderMaskCountAggregateOutputType | null
    _avg: DepartmentSenderMaskAvgAggregateOutputType | null
    _sum: DepartmentSenderMaskSumAggregateOutputType | null
    _min: DepartmentSenderMaskMinAggregateOutputType | null
    _max: DepartmentSenderMaskMaxAggregateOutputType | null
  }

  export type DepartmentSenderMaskAvgAggregateOutputType = {
    id: number | null
    senderMaskId: number | null
    deptId: number | null
  }

  export type DepartmentSenderMaskSumAggregateOutputType = {
    id: number | null
    senderMaskId: number | null
    deptId: number | null
  }

  export type DepartmentSenderMaskMinAggregateOutputType = {
    id: number | null
    uuid: string | null
    senderMaskId: number | null
    deptId: number | null
    assignedAt: Date | null
    deletedAt: Date | null
  }

  export type DepartmentSenderMaskMaxAggregateOutputType = {
    id: number | null
    uuid: string | null
    senderMaskId: number | null
    deptId: number | null
    assignedAt: Date | null
    deletedAt: Date | null
  }

  export type DepartmentSenderMaskCountAggregateOutputType = {
    id: number
    uuid: number
    senderMaskId: number
    deptId: number
    assignedAt: number
    deletedAt: number
    _all: number
  }


  export type DepartmentSenderMaskAvgAggregateInputType = {
    id?: true
    senderMaskId?: true
    deptId?: true
  }

  export type DepartmentSenderMaskSumAggregateInputType = {
    id?: true
    senderMaskId?: true
    deptId?: true
  }

  export type DepartmentSenderMaskMinAggregateInputType = {
    id?: true
    uuid?: true
    senderMaskId?: true
    deptId?: true
    assignedAt?: true
    deletedAt?: true
  }

  export type DepartmentSenderMaskMaxAggregateInputType = {
    id?: true
    uuid?: true
    senderMaskId?: true
    deptId?: true
    assignedAt?: true
    deletedAt?: true
  }

  export type DepartmentSenderMaskCountAggregateInputType = {
    id?: true
    uuid?: true
    senderMaskId?: true
    deptId?: true
    assignedAt?: true
    deletedAt?: true
    _all?: true
  }

  export type DepartmentSenderMaskAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which DepartmentSenderMask to aggregate.
     */
    where?: DepartmentSenderMaskWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of DepartmentSenderMasks to fetch.
     */
    orderBy?: DepartmentSenderMaskOrderByWithRelationInput | DepartmentSenderMaskOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: DepartmentSenderMaskWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` DepartmentSenderMasks from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` DepartmentSenderMasks.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned DepartmentSenderMasks
    **/
    _count?: true | DepartmentSenderMaskCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: DepartmentSenderMaskAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: DepartmentSenderMaskSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: DepartmentSenderMaskMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: DepartmentSenderMaskMaxAggregateInputType
  }

  export type GetDepartmentSenderMaskAggregateType<T extends DepartmentSenderMaskAggregateArgs> = {
        [P in keyof T & keyof AggregateDepartmentSenderMask]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateDepartmentSenderMask[P]>
      : GetScalarType<T[P], AggregateDepartmentSenderMask[P]>
  }




  export type DepartmentSenderMaskGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: DepartmentSenderMaskWhereInput
    orderBy?: DepartmentSenderMaskOrderByWithAggregationInput | DepartmentSenderMaskOrderByWithAggregationInput[]
    by: DepartmentSenderMaskScalarFieldEnum[] | DepartmentSenderMaskScalarFieldEnum
    having?: DepartmentSenderMaskScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: DepartmentSenderMaskCountAggregateInputType | true
    _avg?: DepartmentSenderMaskAvgAggregateInputType
    _sum?: DepartmentSenderMaskSumAggregateInputType
    _min?: DepartmentSenderMaskMinAggregateInputType
    _max?: DepartmentSenderMaskMaxAggregateInputType
  }

  export type DepartmentSenderMaskGroupByOutputType = {
    id: number
    uuid: string
    senderMaskId: number
    deptId: number
    assignedAt: Date
    deletedAt: Date | null
    _count: DepartmentSenderMaskCountAggregateOutputType | null
    _avg: DepartmentSenderMaskAvgAggregateOutputType | null
    _sum: DepartmentSenderMaskSumAggregateOutputType | null
    _min: DepartmentSenderMaskMinAggregateOutputType | null
    _max: DepartmentSenderMaskMaxAggregateOutputType | null
  }

  type GetDepartmentSenderMaskGroupByPayload<T extends DepartmentSenderMaskGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<DepartmentSenderMaskGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof DepartmentSenderMaskGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], DepartmentSenderMaskGroupByOutputType[P]>
            : GetScalarType<T[P], DepartmentSenderMaskGroupByOutputType[P]>
        }
      >
    >


  export type DepartmentSenderMaskSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    uuid?: boolean
    senderMaskId?: boolean
    deptId?: boolean
    assignedAt?: boolean
    deletedAt?: boolean
    senderMask?: boolean | SenderMaskDefaultArgs<ExtArgs>
    department?: boolean | DepartmentDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["departmentSenderMask"]>



  export type DepartmentSenderMaskSelectScalar = {
    id?: boolean
    uuid?: boolean
    senderMaskId?: boolean
    deptId?: boolean
    assignedAt?: boolean
    deletedAt?: boolean
  }

  export type DepartmentSenderMaskOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "uuid" | "senderMaskId" | "deptId" | "assignedAt" | "deletedAt", ExtArgs["result"]["departmentSenderMask"]>
  export type DepartmentSenderMaskInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    senderMask?: boolean | SenderMaskDefaultArgs<ExtArgs>
    department?: boolean | DepartmentDefaultArgs<ExtArgs>
  }

  export type $DepartmentSenderMaskPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "DepartmentSenderMask"
    objects: {
      senderMask: Prisma.$SenderMaskPayload<ExtArgs>
      department: Prisma.$DepartmentPayload<ExtArgs>
    }
    scalars: $Extensions.GetPayloadResult<{
      id: number
      uuid: string
      senderMaskId: number
      deptId: number
      assignedAt: Date
      deletedAt: Date | null
    }, ExtArgs["result"]["departmentSenderMask"]>
    composites: {}
  }

  type DepartmentSenderMaskGetPayload<S extends boolean | null | undefined | DepartmentSenderMaskDefaultArgs> = $Result.GetResult<Prisma.$DepartmentSenderMaskPayload, S>

  type DepartmentSenderMaskCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<DepartmentSenderMaskFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: DepartmentSenderMaskCountAggregateInputType | true
    }

  export interface DepartmentSenderMaskDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['DepartmentSenderMask'], meta: { name: 'DepartmentSenderMask' } }
    /**
     * Find zero or one DepartmentSenderMask that matches the filter.
     * @param {DepartmentSenderMaskFindUniqueArgs} args - Arguments to find a DepartmentSenderMask
     * @example
     * // Get one DepartmentSenderMask
     * const departmentSenderMask = await prisma.departmentSenderMask.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends DepartmentSenderMaskFindUniqueArgs>(args: SelectSubset<T, DepartmentSenderMaskFindUniqueArgs<ExtArgs>>): Prisma__DepartmentSenderMaskClient<$Result.GetResult<Prisma.$DepartmentSenderMaskPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one DepartmentSenderMask that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {DepartmentSenderMaskFindUniqueOrThrowArgs} args - Arguments to find a DepartmentSenderMask
     * @example
     * // Get one DepartmentSenderMask
     * const departmentSenderMask = await prisma.departmentSenderMask.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends DepartmentSenderMaskFindUniqueOrThrowArgs>(args: SelectSubset<T, DepartmentSenderMaskFindUniqueOrThrowArgs<ExtArgs>>): Prisma__DepartmentSenderMaskClient<$Result.GetResult<Prisma.$DepartmentSenderMaskPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first DepartmentSenderMask that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DepartmentSenderMaskFindFirstArgs} args - Arguments to find a DepartmentSenderMask
     * @example
     * // Get one DepartmentSenderMask
     * const departmentSenderMask = await prisma.departmentSenderMask.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends DepartmentSenderMaskFindFirstArgs>(args?: SelectSubset<T, DepartmentSenderMaskFindFirstArgs<ExtArgs>>): Prisma__DepartmentSenderMaskClient<$Result.GetResult<Prisma.$DepartmentSenderMaskPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first DepartmentSenderMask that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DepartmentSenderMaskFindFirstOrThrowArgs} args - Arguments to find a DepartmentSenderMask
     * @example
     * // Get one DepartmentSenderMask
     * const departmentSenderMask = await prisma.departmentSenderMask.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends DepartmentSenderMaskFindFirstOrThrowArgs>(args?: SelectSubset<T, DepartmentSenderMaskFindFirstOrThrowArgs<ExtArgs>>): Prisma__DepartmentSenderMaskClient<$Result.GetResult<Prisma.$DepartmentSenderMaskPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more DepartmentSenderMasks that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DepartmentSenderMaskFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all DepartmentSenderMasks
     * const departmentSenderMasks = await prisma.departmentSenderMask.findMany()
     * 
     * // Get first 10 DepartmentSenderMasks
     * const departmentSenderMasks = await prisma.departmentSenderMask.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const departmentSenderMaskWithIdOnly = await prisma.departmentSenderMask.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends DepartmentSenderMaskFindManyArgs>(args?: SelectSubset<T, DepartmentSenderMaskFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$DepartmentSenderMaskPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a DepartmentSenderMask.
     * @param {DepartmentSenderMaskCreateArgs} args - Arguments to create a DepartmentSenderMask.
     * @example
     * // Create one DepartmentSenderMask
     * const DepartmentSenderMask = await prisma.departmentSenderMask.create({
     *   data: {
     *     // ... data to create a DepartmentSenderMask
     *   }
     * })
     * 
     */
    create<T extends DepartmentSenderMaskCreateArgs>(args: SelectSubset<T, DepartmentSenderMaskCreateArgs<ExtArgs>>): Prisma__DepartmentSenderMaskClient<$Result.GetResult<Prisma.$DepartmentSenderMaskPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many DepartmentSenderMasks.
     * @param {DepartmentSenderMaskCreateManyArgs} args - Arguments to create many DepartmentSenderMasks.
     * @example
     * // Create many DepartmentSenderMasks
     * const departmentSenderMask = await prisma.departmentSenderMask.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends DepartmentSenderMaskCreateManyArgs>(args?: SelectSubset<T, DepartmentSenderMaskCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a DepartmentSenderMask.
     * @param {DepartmentSenderMaskDeleteArgs} args - Arguments to delete one DepartmentSenderMask.
     * @example
     * // Delete one DepartmentSenderMask
     * const DepartmentSenderMask = await prisma.departmentSenderMask.delete({
     *   where: {
     *     // ... filter to delete one DepartmentSenderMask
     *   }
     * })
     * 
     */
    delete<T extends DepartmentSenderMaskDeleteArgs>(args: SelectSubset<T, DepartmentSenderMaskDeleteArgs<ExtArgs>>): Prisma__DepartmentSenderMaskClient<$Result.GetResult<Prisma.$DepartmentSenderMaskPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one DepartmentSenderMask.
     * @param {DepartmentSenderMaskUpdateArgs} args - Arguments to update one DepartmentSenderMask.
     * @example
     * // Update one DepartmentSenderMask
     * const departmentSenderMask = await prisma.departmentSenderMask.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends DepartmentSenderMaskUpdateArgs>(args: SelectSubset<T, DepartmentSenderMaskUpdateArgs<ExtArgs>>): Prisma__DepartmentSenderMaskClient<$Result.GetResult<Prisma.$DepartmentSenderMaskPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more DepartmentSenderMasks.
     * @param {DepartmentSenderMaskDeleteManyArgs} args - Arguments to filter DepartmentSenderMasks to delete.
     * @example
     * // Delete a few DepartmentSenderMasks
     * const { count } = await prisma.departmentSenderMask.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends DepartmentSenderMaskDeleteManyArgs>(args?: SelectSubset<T, DepartmentSenderMaskDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more DepartmentSenderMasks.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DepartmentSenderMaskUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many DepartmentSenderMasks
     * const departmentSenderMask = await prisma.departmentSenderMask.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends DepartmentSenderMaskUpdateManyArgs>(args: SelectSubset<T, DepartmentSenderMaskUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one DepartmentSenderMask.
     * @param {DepartmentSenderMaskUpsertArgs} args - Arguments to update or create a DepartmentSenderMask.
     * @example
     * // Update or create a DepartmentSenderMask
     * const departmentSenderMask = await prisma.departmentSenderMask.upsert({
     *   create: {
     *     // ... data to create a DepartmentSenderMask
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the DepartmentSenderMask we want to update
     *   }
     * })
     */
    upsert<T extends DepartmentSenderMaskUpsertArgs>(args: SelectSubset<T, DepartmentSenderMaskUpsertArgs<ExtArgs>>): Prisma__DepartmentSenderMaskClient<$Result.GetResult<Prisma.$DepartmentSenderMaskPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of DepartmentSenderMasks.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DepartmentSenderMaskCountArgs} args - Arguments to filter DepartmentSenderMasks to count.
     * @example
     * // Count the number of DepartmentSenderMasks
     * const count = await prisma.departmentSenderMask.count({
     *   where: {
     *     // ... the filter for the DepartmentSenderMasks we want to count
     *   }
     * })
    **/
    count<T extends DepartmentSenderMaskCountArgs>(
      args?: Subset<T, DepartmentSenderMaskCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], DepartmentSenderMaskCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a DepartmentSenderMask.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DepartmentSenderMaskAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends DepartmentSenderMaskAggregateArgs>(args: Subset<T, DepartmentSenderMaskAggregateArgs>): Prisma.PrismaPromise<GetDepartmentSenderMaskAggregateType<T>>

    /**
     * Group by DepartmentSenderMask.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DepartmentSenderMaskGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends DepartmentSenderMaskGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: DepartmentSenderMaskGroupByArgs['orderBy'] }
        : { orderBy?: DepartmentSenderMaskGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, DepartmentSenderMaskGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetDepartmentSenderMaskGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the DepartmentSenderMask model
   */
  readonly fields: DepartmentSenderMaskFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for DepartmentSenderMask.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__DepartmentSenderMaskClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    senderMask<T extends SenderMaskDefaultArgs<ExtArgs> = {}>(args?: Subset<T, SenderMaskDefaultArgs<ExtArgs>>): Prisma__SenderMaskClient<$Result.GetResult<Prisma.$SenderMaskPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    department<T extends DepartmentDefaultArgs<ExtArgs> = {}>(args?: Subset<T, DepartmentDefaultArgs<ExtArgs>>): Prisma__DepartmentClient<$Result.GetResult<Prisma.$DepartmentPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the DepartmentSenderMask model
   */
  interface DepartmentSenderMaskFieldRefs {
    readonly id: FieldRef<"DepartmentSenderMask", 'Int'>
    readonly uuid: FieldRef<"DepartmentSenderMask", 'String'>
    readonly senderMaskId: FieldRef<"DepartmentSenderMask", 'Int'>
    readonly deptId: FieldRef<"DepartmentSenderMask", 'Int'>
    readonly assignedAt: FieldRef<"DepartmentSenderMask", 'DateTime'>
    readonly deletedAt: FieldRef<"DepartmentSenderMask", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * DepartmentSenderMask findUnique
   */
  export type DepartmentSenderMaskFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DepartmentSenderMask
     */
    select?: DepartmentSenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the DepartmentSenderMask
     */
    omit?: DepartmentSenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentSenderMaskInclude<ExtArgs> | null
    /**
     * Filter, which DepartmentSenderMask to fetch.
     */
    where: DepartmentSenderMaskWhereUniqueInput
  }

  /**
   * DepartmentSenderMask findUniqueOrThrow
   */
  export type DepartmentSenderMaskFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DepartmentSenderMask
     */
    select?: DepartmentSenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the DepartmentSenderMask
     */
    omit?: DepartmentSenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentSenderMaskInclude<ExtArgs> | null
    /**
     * Filter, which DepartmentSenderMask to fetch.
     */
    where: DepartmentSenderMaskWhereUniqueInput
  }

  /**
   * DepartmentSenderMask findFirst
   */
  export type DepartmentSenderMaskFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DepartmentSenderMask
     */
    select?: DepartmentSenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the DepartmentSenderMask
     */
    omit?: DepartmentSenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentSenderMaskInclude<ExtArgs> | null
    /**
     * Filter, which DepartmentSenderMask to fetch.
     */
    where?: DepartmentSenderMaskWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of DepartmentSenderMasks to fetch.
     */
    orderBy?: DepartmentSenderMaskOrderByWithRelationInput | DepartmentSenderMaskOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for DepartmentSenderMasks.
     */
    cursor?: DepartmentSenderMaskWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` DepartmentSenderMasks from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` DepartmentSenderMasks.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of DepartmentSenderMasks.
     */
    distinct?: DepartmentSenderMaskScalarFieldEnum | DepartmentSenderMaskScalarFieldEnum[]
  }

  /**
   * DepartmentSenderMask findFirstOrThrow
   */
  export type DepartmentSenderMaskFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DepartmentSenderMask
     */
    select?: DepartmentSenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the DepartmentSenderMask
     */
    omit?: DepartmentSenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentSenderMaskInclude<ExtArgs> | null
    /**
     * Filter, which DepartmentSenderMask to fetch.
     */
    where?: DepartmentSenderMaskWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of DepartmentSenderMasks to fetch.
     */
    orderBy?: DepartmentSenderMaskOrderByWithRelationInput | DepartmentSenderMaskOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for DepartmentSenderMasks.
     */
    cursor?: DepartmentSenderMaskWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` DepartmentSenderMasks from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` DepartmentSenderMasks.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of DepartmentSenderMasks.
     */
    distinct?: DepartmentSenderMaskScalarFieldEnum | DepartmentSenderMaskScalarFieldEnum[]
  }

  /**
   * DepartmentSenderMask findMany
   */
  export type DepartmentSenderMaskFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DepartmentSenderMask
     */
    select?: DepartmentSenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the DepartmentSenderMask
     */
    omit?: DepartmentSenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentSenderMaskInclude<ExtArgs> | null
    /**
     * Filter, which DepartmentSenderMasks to fetch.
     */
    where?: DepartmentSenderMaskWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of DepartmentSenderMasks to fetch.
     */
    orderBy?: DepartmentSenderMaskOrderByWithRelationInput | DepartmentSenderMaskOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing DepartmentSenderMasks.
     */
    cursor?: DepartmentSenderMaskWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` DepartmentSenderMasks from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` DepartmentSenderMasks.
     */
    skip?: number
    distinct?: DepartmentSenderMaskScalarFieldEnum | DepartmentSenderMaskScalarFieldEnum[]
  }

  /**
   * DepartmentSenderMask create
   */
  export type DepartmentSenderMaskCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DepartmentSenderMask
     */
    select?: DepartmentSenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the DepartmentSenderMask
     */
    omit?: DepartmentSenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentSenderMaskInclude<ExtArgs> | null
    /**
     * The data needed to create a DepartmentSenderMask.
     */
    data: XOR<DepartmentSenderMaskCreateInput, DepartmentSenderMaskUncheckedCreateInput>
  }

  /**
   * DepartmentSenderMask createMany
   */
  export type DepartmentSenderMaskCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many DepartmentSenderMasks.
     */
    data: DepartmentSenderMaskCreateManyInput | DepartmentSenderMaskCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * DepartmentSenderMask update
   */
  export type DepartmentSenderMaskUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DepartmentSenderMask
     */
    select?: DepartmentSenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the DepartmentSenderMask
     */
    omit?: DepartmentSenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentSenderMaskInclude<ExtArgs> | null
    /**
     * The data needed to update a DepartmentSenderMask.
     */
    data: XOR<DepartmentSenderMaskUpdateInput, DepartmentSenderMaskUncheckedUpdateInput>
    /**
     * Choose, which DepartmentSenderMask to update.
     */
    where: DepartmentSenderMaskWhereUniqueInput
  }

  /**
   * DepartmentSenderMask updateMany
   */
  export type DepartmentSenderMaskUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update DepartmentSenderMasks.
     */
    data: XOR<DepartmentSenderMaskUpdateManyMutationInput, DepartmentSenderMaskUncheckedUpdateManyInput>
    /**
     * Filter which DepartmentSenderMasks to update
     */
    where?: DepartmentSenderMaskWhereInput
    /**
     * Limit how many DepartmentSenderMasks to update.
     */
    limit?: number
  }

  /**
   * DepartmentSenderMask upsert
   */
  export type DepartmentSenderMaskUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DepartmentSenderMask
     */
    select?: DepartmentSenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the DepartmentSenderMask
     */
    omit?: DepartmentSenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentSenderMaskInclude<ExtArgs> | null
    /**
     * The filter to search for the DepartmentSenderMask to update in case it exists.
     */
    where: DepartmentSenderMaskWhereUniqueInput
    /**
     * In case the DepartmentSenderMask found by the `where` argument doesn't exist, create a new DepartmentSenderMask with this data.
     */
    create: XOR<DepartmentSenderMaskCreateInput, DepartmentSenderMaskUncheckedCreateInput>
    /**
     * In case the DepartmentSenderMask was found with the provided `where` argument, update it with this data.
     */
    update: XOR<DepartmentSenderMaskUpdateInput, DepartmentSenderMaskUncheckedUpdateInput>
  }

  /**
   * DepartmentSenderMask delete
   */
  export type DepartmentSenderMaskDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DepartmentSenderMask
     */
    select?: DepartmentSenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the DepartmentSenderMask
     */
    omit?: DepartmentSenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentSenderMaskInclude<ExtArgs> | null
    /**
     * Filter which DepartmentSenderMask to delete.
     */
    where: DepartmentSenderMaskWhereUniqueInput
  }

  /**
   * DepartmentSenderMask deleteMany
   */
  export type DepartmentSenderMaskDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which DepartmentSenderMasks to delete
     */
    where?: DepartmentSenderMaskWhereInput
    /**
     * Limit how many DepartmentSenderMasks to delete.
     */
    limit?: number
  }

  /**
   * DepartmentSenderMask without action
   */
  export type DepartmentSenderMaskDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DepartmentSenderMask
     */
    select?: DepartmentSenderMaskSelect<ExtArgs> | null
    /**
     * Omit specific fields from the DepartmentSenderMask
     */
    omit?: DepartmentSenderMaskOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DepartmentSenderMaskInclude<ExtArgs> | null
  }


  /**
   * Model ContactParamSettings
   */

  export type AggregateContactParamSettings = {
    _count: ContactParamSettingsCountAggregateOutputType | null
    _avg: ContactParamSettingsAvgAggregateOutputType | null
    _sum: ContactParamSettingsSumAggregateOutputType | null
    _min: ContactParamSettingsMinAggregateOutputType | null
    _max: ContactParamSettingsMaxAggregateOutputType | null
  }

  export type ContactParamSettingsAvgAggregateOutputType = {
    id: number | null
    companyId: number | null
  }

  export type ContactParamSettingsSumAggregateOutputType = {
    id: number | null
    companyId: number | null
  }

  export type ContactParamSettingsMinAggregateOutputType = {
    id: number | null
    companyId: number | null
    param1Label: string | null
    param2Label: string | null
    param3Label: string | null
    param4Label: string | null
    param5Label: string | null
    param6Label: string | null
    param7Label: string | null
    param8Label: string | null
    param9Label: string | null
    param10Label: string | null
    updatedAt: Date | null
  }

  export type ContactParamSettingsMaxAggregateOutputType = {
    id: number | null
    companyId: number | null
    param1Label: string | null
    param2Label: string | null
    param3Label: string | null
    param4Label: string | null
    param5Label: string | null
    param6Label: string | null
    param7Label: string | null
    param8Label: string | null
    param9Label: string | null
    param10Label: string | null
    updatedAt: Date | null
  }

  export type ContactParamSettingsCountAggregateOutputType = {
    id: number
    companyId: number
    param1Label: number
    param2Label: number
    param3Label: number
    param4Label: number
    param5Label: number
    param6Label: number
    param7Label: number
    param8Label: number
    param9Label: number
    param10Label: number
    updatedAt: number
    _all: number
  }


  export type ContactParamSettingsAvgAggregateInputType = {
    id?: true
    companyId?: true
  }

  export type ContactParamSettingsSumAggregateInputType = {
    id?: true
    companyId?: true
  }

  export type ContactParamSettingsMinAggregateInputType = {
    id?: true
    companyId?: true
    param1Label?: true
    param2Label?: true
    param3Label?: true
    param4Label?: true
    param5Label?: true
    param6Label?: true
    param7Label?: true
    param8Label?: true
    param9Label?: true
    param10Label?: true
    updatedAt?: true
  }

  export type ContactParamSettingsMaxAggregateInputType = {
    id?: true
    companyId?: true
    param1Label?: true
    param2Label?: true
    param3Label?: true
    param4Label?: true
    param5Label?: true
    param6Label?: true
    param7Label?: true
    param8Label?: true
    param9Label?: true
    param10Label?: true
    updatedAt?: true
  }

  export type ContactParamSettingsCountAggregateInputType = {
    id?: true
    companyId?: true
    param1Label?: true
    param2Label?: true
    param3Label?: true
    param4Label?: true
    param5Label?: true
    param6Label?: true
    param7Label?: true
    param8Label?: true
    param9Label?: true
    param10Label?: true
    updatedAt?: true
    _all?: true
  }

  export type ContactParamSettingsAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which ContactParamSettings to aggregate.
     */
    where?: ContactParamSettingsWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of ContactParamSettings to fetch.
     */
    orderBy?: ContactParamSettingsOrderByWithRelationInput | ContactParamSettingsOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: ContactParamSettingsWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` ContactParamSettings from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` ContactParamSettings.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned ContactParamSettings
    **/
    _count?: true | ContactParamSettingsCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: ContactParamSettingsAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: ContactParamSettingsSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: ContactParamSettingsMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: ContactParamSettingsMaxAggregateInputType
  }

  export type GetContactParamSettingsAggregateType<T extends ContactParamSettingsAggregateArgs> = {
        [P in keyof T & keyof AggregateContactParamSettings]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateContactParamSettings[P]>
      : GetScalarType<T[P], AggregateContactParamSettings[P]>
  }




  export type ContactParamSettingsGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: ContactParamSettingsWhereInput
    orderBy?: ContactParamSettingsOrderByWithAggregationInput | ContactParamSettingsOrderByWithAggregationInput[]
    by: ContactParamSettingsScalarFieldEnum[] | ContactParamSettingsScalarFieldEnum
    having?: ContactParamSettingsScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: ContactParamSettingsCountAggregateInputType | true
    _avg?: ContactParamSettingsAvgAggregateInputType
    _sum?: ContactParamSettingsSumAggregateInputType
    _min?: ContactParamSettingsMinAggregateInputType
    _max?: ContactParamSettingsMaxAggregateInputType
  }

  export type ContactParamSettingsGroupByOutputType = {
    id: number
    companyId: number
    param1Label: string | null
    param2Label: string | null
    param3Label: string | null
    param4Label: string | null
    param5Label: string | null
    param6Label: string | null
    param7Label: string | null
    param8Label: string | null
    param9Label: string | null
    param10Label: string | null
    updatedAt: Date
    _count: ContactParamSettingsCountAggregateOutputType | null
    _avg: ContactParamSettingsAvgAggregateOutputType | null
    _sum: ContactParamSettingsSumAggregateOutputType | null
    _min: ContactParamSettingsMinAggregateOutputType | null
    _max: ContactParamSettingsMaxAggregateOutputType | null
  }

  type GetContactParamSettingsGroupByPayload<T extends ContactParamSettingsGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<ContactParamSettingsGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof ContactParamSettingsGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], ContactParamSettingsGroupByOutputType[P]>
            : GetScalarType<T[P], ContactParamSettingsGroupByOutputType[P]>
        }
      >
    >


  export type ContactParamSettingsSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    companyId?: boolean
    param1Label?: boolean
    param2Label?: boolean
    param3Label?: boolean
    param4Label?: boolean
    param5Label?: boolean
    param6Label?: boolean
    param7Label?: boolean
    param8Label?: boolean
    param9Label?: boolean
    param10Label?: boolean
    updatedAt?: boolean
    company?: boolean | CompanyDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["contactParamSettings"]>



  export type ContactParamSettingsSelectScalar = {
    id?: boolean
    companyId?: boolean
    param1Label?: boolean
    param2Label?: boolean
    param3Label?: boolean
    param4Label?: boolean
    param5Label?: boolean
    param6Label?: boolean
    param7Label?: boolean
    param8Label?: boolean
    param9Label?: boolean
    param10Label?: boolean
    updatedAt?: boolean
  }

  export type ContactParamSettingsOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "companyId" | "param1Label" | "param2Label" | "param3Label" | "param4Label" | "param5Label" | "param6Label" | "param7Label" | "param8Label" | "param9Label" | "param10Label" | "updatedAt", ExtArgs["result"]["contactParamSettings"]>
  export type ContactParamSettingsInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    company?: boolean | CompanyDefaultArgs<ExtArgs>
  }

  export type $ContactParamSettingsPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "ContactParamSettings"
    objects: {
      company: Prisma.$CompanyPayload<ExtArgs>
    }
    scalars: $Extensions.GetPayloadResult<{
      id: number
      companyId: number
      param1Label: string | null
      param2Label: string | null
      param3Label: string | null
      param4Label: string | null
      param5Label: string | null
      param6Label: string | null
      param7Label: string | null
      param8Label: string | null
      param9Label: string | null
      param10Label: string | null
      updatedAt: Date
    }, ExtArgs["result"]["contactParamSettings"]>
    composites: {}
  }

  type ContactParamSettingsGetPayload<S extends boolean | null | undefined | ContactParamSettingsDefaultArgs> = $Result.GetResult<Prisma.$ContactParamSettingsPayload, S>

  type ContactParamSettingsCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<ContactParamSettingsFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: ContactParamSettingsCountAggregateInputType | true
    }

  export interface ContactParamSettingsDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['ContactParamSettings'], meta: { name: 'ContactParamSettings' } }
    /**
     * Find zero or one ContactParamSettings that matches the filter.
     * @param {ContactParamSettingsFindUniqueArgs} args - Arguments to find a ContactParamSettings
     * @example
     * // Get one ContactParamSettings
     * const contactParamSettings = await prisma.contactParamSettings.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends ContactParamSettingsFindUniqueArgs>(args: SelectSubset<T, ContactParamSettingsFindUniqueArgs<ExtArgs>>): Prisma__ContactParamSettingsClient<$Result.GetResult<Prisma.$ContactParamSettingsPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one ContactParamSettings that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {ContactParamSettingsFindUniqueOrThrowArgs} args - Arguments to find a ContactParamSettings
     * @example
     * // Get one ContactParamSettings
     * const contactParamSettings = await prisma.contactParamSettings.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends ContactParamSettingsFindUniqueOrThrowArgs>(args: SelectSubset<T, ContactParamSettingsFindUniqueOrThrowArgs<ExtArgs>>): Prisma__ContactParamSettingsClient<$Result.GetResult<Prisma.$ContactParamSettingsPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first ContactParamSettings that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ContactParamSettingsFindFirstArgs} args - Arguments to find a ContactParamSettings
     * @example
     * // Get one ContactParamSettings
     * const contactParamSettings = await prisma.contactParamSettings.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends ContactParamSettingsFindFirstArgs>(args?: SelectSubset<T, ContactParamSettingsFindFirstArgs<ExtArgs>>): Prisma__ContactParamSettingsClient<$Result.GetResult<Prisma.$ContactParamSettingsPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first ContactParamSettings that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ContactParamSettingsFindFirstOrThrowArgs} args - Arguments to find a ContactParamSettings
     * @example
     * // Get one ContactParamSettings
     * const contactParamSettings = await prisma.contactParamSettings.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends ContactParamSettingsFindFirstOrThrowArgs>(args?: SelectSubset<T, ContactParamSettingsFindFirstOrThrowArgs<ExtArgs>>): Prisma__ContactParamSettingsClient<$Result.GetResult<Prisma.$ContactParamSettingsPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more ContactParamSettings that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ContactParamSettingsFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all ContactParamSettings
     * const contactParamSettings = await prisma.contactParamSettings.findMany()
     * 
     * // Get first 10 ContactParamSettings
     * const contactParamSettings = await prisma.contactParamSettings.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const contactParamSettingsWithIdOnly = await prisma.contactParamSettings.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends ContactParamSettingsFindManyArgs>(args?: SelectSubset<T, ContactParamSettingsFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$ContactParamSettingsPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a ContactParamSettings.
     * @param {ContactParamSettingsCreateArgs} args - Arguments to create a ContactParamSettings.
     * @example
     * // Create one ContactParamSettings
     * const ContactParamSettings = await prisma.contactParamSettings.create({
     *   data: {
     *     // ... data to create a ContactParamSettings
     *   }
     * })
     * 
     */
    create<T extends ContactParamSettingsCreateArgs>(args: SelectSubset<T, ContactParamSettingsCreateArgs<ExtArgs>>): Prisma__ContactParamSettingsClient<$Result.GetResult<Prisma.$ContactParamSettingsPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many ContactParamSettings.
     * @param {ContactParamSettingsCreateManyArgs} args - Arguments to create many ContactParamSettings.
     * @example
     * // Create many ContactParamSettings
     * const contactParamSettings = await prisma.contactParamSettings.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends ContactParamSettingsCreateManyArgs>(args?: SelectSubset<T, ContactParamSettingsCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a ContactParamSettings.
     * @param {ContactParamSettingsDeleteArgs} args - Arguments to delete one ContactParamSettings.
     * @example
     * // Delete one ContactParamSettings
     * const ContactParamSettings = await prisma.contactParamSettings.delete({
     *   where: {
     *     // ... filter to delete one ContactParamSettings
     *   }
     * })
     * 
     */
    delete<T extends ContactParamSettingsDeleteArgs>(args: SelectSubset<T, ContactParamSettingsDeleteArgs<ExtArgs>>): Prisma__ContactParamSettingsClient<$Result.GetResult<Prisma.$ContactParamSettingsPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one ContactParamSettings.
     * @param {ContactParamSettingsUpdateArgs} args - Arguments to update one ContactParamSettings.
     * @example
     * // Update one ContactParamSettings
     * const contactParamSettings = await prisma.contactParamSettings.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends ContactParamSettingsUpdateArgs>(args: SelectSubset<T, ContactParamSettingsUpdateArgs<ExtArgs>>): Prisma__ContactParamSettingsClient<$Result.GetResult<Prisma.$ContactParamSettingsPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more ContactParamSettings.
     * @param {ContactParamSettingsDeleteManyArgs} args - Arguments to filter ContactParamSettings to delete.
     * @example
     * // Delete a few ContactParamSettings
     * const { count } = await prisma.contactParamSettings.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends ContactParamSettingsDeleteManyArgs>(args?: SelectSubset<T, ContactParamSettingsDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more ContactParamSettings.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ContactParamSettingsUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many ContactParamSettings
     * const contactParamSettings = await prisma.contactParamSettings.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends ContactParamSettingsUpdateManyArgs>(args: SelectSubset<T, ContactParamSettingsUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one ContactParamSettings.
     * @param {ContactParamSettingsUpsertArgs} args - Arguments to update or create a ContactParamSettings.
     * @example
     * // Update or create a ContactParamSettings
     * const contactParamSettings = await prisma.contactParamSettings.upsert({
     *   create: {
     *     // ... data to create a ContactParamSettings
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the ContactParamSettings we want to update
     *   }
     * })
     */
    upsert<T extends ContactParamSettingsUpsertArgs>(args: SelectSubset<T, ContactParamSettingsUpsertArgs<ExtArgs>>): Prisma__ContactParamSettingsClient<$Result.GetResult<Prisma.$ContactParamSettingsPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of ContactParamSettings.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ContactParamSettingsCountArgs} args - Arguments to filter ContactParamSettings to count.
     * @example
     * // Count the number of ContactParamSettings
     * const count = await prisma.contactParamSettings.count({
     *   where: {
     *     // ... the filter for the ContactParamSettings we want to count
     *   }
     * })
    **/
    count<T extends ContactParamSettingsCountArgs>(
      args?: Subset<T, ContactParamSettingsCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], ContactParamSettingsCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a ContactParamSettings.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ContactParamSettingsAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends ContactParamSettingsAggregateArgs>(args: Subset<T, ContactParamSettingsAggregateArgs>): Prisma.PrismaPromise<GetContactParamSettingsAggregateType<T>>

    /**
     * Group by ContactParamSettings.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ContactParamSettingsGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends ContactParamSettingsGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: ContactParamSettingsGroupByArgs['orderBy'] }
        : { orderBy?: ContactParamSettingsGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, ContactParamSettingsGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetContactParamSettingsGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the ContactParamSettings model
   */
  readonly fields: ContactParamSettingsFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for ContactParamSettings.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__ContactParamSettingsClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    company<T extends CompanyDefaultArgs<ExtArgs> = {}>(args?: Subset<T, CompanyDefaultArgs<ExtArgs>>): Prisma__CompanyClient<$Result.GetResult<Prisma.$CompanyPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the ContactParamSettings model
   */
  interface ContactParamSettingsFieldRefs {
    readonly id: FieldRef<"ContactParamSettings", 'Int'>
    readonly companyId: FieldRef<"ContactParamSettings", 'Int'>
    readonly param1Label: FieldRef<"ContactParamSettings", 'String'>
    readonly param2Label: FieldRef<"ContactParamSettings", 'String'>
    readonly param3Label: FieldRef<"ContactParamSettings", 'String'>
    readonly param4Label: FieldRef<"ContactParamSettings", 'String'>
    readonly param5Label: FieldRef<"ContactParamSettings", 'String'>
    readonly param6Label: FieldRef<"ContactParamSettings", 'String'>
    readonly param7Label: FieldRef<"ContactParamSettings", 'String'>
    readonly param8Label: FieldRef<"ContactParamSettings", 'String'>
    readonly param9Label: FieldRef<"ContactParamSettings", 'String'>
    readonly param10Label: FieldRef<"ContactParamSettings", 'String'>
    readonly updatedAt: FieldRef<"ContactParamSettings", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * ContactParamSettings findUnique
   */
  export type ContactParamSettingsFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ContactParamSettings
     */
    select?: ContactParamSettingsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ContactParamSettings
     */
    omit?: ContactParamSettingsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ContactParamSettingsInclude<ExtArgs> | null
    /**
     * Filter, which ContactParamSettings to fetch.
     */
    where: ContactParamSettingsWhereUniqueInput
  }

  /**
   * ContactParamSettings findUniqueOrThrow
   */
  export type ContactParamSettingsFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ContactParamSettings
     */
    select?: ContactParamSettingsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ContactParamSettings
     */
    omit?: ContactParamSettingsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ContactParamSettingsInclude<ExtArgs> | null
    /**
     * Filter, which ContactParamSettings to fetch.
     */
    where: ContactParamSettingsWhereUniqueInput
  }

  /**
   * ContactParamSettings findFirst
   */
  export type ContactParamSettingsFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ContactParamSettings
     */
    select?: ContactParamSettingsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ContactParamSettings
     */
    omit?: ContactParamSettingsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ContactParamSettingsInclude<ExtArgs> | null
    /**
     * Filter, which ContactParamSettings to fetch.
     */
    where?: ContactParamSettingsWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of ContactParamSettings to fetch.
     */
    orderBy?: ContactParamSettingsOrderByWithRelationInput | ContactParamSettingsOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for ContactParamSettings.
     */
    cursor?: ContactParamSettingsWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` ContactParamSettings from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` ContactParamSettings.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of ContactParamSettings.
     */
    distinct?: ContactParamSettingsScalarFieldEnum | ContactParamSettingsScalarFieldEnum[]
  }

  /**
   * ContactParamSettings findFirstOrThrow
   */
  export type ContactParamSettingsFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ContactParamSettings
     */
    select?: ContactParamSettingsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ContactParamSettings
     */
    omit?: ContactParamSettingsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ContactParamSettingsInclude<ExtArgs> | null
    /**
     * Filter, which ContactParamSettings to fetch.
     */
    where?: ContactParamSettingsWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of ContactParamSettings to fetch.
     */
    orderBy?: ContactParamSettingsOrderByWithRelationInput | ContactParamSettingsOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for ContactParamSettings.
     */
    cursor?: ContactParamSettingsWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` ContactParamSettings from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` ContactParamSettings.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of ContactParamSettings.
     */
    distinct?: ContactParamSettingsScalarFieldEnum | ContactParamSettingsScalarFieldEnum[]
  }

  /**
   * ContactParamSettings findMany
   */
  export type ContactParamSettingsFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ContactParamSettings
     */
    select?: ContactParamSettingsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ContactParamSettings
     */
    omit?: ContactParamSettingsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ContactParamSettingsInclude<ExtArgs> | null
    /**
     * Filter, which ContactParamSettings to fetch.
     */
    where?: ContactParamSettingsWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of ContactParamSettings to fetch.
     */
    orderBy?: ContactParamSettingsOrderByWithRelationInput | ContactParamSettingsOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing ContactParamSettings.
     */
    cursor?: ContactParamSettingsWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` ContactParamSettings from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` ContactParamSettings.
     */
    skip?: number
    distinct?: ContactParamSettingsScalarFieldEnum | ContactParamSettingsScalarFieldEnum[]
  }

  /**
   * ContactParamSettings create
   */
  export type ContactParamSettingsCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ContactParamSettings
     */
    select?: ContactParamSettingsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ContactParamSettings
     */
    omit?: ContactParamSettingsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ContactParamSettingsInclude<ExtArgs> | null
    /**
     * The data needed to create a ContactParamSettings.
     */
    data: XOR<ContactParamSettingsCreateInput, ContactParamSettingsUncheckedCreateInput>
  }

  /**
   * ContactParamSettings createMany
   */
  export type ContactParamSettingsCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many ContactParamSettings.
     */
    data: ContactParamSettingsCreateManyInput | ContactParamSettingsCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * ContactParamSettings update
   */
  export type ContactParamSettingsUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ContactParamSettings
     */
    select?: ContactParamSettingsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ContactParamSettings
     */
    omit?: ContactParamSettingsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ContactParamSettingsInclude<ExtArgs> | null
    /**
     * The data needed to update a ContactParamSettings.
     */
    data: XOR<ContactParamSettingsUpdateInput, ContactParamSettingsUncheckedUpdateInput>
    /**
     * Choose, which ContactParamSettings to update.
     */
    where: ContactParamSettingsWhereUniqueInput
  }

  /**
   * ContactParamSettings updateMany
   */
  export type ContactParamSettingsUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update ContactParamSettings.
     */
    data: XOR<ContactParamSettingsUpdateManyMutationInput, ContactParamSettingsUncheckedUpdateManyInput>
    /**
     * Filter which ContactParamSettings to update
     */
    where?: ContactParamSettingsWhereInput
    /**
     * Limit how many ContactParamSettings to update.
     */
    limit?: number
  }

  /**
   * ContactParamSettings upsert
   */
  export type ContactParamSettingsUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ContactParamSettings
     */
    select?: ContactParamSettingsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ContactParamSettings
     */
    omit?: ContactParamSettingsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ContactParamSettingsInclude<ExtArgs> | null
    /**
     * The filter to search for the ContactParamSettings to update in case it exists.
     */
    where: ContactParamSettingsWhereUniqueInput
    /**
     * In case the ContactParamSettings found by the `where` argument doesn't exist, create a new ContactParamSettings with this data.
     */
    create: XOR<ContactParamSettingsCreateInput, ContactParamSettingsUncheckedCreateInput>
    /**
     * In case the ContactParamSettings was found with the provided `where` argument, update it with this data.
     */
    update: XOR<ContactParamSettingsUpdateInput, ContactParamSettingsUncheckedUpdateInput>
  }

  /**
   * ContactParamSettings delete
   */
  export type ContactParamSettingsDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ContactParamSettings
     */
    select?: ContactParamSettingsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ContactParamSettings
     */
    omit?: ContactParamSettingsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ContactParamSettingsInclude<ExtArgs> | null
    /**
     * Filter which ContactParamSettings to delete.
     */
    where: ContactParamSettingsWhereUniqueInput
  }

  /**
   * ContactParamSettings deleteMany
   */
  export type ContactParamSettingsDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which ContactParamSettings to delete
     */
    where?: ContactParamSettingsWhereInput
    /**
     * Limit how many ContactParamSettings to delete.
     */
    limit?: number
  }

  /**
   * ContactParamSettings without action
   */
  export type ContactParamSettingsDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ContactParamSettings
     */
    select?: ContactParamSettingsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ContactParamSettings
     */
    omit?: ContactParamSettingsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ContactParamSettingsInclude<ExtArgs> | null
  }


  /**
   * Model Campaign
   */

  export type AggregateCampaign = {
    _count: CampaignCountAggregateOutputType | null
    _avg: CampaignAvgAggregateOutputType | null
    _sum: CampaignSumAggregateOutputType | null
    _min: CampaignMinAggregateOutputType | null
    _max: CampaignMaxAggregateOutputType | null
  }

  export type CampaignAvgAggregateOutputType = {
    id: number | null
    server_ref: number | null
    smsValidityPeriod: number | null
    createdByUserId: number | null
    billingAccountId: number | null
    senderMaskId: number | null
    mobileNumberListId: number | null
    templateId: number | null
    reservedAmount: number | null
    chargedAmount: number | null
    smsCostPerSegment: number | null
  }

  export type CampaignSumAggregateOutputType = {
    id: number | null
    server_ref: bigint | null
    smsValidityPeriod: number | null
    createdByUserId: number | null
    billingAccountId: number | null
    senderMaskId: number | null
    mobileNumberListId: bigint | null
    templateId: number | null
    reservedAmount: number | null
    chargedAmount: number | null
    smsCostPerSegment: number | null
  }

  export type CampaignMinAggregateOutputType = {
    id: number | null
    uuid: string | null
    name: string | null
    status: string | null
    server_ref: bigint | null
    isParameterized: boolean | null
    smsValidityPeriod: number | null
    customMessage: string | null
    scheduledDate: Date | null
    notificationNumber: string | null
    createdByUserId: number | null
    billingAccountId: number | null
    senderMaskId: number | null
    mobileNumberListId: bigint | null
    templateId: number | null
    smsType: string | null
    source: string | null
    reservedAmount: number | null
    chargedAmount: number | null
    smsCostPerSegment: number | null
    batchUuid: string | null
    failureReason: string | null
    createdAt: Date | null
    updatedAt: Date | null
    deletedAt: Date | null
  }

  export type CampaignMaxAggregateOutputType = {
    id: number | null
    uuid: string | null
    name: string | null
    status: string | null
    server_ref: bigint | null
    isParameterized: boolean | null
    smsValidityPeriod: number | null
    customMessage: string | null
    scheduledDate: Date | null
    notificationNumber: string | null
    createdByUserId: number | null
    billingAccountId: number | null
    senderMaskId: number | null
    mobileNumberListId: bigint | null
    templateId: number | null
    smsType: string | null
    source: string | null
    reservedAmount: number | null
    chargedAmount: number | null
    smsCostPerSegment: number | null
    batchUuid: string | null
    failureReason: string | null
    createdAt: Date | null
    updatedAt: Date | null
    deletedAt: Date | null
  }

  export type CampaignCountAggregateOutputType = {
    id: number
    uuid: number
    name: number
    status: number
    server_ref: number
    serverRefs: number
    isParameterized: number
    smsValidityPeriod: number
    customMessage: number
    scheduledDate: number
    notificationNumber: number
    createdByUserId: number
    billingAccountId: number
    senderMaskId: number
    mobileNumberListId: number
    customBlacklist: number
    templateId: number
    smsType: number
    source: number
    reservedAmount: number
    chargedAmount: number
    smsCostPerSegment: number
    batchUuid: number
    failureReason: number
    createdAt: number
    updatedAt: number
    deletedAt: number
    _all: number
  }


  export type CampaignAvgAggregateInputType = {
    id?: true
    server_ref?: true
    smsValidityPeriod?: true
    createdByUserId?: true
    billingAccountId?: true
    senderMaskId?: true
    mobileNumberListId?: true
    templateId?: true
    reservedAmount?: true
    chargedAmount?: true
    smsCostPerSegment?: true
  }

  export type CampaignSumAggregateInputType = {
    id?: true
    server_ref?: true
    smsValidityPeriod?: true
    createdByUserId?: true
    billingAccountId?: true
    senderMaskId?: true
    mobileNumberListId?: true
    templateId?: true
    reservedAmount?: true
    chargedAmount?: true
    smsCostPerSegment?: true
  }

  export type CampaignMinAggregateInputType = {
    id?: true
    uuid?: true
    name?: true
    status?: true
    server_ref?: true
    isParameterized?: true
    smsValidityPeriod?: true
    customMessage?: true
    scheduledDate?: true
    notificationNumber?: true
    createdByUserId?: true
    billingAccountId?: true
    senderMaskId?: true
    mobileNumberListId?: true
    templateId?: true
    smsType?: true
    source?: true
    reservedAmount?: true
    chargedAmount?: true
    smsCostPerSegment?: true
    batchUuid?: true
    failureReason?: true
    createdAt?: true
    updatedAt?: true
    deletedAt?: true
  }

  export type CampaignMaxAggregateInputType = {
    id?: true
    uuid?: true
    name?: true
    status?: true
    server_ref?: true
    isParameterized?: true
    smsValidityPeriod?: true
    customMessage?: true
    scheduledDate?: true
    notificationNumber?: true
    createdByUserId?: true
    billingAccountId?: true
    senderMaskId?: true
    mobileNumberListId?: true
    templateId?: true
    smsType?: true
    source?: true
    reservedAmount?: true
    chargedAmount?: true
    smsCostPerSegment?: true
    batchUuid?: true
    failureReason?: true
    createdAt?: true
    updatedAt?: true
    deletedAt?: true
  }

  export type CampaignCountAggregateInputType = {
    id?: true
    uuid?: true
    name?: true
    status?: true
    server_ref?: true
    serverRefs?: true
    isParameterized?: true
    smsValidityPeriod?: true
    customMessage?: true
    scheduledDate?: true
    notificationNumber?: true
    createdByUserId?: true
    billingAccountId?: true
    senderMaskId?: true
    mobileNumberListId?: true
    customBlacklist?: true
    templateId?: true
    smsType?: true
    source?: true
    reservedAmount?: true
    chargedAmount?: true
    smsCostPerSegment?: true
    batchUuid?: true
    failureReason?: true
    createdAt?: true
    updatedAt?: true
    deletedAt?: true
    _all?: true
  }

  export type CampaignAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Campaign to aggregate.
     */
    where?: CampaignWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Campaigns to fetch.
     */
    orderBy?: CampaignOrderByWithRelationInput | CampaignOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: CampaignWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Campaigns from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Campaigns.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned Campaigns
    **/
    _count?: true | CampaignCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: CampaignAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: CampaignSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: CampaignMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: CampaignMaxAggregateInputType
  }

  export type GetCampaignAggregateType<T extends CampaignAggregateArgs> = {
        [P in keyof T & keyof AggregateCampaign]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateCampaign[P]>
      : GetScalarType<T[P], AggregateCampaign[P]>
  }




  export type CampaignGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: CampaignWhereInput
    orderBy?: CampaignOrderByWithAggregationInput | CampaignOrderByWithAggregationInput[]
    by: CampaignScalarFieldEnum[] | CampaignScalarFieldEnum
    having?: CampaignScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: CampaignCountAggregateInputType | true
    _avg?: CampaignAvgAggregateInputType
    _sum?: CampaignSumAggregateInputType
    _min?: CampaignMinAggregateInputType
    _max?: CampaignMaxAggregateInputType
  }

  export type CampaignGroupByOutputType = {
    id: number
    uuid: string
    name: string
    status: string
    server_ref: bigint | null
    serverRefs: JsonValue | null
    isParameterized: boolean
    smsValidityPeriod: number | null
    customMessage: string | null
    scheduledDate: Date
    notificationNumber: string | null
    createdByUserId: number | null
    billingAccountId: number
    senderMaskId: number
    mobileNumberListId: bigint | null
    customBlacklist: JsonValue | null
    templateId: number | null
    smsType: string
    source: string
    reservedAmount: number
    chargedAmount: number
    smsCostPerSegment: number | null
    batchUuid: string | null
    failureReason: string | null
    createdAt: Date
    updatedAt: Date
    deletedAt: Date | null
    _count: CampaignCountAggregateOutputType | null
    _avg: CampaignAvgAggregateOutputType | null
    _sum: CampaignSumAggregateOutputType | null
    _min: CampaignMinAggregateOutputType | null
    _max: CampaignMaxAggregateOutputType | null
  }

  type GetCampaignGroupByPayload<T extends CampaignGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<CampaignGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof CampaignGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], CampaignGroupByOutputType[P]>
            : GetScalarType<T[P], CampaignGroupByOutputType[P]>
        }
      >
    >


  export type CampaignSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    uuid?: boolean
    name?: boolean
    status?: boolean
    server_ref?: boolean
    serverRefs?: boolean
    isParameterized?: boolean
    smsValidityPeriod?: boolean
    customMessage?: boolean
    scheduledDate?: boolean
    notificationNumber?: boolean
    createdByUserId?: boolean
    billingAccountId?: boolean
    senderMaskId?: boolean
    mobileNumberListId?: boolean
    customBlacklist?: boolean
    templateId?: boolean
    smsType?: boolean
    source?: boolean
    reservedAmount?: boolean
    chargedAmount?: boolean
    smsCostPerSegment?: boolean
    batchUuid?: boolean
    failureReason?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    deletedAt?: boolean
    billingAccount?: boolean | BillAccountDefaultArgs<ExtArgs>
    senderMask?: boolean | SenderMaskDefaultArgs<ExtArgs>
    mobileNumberList?: boolean | Campaign$mobileNumberListArgs<ExtArgs>
    template?: boolean | Campaign$templateArgs<ExtArgs>
    smsReports?: boolean | Campaign$smsReportsArgs<ExtArgs>
    bulkServerRefs?: boolean | Campaign$bulkServerRefsArgs<ExtArgs>
    recipients?: boolean | Campaign$recipientsArgs<ExtArgs>
    _count?: boolean | CampaignCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["campaign"]>



  export type CampaignSelectScalar = {
    id?: boolean
    uuid?: boolean
    name?: boolean
    status?: boolean
    server_ref?: boolean
    serverRefs?: boolean
    isParameterized?: boolean
    smsValidityPeriod?: boolean
    customMessage?: boolean
    scheduledDate?: boolean
    notificationNumber?: boolean
    createdByUserId?: boolean
    billingAccountId?: boolean
    senderMaskId?: boolean
    mobileNumberListId?: boolean
    customBlacklist?: boolean
    templateId?: boolean
    smsType?: boolean
    source?: boolean
    reservedAmount?: boolean
    chargedAmount?: boolean
    smsCostPerSegment?: boolean
    batchUuid?: boolean
    failureReason?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    deletedAt?: boolean
  }

  export type CampaignOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "uuid" | "name" | "status" | "server_ref" | "serverRefs" | "isParameterized" | "smsValidityPeriod" | "customMessage" | "scheduledDate" | "notificationNumber" | "createdByUserId" | "billingAccountId" | "senderMaskId" | "mobileNumberListId" | "customBlacklist" | "templateId" | "smsType" | "source" | "reservedAmount" | "chargedAmount" | "smsCostPerSegment" | "batchUuid" | "failureReason" | "createdAt" | "updatedAt" | "deletedAt", ExtArgs["result"]["campaign"]>
  export type CampaignInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    billingAccount?: boolean | BillAccountDefaultArgs<ExtArgs>
    senderMask?: boolean | SenderMaskDefaultArgs<ExtArgs>
    mobileNumberList?: boolean | Campaign$mobileNumberListArgs<ExtArgs>
    template?: boolean | Campaign$templateArgs<ExtArgs>
    smsReports?: boolean | Campaign$smsReportsArgs<ExtArgs>
    bulkServerRefs?: boolean | Campaign$bulkServerRefsArgs<ExtArgs>
    recipients?: boolean | Campaign$recipientsArgs<ExtArgs>
    _count?: boolean | CampaignCountOutputTypeDefaultArgs<ExtArgs>
  }

  export type $CampaignPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "Campaign"
    objects: {
      billingAccount: Prisma.$BillAccountPayload<ExtArgs>
      senderMask: Prisma.$SenderMaskPayload<ExtArgs>
      mobileNumberList: Prisma.$MobileNumberListPayload<ExtArgs> | null
      template: Prisma.$SMS_TemplatePayload<ExtArgs> | null
      smsReports: Prisma.$SMS_ReportPayload<ExtArgs>[]
      bulkServerRefs: Prisma.$CampaignServerRefPayload<ExtArgs>[]
      recipients: Prisma.$CampaignRecipientPayload<ExtArgs>[]
    }
    scalars: $Extensions.GetPayloadResult<{
      id: number
      uuid: string
      name: string
      status: string
      server_ref: bigint | null
      serverRefs: Prisma.JsonValue | null
      isParameterized: boolean
      smsValidityPeriod: number | null
      customMessage: string | null
      scheduledDate: Date
      notificationNumber: string | null
      createdByUserId: number | null
      billingAccountId: number
      senderMaskId: number
      mobileNumberListId: bigint | null
      customBlacklist: Prisma.JsonValue | null
      templateId: number | null
      smsType: string
      source: string
      reservedAmount: number
      chargedAmount: number
      smsCostPerSegment: number | null
      batchUuid: string | null
      failureReason: string | null
      createdAt: Date
      updatedAt: Date
      deletedAt: Date | null
    }, ExtArgs["result"]["campaign"]>
    composites: {}
  }

  type CampaignGetPayload<S extends boolean | null | undefined | CampaignDefaultArgs> = $Result.GetResult<Prisma.$CampaignPayload, S>

  type CampaignCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<CampaignFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: CampaignCountAggregateInputType | true
    }

  export interface CampaignDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['Campaign'], meta: { name: 'Campaign' } }
    /**
     * Find zero or one Campaign that matches the filter.
     * @param {CampaignFindUniqueArgs} args - Arguments to find a Campaign
     * @example
     * // Get one Campaign
     * const campaign = await prisma.campaign.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends CampaignFindUniqueArgs>(args: SelectSubset<T, CampaignFindUniqueArgs<ExtArgs>>): Prisma__CampaignClient<$Result.GetResult<Prisma.$CampaignPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one Campaign that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {CampaignFindUniqueOrThrowArgs} args - Arguments to find a Campaign
     * @example
     * // Get one Campaign
     * const campaign = await prisma.campaign.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends CampaignFindUniqueOrThrowArgs>(args: SelectSubset<T, CampaignFindUniqueOrThrowArgs<ExtArgs>>): Prisma__CampaignClient<$Result.GetResult<Prisma.$CampaignPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Campaign that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignFindFirstArgs} args - Arguments to find a Campaign
     * @example
     * // Get one Campaign
     * const campaign = await prisma.campaign.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends CampaignFindFirstArgs>(args?: SelectSubset<T, CampaignFindFirstArgs<ExtArgs>>): Prisma__CampaignClient<$Result.GetResult<Prisma.$CampaignPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Campaign that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignFindFirstOrThrowArgs} args - Arguments to find a Campaign
     * @example
     * // Get one Campaign
     * const campaign = await prisma.campaign.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends CampaignFindFirstOrThrowArgs>(args?: SelectSubset<T, CampaignFindFirstOrThrowArgs<ExtArgs>>): Prisma__CampaignClient<$Result.GetResult<Prisma.$CampaignPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more Campaigns that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Campaigns
     * const campaigns = await prisma.campaign.findMany()
     * 
     * // Get first 10 Campaigns
     * const campaigns = await prisma.campaign.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const campaignWithIdOnly = await prisma.campaign.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends CampaignFindManyArgs>(args?: SelectSubset<T, CampaignFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$CampaignPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a Campaign.
     * @param {CampaignCreateArgs} args - Arguments to create a Campaign.
     * @example
     * // Create one Campaign
     * const Campaign = await prisma.campaign.create({
     *   data: {
     *     // ... data to create a Campaign
     *   }
     * })
     * 
     */
    create<T extends CampaignCreateArgs>(args: SelectSubset<T, CampaignCreateArgs<ExtArgs>>): Prisma__CampaignClient<$Result.GetResult<Prisma.$CampaignPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many Campaigns.
     * @param {CampaignCreateManyArgs} args - Arguments to create many Campaigns.
     * @example
     * // Create many Campaigns
     * const campaign = await prisma.campaign.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends CampaignCreateManyArgs>(args?: SelectSubset<T, CampaignCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a Campaign.
     * @param {CampaignDeleteArgs} args - Arguments to delete one Campaign.
     * @example
     * // Delete one Campaign
     * const Campaign = await prisma.campaign.delete({
     *   where: {
     *     // ... filter to delete one Campaign
     *   }
     * })
     * 
     */
    delete<T extends CampaignDeleteArgs>(args: SelectSubset<T, CampaignDeleteArgs<ExtArgs>>): Prisma__CampaignClient<$Result.GetResult<Prisma.$CampaignPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one Campaign.
     * @param {CampaignUpdateArgs} args - Arguments to update one Campaign.
     * @example
     * // Update one Campaign
     * const campaign = await prisma.campaign.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends CampaignUpdateArgs>(args: SelectSubset<T, CampaignUpdateArgs<ExtArgs>>): Prisma__CampaignClient<$Result.GetResult<Prisma.$CampaignPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more Campaigns.
     * @param {CampaignDeleteManyArgs} args - Arguments to filter Campaigns to delete.
     * @example
     * // Delete a few Campaigns
     * const { count } = await prisma.campaign.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends CampaignDeleteManyArgs>(args?: SelectSubset<T, CampaignDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Campaigns.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many Campaigns
     * const campaign = await prisma.campaign.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends CampaignUpdateManyArgs>(args: SelectSubset<T, CampaignUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one Campaign.
     * @param {CampaignUpsertArgs} args - Arguments to update or create a Campaign.
     * @example
     * // Update or create a Campaign
     * const campaign = await prisma.campaign.upsert({
     *   create: {
     *     // ... data to create a Campaign
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the Campaign we want to update
     *   }
     * })
     */
    upsert<T extends CampaignUpsertArgs>(args: SelectSubset<T, CampaignUpsertArgs<ExtArgs>>): Prisma__CampaignClient<$Result.GetResult<Prisma.$CampaignPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of Campaigns.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignCountArgs} args - Arguments to filter Campaigns to count.
     * @example
     * // Count the number of Campaigns
     * const count = await prisma.campaign.count({
     *   where: {
     *     // ... the filter for the Campaigns we want to count
     *   }
     * })
    **/
    count<T extends CampaignCountArgs>(
      args?: Subset<T, CampaignCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], CampaignCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a Campaign.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends CampaignAggregateArgs>(args: Subset<T, CampaignAggregateArgs>): Prisma.PrismaPromise<GetCampaignAggregateType<T>>

    /**
     * Group by Campaign.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends CampaignGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: CampaignGroupByArgs['orderBy'] }
        : { orderBy?: CampaignGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, CampaignGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetCampaignGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the Campaign model
   */
  readonly fields: CampaignFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for Campaign.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__CampaignClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    billingAccount<T extends BillAccountDefaultArgs<ExtArgs> = {}>(args?: Subset<T, BillAccountDefaultArgs<ExtArgs>>): Prisma__BillAccountClient<$Result.GetResult<Prisma.$BillAccountPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    senderMask<T extends SenderMaskDefaultArgs<ExtArgs> = {}>(args?: Subset<T, SenderMaskDefaultArgs<ExtArgs>>): Prisma__SenderMaskClient<$Result.GetResult<Prisma.$SenderMaskPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    mobileNumberList<T extends Campaign$mobileNumberListArgs<ExtArgs> = {}>(args?: Subset<T, Campaign$mobileNumberListArgs<ExtArgs>>): Prisma__MobileNumberListClient<$Result.GetResult<Prisma.$MobileNumberListPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
    template<T extends Campaign$templateArgs<ExtArgs> = {}>(args?: Subset<T, Campaign$templateArgs<ExtArgs>>): Prisma__SMS_TemplateClient<$Result.GetResult<Prisma.$SMS_TemplatePayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
    smsReports<T extends Campaign$smsReportsArgs<ExtArgs> = {}>(args?: Subset<T, Campaign$smsReportsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$SMS_ReportPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    bulkServerRefs<T extends Campaign$bulkServerRefsArgs<ExtArgs> = {}>(args?: Subset<T, Campaign$bulkServerRefsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$CampaignServerRefPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    recipients<T extends Campaign$recipientsArgs<ExtArgs> = {}>(args?: Subset<T, Campaign$recipientsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$CampaignRecipientPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the Campaign model
   */
  interface CampaignFieldRefs {
    readonly id: FieldRef<"Campaign", 'Int'>
    readonly uuid: FieldRef<"Campaign", 'String'>
    readonly name: FieldRef<"Campaign", 'String'>
    readonly status: FieldRef<"Campaign", 'String'>
    readonly server_ref: FieldRef<"Campaign", 'BigInt'>
    readonly serverRefs: FieldRef<"Campaign", 'Json'>
    readonly isParameterized: FieldRef<"Campaign", 'Boolean'>
    readonly smsValidityPeriod: FieldRef<"Campaign", 'Int'>
    readonly customMessage: FieldRef<"Campaign", 'String'>
    readonly scheduledDate: FieldRef<"Campaign", 'DateTime'>
    readonly notificationNumber: FieldRef<"Campaign", 'String'>
    readonly createdByUserId: FieldRef<"Campaign", 'Int'>
    readonly billingAccountId: FieldRef<"Campaign", 'Int'>
    readonly senderMaskId: FieldRef<"Campaign", 'Int'>
    readonly mobileNumberListId: FieldRef<"Campaign", 'BigInt'>
    readonly customBlacklist: FieldRef<"Campaign", 'Json'>
    readonly templateId: FieldRef<"Campaign", 'Int'>
    readonly smsType: FieldRef<"Campaign", 'String'>
    readonly source: FieldRef<"Campaign", 'String'>
    readonly reservedAmount: FieldRef<"Campaign", 'Float'>
    readonly chargedAmount: FieldRef<"Campaign", 'Float'>
    readonly smsCostPerSegment: FieldRef<"Campaign", 'Float'>
    readonly batchUuid: FieldRef<"Campaign", 'String'>
    readonly failureReason: FieldRef<"Campaign", 'String'>
    readonly createdAt: FieldRef<"Campaign", 'DateTime'>
    readonly updatedAt: FieldRef<"Campaign", 'DateTime'>
    readonly deletedAt: FieldRef<"Campaign", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * Campaign findUnique
   */
  export type CampaignFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Campaign
     */
    select?: CampaignSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Campaign
     */
    omit?: CampaignOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignInclude<ExtArgs> | null
    /**
     * Filter, which Campaign to fetch.
     */
    where: CampaignWhereUniqueInput
  }

  /**
   * Campaign findUniqueOrThrow
   */
  export type CampaignFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Campaign
     */
    select?: CampaignSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Campaign
     */
    omit?: CampaignOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignInclude<ExtArgs> | null
    /**
     * Filter, which Campaign to fetch.
     */
    where: CampaignWhereUniqueInput
  }

  /**
   * Campaign findFirst
   */
  export type CampaignFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Campaign
     */
    select?: CampaignSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Campaign
     */
    omit?: CampaignOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignInclude<ExtArgs> | null
    /**
     * Filter, which Campaign to fetch.
     */
    where?: CampaignWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Campaigns to fetch.
     */
    orderBy?: CampaignOrderByWithRelationInput | CampaignOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Campaigns.
     */
    cursor?: CampaignWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Campaigns from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Campaigns.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Campaigns.
     */
    distinct?: CampaignScalarFieldEnum | CampaignScalarFieldEnum[]
  }

  /**
   * Campaign findFirstOrThrow
   */
  export type CampaignFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Campaign
     */
    select?: CampaignSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Campaign
     */
    omit?: CampaignOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignInclude<ExtArgs> | null
    /**
     * Filter, which Campaign to fetch.
     */
    where?: CampaignWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Campaigns to fetch.
     */
    orderBy?: CampaignOrderByWithRelationInput | CampaignOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Campaigns.
     */
    cursor?: CampaignWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Campaigns from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Campaigns.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Campaigns.
     */
    distinct?: CampaignScalarFieldEnum | CampaignScalarFieldEnum[]
  }

  /**
   * Campaign findMany
   */
  export type CampaignFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Campaign
     */
    select?: CampaignSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Campaign
     */
    omit?: CampaignOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignInclude<ExtArgs> | null
    /**
     * Filter, which Campaigns to fetch.
     */
    where?: CampaignWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Campaigns to fetch.
     */
    orderBy?: CampaignOrderByWithRelationInput | CampaignOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing Campaigns.
     */
    cursor?: CampaignWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Campaigns from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Campaigns.
     */
    skip?: number
    distinct?: CampaignScalarFieldEnum | CampaignScalarFieldEnum[]
  }

  /**
   * Campaign create
   */
  export type CampaignCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Campaign
     */
    select?: CampaignSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Campaign
     */
    omit?: CampaignOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignInclude<ExtArgs> | null
    /**
     * The data needed to create a Campaign.
     */
    data: XOR<CampaignCreateInput, CampaignUncheckedCreateInput>
  }

  /**
   * Campaign createMany
   */
  export type CampaignCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many Campaigns.
     */
    data: CampaignCreateManyInput | CampaignCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * Campaign update
   */
  export type CampaignUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Campaign
     */
    select?: CampaignSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Campaign
     */
    omit?: CampaignOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignInclude<ExtArgs> | null
    /**
     * The data needed to update a Campaign.
     */
    data: XOR<CampaignUpdateInput, CampaignUncheckedUpdateInput>
    /**
     * Choose, which Campaign to update.
     */
    where: CampaignWhereUniqueInput
  }

  /**
   * Campaign updateMany
   */
  export type CampaignUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update Campaigns.
     */
    data: XOR<CampaignUpdateManyMutationInput, CampaignUncheckedUpdateManyInput>
    /**
     * Filter which Campaigns to update
     */
    where?: CampaignWhereInput
    /**
     * Limit how many Campaigns to update.
     */
    limit?: number
  }

  /**
   * Campaign upsert
   */
  export type CampaignUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Campaign
     */
    select?: CampaignSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Campaign
     */
    omit?: CampaignOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignInclude<ExtArgs> | null
    /**
     * The filter to search for the Campaign to update in case it exists.
     */
    where: CampaignWhereUniqueInput
    /**
     * In case the Campaign found by the `where` argument doesn't exist, create a new Campaign with this data.
     */
    create: XOR<CampaignCreateInput, CampaignUncheckedCreateInput>
    /**
     * In case the Campaign was found with the provided `where` argument, update it with this data.
     */
    update: XOR<CampaignUpdateInput, CampaignUncheckedUpdateInput>
  }

  /**
   * Campaign delete
   */
  export type CampaignDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Campaign
     */
    select?: CampaignSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Campaign
     */
    omit?: CampaignOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignInclude<ExtArgs> | null
    /**
     * Filter which Campaign to delete.
     */
    where: CampaignWhereUniqueInput
  }

  /**
   * Campaign deleteMany
   */
  export type CampaignDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Campaigns to delete
     */
    where?: CampaignWhereInput
    /**
     * Limit how many Campaigns to delete.
     */
    limit?: number
  }

  /**
   * Campaign.mobileNumberList
   */
  export type Campaign$mobileNumberListArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumberList
     */
    select?: MobileNumberListSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumberList
     */
    omit?: MobileNumberListOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberListInclude<ExtArgs> | null
    where?: MobileNumberListWhereInput
  }

  /**
   * Campaign.template
   */
  export type Campaign$templateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Template
     */
    select?: SMS_TemplateSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Template
     */
    omit?: SMS_TemplateOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_TemplateInclude<ExtArgs> | null
    where?: SMS_TemplateWhereInput
  }

  /**
   * Campaign.smsReports
   */
  export type Campaign$smsReportsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Report
     */
    select?: SMS_ReportSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Report
     */
    omit?: SMS_ReportOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_ReportInclude<ExtArgs> | null
    where?: SMS_ReportWhereInput
    orderBy?: SMS_ReportOrderByWithRelationInput | SMS_ReportOrderByWithRelationInput[]
    cursor?: SMS_ReportWhereUniqueInput
    take?: number
    skip?: number
    distinct?: SMS_ReportScalarFieldEnum | SMS_ReportScalarFieldEnum[]
  }

  /**
   * Campaign.bulkServerRefs
   */
  export type Campaign$bulkServerRefsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignServerRef
     */
    select?: CampaignServerRefSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignServerRef
     */
    omit?: CampaignServerRefOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignServerRefInclude<ExtArgs> | null
    where?: CampaignServerRefWhereInput
    orderBy?: CampaignServerRefOrderByWithRelationInput | CampaignServerRefOrderByWithRelationInput[]
    cursor?: CampaignServerRefWhereUniqueInput
    take?: number
    skip?: number
    distinct?: CampaignServerRefScalarFieldEnum | CampaignServerRefScalarFieldEnum[]
  }

  /**
   * Campaign.recipients
   */
  export type Campaign$recipientsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignRecipient
     */
    select?: CampaignRecipientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignRecipient
     */
    omit?: CampaignRecipientOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignRecipientInclude<ExtArgs> | null
    where?: CampaignRecipientWhereInput
    orderBy?: CampaignRecipientOrderByWithRelationInput | CampaignRecipientOrderByWithRelationInput[]
    cursor?: CampaignRecipientWhereUniqueInput
    take?: number
    skip?: number
    distinct?: CampaignRecipientScalarFieldEnum | CampaignRecipientScalarFieldEnum[]
  }

  /**
   * Campaign without action
   */
  export type CampaignDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Campaign
     */
    select?: CampaignSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Campaign
     */
    omit?: CampaignOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignInclude<ExtArgs> | null
  }


  /**
   * Model CampaignServerRef
   */

  export type AggregateCampaignServerRef = {
    _count: CampaignServerRefCountAggregateOutputType | null
    _avg: CampaignServerRefAvgAggregateOutputType | null
    _sum: CampaignServerRefSumAggregateOutputType | null
    _min: CampaignServerRefMinAggregateOutputType | null
    _max: CampaignServerRefMaxAggregateOutputType | null
  }

  export type CampaignServerRefAvgAggregateOutputType = {
    serverRef: number | null
    campaignId: number | null
  }

  export type CampaignServerRefSumAggregateOutputType = {
    serverRef: bigint | null
    campaignId: number | null
  }

  export type CampaignServerRefMinAggregateOutputType = {
    serverRef: bigint | null
    campaignId: number | null
  }

  export type CampaignServerRefMaxAggregateOutputType = {
    serverRef: bigint | null
    campaignId: number | null
  }

  export type CampaignServerRefCountAggregateOutputType = {
    serverRef: number
    campaignId: number
    _all: number
  }


  export type CampaignServerRefAvgAggregateInputType = {
    serverRef?: true
    campaignId?: true
  }

  export type CampaignServerRefSumAggregateInputType = {
    serverRef?: true
    campaignId?: true
  }

  export type CampaignServerRefMinAggregateInputType = {
    serverRef?: true
    campaignId?: true
  }

  export type CampaignServerRefMaxAggregateInputType = {
    serverRef?: true
    campaignId?: true
  }

  export type CampaignServerRefCountAggregateInputType = {
    serverRef?: true
    campaignId?: true
    _all?: true
  }

  export type CampaignServerRefAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which CampaignServerRef to aggregate.
     */
    where?: CampaignServerRefWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of CampaignServerRefs to fetch.
     */
    orderBy?: CampaignServerRefOrderByWithRelationInput | CampaignServerRefOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: CampaignServerRefWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` CampaignServerRefs from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` CampaignServerRefs.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned CampaignServerRefs
    **/
    _count?: true | CampaignServerRefCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: CampaignServerRefAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: CampaignServerRefSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: CampaignServerRefMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: CampaignServerRefMaxAggregateInputType
  }

  export type GetCampaignServerRefAggregateType<T extends CampaignServerRefAggregateArgs> = {
        [P in keyof T & keyof AggregateCampaignServerRef]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateCampaignServerRef[P]>
      : GetScalarType<T[P], AggregateCampaignServerRef[P]>
  }




  export type CampaignServerRefGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: CampaignServerRefWhereInput
    orderBy?: CampaignServerRefOrderByWithAggregationInput | CampaignServerRefOrderByWithAggregationInput[]
    by: CampaignServerRefScalarFieldEnum[] | CampaignServerRefScalarFieldEnum
    having?: CampaignServerRefScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: CampaignServerRefCountAggregateInputType | true
    _avg?: CampaignServerRefAvgAggregateInputType
    _sum?: CampaignServerRefSumAggregateInputType
    _min?: CampaignServerRefMinAggregateInputType
    _max?: CampaignServerRefMaxAggregateInputType
  }

  export type CampaignServerRefGroupByOutputType = {
    serverRef: bigint
    campaignId: number
    _count: CampaignServerRefCountAggregateOutputType | null
    _avg: CampaignServerRefAvgAggregateOutputType | null
    _sum: CampaignServerRefSumAggregateOutputType | null
    _min: CampaignServerRefMinAggregateOutputType | null
    _max: CampaignServerRefMaxAggregateOutputType | null
  }

  type GetCampaignServerRefGroupByPayload<T extends CampaignServerRefGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<CampaignServerRefGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof CampaignServerRefGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], CampaignServerRefGroupByOutputType[P]>
            : GetScalarType<T[P], CampaignServerRefGroupByOutputType[P]>
        }
      >
    >


  export type CampaignServerRefSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    serverRef?: boolean
    campaignId?: boolean
    campaign?: boolean | CampaignDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["campaignServerRef"]>



  export type CampaignServerRefSelectScalar = {
    serverRef?: boolean
    campaignId?: boolean
  }

  export type CampaignServerRefOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"serverRef" | "campaignId", ExtArgs["result"]["campaignServerRef"]>
  export type CampaignServerRefInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    campaign?: boolean | CampaignDefaultArgs<ExtArgs>
  }

  export type $CampaignServerRefPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "CampaignServerRef"
    objects: {
      campaign: Prisma.$CampaignPayload<ExtArgs>
    }
    scalars: $Extensions.GetPayloadResult<{
      serverRef: bigint
      campaignId: number
    }, ExtArgs["result"]["campaignServerRef"]>
    composites: {}
  }

  type CampaignServerRefGetPayload<S extends boolean | null | undefined | CampaignServerRefDefaultArgs> = $Result.GetResult<Prisma.$CampaignServerRefPayload, S>

  type CampaignServerRefCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<CampaignServerRefFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: CampaignServerRefCountAggregateInputType | true
    }

  export interface CampaignServerRefDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['CampaignServerRef'], meta: { name: 'CampaignServerRef' } }
    /**
     * Find zero or one CampaignServerRef that matches the filter.
     * @param {CampaignServerRefFindUniqueArgs} args - Arguments to find a CampaignServerRef
     * @example
     * // Get one CampaignServerRef
     * const campaignServerRef = await prisma.campaignServerRef.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends CampaignServerRefFindUniqueArgs>(args: SelectSubset<T, CampaignServerRefFindUniqueArgs<ExtArgs>>): Prisma__CampaignServerRefClient<$Result.GetResult<Prisma.$CampaignServerRefPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one CampaignServerRef that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {CampaignServerRefFindUniqueOrThrowArgs} args - Arguments to find a CampaignServerRef
     * @example
     * // Get one CampaignServerRef
     * const campaignServerRef = await prisma.campaignServerRef.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends CampaignServerRefFindUniqueOrThrowArgs>(args: SelectSubset<T, CampaignServerRefFindUniqueOrThrowArgs<ExtArgs>>): Prisma__CampaignServerRefClient<$Result.GetResult<Prisma.$CampaignServerRefPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first CampaignServerRef that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignServerRefFindFirstArgs} args - Arguments to find a CampaignServerRef
     * @example
     * // Get one CampaignServerRef
     * const campaignServerRef = await prisma.campaignServerRef.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends CampaignServerRefFindFirstArgs>(args?: SelectSubset<T, CampaignServerRefFindFirstArgs<ExtArgs>>): Prisma__CampaignServerRefClient<$Result.GetResult<Prisma.$CampaignServerRefPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first CampaignServerRef that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignServerRefFindFirstOrThrowArgs} args - Arguments to find a CampaignServerRef
     * @example
     * // Get one CampaignServerRef
     * const campaignServerRef = await prisma.campaignServerRef.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends CampaignServerRefFindFirstOrThrowArgs>(args?: SelectSubset<T, CampaignServerRefFindFirstOrThrowArgs<ExtArgs>>): Prisma__CampaignServerRefClient<$Result.GetResult<Prisma.$CampaignServerRefPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more CampaignServerRefs that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignServerRefFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all CampaignServerRefs
     * const campaignServerRefs = await prisma.campaignServerRef.findMany()
     * 
     * // Get first 10 CampaignServerRefs
     * const campaignServerRefs = await prisma.campaignServerRef.findMany({ take: 10 })
     * 
     * // Only select the `serverRef`
     * const campaignServerRefWithServerRefOnly = await prisma.campaignServerRef.findMany({ select: { serverRef: true } })
     * 
     */
    findMany<T extends CampaignServerRefFindManyArgs>(args?: SelectSubset<T, CampaignServerRefFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$CampaignServerRefPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a CampaignServerRef.
     * @param {CampaignServerRefCreateArgs} args - Arguments to create a CampaignServerRef.
     * @example
     * // Create one CampaignServerRef
     * const CampaignServerRef = await prisma.campaignServerRef.create({
     *   data: {
     *     // ... data to create a CampaignServerRef
     *   }
     * })
     * 
     */
    create<T extends CampaignServerRefCreateArgs>(args: SelectSubset<T, CampaignServerRefCreateArgs<ExtArgs>>): Prisma__CampaignServerRefClient<$Result.GetResult<Prisma.$CampaignServerRefPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many CampaignServerRefs.
     * @param {CampaignServerRefCreateManyArgs} args - Arguments to create many CampaignServerRefs.
     * @example
     * // Create many CampaignServerRefs
     * const campaignServerRef = await prisma.campaignServerRef.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends CampaignServerRefCreateManyArgs>(args?: SelectSubset<T, CampaignServerRefCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a CampaignServerRef.
     * @param {CampaignServerRefDeleteArgs} args - Arguments to delete one CampaignServerRef.
     * @example
     * // Delete one CampaignServerRef
     * const CampaignServerRef = await prisma.campaignServerRef.delete({
     *   where: {
     *     // ... filter to delete one CampaignServerRef
     *   }
     * })
     * 
     */
    delete<T extends CampaignServerRefDeleteArgs>(args: SelectSubset<T, CampaignServerRefDeleteArgs<ExtArgs>>): Prisma__CampaignServerRefClient<$Result.GetResult<Prisma.$CampaignServerRefPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one CampaignServerRef.
     * @param {CampaignServerRefUpdateArgs} args - Arguments to update one CampaignServerRef.
     * @example
     * // Update one CampaignServerRef
     * const campaignServerRef = await prisma.campaignServerRef.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends CampaignServerRefUpdateArgs>(args: SelectSubset<T, CampaignServerRefUpdateArgs<ExtArgs>>): Prisma__CampaignServerRefClient<$Result.GetResult<Prisma.$CampaignServerRefPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more CampaignServerRefs.
     * @param {CampaignServerRefDeleteManyArgs} args - Arguments to filter CampaignServerRefs to delete.
     * @example
     * // Delete a few CampaignServerRefs
     * const { count } = await prisma.campaignServerRef.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends CampaignServerRefDeleteManyArgs>(args?: SelectSubset<T, CampaignServerRefDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more CampaignServerRefs.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignServerRefUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many CampaignServerRefs
     * const campaignServerRef = await prisma.campaignServerRef.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends CampaignServerRefUpdateManyArgs>(args: SelectSubset<T, CampaignServerRefUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one CampaignServerRef.
     * @param {CampaignServerRefUpsertArgs} args - Arguments to update or create a CampaignServerRef.
     * @example
     * // Update or create a CampaignServerRef
     * const campaignServerRef = await prisma.campaignServerRef.upsert({
     *   create: {
     *     // ... data to create a CampaignServerRef
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the CampaignServerRef we want to update
     *   }
     * })
     */
    upsert<T extends CampaignServerRefUpsertArgs>(args: SelectSubset<T, CampaignServerRefUpsertArgs<ExtArgs>>): Prisma__CampaignServerRefClient<$Result.GetResult<Prisma.$CampaignServerRefPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of CampaignServerRefs.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignServerRefCountArgs} args - Arguments to filter CampaignServerRefs to count.
     * @example
     * // Count the number of CampaignServerRefs
     * const count = await prisma.campaignServerRef.count({
     *   where: {
     *     // ... the filter for the CampaignServerRefs we want to count
     *   }
     * })
    **/
    count<T extends CampaignServerRefCountArgs>(
      args?: Subset<T, CampaignServerRefCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], CampaignServerRefCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a CampaignServerRef.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignServerRefAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends CampaignServerRefAggregateArgs>(args: Subset<T, CampaignServerRefAggregateArgs>): Prisma.PrismaPromise<GetCampaignServerRefAggregateType<T>>

    /**
     * Group by CampaignServerRef.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignServerRefGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends CampaignServerRefGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: CampaignServerRefGroupByArgs['orderBy'] }
        : { orderBy?: CampaignServerRefGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, CampaignServerRefGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetCampaignServerRefGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the CampaignServerRef model
   */
  readonly fields: CampaignServerRefFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for CampaignServerRef.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__CampaignServerRefClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    campaign<T extends CampaignDefaultArgs<ExtArgs> = {}>(args?: Subset<T, CampaignDefaultArgs<ExtArgs>>): Prisma__CampaignClient<$Result.GetResult<Prisma.$CampaignPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the CampaignServerRef model
   */
  interface CampaignServerRefFieldRefs {
    readonly serverRef: FieldRef<"CampaignServerRef", 'BigInt'>
    readonly campaignId: FieldRef<"CampaignServerRef", 'Int'>
  }
    

  // Custom InputTypes
  /**
   * CampaignServerRef findUnique
   */
  export type CampaignServerRefFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignServerRef
     */
    select?: CampaignServerRefSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignServerRef
     */
    omit?: CampaignServerRefOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignServerRefInclude<ExtArgs> | null
    /**
     * Filter, which CampaignServerRef to fetch.
     */
    where: CampaignServerRefWhereUniqueInput
  }

  /**
   * CampaignServerRef findUniqueOrThrow
   */
  export type CampaignServerRefFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignServerRef
     */
    select?: CampaignServerRefSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignServerRef
     */
    omit?: CampaignServerRefOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignServerRefInclude<ExtArgs> | null
    /**
     * Filter, which CampaignServerRef to fetch.
     */
    where: CampaignServerRefWhereUniqueInput
  }

  /**
   * CampaignServerRef findFirst
   */
  export type CampaignServerRefFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignServerRef
     */
    select?: CampaignServerRefSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignServerRef
     */
    omit?: CampaignServerRefOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignServerRefInclude<ExtArgs> | null
    /**
     * Filter, which CampaignServerRef to fetch.
     */
    where?: CampaignServerRefWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of CampaignServerRefs to fetch.
     */
    orderBy?: CampaignServerRefOrderByWithRelationInput | CampaignServerRefOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for CampaignServerRefs.
     */
    cursor?: CampaignServerRefWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` CampaignServerRefs from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` CampaignServerRefs.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of CampaignServerRefs.
     */
    distinct?: CampaignServerRefScalarFieldEnum | CampaignServerRefScalarFieldEnum[]
  }

  /**
   * CampaignServerRef findFirstOrThrow
   */
  export type CampaignServerRefFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignServerRef
     */
    select?: CampaignServerRefSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignServerRef
     */
    omit?: CampaignServerRefOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignServerRefInclude<ExtArgs> | null
    /**
     * Filter, which CampaignServerRef to fetch.
     */
    where?: CampaignServerRefWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of CampaignServerRefs to fetch.
     */
    orderBy?: CampaignServerRefOrderByWithRelationInput | CampaignServerRefOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for CampaignServerRefs.
     */
    cursor?: CampaignServerRefWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` CampaignServerRefs from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` CampaignServerRefs.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of CampaignServerRefs.
     */
    distinct?: CampaignServerRefScalarFieldEnum | CampaignServerRefScalarFieldEnum[]
  }

  /**
   * CampaignServerRef findMany
   */
  export type CampaignServerRefFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignServerRef
     */
    select?: CampaignServerRefSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignServerRef
     */
    omit?: CampaignServerRefOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignServerRefInclude<ExtArgs> | null
    /**
     * Filter, which CampaignServerRefs to fetch.
     */
    where?: CampaignServerRefWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of CampaignServerRefs to fetch.
     */
    orderBy?: CampaignServerRefOrderByWithRelationInput | CampaignServerRefOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing CampaignServerRefs.
     */
    cursor?: CampaignServerRefWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` CampaignServerRefs from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` CampaignServerRefs.
     */
    skip?: number
    distinct?: CampaignServerRefScalarFieldEnum | CampaignServerRefScalarFieldEnum[]
  }

  /**
   * CampaignServerRef create
   */
  export type CampaignServerRefCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignServerRef
     */
    select?: CampaignServerRefSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignServerRef
     */
    omit?: CampaignServerRefOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignServerRefInclude<ExtArgs> | null
    /**
     * The data needed to create a CampaignServerRef.
     */
    data: XOR<CampaignServerRefCreateInput, CampaignServerRefUncheckedCreateInput>
  }

  /**
   * CampaignServerRef createMany
   */
  export type CampaignServerRefCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many CampaignServerRefs.
     */
    data: CampaignServerRefCreateManyInput | CampaignServerRefCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * CampaignServerRef update
   */
  export type CampaignServerRefUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignServerRef
     */
    select?: CampaignServerRefSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignServerRef
     */
    omit?: CampaignServerRefOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignServerRefInclude<ExtArgs> | null
    /**
     * The data needed to update a CampaignServerRef.
     */
    data: XOR<CampaignServerRefUpdateInput, CampaignServerRefUncheckedUpdateInput>
    /**
     * Choose, which CampaignServerRef to update.
     */
    where: CampaignServerRefWhereUniqueInput
  }

  /**
   * CampaignServerRef updateMany
   */
  export type CampaignServerRefUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update CampaignServerRefs.
     */
    data: XOR<CampaignServerRefUpdateManyMutationInput, CampaignServerRefUncheckedUpdateManyInput>
    /**
     * Filter which CampaignServerRefs to update
     */
    where?: CampaignServerRefWhereInput
    /**
     * Limit how many CampaignServerRefs to update.
     */
    limit?: number
  }

  /**
   * CampaignServerRef upsert
   */
  export type CampaignServerRefUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignServerRef
     */
    select?: CampaignServerRefSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignServerRef
     */
    omit?: CampaignServerRefOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignServerRefInclude<ExtArgs> | null
    /**
     * The filter to search for the CampaignServerRef to update in case it exists.
     */
    where: CampaignServerRefWhereUniqueInput
    /**
     * In case the CampaignServerRef found by the `where` argument doesn't exist, create a new CampaignServerRef with this data.
     */
    create: XOR<CampaignServerRefCreateInput, CampaignServerRefUncheckedCreateInput>
    /**
     * In case the CampaignServerRef was found with the provided `where` argument, update it with this data.
     */
    update: XOR<CampaignServerRefUpdateInput, CampaignServerRefUncheckedUpdateInput>
  }

  /**
   * CampaignServerRef delete
   */
  export type CampaignServerRefDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignServerRef
     */
    select?: CampaignServerRefSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignServerRef
     */
    omit?: CampaignServerRefOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignServerRefInclude<ExtArgs> | null
    /**
     * Filter which CampaignServerRef to delete.
     */
    where: CampaignServerRefWhereUniqueInput
  }

  /**
   * CampaignServerRef deleteMany
   */
  export type CampaignServerRefDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which CampaignServerRefs to delete
     */
    where?: CampaignServerRefWhereInput
    /**
     * Limit how many CampaignServerRefs to delete.
     */
    limit?: number
  }

  /**
   * CampaignServerRef without action
   */
  export type CampaignServerRefDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignServerRef
     */
    select?: CampaignServerRefSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignServerRef
     */
    omit?: CampaignServerRefOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignServerRefInclude<ExtArgs> | null
  }


  /**
   * Model CampaignRecipient
   */

  export type AggregateCampaignRecipient = {
    _count: CampaignRecipientCountAggregateOutputType | null
    _avg: CampaignRecipientAvgAggregateOutputType | null
    _sum: CampaignRecipientSumAggregateOutputType | null
    _min: CampaignRecipientMinAggregateOutputType | null
    _max: CampaignRecipientMaxAggregateOutputType | null
  }

  export type CampaignRecipientAvgAggregateOutputType = {
    id: number | null
    campaignId: number | null
  }

  export type CampaignRecipientSumAggregateOutputType = {
    id: bigint | null
    campaignId: number | null
  }

  export type CampaignRecipientMinAggregateOutputType = {
    id: bigint | null
    campaignId: number | null
    phoneNumber: string | null
    name: string | null
    param1: string | null
    param2: string | null
    param3: string | null
    param4: string | null
    param5: string | null
    param6: string | null
    param7: string | null
    param8: string | null
    param9: string | null
    param10: string | null
  }

  export type CampaignRecipientMaxAggregateOutputType = {
    id: bigint | null
    campaignId: number | null
    phoneNumber: string | null
    name: string | null
    param1: string | null
    param2: string | null
    param3: string | null
    param4: string | null
    param5: string | null
    param6: string | null
    param7: string | null
    param8: string | null
    param9: string | null
    param10: string | null
  }

  export type CampaignRecipientCountAggregateOutputType = {
    id: number
    campaignId: number
    phoneNumber: number
    name: number
    param1: number
    param2: number
    param3: number
    param4: number
    param5: number
    param6: number
    param7: number
    param8: number
    param9: number
    param10: number
    _all: number
  }


  export type CampaignRecipientAvgAggregateInputType = {
    id?: true
    campaignId?: true
  }

  export type CampaignRecipientSumAggregateInputType = {
    id?: true
    campaignId?: true
  }

  export type CampaignRecipientMinAggregateInputType = {
    id?: true
    campaignId?: true
    phoneNumber?: true
    name?: true
    param1?: true
    param2?: true
    param3?: true
    param4?: true
    param5?: true
    param6?: true
    param7?: true
    param8?: true
    param9?: true
    param10?: true
  }

  export type CampaignRecipientMaxAggregateInputType = {
    id?: true
    campaignId?: true
    phoneNumber?: true
    name?: true
    param1?: true
    param2?: true
    param3?: true
    param4?: true
    param5?: true
    param6?: true
    param7?: true
    param8?: true
    param9?: true
    param10?: true
  }

  export type CampaignRecipientCountAggregateInputType = {
    id?: true
    campaignId?: true
    phoneNumber?: true
    name?: true
    param1?: true
    param2?: true
    param3?: true
    param4?: true
    param5?: true
    param6?: true
    param7?: true
    param8?: true
    param9?: true
    param10?: true
    _all?: true
  }

  export type CampaignRecipientAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which CampaignRecipient to aggregate.
     */
    where?: CampaignRecipientWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of CampaignRecipients to fetch.
     */
    orderBy?: CampaignRecipientOrderByWithRelationInput | CampaignRecipientOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: CampaignRecipientWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` CampaignRecipients from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` CampaignRecipients.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned CampaignRecipients
    **/
    _count?: true | CampaignRecipientCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: CampaignRecipientAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: CampaignRecipientSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: CampaignRecipientMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: CampaignRecipientMaxAggregateInputType
  }

  export type GetCampaignRecipientAggregateType<T extends CampaignRecipientAggregateArgs> = {
        [P in keyof T & keyof AggregateCampaignRecipient]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateCampaignRecipient[P]>
      : GetScalarType<T[P], AggregateCampaignRecipient[P]>
  }




  export type CampaignRecipientGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: CampaignRecipientWhereInput
    orderBy?: CampaignRecipientOrderByWithAggregationInput | CampaignRecipientOrderByWithAggregationInput[]
    by: CampaignRecipientScalarFieldEnum[] | CampaignRecipientScalarFieldEnum
    having?: CampaignRecipientScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: CampaignRecipientCountAggregateInputType | true
    _avg?: CampaignRecipientAvgAggregateInputType
    _sum?: CampaignRecipientSumAggregateInputType
    _min?: CampaignRecipientMinAggregateInputType
    _max?: CampaignRecipientMaxAggregateInputType
  }

  export type CampaignRecipientGroupByOutputType = {
    id: bigint
    campaignId: number
    phoneNumber: string
    name: string | null
    param1: string | null
    param2: string | null
    param3: string | null
    param4: string | null
    param5: string | null
    param6: string | null
    param7: string | null
    param8: string | null
    param9: string | null
    param10: string | null
    _count: CampaignRecipientCountAggregateOutputType | null
    _avg: CampaignRecipientAvgAggregateOutputType | null
    _sum: CampaignRecipientSumAggregateOutputType | null
    _min: CampaignRecipientMinAggregateOutputType | null
    _max: CampaignRecipientMaxAggregateOutputType | null
  }

  type GetCampaignRecipientGroupByPayload<T extends CampaignRecipientGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<CampaignRecipientGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof CampaignRecipientGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], CampaignRecipientGroupByOutputType[P]>
            : GetScalarType<T[P], CampaignRecipientGroupByOutputType[P]>
        }
      >
    >


  export type CampaignRecipientSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    campaignId?: boolean
    phoneNumber?: boolean
    name?: boolean
    param1?: boolean
    param2?: boolean
    param3?: boolean
    param4?: boolean
    param5?: boolean
    param6?: boolean
    param7?: boolean
    param8?: boolean
    param9?: boolean
    param10?: boolean
    campaign?: boolean | CampaignDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["campaignRecipient"]>



  export type CampaignRecipientSelectScalar = {
    id?: boolean
    campaignId?: boolean
    phoneNumber?: boolean
    name?: boolean
    param1?: boolean
    param2?: boolean
    param3?: boolean
    param4?: boolean
    param5?: boolean
    param6?: boolean
    param7?: boolean
    param8?: boolean
    param9?: boolean
    param10?: boolean
  }

  export type CampaignRecipientOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "campaignId" | "phoneNumber" | "name" | "param1" | "param2" | "param3" | "param4" | "param5" | "param6" | "param7" | "param8" | "param9" | "param10", ExtArgs["result"]["campaignRecipient"]>
  export type CampaignRecipientInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    campaign?: boolean | CampaignDefaultArgs<ExtArgs>
  }

  export type $CampaignRecipientPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "CampaignRecipient"
    objects: {
      campaign: Prisma.$CampaignPayload<ExtArgs>
    }
    scalars: $Extensions.GetPayloadResult<{
      id: bigint
      campaignId: number
      phoneNumber: string
      name: string | null
      param1: string | null
      param2: string | null
      param3: string | null
      param4: string | null
      param5: string | null
      param6: string | null
      param7: string | null
      param8: string | null
      param9: string | null
      param10: string | null
    }, ExtArgs["result"]["campaignRecipient"]>
    composites: {}
  }

  type CampaignRecipientGetPayload<S extends boolean | null | undefined | CampaignRecipientDefaultArgs> = $Result.GetResult<Prisma.$CampaignRecipientPayload, S>

  type CampaignRecipientCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<CampaignRecipientFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: CampaignRecipientCountAggregateInputType | true
    }

  export interface CampaignRecipientDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['CampaignRecipient'], meta: { name: 'CampaignRecipient' } }
    /**
     * Find zero or one CampaignRecipient that matches the filter.
     * @param {CampaignRecipientFindUniqueArgs} args - Arguments to find a CampaignRecipient
     * @example
     * // Get one CampaignRecipient
     * const campaignRecipient = await prisma.campaignRecipient.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends CampaignRecipientFindUniqueArgs>(args: SelectSubset<T, CampaignRecipientFindUniqueArgs<ExtArgs>>): Prisma__CampaignRecipientClient<$Result.GetResult<Prisma.$CampaignRecipientPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one CampaignRecipient that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {CampaignRecipientFindUniqueOrThrowArgs} args - Arguments to find a CampaignRecipient
     * @example
     * // Get one CampaignRecipient
     * const campaignRecipient = await prisma.campaignRecipient.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends CampaignRecipientFindUniqueOrThrowArgs>(args: SelectSubset<T, CampaignRecipientFindUniqueOrThrowArgs<ExtArgs>>): Prisma__CampaignRecipientClient<$Result.GetResult<Prisma.$CampaignRecipientPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first CampaignRecipient that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignRecipientFindFirstArgs} args - Arguments to find a CampaignRecipient
     * @example
     * // Get one CampaignRecipient
     * const campaignRecipient = await prisma.campaignRecipient.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends CampaignRecipientFindFirstArgs>(args?: SelectSubset<T, CampaignRecipientFindFirstArgs<ExtArgs>>): Prisma__CampaignRecipientClient<$Result.GetResult<Prisma.$CampaignRecipientPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first CampaignRecipient that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignRecipientFindFirstOrThrowArgs} args - Arguments to find a CampaignRecipient
     * @example
     * // Get one CampaignRecipient
     * const campaignRecipient = await prisma.campaignRecipient.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends CampaignRecipientFindFirstOrThrowArgs>(args?: SelectSubset<T, CampaignRecipientFindFirstOrThrowArgs<ExtArgs>>): Prisma__CampaignRecipientClient<$Result.GetResult<Prisma.$CampaignRecipientPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more CampaignRecipients that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignRecipientFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all CampaignRecipients
     * const campaignRecipients = await prisma.campaignRecipient.findMany()
     * 
     * // Get first 10 CampaignRecipients
     * const campaignRecipients = await prisma.campaignRecipient.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const campaignRecipientWithIdOnly = await prisma.campaignRecipient.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends CampaignRecipientFindManyArgs>(args?: SelectSubset<T, CampaignRecipientFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$CampaignRecipientPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a CampaignRecipient.
     * @param {CampaignRecipientCreateArgs} args - Arguments to create a CampaignRecipient.
     * @example
     * // Create one CampaignRecipient
     * const CampaignRecipient = await prisma.campaignRecipient.create({
     *   data: {
     *     // ... data to create a CampaignRecipient
     *   }
     * })
     * 
     */
    create<T extends CampaignRecipientCreateArgs>(args: SelectSubset<T, CampaignRecipientCreateArgs<ExtArgs>>): Prisma__CampaignRecipientClient<$Result.GetResult<Prisma.$CampaignRecipientPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many CampaignRecipients.
     * @param {CampaignRecipientCreateManyArgs} args - Arguments to create many CampaignRecipients.
     * @example
     * // Create many CampaignRecipients
     * const campaignRecipient = await prisma.campaignRecipient.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends CampaignRecipientCreateManyArgs>(args?: SelectSubset<T, CampaignRecipientCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a CampaignRecipient.
     * @param {CampaignRecipientDeleteArgs} args - Arguments to delete one CampaignRecipient.
     * @example
     * // Delete one CampaignRecipient
     * const CampaignRecipient = await prisma.campaignRecipient.delete({
     *   where: {
     *     // ... filter to delete one CampaignRecipient
     *   }
     * })
     * 
     */
    delete<T extends CampaignRecipientDeleteArgs>(args: SelectSubset<T, CampaignRecipientDeleteArgs<ExtArgs>>): Prisma__CampaignRecipientClient<$Result.GetResult<Prisma.$CampaignRecipientPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one CampaignRecipient.
     * @param {CampaignRecipientUpdateArgs} args - Arguments to update one CampaignRecipient.
     * @example
     * // Update one CampaignRecipient
     * const campaignRecipient = await prisma.campaignRecipient.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends CampaignRecipientUpdateArgs>(args: SelectSubset<T, CampaignRecipientUpdateArgs<ExtArgs>>): Prisma__CampaignRecipientClient<$Result.GetResult<Prisma.$CampaignRecipientPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more CampaignRecipients.
     * @param {CampaignRecipientDeleteManyArgs} args - Arguments to filter CampaignRecipients to delete.
     * @example
     * // Delete a few CampaignRecipients
     * const { count } = await prisma.campaignRecipient.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends CampaignRecipientDeleteManyArgs>(args?: SelectSubset<T, CampaignRecipientDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more CampaignRecipients.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignRecipientUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many CampaignRecipients
     * const campaignRecipient = await prisma.campaignRecipient.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends CampaignRecipientUpdateManyArgs>(args: SelectSubset<T, CampaignRecipientUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one CampaignRecipient.
     * @param {CampaignRecipientUpsertArgs} args - Arguments to update or create a CampaignRecipient.
     * @example
     * // Update or create a CampaignRecipient
     * const campaignRecipient = await prisma.campaignRecipient.upsert({
     *   create: {
     *     // ... data to create a CampaignRecipient
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the CampaignRecipient we want to update
     *   }
     * })
     */
    upsert<T extends CampaignRecipientUpsertArgs>(args: SelectSubset<T, CampaignRecipientUpsertArgs<ExtArgs>>): Prisma__CampaignRecipientClient<$Result.GetResult<Prisma.$CampaignRecipientPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of CampaignRecipients.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignRecipientCountArgs} args - Arguments to filter CampaignRecipients to count.
     * @example
     * // Count the number of CampaignRecipients
     * const count = await prisma.campaignRecipient.count({
     *   where: {
     *     // ... the filter for the CampaignRecipients we want to count
     *   }
     * })
    **/
    count<T extends CampaignRecipientCountArgs>(
      args?: Subset<T, CampaignRecipientCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], CampaignRecipientCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a CampaignRecipient.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignRecipientAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends CampaignRecipientAggregateArgs>(args: Subset<T, CampaignRecipientAggregateArgs>): Prisma.PrismaPromise<GetCampaignRecipientAggregateType<T>>

    /**
     * Group by CampaignRecipient.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CampaignRecipientGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends CampaignRecipientGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: CampaignRecipientGroupByArgs['orderBy'] }
        : { orderBy?: CampaignRecipientGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, CampaignRecipientGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetCampaignRecipientGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the CampaignRecipient model
   */
  readonly fields: CampaignRecipientFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for CampaignRecipient.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__CampaignRecipientClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    campaign<T extends CampaignDefaultArgs<ExtArgs> = {}>(args?: Subset<T, CampaignDefaultArgs<ExtArgs>>): Prisma__CampaignClient<$Result.GetResult<Prisma.$CampaignPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the CampaignRecipient model
   */
  interface CampaignRecipientFieldRefs {
    readonly id: FieldRef<"CampaignRecipient", 'BigInt'>
    readonly campaignId: FieldRef<"CampaignRecipient", 'Int'>
    readonly phoneNumber: FieldRef<"CampaignRecipient", 'String'>
    readonly name: FieldRef<"CampaignRecipient", 'String'>
    readonly param1: FieldRef<"CampaignRecipient", 'String'>
    readonly param2: FieldRef<"CampaignRecipient", 'String'>
    readonly param3: FieldRef<"CampaignRecipient", 'String'>
    readonly param4: FieldRef<"CampaignRecipient", 'String'>
    readonly param5: FieldRef<"CampaignRecipient", 'String'>
    readonly param6: FieldRef<"CampaignRecipient", 'String'>
    readonly param7: FieldRef<"CampaignRecipient", 'String'>
    readonly param8: FieldRef<"CampaignRecipient", 'String'>
    readonly param9: FieldRef<"CampaignRecipient", 'String'>
    readonly param10: FieldRef<"CampaignRecipient", 'String'>
  }
    

  // Custom InputTypes
  /**
   * CampaignRecipient findUnique
   */
  export type CampaignRecipientFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignRecipient
     */
    select?: CampaignRecipientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignRecipient
     */
    omit?: CampaignRecipientOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignRecipientInclude<ExtArgs> | null
    /**
     * Filter, which CampaignRecipient to fetch.
     */
    where: CampaignRecipientWhereUniqueInput
  }

  /**
   * CampaignRecipient findUniqueOrThrow
   */
  export type CampaignRecipientFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignRecipient
     */
    select?: CampaignRecipientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignRecipient
     */
    omit?: CampaignRecipientOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignRecipientInclude<ExtArgs> | null
    /**
     * Filter, which CampaignRecipient to fetch.
     */
    where: CampaignRecipientWhereUniqueInput
  }

  /**
   * CampaignRecipient findFirst
   */
  export type CampaignRecipientFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignRecipient
     */
    select?: CampaignRecipientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignRecipient
     */
    omit?: CampaignRecipientOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignRecipientInclude<ExtArgs> | null
    /**
     * Filter, which CampaignRecipient to fetch.
     */
    where?: CampaignRecipientWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of CampaignRecipients to fetch.
     */
    orderBy?: CampaignRecipientOrderByWithRelationInput | CampaignRecipientOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for CampaignRecipients.
     */
    cursor?: CampaignRecipientWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` CampaignRecipients from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` CampaignRecipients.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of CampaignRecipients.
     */
    distinct?: CampaignRecipientScalarFieldEnum | CampaignRecipientScalarFieldEnum[]
  }

  /**
   * CampaignRecipient findFirstOrThrow
   */
  export type CampaignRecipientFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignRecipient
     */
    select?: CampaignRecipientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignRecipient
     */
    omit?: CampaignRecipientOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignRecipientInclude<ExtArgs> | null
    /**
     * Filter, which CampaignRecipient to fetch.
     */
    where?: CampaignRecipientWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of CampaignRecipients to fetch.
     */
    orderBy?: CampaignRecipientOrderByWithRelationInput | CampaignRecipientOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for CampaignRecipients.
     */
    cursor?: CampaignRecipientWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` CampaignRecipients from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` CampaignRecipients.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of CampaignRecipients.
     */
    distinct?: CampaignRecipientScalarFieldEnum | CampaignRecipientScalarFieldEnum[]
  }

  /**
   * CampaignRecipient findMany
   */
  export type CampaignRecipientFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignRecipient
     */
    select?: CampaignRecipientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignRecipient
     */
    omit?: CampaignRecipientOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignRecipientInclude<ExtArgs> | null
    /**
     * Filter, which CampaignRecipients to fetch.
     */
    where?: CampaignRecipientWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of CampaignRecipients to fetch.
     */
    orderBy?: CampaignRecipientOrderByWithRelationInput | CampaignRecipientOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing CampaignRecipients.
     */
    cursor?: CampaignRecipientWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` CampaignRecipients from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` CampaignRecipients.
     */
    skip?: number
    distinct?: CampaignRecipientScalarFieldEnum | CampaignRecipientScalarFieldEnum[]
  }

  /**
   * CampaignRecipient create
   */
  export type CampaignRecipientCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignRecipient
     */
    select?: CampaignRecipientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignRecipient
     */
    omit?: CampaignRecipientOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignRecipientInclude<ExtArgs> | null
    /**
     * The data needed to create a CampaignRecipient.
     */
    data: XOR<CampaignRecipientCreateInput, CampaignRecipientUncheckedCreateInput>
  }

  /**
   * CampaignRecipient createMany
   */
  export type CampaignRecipientCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many CampaignRecipients.
     */
    data: CampaignRecipientCreateManyInput | CampaignRecipientCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * CampaignRecipient update
   */
  export type CampaignRecipientUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignRecipient
     */
    select?: CampaignRecipientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignRecipient
     */
    omit?: CampaignRecipientOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignRecipientInclude<ExtArgs> | null
    /**
     * The data needed to update a CampaignRecipient.
     */
    data: XOR<CampaignRecipientUpdateInput, CampaignRecipientUncheckedUpdateInput>
    /**
     * Choose, which CampaignRecipient to update.
     */
    where: CampaignRecipientWhereUniqueInput
  }

  /**
   * CampaignRecipient updateMany
   */
  export type CampaignRecipientUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update CampaignRecipients.
     */
    data: XOR<CampaignRecipientUpdateManyMutationInput, CampaignRecipientUncheckedUpdateManyInput>
    /**
     * Filter which CampaignRecipients to update
     */
    where?: CampaignRecipientWhereInput
    /**
     * Limit how many CampaignRecipients to update.
     */
    limit?: number
  }

  /**
   * CampaignRecipient upsert
   */
  export type CampaignRecipientUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignRecipient
     */
    select?: CampaignRecipientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignRecipient
     */
    omit?: CampaignRecipientOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignRecipientInclude<ExtArgs> | null
    /**
     * The filter to search for the CampaignRecipient to update in case it exists.
     */
    where: CampaignRecipientWhereUniqueInput
    /**
     * In case the CampaignRecipient found by the `where` argument doesn't exist, create a new CampaignRecipient with this data.
     */
    create: XOR<CampaignRecipientCreateInput, CampaignRecipientUncheckedCreateInput>
    /**
     * In case the CampaignRecipient was found with the provided `where` argument, update it with this data.
     */
    update: XOR<CampaignRecipientUpdateInput, CampaignRecipientUncheckedUpdateInput>
  }

  /**
   * CampaignRecipient delete
   */
  export type CampaignRecipientDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignRecipient
     */
    select?: CampaignRecipientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignRecipient
     */
    omit?: CampaignRecipientOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignRecipientInclude<ExtArgs> | null
    /**
     * Filter which CampaignRecipient to delete.
     */
    where: CampaignRecipientWhereUniqueInput
  }

  /**
   * CampaignRecipient deleteMany
   */
  export type CampaignRecipientDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which CampaignRecipients to delete
     */
    where?: CampaignRecipientWhereInput
    /**
     * Limit how many CampaignRecipients to delete.
     */
    limit?: number
  }

  /**
   * CampaignRecipient without action
   */
  export type CampaignRecipientDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CampaignRecipient
     */
    select?: CampaignRecipientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the CampaignRecipient
     */
    omit?: CampaignRecipientOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignRecipientInclude<ExtArgs> | null
  }


  /**
   * Model MobileNumberList
   */

  export type AggregateMobileNumberList = {
    _count: MobileNumberListCountAggregateOutputType | null
    _avg: MobileNumberListAvgAggregateOutputType | null
    _sum: MobileNumberListSumAggregateOutputType | null
    _min: MobileNumberListMinAggregateOutputType | null
    _max: MobileNumberListMaxAggregateOutputType | null
  }

  export type MobileNumberListAvgAggregateOutputType = {
    id: number | null
    createdByUserId: number | null
    companyId: number | null
  }

  export type MobileNumberListSumAggregateOutputType = {
    id: bigint | null
    createdByUserId: number | null
    companyId: number | null
  }

  export type MobileNumberListMinAggregateOutputType = {
    id: bigint | null
    uuid: string | null
    listName: string | null
    listType: string | null
    createdByUserId: number | null
    companyId: number | null
    createdAt: Date | null
    updatedAt: Date | null
    deletedAt: Date | null
  }

  export type MobileNumberListMaxAggregateOutputType = {
    id: bigint | null
    uuid: string | null
    listName: string | null
    listType: string | null
    createdByUserId: number | null
    companyId: number | null
    createdAt: Date | null
    updatedAt: Date | null
    deletedAt: Date | null
  }

  export type MobileNumberListCountAggregateOutputType = {
    id: number
    uuid: number
    listName: number
    listType: number
    createdByUserId: number
    companyId: number
    createdAt: number
    updatedAt: number
    deletedAt: number
    _all: number
  }


  export type MobileNumberListAvgAggregateInputType = {
    id?: true
    createdByUserId?: true
    companyId?: true
  }

  export type MobileNumberListSumAggregateInputType = {
    id?: true
    createdByUserId?: true
    companyId?: true
  }

  export type MobileNumberListMinAggregateInputType = {
    id?: true
    uuid?: true
    listName?: true
    listType?: true
    createdByUserId?: true
    companyId?: true
    createdAt?: true
    updatedAt?: true
    deletedAt?: true
  }

  export type MobileNumberListMaxAggregateInputType = {
    id?: true
    uuid?: true
    listName?: true
    listType?: true
    createdByUserId?: true
    companyId?: true
    createdAt?: true
    updatedAt?: true
    deletedAt?: true
  }

  export type MobileNumberListCountAggregateInputType = {
    id?: true
    uuid?: true
    listName?: true
    listType?: true
    createdByUserId?: true
    companyId?: true
    createdAt?: true
    updatedAt?: true
    deletedAt?: true
    _all?: true
  }

  export type MobileNumberListAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which MobileNumberList to aggregate.
     */
    where?: MobileNumberListWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of MobileNumberLists to fetch.
     */
    orderBy?: MobileNumberListOrderByWithRelationInput | MobileNumberListOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: MobileNumberListWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` MobileNumberLists from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` MobileNumberLists.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned MobileNumberLists
    **/
    _count?: true | MobileNumberListCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: MobileNumberListAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: MobileNumberListSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: MobileNumberListMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: MobileNumberListMaxAggregateInputType
  }

  export type GetMobileNumberListAggregateType<T extends MobileNumberListAggregateArgs> = {
        [P in keyof T & keyof AggregateMobileNumberList]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateMobileNumberList[P]>
      : GetScalarType<T[P], AggregateMobileNumberList[P]>
  }




  export type MobileNumberListGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: MobileNumberListWhereInput
    orderBy?: MobileNumberListOrderByWithAggregationInput | MobileNumberListOrderByWithAggregationInput[]
    by: MobileNumberListScalarFieldEnum[] | MobileNumberListScalarFieldEnum
    having?: MobileNumberListScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: MobileNumberListCountAggregateInputType | true
    _avg?: MobileNumberListAvgAggregateInputType
    _sum?: MobileNumberListSumAggregateInputType
    _min?: MobileNumberListMinAggregateInputType
    _max?: MobileNumberListMaxAggregateInputType
  }

  export type MobileNumberListGroupByOutputType = {
    id: bigint
    uuid: string
    listName: string
    listType: string
    createdByUserId: number
    companyId: number | null
    createdAt: Date
    updatedAt: Date
    deletedAt: Date | null
    _count: MobileNumberListCountAggregateOutputType | null
    _avg: MobileNumberListAvgAggregateOutputType | null
    _sum: MobileNumberListSumAggregateOutputType | null
    _min: MobileNumberListMinAggregateOutputType | null
    _max: MobileNumberListMaxAggregateOutputType | null
  }

  type GetMobileNumberListGroupByPayload<T extends MobileNumberListGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<MobileNumberListGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof MobileNumberListGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], MobileNumberListGroupByOutputType[P]>
            : GetScalarType<T[P], MobileNumberListGroupByOutputType[P]>
        }
      >
    >


  export type MobileNumberListSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    uuid?: boolean
    listName?: boolean
    listType?: boolean
    createdByUserId?: boolean
    companyId?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    deletedAt?: boolean
    company?: boolean | MobileNumberList$companyArgs<ExtArgs>
    campaigns?: boolean | MobileNumberList$campaignsArgs<ExtArgs>
    mobileNumbers?: boolean | MobileNumberList$mobileNumbersArgs<ExtArgs>
    _count?: boolean | MobileNumberListCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["mobileNumberList"]>



  export type MobileNumberListSelectScalar = {
    id?: boolean
    uuid?: boolean
    listName?: boolean
    listType?: boolean
    createdByUserId?: boolean
    companyId?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    deletedAt?: boolean
  }

  export type MobileNumberListOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "uuid" | "listName" | "listType" | "createdByUserId" | "companyId" | "createdAt" | "updatedAt" | "deletedAt", ExtArgs["result"]["mobileNumberList"]>
  export type MobileNumberListInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    company?: boolean | MobileNumberList$companyArgs<ExtArgs>
    campaigns?: boolean | MobileNumberList$campaignsArgs<ExtArgs>
    mobileNumbers?: boolean | MobileNumberList$mobileNumbersArgs<ExtArgs>
    _count?: boolean | MobileNumberListCountOutputTypeDefaultArgs<ExtArgs>
  }

  export type $MobileNumberListPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "MobileNumberList"
    objects: {
      company: Prisma.$CompanyPayload<ExtArgs> | null
      campaigns: Prisma.$CampaignPayload<ExtArgs>[]
      mobileNumbers: Prisma.$MobileNumberPayload<ExtArgs>[]
    }
    scalars: $Extensions.GetPayloadResult<{
      id: bigint
      uuid: string
      listName: string
      listType: string
      createdByUserId: number
      companyId: number | null
      createdAt: Date
      updatedAt: Date
      deletedAt: Date | null
    }, ExtArgs["result"]["mobileNumberList"]>
    composites: {}
  }

  type MobileNumberListGetPayload<S extends boolean | null | undefined | MobileNumberListDefaultArgs> = $Result.GetResult<Prisma.$MobileNumberListPayload, S>

  type MobileNumberListCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<MobileNumberListFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: MobileNumberListCountAggregateInputType | true
    }

  export interface MobileNumberListDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['MobileNumberList'], meta: { name: 'MobileNumberList' } }
    /**
     * Find zero or one MobileNumberList that matches the filter.
     * @param {MobileNumberListFindUniqueArgs} args - Arguments to find a MobileNumberList
     * @example
     * // Get one MobileNumberList
     * const mobileNumberList = await prisma.mobileNumberList.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends MobileNumberListFindUniqueArgs>(args: SelectSubset<T, MobileNumberListFindUniqueArgs<ExtArgs>>): Prisma__MobileNumberListClient<$Result.GetResult<Prisma.$MobileNumberListPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one MobileNumberList that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {MobileNumberListFindUniqueOrThrowArgs} args - Arguments to find a MobileNumberList
     * @example
     * // Get one MobileNumberList
     * const mobileNumberList = await prisma.mobileNumberList.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends MobileNumberListFindUniqueOrThrowArgs>(args: SelectSubset<T, MobileNumberListFindUniqueOrThrowArgs<ExtArgs>>): Prisma__MobileNumberListClient<$Result.GetResult<Prisma.$MobileNumberListPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first MobileNumberList that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {MobileNumberListFindFirstArgs} args - Arguments to find a MobileNumberList
     * @example
     * // Get one MobileNumberList
     * const mobileNumberList = await prisma.mobileNumberList.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends MobileNumberListFindFirstArgs>(args?: SelectSubset<T, MobileNumberListFindFirstArgs<ExtArgs>>): Prisma__MobileNumberListClient<$Result.GetResult<Prisma.$MobileNumberListPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first MobileNumberList that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {MobileNumberListFindFirstOrThrowArgs} args - Arguments to find a MobileNumberList
     * @example
     * // Get one MobileNumberList
     * const mobileNumberList = await prisma.mobileNumberList.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends MobileNumberListFindFirstOrThrowArgs>(args?: SelectSubset<T, MobileNumberListFindFirstOrThrowArgs<ExtArgs>>): Prisma__MobileNumberListClient<$Result.GetResult<Prisma.$MobileNumberListPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more MobileNumberLists that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {MobileNumberListFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all MobileNumberLists
     * const mobileNumberLists = await prisma.mobileNumberList.findMany()
     * 
     * // Get first 10 MobileNumberLists
     * const mobileNumberLists = await prisma.mobileNumberList.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const mobileNumberListWithIdOnly = await prisma.mobileNumberList.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends MobileNumberListFindManyArgs>(args?: SelectSubset<T, MobileNumberListFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$MobileNumberListPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a MobileNumberList.
     * @param {MobileNumberListCreateArgs} args - Arguments to create a MobileNumberList.
     * @example
     * // Create one MobileNumberList
     * const MobileNumberList = await prisma.mobileNumberList.create({
     *   data: {
     *     // ... data to create a MobileNumberList
     *   }
     * })
     * 
     */
    create<T extends MobileNumberListCreateArgs>(args: SelectSubset<T, MobileNumberListCreateArgs<ExtArgs>>): Prisma__MobileNumberListClient<$Result.GetResult<Prisma.$MobileNumberListPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many MobileNumberLists.
     * @param {MobileNumberListCreateManyArgs} args - Arguments to create many MobileNumberLists.
     * @example
     * // Create many MobileNumberLists
     * const mobileNumberList = await prisma.mobileNumberList.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends MobileNumberListCreateManyArgs>(args?: SelectSubset<T, MobileNumberListCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a MobileNumberList.
     * @param {MobileNumberListDeleteArgs} args - Arguments to delete one MobileNumberList.
     * @example
     * // Delete one MobileNumberList
     * const MobileNumberList = await prisma.mobileNumberList.delete({
     *   where: {
     *     // ... filter to delete one MobileNumberList
     *   }
     * })
     * 
     */
    delete<T extends MobileNumberListDeleteArgs>(args: SelectSubset<T, MobileNumberListDeleteArgs<ExtArgs>>): Prisma__MobileNumberListClient<$Result.GetResult<Prisma.$MobileNumberListPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one MobileNumberList.
     * @param {MobileNumberListUpdateArgs} args - Arguments to update one MobileNumberList.
     * @example
     * // Update one MobileNumberList
     * const mobileNumberList = await prisma.mobileNumberList.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends MobileNumberListUpdateArgs>(args: SelectSubset<T, MobileNumberListUpdateArgs<ExtArgs>>): Prisma__MobileNumberListClient<$Result.GetResult<Prisma.$MobileNumberListPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more MobileNumberLists.
     * @param {MobileNumberListDeleteManyArgs} args - Arguments to filter MobileNumberLists to delete.
     * @example
     * // Delete a few MobileNumberLists
     * const { count } = await prisma.mobileNumberList.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends MobileNumberListDeleteManyArgs>(args?: SelectSubset<T, MobileNumberListDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more MobileNumberLists.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {MobileNumberListUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many MobileNumberLists
     * const mobileNumberList = await prisma.mobileNumberList.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends MobileNumberListUpdateManyArgs>(args: SelectSubset<T, MobileNumberListUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one MobileNumberList.
     * @param {MobileNumberListUpsertArgs} args - Arguments to update or create a MobileNumberList.
     * @example
     * // Update or create a MobileNumberList
     * const mobileNumberList = await prisma.mobileNumberList.upsert({
     *   create: {
     *     // ... data to create a MobileNumberList
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the MobileNumberList we want to update
     *   }
     * })
     */
    upsert<T extends MobileNumberListUpsertArgs>(args: SelectSubset<T, MobileNumberListUpsertArgs<ExtArgs>>): Prisma__MobileNumberListClient<$Result.GetResult<Prisma.$MobileNumberListPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of MobileNumberLists.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {MobileNumberListCountArgs} args - Arguments to filter MobileNumberLists to count.
     * @example
     * // Count the number of MobileNumberLists
     * const count = await prisma.mobileNumberList.count({
     *   where: {
     *     // ... the filter for the MobileNumberLists we want to count
     *   }
     * })
    **/
    count<T extends MobileNumberListCountArgs>(
      args?: Subset<T, MobileNumberListCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], MobileNumberListCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a MobileNumberList.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {MobileNumberListAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends MobileNumberListAggregateArgs>(args: Subset<T, MobileNumberListAggregateArgs>): Prisma.PrismaPromise<GetMobileNumberListAggregateType<T>>

    /**
     * Group by MobileNumberList.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {MobileNumberListGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends MobileNumberListGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: MobileNumberListGroupByArgs['orderBy'] }
        : { orderBy?: MobileNumberListGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, MobileNumberListGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetMobileNumberListGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the MobileNumberList model
   */
  readonly fields: MobileNumberListFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for MobileNumberList.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__MobileNumberListClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    company<T extends MobileNumberList$companyArgs<ExtArgs> = {}>(args?: Subset<T, MobileNumberList$companyArgs<ExtArgs>>): Prisma__CompanyClient<$Result.GetResult<Prisma.$CompanyPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
    campaigns<T extends MobileNumberList$campaignsArgs<ExtArgs> = {}>(args?: Subset<T, MobileNumberList$campaignsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$CampaignPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    mobileNumbers<T extends MobileNumberList$mobileNumbersArgs<ExtArgs> = {}>(args?: Subset<T, MobileNumberList$mobileNumbersArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$MobileNumberPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the MobileNumberList model
   */
  interface MobileNumberListFieldRefs {
    readonly id: FieldRef<"MobileNumberList", 'BigInt'>
    readonly uuid: FieldRef<"MobileNumberList", 'String'>
    readonly listName: FieldRef<"MobileNumberList", 'String'>
    readonly listType: FieldRef<"MobileNumberList", 'String'>
    readonly createdByUserId: FieldRef<"MobileNumberList", 'Int'>
    readonly companyId: FieldRef<"MobileNumberList", 'Int'>
    readonly createdAt: FieldRef<"MobileNumberList", 'DateTime'>
    readonly updatedAt: FieldRef<"MobileNumberList", 'DateTime'>
    readonly deletedAt: FieldRef<"MobileNumberList", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * MobileNumberList findUnique
   */
  export type MobileNumberListFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumberList
     */
    select?: MobileNumberListSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumberList
     */
    omit?: MobileNumberListOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberListInclude<ExtArgs> | null
    /**
     * Filter, which MobileNumberList to fetch.
     */
    where: MobileNumberListWhereUniqueInput
  }

  /**
   * MobileNumberList findUniqueOrThrow
   */
  export type MobileNumberListFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumberList
     */
    select?: MobileNumberListSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumberList
     */
    omit?: MobileNumberListOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberListInclude<ExtArgs> | null
    /**
     * Filter, which MobileNumberList to fetch.
     */
    where: MobileNumberListWhereUniqueInput
  }

  /**
   * MobileNumberList findFirst
   */
  export type MobileNumberListFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumberList
     */
    select?: MobileNumberListSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumberList
     */
    omit?: MobileNumberListOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberListInclude<ExtArgs> | null
    /**
     * Filter, which MobileNumberList to fetch.
     */
    where?: MobileNumberListWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of MobileNumberLists to fetch.
     */
    orderBy?: MobileNumberListOrderByWithRelationInput | MobileNumberListOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for MobileNumberLists.
     */
    cursor?: MobileNumberListWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` MobileNumberLists from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` MobileNumberLists.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of MobileNumberLists.
     */
    distinct?: MobileNumberListScalarFieldEnum | MobileNumberListScalarFieldEnum[]
  }

  /**
   * MobileNumberList findFirstOrThrow
   */
  export type MobileNumberListFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumberList
     */
    select?: MobileNumberListSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumberList
     */
    omit?: MobileNumberListOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberListInclude<ExtArgs> | null
    /**
     * Filter, which MobileNumberList to fetch.
     */
    where?: MobileNumberListWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of MobileNumberLists to fetch.
     */
    orderBy?: MobileNumberListOrderByWithRelationInput | MobileNumberListOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for MobileNumberLists.
     */
    cursor?: MobileNumberListWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` MobileNumberLists from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` MobileNumberLists.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of MobileNumberLists.
     */
    distinct?: MobileNumberListScalarFieldEnum | MobileNumberListScalarFieldEnum[]
  }

  /**
   * MobileNumberList findMany
   */
  export type MobileNumberListFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumberList
     */
    select?: MobileNumberListSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumberList
     */
    omit?: MobileNumberListOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberListInclude<ExtArgs> | null
    /**
     * Filter, which MobileNumberLists to fetch.
     */
    where?: MobileNumberListWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of MobileNumberLists to fetch.
     */
    orderBy?: MobileNumberListOrderByWithRelationInput | MobileNumberListOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing MobileNumberLists.
     */
    cursor?: MobileNumberListWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` MobileNumberLists from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` MobileNumberLists.
     */
    skip?: number
    distinct?: MobileNumberListScalarFieldEnum | MobileNumberListScalarFieldEnum[]
  }

  /**
   * MobileNumberList create
   */
  export type MobileNumberListCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumberList
     */
    select?: MobileNumberListSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumberList
     */
    omit?: MobileNumberListOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberListInclude<ExtArgs> | null
    /**
     * The data needed to create a MobileNumberList.
     */
    data: XOR<MobileNumberListCreateInput, MobileNumberListUncheckedCreateInput>
  }

  /**
   * MobileNumberList createMany
   */
  export type MobileNumberListCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many MobileNumberLists.
     */
    data: MobileNumberListCreateManyInput | MobileNumberListCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * MobileNumberList update
   */
  export type MobileNumberListUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumberList
     */
    select?: MobileNumberListSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumberList
     */
    omit?: MobileNumberListOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberListInclude<ExtArgs> | null
    /**
     * The data needed to update a MobileNumberList.
     */
    data: XOR<MobileNumberListUpdateInput, MobileNumberListUncheckedUpdateInput>
    /**
     * Choose, which MobileNumberList to update.
     */
    where: MobileNumberListWhereUniqueInput
  }

  /**
   * MobileNumberList updateMany
   */
  export type MobileNumberListUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update MobileNumberLists.
     */
    data: XOR<MobileNumberListUpdateManyMutationInput, MobileNumberListUncheckedUpdateManyInput>
    /**
     * Filter which MobileNumberLists to update
     */
    where?: MobileNumberListWhereInput
    /**
     * Limit how many MobileNumberLists to update.
     */
    limit?: number
  }

  /**
   * MobileNumberList upsert
   */
  export type MobileNumberListUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumberList
     */
    select?: MobileNumberListSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumberList
     */
    omit?: MobileNumberListOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberListInclude<ExtArgs> | null
    /**
     * The filter to search for the MobileNumberList to update in case it exists.
     */
    where: MobileNumberListWhereUniqueInput
    /**
     * In case the MobileNumberList found by the `where` argument doesn't exist, create a new MobileNumberList with this data.
     */
    create: XOR<MobileNumberListCreateInput, MobileNumberListUncheckedCreateInput>
    /**
     * In case the MobileNumberList was found with the provided `where` argument, update it with this data.
     */
    update: XOR<MobileNumberListUpdateInput, MobileNumberListUncheckedUpdateInput>
  }

  /**
   * MobileNumberList delete
   */
  export type MobileNumberListDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumberList
     */
    select?: MobileNumberListSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumberList
     */
    omit?: MobileNumberListOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberListInclude<ExtArgs> | null
    /**
     * Filter which MobileNumberList to delete.
     */
    where: MobileNumberListWhereUniqueInput
  }

  /**
   * MobileNumberList deleteMany
   */
  export type MobileNumberListDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which MobileNumberLists to delete
     */
    where?: MobileNumberListWhereInput
    /**
     * Limit how many MobileNumberLists to delete.
     */
    limit?: number
  }

  /**
   * MobileNumberList.company
   */
  export type MobileNumberList$companyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Company
     */
    select?: CompanySelect<ExtArgs> | null
    /**
     * Omit specific fields from the Company
     */
    omit?: CompanyOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CompanyInclude<ExtArgs> | null
    where?: CompanyWhereInput
  }

  /**
   * MobileNumberList.campaigns
   */
  export type MobileNumberList$campaignsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Campaign
     */
    select?: CampaignSelect<ExtArgs> | null
    /**
     * Omit specific fields from the Campaign
     */
    omit?: CampaignOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CampaignInclude<ExtArgs> | null
    where?: CampaignWhereInput
    orderBy?: CampaignOrderByWithRelationInput | CampaignOrderByWithRelationInput[]
    cursor?: CampaignWhereUniqueInput
    take?: number
    skip?: number
    distinct?: CampaignScalarFieldEnum | CampaignScalarFieldEnum[]
  }

  /**
   * MobileNumberList.mobileNumbers
   */
  export type MobileNumberList$mobileNumbersArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumber
     */
    select?: MobileNumberSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumber
     */
    omit?: MobileNumberOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberInclude<ExtArgs> | null
    where?: MobileNumberWhereInput
    orderBy?: MobileNumberOrderByWithRelationInput | MobileNumberOrderByWithRelationInput[]
    cursor?: MobileNumberWhereUniqueInput
    take?: number
    skip?: number
    distinct?: MobileNumberScalarFieldEnum | MobileNumberScalarFieldEnum[]
  }

  /**
   * MobileNumberList without action
   */
  export type MobileNumberListDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumberList
     */
    select?: MobileNumberListSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumberList
     */
    omit?: MobileNumberListOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberListInclude<ExtArgs> | null
  }


  /**
   * Model MobileNumber
   */

  export type AggregateMobileNumber = {
    _count: MobileNumberCountAggregateOutputType | null
    _avg: MobileNumberAvgAggregateOutputType | null
    _sum: MobileNumberSumAggregateOutputType | null
    _min: MobileNumberMinAggregateOutputType | null
    _max: MobileNumberMaxAggregateOutputType | null
  }

  export type MobileNumberAvgAggregateOutputType = {
    id: number | null
    numberListId: number | null
  }

  export type MobileNumberSumAggregateOutputType = {
    id: bigint | null
    numberListId: bigint | null
  }

  export type MobileNumberMinAggregateOutputType = {
    id: bigint | null
    uuid: string | null
    phoneNumber: string | null
    type: string | null
    is_blocked: boolean | null
    numberListId: bigint | null
    deletedAt: Date | null
    name: string | null
    param1: string | null
    param2: string | null
    param3: string | null
    param4: string | null
    param5: string | null
    param6: string | null
    param7: string | null
    param8: string | null
    param9: string | null
    param10: string | null
  }

  export type MobileNumberMaxAggregateOutputType = {
    id: bigint | null
    uuid: string | null
    phoneNumber: string | null
    type: string | null
    is_blocked: boolean | null
    numberListId: bigint | null
    deletedAt: Date | null
    name: string | null
    param1: string | null
    param2: string | null
    param3: string | null
    param4: string | null
    param5: string | null
    param6: string | null
    param7: string | null
    param8: string | null
    param9: string | null
    param10: string | null
  }

  export type MobileNumberCountAggregateOutputType = {
    id: number
    uuid: number
    phoneNumber: number
    type: number
    is_blocked: number
    numberListId: number
    deletedAt: number
    name: number
    param1: number
    param2: number
    param3: number
    param4: number
    param5: number
    param6: number
    param7: number
    param8: number
    param9: number
    param10: number
    _all: number
  }


  export type MobileNumberAvgAggregateInputType = {
    id?: true
    numberListId?: true
  }

  export type MobileNumberSumAggregateInputType = {
    id?: true
    numberListId?: true
  }

  export type MobileNumberMinAggregateInputType = {
    id?: true
    uuid?: true
    phoneNumber?: true
    type?: true
    is_blocked?: true
    numberListId?: true
    deletedAt?: true
    name?: true
    param1?: true
    param2?: true
    param3?: true
    param4?: true
    param5?: true
    param6?: true
    param7?: true
    param8?: true
    param9?: true
    param10?: true
  }

  export type MobileNumberMaxAggregateInputType = {
    id?: true
    uuid?: true
    phoneNumber?: true
    type?: true
    is_blocked?: true
    numberListId?: true
    deletedAt?: true
    name?: true
    param1?: true
    param2?: true
    param3?: true
    param4?: true
    param5?: true
    param6?: true
    param7?: true
    param8?: true
    param9?: true
    param10?: true
  }

  export type MobileNumberCountAggregateInputType = {
    id?: true
    uuid?: true
    phoneNumber?: true
    type?: true
    is_blocked?: true
    numberListId?: true
    deletedAt?: true
    name?: true
    param1?: true
    param2?: true
    param3?: true
    param4?: true
    param5?: true
    param6?: true
    param7?: true
    param8?: true
    param9?: true
    param10?: true
    _all?: true
  }

  export type MobileNumberAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which MobileNumber to aggregate.
     */
    where?: MobileNumberWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of MobileNumbers to fetch.
     */
    orderBy?: MobileNumberOrderByWithRelationInput | MobileNumberOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: MobileNumberWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` MobileNumbers from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` MobileNumbers.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned MobileNumbers
    **/
    _count?: true | MobileNumberCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: MobileNumberAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: MobileNumberSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: MobileNumberMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: MobileNumberMaxAggregateInputType
  }

  export type GetMobileNumberAggregateType<T extends MobileNumberAggregateArgs> = {
        [P in keyof T & keyof AggregateMobileNumber]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateMobileNumber[P]>
      : GetScalarType<T[P], AggregateMobileNumber[P]>
  }




  export type MobileNumberGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: MobileNumberWhereInput
    orderBy?: MobileNumberOrderByWithAggregationInput | MobileNumberOrderByWithAggregationInput[]
    by: MobileNumberScalarFieldEnum[] | MobileNumberScalarFieldEnum
    having?: MobileNumberScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: MobileNumberCountAggregateInputType | true
    _avg?: MobileNumberAvgAggregateInputType
    _sum?: MobileNumberSumAggregateInputType
    _min?: MobileNumberMinAggregateInputType
    _max?: MobileNumberMaxAggregateInputType
  }

  export type MobileNumberGroupByOutputType = {
    id: bigint
    uuid: string
    phoneNumber: string
    type: string
    is_blocked: boolean
    numberListId: bigint | null
    deletedAt: Date | null
    name: string | null
    param1: string | null
    param2: string | null
    param3: string | null
    param4: string | null
    param5: string | null
    param6: string | null
    param7: string | null
    param8: string | null
    param9: string | null
    param10: string | null
    _count: MobileNumberCountAggregateOutputType | null
    _avg: MobileNumberAvgAggregateOutputType | null
    _sum: MobileNumberSumAggregateOutputType | null
    _min: MobileNumberMinAggregateOutputType | null
    _max: MobileNumberMaxAggregateOutputType | null
  }

  type GetMobileNumberGroupByPayload<T extends MobileNumberGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<MobileNumberGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof MobileNumberGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], MobileNumberGroupByOutputType[P]>
            : GetScalarType<T[P], MobileNumberGroupByOutputType[P]>
        }
      >
    >


  export type MobileNumberSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    uuid?: boolean
    phoneNumber?: boolean
    type?: boolean
    is_blocked?: boolean
    numberListId?: boolean
    deletedAt?: boolean
    name?: boolean
    param1?: boolean
    param2?: boolean
    param3?: boolean
    param4?: boolean
    param5?: boolean
    param6?: boolean
    param7?: boolean
    param8?: boolean
    param9?: boolean
    param10?: boolean
    list?: boolean | MobileNumber$listArgs<ExtArgs>
  }, ExtArgs["result"]["mobileNumber"]>



  export type MobileNumberSelectScalar = {
    id?: boolean
    uuid?: boolean
    phoneNumber?: boolean
    type?: boolean
    is_blocked?: boolean
    numberListId?: boolean
    deletedAt?: boolean
    name?: boolean
    param1?: boolean
    param2?: boolean
    param3?: boolean
    param4?: boolean
    param5?: boolean
    param6?: boolean
    param7?: boolean
    param8?: boolean
    param9?: boolean
    param10?: boolean
  }

  export type MobileNumberOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "uuid" | "phoneNumber" | "type" | "is_blocked" | "numberListId" | "deletedAt" | "name" | "param1" | "param2" | "param3" | "param4" | "param5" | "param6" | "param7" | "param8" | "param9" | "param10", ExtArgs["result"]["mobileNumber"]>
  export type MobileNumberInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    list?: boolean | MobileNumber$listArgs<ExtArgs>
  }

  export type $MobileNumberPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "MobileNumber"
    objects: {
      list: Prisma.$MobileNumberListPayload<ExtArgs> | null
    }
    scalars: $Extensions.GetPayloadResult<{
      id: bigint
      uuid: string
      phoneNumber: string
      type: string
      is_blocked: boolean
      numberListId: bigint | null
      deletedAt: Date | null
      name: string | null
      param1: string | null
      param2: string | null
      param3: string | null
      param4: string | null
      param5: string | null
      param6: string | null
      param7: string | null
      param8: string | null
      param9: string | null
      param10: string | null
    }, ExtArgs["result"]["mobileNumber"]>
    composites: {}
  }

  type MobileNumberGetPayload<S extends boolean | null | undefined | MobileNumberDefaultArgs> = $Result.GetResult<Prisma.$MobileNumberPayload, S>

  type MobileNumberCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<MobileNumberFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: MobileNumberCountAggregateInputType | true
    }

  export interface MobileNumberDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['MobileNumber'], meta: { name: 'MobileNumber' } }
    /**
     * Find zero or one MobileNumber that matches the filter.
     * @param {MobileNumberFindUniqueArgs} args - Arguments to find a MobileNumber
     * @example
     * // Get one MobileNumber
     * const mobileNumber = await prisma.mobileNumber.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends MobileNumberFindUniqueArgs>(args: SelectSubset<T, MobileNumberFindUniqueArgs<ExtArgs>>): Prisma__MobileNumberClient<$Result.GetResult<Prisma.$MobileNumberPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one MobileNumber that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {MobileNumberFindUniqueOrThrowArgs} args - Arguments to find a MobileNumber
     * @example
     * // Get one MobileNumber
     * const mobileNumber = await prisma.mobileNumber.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends MobileNumberFindUniqueOrThrowArgs>(args: SelectSubset<T, MobileNumberFindUniqueOrThrowArgs<ExtArgs>>): Prisma__MobileNumberClient<$Result.GetResult<Prisma.$MobileNumberPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first MobileNumber that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {MobileNumberFindFirstArgs} args - Arguments to find a MobileNumber
     * @example
     * // Get one MobileNumber
     * const mobileNumber = await prisma.mobileNumber.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends MobileNumberFindFirstArgs>(args?: SelectSubset<T, MobileNumberFindFirstArgs<ExtArgs>>): Prisma__MobileNumberClient<$Result.GetResult<Prisma.$MobileNumberPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first MobileNumber that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {MobileNumberFindFirstOrThrowArgs} args - Arguments to find a MobileNumber
     * @example
     * // Get one MobileNumber
     * const mobileNumber = await prisma.mobileNumber.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends MobileNumberFindFirstOrThrowArgs>(args?: SelectSubset<T, MobileNumberFindFirstOrThrowArgs<ExtArgs>>): Prisma__MobileNumberClient<$Result.GetResult<Prisma.$MobileNumberPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more MobileNumbers that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {MobileNumberFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all MobileNumbers
     * const mobileNumbers = await prisma.mobileNumber.findMany()
     * 
     * // Get first 10 MobileNumbers
     * const mobileNumbers = await prisma.mobileNumber.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const mobileNumberWithIdOnly = await prisma.mobileNumber.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends MobileNumberFindManyArgs>(args?: SelectSubset<T, MobileNumberFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$MobileNumberPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a MobileNumber.
     * @param {MobileNumberCreateArgs} args - Arguments to create a MobileNumber.
     * @example
     * // Create one MobileNumber
     * const MobileNumber = await prisma.mobileNumber.create({
     *   data: {
     *     // ... data to create a MobileNumber
     *   }
     * })
     * 
     */
    create<T extends MobileNumberCreateArgs>(args: SelectSubset<T, MobileNumberCreateArgs<ExtArgs>>): Prisma__MobileNumberClient<$Result.GetResult<Prisma.$MobileNumberPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many MobileNumbers.
     * @param {MobileNumberCreateManyArgs} args - Arguments to create many MobileNumbers.
     * @example
     * // Create many MobileNumbers
     * const mobileNumber = await prisma.mobileNumber.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends MobileNumberCreateManyArgs>(args?: SelectSubset<T, MobileNumberCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a MobileNumber.
     * @param {MobileNumberDeleteArgs} args - Arguments to delete one MobileNumber.
     * @example
     * // Delete one MobileNumber
     * const MobileNumber = await prisma.mobileNumber.delete({
     *   where: {
     *     // ... filter to delete one MobileNumber
     *   }
     * })
     * 
     */
    delete<T extends MobileNumberDeleteArgs>(args: SelectSubset<T, MobileNumberDeleteArgs<ExtArgs>>): Prisma__MobileNumberClient<$Result.GetResult<Prisma.$MobileNumberPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one MobileNumber.
     * @param {MobileNumberUpdateArgs} args - Arguments to update one MobileNumber.
     * @example
     * // Update one MobileNumber
     * const mobileNumber = await prisma.mobileNumber.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends MobileNumberUpdateArgs>(args: SelectSubset<T, MobileNumberUpdateArgs<ExtArgs>>): Prisma__MobileNumberClient<$Result.GetResult<Prisma.$MobileNumberPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more MobileNumbers.
     * @param {MobileNumberDeleteManyArgs} args - Arguments to filter MobileNumbers to delete.
     * @example
     * // Delete a few MobileNumbers
     * const { count } = await prisma.mobileNumber.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends MobileNumberDeleteManyArgs>(args?: SelectSubset<T, MobileNumberDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more MobileNumbers.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {MobileNumberUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many MobileNumbers
     * const mobileNumber = await prisma.mobileNumber.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends MobileNumberUpdateManyArgs>(args: SelectSubset<T, MobileNumberUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one MobileNumber.
     * @param {MobileNumberUpsertArgs} args - Arguments to update or create a MobileNumber.
     * @example
     * // Update or create a MobileNumber
     * const mobileNumber = await prisma.mobileNumber.upsert({
     *   create: {
     *     // ... data to create a MobileNumber
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the MobileNumber we want to update
     *   }
     * })
     */
    upsert<T extends MobileNumberUpsertArgs>(args: SelectSubset<T, MobileNumberUpsertArgs<ExtArgs>>): Prisma__MobileNumberClient<$Result.GetResult<Prisma.$MobileNumberPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of MobileNumbers.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {MobileNumberCountArgs} args - Arguments to filter MobileNumbers to count.
     * @example
     * // Count the number of MobileNumbers
     * const count = await prisma.mobileNumber.count({
     *   where: {
     *     // ... the filter for the MobileNumbers we want to count
     *   }
     * })
    **/
    count<T extends MobileNumberCountArgs>(
      args?: Subset<T, MobileNumberCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], MobileNumberCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a MobileNumber.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {MobileNumberAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends MobileNumberAggregateArgs>(args: Subset<T, MobileNumberAggregateArgs>): Prisma.PrismaPromise<GetMobileNumberAggregateType<T>>

    /**
     * Group by MobileNumber.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {MobileNumberGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends MobileNumberGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: MobileNumberGroupByArgs['orderBy'] }
        : { orderBy?: MobileNumberGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, MobileNumberGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetMobileNumberGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the MobileNumber model
   */
  readonly fields: MobileNumberFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for MobileNumber.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__MobileNumberClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    list<T extends MobileNumber$listArgs<ExtArgs> = {}>(args?: Subset<T, MobileNumber$listArgs<ExtArgs>>): Prisma__MobileNumberListClient<$Result.GetResult<Prisma.$MobileNumberListPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the MobileNumber model
   */
  interface MobileNumberFieldRefs {
    readonly id: FieldRef<"MobileNumber", 'BigInt'>
    readonly uuid: FieldRef<"MobileNumber", 'String'>
    readonly phoneNumber: FieldRef<"MobileNumber", 'String'>
    readonly type: FieldRef<"MobileNumber", 'String'>
    readonly is_blocked: FieldRef<"MobileNumber", 'Boolean'>
    readonly numberListId: FieldRef<"MobileNumber", 'BigInt'>
    readonly deletedAt: FieldRef<"MobileNumber", 'DateTime'>
    readonly name: FieldRef<"MobileNumber", 'String'>
    readonly param1: FieldRef<"MobileNumber", 'String'>
    readonly param2: FieldRef<"MobileNumber", 'String'>
    readonly param3: FieldRef<"MobileNumber", 'String'>
    readonly param4: FieldRef<"MobileNumber", 'String'>
    readonly param5: FieldRef<"MobileNumber", 'String'>
    readonly param6: FieldRef<"MobileNumber", 'String'>
    readonly param7: FieldRef<"MobileNumber", 'String'>
    readonly param8: FieldRef<"MobileNumber", 'String'>
    readonly param9: FieldRef<"MobileNumber", 'String'>
    readonly param10: FieldRef<"MobileNumber", 'String'>
  }
    

  // Custom InputTypes
  /**
   * MobileNumber findUnique
   */
  export type MobileNumberFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumber
     */
    select?: MobileNumberSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumber
     */
    omit?: MobileNumberOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberInclude<ExtArgs> | null
    /**
     * Filter, which MobileNumber to fetch.
     */
    where: MobileNumberWhereUniqueInput
  }

  /**
   * MobileNumber findUniqueOrThrow
   */
  export type MobileNumberFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumber
     */
    select?: MobileNumberSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumber
     */
    omit?: MobileNumberOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberInclude<ExtArgs> | null
    /**
     * Filter, which MobileNumber to fetch.
     */
    where: MobileNumberWhereUniqueInput
  }

  /**
   * MobileNumber findFirst
   */
  export type MobileNumberFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumber
     */
    select?: MobileNumberSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumber
     */
    omit?: MobileNumberOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberInclude<ExtArgs> | null
    /**
     * Filter, which MobileNumber to fetch.
     */
    where?: MobileNumberWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of MobileNumbers to fetch.
     */
    orderBy?: MobileNumberOrderByWithRelationInput | MobileNumberOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for MobileNumbers.
     */
    cursor?: MobileNumberWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` MobileNumbers from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` MobileNumbers.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of MobileNumbers.
     */
    distinct?: MobileNumberScalarFieldEnum | MobileNumberScalarFieldEnum[]
  }

  /**
   * MobileNumber findFirstOrThrow
   */
  export type MobileNumberFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumber
     */
    select?: MobileNumberSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumber
     */
    omit?: MobileNumberOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberInclude<ExtArgs> | null
    /**
     * Filter, which MobileNumber to fetch.
     */
    where?: MobileNumberWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of MobileNumbers to fetch.
     */
    orderBy?: MobileNumberOrderByWithRelationInput | MobileNumberOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for MobileNumbers.
     */
    cursor?: MobileNumberWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` MobileNumbers from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` MobileNumbers.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of MobileNumbers.
     */
    distinct?: MobileNumberScalarFieldEnum | MobileNumberScalarFieldEnum[]
  }

  /**
   * MobileNumber findMany
   */
  export type MobileNumberFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumber
     */
    select?: MobileNumberSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumber
     */
    omit?: MobileNumberOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberInclude<ExtArgs> | null
    /**
     * Filter, which MobileNumbers to fetch.
     */
    where?: MobileNumberWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of MobileNumbers to fetch.
     */
    orderBy?: MobileNumberOrderByWithRelationInput | MobileNumberOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing MobileNumbers.
     */
    cursor?: MobileNumberWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` MobileNumbers from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` MobileNumbers.
     */
    skip?: number
    distinct?: MobileNumberScalarFieldEnum | MobileNumberScalarFieldEnum[]
  }

  /**
   * MobileNumber create
   */
  export type MobileNumberCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumber
     */
    select?: MobileNumberSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumber
     */
    omit?: MobileNumberOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberInclude<ExtArgs> | null
    /**
     * The data needed to create a MobileNumber.
     */
    data: XOR<MobileNumberCreateInput, MobileNumberUncheckedCreateInput>
  }

  /**
   * MobileNumber createMany
   */
  export type MobileNumberCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many MobileNumbers.
     */
    data: MobileNumberCreateManyInput | MobileNumberCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * MobileNumber update
   */
  export type MobileNumberUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumber
     */
    select?: MobileNumberSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumber
     */
    omit?: MobileNumberOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberInclude<ExtArgs> | null
    /**
     * The data needed to update a MobileNumber.
     */
    data: XOR<MobileNumberUpdateInput, MobileNumberUncheckedUpdateInput>
    /**
     * Choose, which MobileNumber to update.
     */
    where: MobileNumberWhereUniqueInput
  }

  /**
   * MobileNumber updateMany
   */
  export type MobileNumberUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update MobileNumbers.
     */
    data: XOR<MobileNumberUpdateManyMutationInput, MobileNumberUncheckedUpdateManyInput>
    /**
     * Filter which MobileNumbers to update
     */
    where?: MobileNumberWhereInput
    /**
     * Limit how many MobileNumbers to update.
     */
    limit?: number
  }

  /**
   * MobileNumber upsert
   */
  export type MobileNumberUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumber
     */
    select?: MobileNumberSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumber
     */
    omit?: MobileNumberOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberInclude<ExtArgs> | null
    /**
     * The filter to search for the MobileNumber to update in case it exists.
     */
    where: MobileNumberWhereUniqueInput
    /**
     * In case the MobileNumber found by the `where` argument doesn't exist, create a new MobileNumber with this data.
     */
    create: XOR<MobileNumberCreateInput, MobileNumberUncheckedCreateInput>
    /**
     * In case the MobileNumber was found with the provided `where` argument, update it with this data.
     */
    update: XOR<MobileNumberUpdateInput, MobileNumberUncheckedUpdateInput>
  }

  /**
   * MobileNumber delete
   */
  export type MobileNumberDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumber
     */
    select?: MobileNumberSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumber
     */
    omit?: MobileNumberOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberInclude<ExtArgs> | null
    /**
     * Filter which MobileNumber to delete.
     */
    where: MobileNumberWhereUniqueInput
  }

  /**
   * MobileNumber deleteMany
   */
  export type MobileNumberDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which MobileNumbers to delete
     */
    where?: MobileNumberWhereInput
    /**
     * Limit how many MobileNumbers to delete.
     */
    limit?: number
  }

  /**
   * MobileNumber.list
   */
  export type MobileNumber$listArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumberList
     */
    select?: MobileNumberListSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumberList
     */
    omit?: MobileNumberListOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberListInclude<ExtArgs> | null
    where?: MobileNumberListWhereInput
  }

  /**
   * MobileNumber without action
   */
  export type MobileNumberDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the MobileNumber
     */
    select?: MobileNumberSelect<ExtArgs> | null
    /**
     * Omit specific fields from the MobileNumber
     */
    omit?: MobileNumberOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: MobileNumberInclude<ExtArgs> | null
  }


  /**
   * Model SMS_Report
   */

  export type AggregateSMS_Report = {
    _count: SMS_ReportCountAggregateOutputType | null
    _avg: SMS_ReportAvgAggregateOutputType | null
    _sum: SMS_ReportSumAggregateOutputType | null
    _min: SMS_ReportMinAggregateOutputType | null
    _max: SMS_ReportMaxAggregateOutputType | null
  }

  export type SMS_ReportAvgAggregateOutputType = {
    id: number | null
    server_ref: number | null
    campaignId: number | null
    deliveryType: number | null
    messagePart: number | null
    chargedAmount: number | null
  }

  export type SMS_ReportSumAggregateOutputType = {
    id: number | null
    server_ref: bigint | null
    campaignId: number | null
    deliveryType: number | null
    messagePart: number | null
    chargedAmount: number | null
  }

  export type SMS_ReportMinAggregateOutputType = {
    id: number | null
    uuid: string | null
    server_ref: bigint | null
    campaignId: number | null
    deliveryType: number | null
    number: string | null
    maskName: string | null
    messagePart: number | null
    chargedAmount: number | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type SMS_ReportMaxAggregateOutputType = {
    id: number | null
    uuid: string | null
    server_ref: bigint | null
    campaignId: number | null
    deliveryType: number | null
    number: string | null
    maskName: string | null
    messagePart: number | null
    chargedAmount: number | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type SMS_ReportCountAggregateOutputType = {
    id: number
    uuid: number
    server_ref: number
    campaignId: number
    deliveryType: number
    number: number
    maskName: number
    messagePart: number
    chargedAmount: number
    createdAt: number
    updatedAt: number
    _all: number
  }


  export type SMS_ReportAvgAggregateInputType = {
    id?: true
    server_ref?: true
    campaignId?: true
    deliveryType?: true
    messagePart?: true
    chargedAmount?: true
  }

  export type SMS_ReportSumAggregateInputType = {
    id?: true
    server_ref?: true
    campaignId?: true
    deliveryType?: true
    messagePart?: true
    chargedAmount?: true
  }

  export type SMS_ReportMinAggregateInputType = {
    id?: true
    uuid?: true
    server_ref?: true
    campaignId?: true
    deliveryType?: true
    number?: true
    maskName?: true
    messagePart?: true
    chargedAmount?: true
    createdAt?: true
    updatedAt?: true
  }

  export type SMS_ReportMaxAggregateInputType = {
    id?: true
    uuid?: true
    server_ref?: true
    campaignId?: true
    deliveryType?: true
    number?: true
    maskName?: true
    messagePart?: true
    chargedAmount?: true
    createdAt?: true
    updatedAt?: true
  }

  export type SMS_ReportCountAggregateInputType = {
    id?: true
    uuid?: true
    server_ref?: true
    campaignId?: true
    deliveryType?: true
    number?: true
    maskName?: true
    messagePart?: true
    chargedAmount?: true
    createdAt?: true
    updatedAt?: true
    _all?: true
  }

  export type SMS_ReportAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which SMS_Report to aggregate.
     */
    where?: SMS_ReportWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SMS_Reports to fetch.
     */
    orderBy?: SMS_ReportOrderByWithRelationInput | SMS_ReportOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: SMS_ReportWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SMS_Reports from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SMS_Reports.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned SMS_Reports
    **/
    _count?: true | SMS_ReportCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: SMS_ReportAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: SMS_ReportSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: SMS_ReportMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: SMS_ReportMaxAggregateInputType
  }

  export type GetSMS_ReportAggregateType<T extends SMS_ReportAggregateArgs> = {
        [P in keyof T & keyof AggregateSMS_Report]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateSMS_Report[P]>
      : GetScalarType<T[P], AggregateSMS_Report[P]>
  }




  export type SMS_ReportGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: SMS_ReportWhereInput
    orderBy?: SMS_ReportOrderByWithAggregationInput | SMS_ReportOrderByWithAggregationInput[]
    by: SMS_ReportScalarFieldEnum[] | SMS_ReportScalarFieldEnum
    having?: SMS_ReportScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: SMS_ReportCountAggregateInputType | true
    _avg?: SMS_ReportAvgAggregateInputType
    _sum?: SMS_ReportSumAggregateInputType
    _min?: SMS_ReportMinAggregateInputType
    _max?: SMS_ReportMaxAggregateInputType
  }

  export type SMS_ReportGroupByOutputType = {
    id: number
    uuid: string
    server_ref: bigint
    campaignId: number
    deliveryType: number
    number: string
    maskName: string
    messagePart: number
    chargedAmount: number
    createdAt: Date
    updatedAt: Date
    _count: SMS_ReportCountAggregateOutputType | null
    _avg: SMS_ReportAvgAggregateOutputType | null
    _sum: SMS_ReportSumAggregateOutputType | null
    _min: SMS_ReportMinAggregateOutputType | null
    _max: SMS_ReportMaxAggregateOutputType | null
  }

  type GetSMS_ReportGroupByPayload<T extends SMS_ReportGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<SMS_ReportGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof SMS_ReportGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], SMS_ReportGroupByOutputType[P]>
            : GetScalarType<T[P], SMS_ReportGroupByOutputType[P]>
        }
      >
    >


  export type SMS_ReportSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    uuid?: boolean
    server_ref?: boolean
    campaignId?: boolean
    deliveryType?: boolean
    number?: boolean
    maskName?: boolean
    messagePart?: boolean
    chargedAmount?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    campaign?: boolean | CampaignDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["sMS_Report"]>



  export type SMS_ReportSelectScalar = {
    id?: boolean
    uuid?: boolean
    server_ref?: boolean
    campaignId?: boolean
    deliveryType?: boolean
    number?: boolean
    maskName?: boolean
    messagePart?: boolean
    chargedAmount?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }

  export type SMS_ReportOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "uuid" | "server_ref" | "campaignId" | "deliveryType" | "number" | "maskName" | "messagePart" | "chargedAmount" | "createdAt" | "updatedAt", ExtArgs["result"]["sMS_Report"]>
  export type SMS_ReportInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    campaign?: boolean | CampaignDefaultArgs<ExtArgs>
  }

  export type $SMS_ReportPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "SMS_Report"
    objects: {
      campaign: Prisma.$CampaignPayload<ExtArgs>
    }
    scalars: $Extensions.GetPayloadResult<{
      id: number
      uuid: string
      server_ref: bigint
      campaignId: number
      deliveryType: number
      number: string
      maskName: string
      messagePart: number
      chargedAmount: number
      createdAt: Date
      updatedAt: Date
    }, ExtArgs["result"]["sMS_Report"]>
    composites: {}
  }

  type SMS_ReportGetPayload<S extends boolean | null | undefined | SMS_ReportDefaultArgs> = $Result.GetResult<Prisma.$SMS_ReportPayload, S>

  type SMS_ReportCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<SMS_ReportFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: SMS_ReportCountAggregateInputType | true
    }

  export interface SMS_ReportDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['SMS_Report'], meta: { name: 'SMS_Report' } }
    /**
     * Find zero or one SMS_Report that matches the filter.
     * @param {SMS_ReportFindUniqueArgs} args - Arguments to find a SMS_Report
     * @example
     * // Get one SMS_Report
     * const sMS_Report = await prisma.sMS_Report.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends SMS_ReportFindUniqueArgs>(args: SelectSubset<T, SMS_ReportFindUniqueArgs<ExtArgs>>): Prisma__SMS_ReportClient<$Result.GetResult<Prisma.$SMS_ReportPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one SMS_Report that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {SMS_ReportFindUniqueOrThrowArgs} args - Arguments to find a SMS_Report
     * @example
     * // Get one SMS_Report
     * const sMS_Report = await prisma.sMS_Report.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends SMS_ReportFindUniqueOrThrowArgs>(args: SelectSubset<T, SMS_ReportFindUniqueOrThrowArgs<ExtArgs>>): Prisma__SMS_ReportClient<$Result.GetResult<Prisma.$SMS_ReportPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first SMS_Report that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SMS_ReportFindFirstArgs} args - Arguments to find a SMS_Report
     * @example
     * // Get one SMS_Report
     * const sMS_Report = await prisma.sMS_Report.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends SMS_ReportFindFirstArgs>(args?: SelectSubset<T, SMS_ReportFindFirstArgs<ExtArgs>>): Prisma__SMS_ReportClient<$Result.GetResult<Prisma.$SMS_ReportPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first SMS_Report that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SMS_ReportFindFirstOrThrowArgs} args - Arguments to find a SMS_Report
     * @example
     * // Get one SMS_Report
     * const sMS_Report = await prisma.sMS_Report.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends SMS_ReportFindFirstOrThrowArgs>(args?: SelectSubset<T, SMS_ReportFindFirstOrThrowArgs<ExtArgs>>): Prisma__SMS_ReportClient<$Result.GetResult<Prisma.$SMS_ReportPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more SMS_Reports that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SMS_ReportFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all SMS_Reports
     * const sMS_Reports = await prisma.sMS_Report.findMany()
     * 
     * // Get first 10 SMS_Reports
     * const sMS_Reports = await prisma.sMS_Report.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const sMS_ReportWithIdOnly = await prisma.sMS_Report.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends SMS_ReportFindManyArgs>(args?: SelectSubset<T, SMS_ReportFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$SMS_ReportPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a SMS_Report.
     * @param {SMS_ReportCreateArgs} args - Arguments to create a SMS_Report.
     * @example
     * // Create one SMS_Report
     * const SMS_Report = await prisma.sMS_Report.create({
     *   data: {
     *     // ... data to create a SMS_Report
     *   }
     * })
     * 
     */
    create<T extends SMS_ReportCreateArgs>(args: SelectSubset<T, SMS_ReportCreateArgs<ExtArgs>>): Prisma__SMS_ReportClient<$Result.GetResult<Prisma.$SMS_ReportPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many SMS_Reports.
     * @param {SMS_ReportCreateManyArgs} args - Arguments to create many SMS_Reports.
     * @example
     * // Create many SMS_Reports
     * const sMS_Report = await prisma.sMS_Report.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends SMS_ReportCreateManyArgs>(args?: SelectSubset<T, SMS_ReportCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a SMS_Report.
     * @param {SMS_ReportDeleteArgs} args - Arguments to delete one SMS_Report.
     * @example
     * // Delete one SMS_Report
     * const SMS_Report = await prisma.sMS_Report.delete({
     *   where: {
     *     // ... filter to delete one SMS_Report
     *   }
     * })
     * 
     */
    delete<T extends SMS_ReportDeleteArgs>(args: SelectSubset<T, SMS_ReportDeleteArgs<ExtArgs>>): Prisma__SMS_ReportClient<$Result.GetResult<Prisma.$SMS_ReportPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one SMS_Report.
     * @param {SMS_ReportUpdateArgs} args - Arguments to update one SMS_Report.
     * @example
     * // Update one SMS_Report
     * const sMS_Report = await prisma.sMS_Report.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends SMS_ReportUpdateArgs>(args: SelectSubset<T, SMS_ReportUpdateArgs<ExtArgs>>): Prisma__SMS_ReportClient<$Result.GetResult<Prisma.$SMS_ReportPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more SMS_Reports.
     * @param {SMS_ReportDeleteManyArgs} args - Arguments to filter SMS_Reports to delete.
     * @example
     * // Delete a few SMS_Reports
     * const { count } = await prisma.sMS_Report.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends SMS_ReportDeleteManyArgs>(args?: SelectSubset<T, SMS_ReportDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more SMS_Reports.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SMS_ReportUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many SMS_Reports
     * const sMS_Report = await prisma.sMS_Report.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends SMS_ReportUpdateManyArgs>(args: SelectSubset<T, SMS_ReportUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one SMS_Report.
     * @param {SMS_ReportUpsertArgs} args - Arguments to update or create a SMS_Report.
     * @example
     * // Update or create a SMS_Report
     * const sMS_Report = await prisma.sMS_Report.upsert({
     *   create: {
     *     // ... data to create a SMS_Report
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the SMS_Report we want to update
     *   }
     * })
     */
    upsert<T extends SMS_ReportUpsertArgs>(args: SelectSubset<T, SMS_ReportUpsertArgs<ExtArgs>>): Prisma__SMS_ReportClient<$Result.GetResult<Prisma.$SMS_ReportPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of SMS_Reports.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SMS_ReportCountArgs} args - Arguments to filter SMS_Reports to count.
     * @example
     * // Count the number of SMS_Reports
     * const count = await prisma.sMS_Report.count({
     *   where: {
     *     // ... the filter for the SMS_Reports we want to count
     *   }
     * })
    **/
    count<T extends SMS_ReportCountArgs>(
      args?: Subset<T, SMS_ReportCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], SMS_ReportCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a SMS_Report.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SMS_ReportAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends SMS_ReportAggregateArgs>(args: Subset<T, SMS_ReportAggregateArgs>): Prisma.PrismaPromise<GetSMS_ReportAggregateType<T>>

    /**
     * Group by SMS_Report.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SMS_ReportGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends SMS_ReportGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: SMS_ReportGroupByArgs['orderBy'] }
        : { orderBy?: SMS_ReportGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, SMS_ReportGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetSMS_ReportGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the SMS_Report model
   */
  readonly fields: SMS_ReportFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for SMS_Report.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__SMS_ReportClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    campaign<T extends CampaignDefaultArgs<ExtArgs> = {}>(args?: Subset<T, CampaignDefaultArgs<ExtArgs>>): Prisma__CampaignClient<$Result.GetResult<Prisma.$CampaignPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the SMS_Report model
   */
  interface SMS_ReportFieldRefs {
    readonly id: FieldRef<"SMS_Report", 'Int'>
    readonly uuid: FieldRef<"SMS_Report", 'String'>
    readonly server_ref: FieldRef<"SMS_Report", 'BigInt'>
    readonly campaignId: FieldRef<"SMS_Report", 'Int'>
    readonly deliveryType: FieldRef<"SMS_Report", 'Int'>
    readonly number: FieldRef<"SMS_Report", 'String'>
    readonly maskName: FieldRef<"SMS_Report", 'String'>
    readonly messagePart: FieldRef<"SMS_Report", 'Int'>
    readonly chargedAmount: FieldRef<"SMS_Report", 'Float'>
    readonly createdAt: FieldRef<"SMS_Report", 'DateTime'>
    readonly updatedAt: FieldRef<"SMS_Report", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * SMS_Report findUnique
   */
  export type SMS_ReportFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Report
     */
    select?: SMS_ReportSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Report
     */
    omit?: SMS_ReportOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_ReportInclude<ExtArgs> | null
    /**
     * Filter, which SMS_Report to fetch.
     */
    where: SMS_ReportWhereUniqueInput
  }

  /**
   * SMS_Report findUniqueOrThrow
   */
  export type SMS_ReportFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Report
     */
    select?: SMS_ReportSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Report
     */
    omit?: SMS_ReportOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_ReportInclude<ExtArgs> | null
    /**
     * Filter, which SMS_Report to fetch.
     */
    where: SMS_ReportWhereUniqueInput
  }

  /**
   * SMS_Report findFirst
   */
  export type SMS_ReportFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Report
     */
    select?: SMS_ReportSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Report
     */
    omit?: SMS_ReportOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_ReportInclude<ExtArgs> | null
    /**
     * Filter, which SMS_Report to fetch.
     */
    where?: SMS_ReportWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SMS_Reports to fetch.
     */
    orderBy?: SMS_ReportOrderByWithRelationInput | SMS_ReportOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for SMS_Reports.
     */
    cursor?: SMS_ReportWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SMS_Reports from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SMS_Reports.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of SMS_Reports.
     */
    distinct?: SMS_ReportScalarFieldEnum | SMS_ReportScalarFieldEnum[]
  }

  /**
   * SMS_Report findFirstOrThrow
   */
  export type SMS_ReportFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Report
     */
    select?: SMS_ReportSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Report
     */
    omit?: SMS_ReportOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_ReportInclude<ExtArgs> | null
    /**
     * Filter, which SMS_Report to fetch.
     */
    where?: SMS_ReportWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SMS_Reports to fetch.
     */
    orderBy?: SMS_ReportOrderByWithRelationInput | SMS_ReportOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for SMS_Reports.
     */
    cursor?: SMS_ReportWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SMS_Reports from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SMS_Reports.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of SMS_Reports.
     */
    distinct?: SMS_ReportScalarFieldEnum | SMS_ReportScalarFieldEnum[]
  }

  /**
   * SMS_Report findMany
   */
  export type SMS_ReportFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Report
     */
    select?: SMS_ReportSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Report
     */
    omit?: SMS_ReportOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_ReportInclude<ExtArgs> | null
    /**
     * Filter, which SMS_Reports to fetch.
     */
    where?: SMS_ReportWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SMS_Reports to fetch.
     */
    orderBy?: SMS_ReportOrderByWithRelationInput | SMS_ReportOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing SMS_Reports.
     */
    cursor?: SMS_ReportWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SMS_Reports from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SMS_Reports.
     */
    skip?: number
    distinct?: SMS_ReportScalarFieldEnum | SMS_ReportScalarFieldEnum[]
  }

  /**
   * SMS_Report create
   */
  export type SMS_ReportCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Report
     */
    select?: SMS_ReportSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Report
     */
    omit?: SMS_ReportOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_ReportInclude<ExtArgs> | null
    /**
     * The data needed to create a SMS_Report.
     */
    data: XOR<SMS_ReportCreateInput, SMS_ReportUncheckedCreateInput>
  }

  /**
   * SMS_Report createMany
   */
  export type SMS_ReportCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many SMS_Reports.
     */
    data: SMS_ReportCreateManyInput | SMS_ReportCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * SMS_Report update
   */
  export type SMS_ReportUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Report
     */
    select?: SMS_ReportSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Report
     */
    omit?: SMS_ReportOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_ReportInclude<ExtArgs> | null
    /**
     * The data needed to update a SMS_Report.
     */
    data: XOR<SMS_ReportUpdateInput, SMS_ReportUncheckedUpdateInput>
    /**
     * Choose, which SMS_Report to update.
     */
    where: SMS_ReportWhereUniqueInput
  }

  /**
   * SMS_Report updateMany
   */
  export type SMS_ReportUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update SMS_Reports.
     */
    data: XOR<SMS_ReportUpdateManyMutationInput, SMS_ReportUncheckedUpdateManyInput>
    /**
     * Filter which SMS_Reports to update
     */
    where?: SMS_ReportWhereInput
    /**
     * Limit how many SMS_Reports to update.
     */
    limit?: number
  }

  /**
   * SMS_Report upsert
   */
  export type SMS_ReportUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Report
     */
    select?: SMS_ReportSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Report
     */
    omit?: SMS_ReportOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_ReportInclude<ExtArgs> | null
    /**
     * The filter to search for the SMS_Report to update in case it exists.
     */
    where: SMS_ReportWhereUniqueInput
    /**
     * In case the SMS_Report found by the `where` argument doesn't exist, create a new SMS_Report with this data.
     */
    create: XOR<SMS_ReportCreateInput, SMS_ReportUncheckedCreateInput>
    /**
     * In case the SMS_Report was found with the provided `where` argument, update it with this data.
     */
    update: XOR<SMS_ReportUpdateInput, SMS_ReportUncheckedUpdateInput>
  }

  /**
   * SMS_Report delete
   */
  export type SMS_ReportDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Report
     */
    select?: SMS_ReportSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Report
     */
    omit?: SMS_ReportOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_ReportInclude<ExtArgs> | null
    /**
     * Filter which SMS_Report to delete.
     */
    where: SMS_ReportWhereUniqueInput
  }

  /**
   * SMS_Report deleteMany
   */
  export type SMS_ReportDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which SMS_Reports to delete
     */
    where?: SMS_ReportWhereInput
    /**
     * Limit how many SMS_Reports to delete.
     */
    limit?: number
  }

  /**
   * SMS_Report without action
   */
  export type SMS_ReportDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SMS_Report
     */
    select?: SMS_ReportSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SMS_Report
     */
    omit?: SMS_ReportOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: SMS_ReportInclude<ExtArgs> | null
  }


  /**
   * Model ExternalApiClient
   */

  export type AggregateExternalApiClient = {
    _count: ExternalApiClientCountAggregateOutputType | null
    _avg: ExternalApiClientAvgAggregateOutputType | null
    _sum: ExternalApiClientSumAggregateOutputType | null
    _min: ExternalApiClientMinAggregateOutputType | null
    _max: ExternalApiClientMaxAggregateOutputType | null
  }

  export type ExternalApiClientAvgAggregateOutputType = {
    id: number | null
  }

  export type ExternalApiClientSumAggregateOutputType = {
    id: number | null
  }

  export type ExternalApiClientMinAggregateOutputType = {
    id: number | null
    uuid: string | null
    systemLabel: string | null
    apiKeyHash: string | null
    isActive: boolean | null
    webhookUrl: string | null
    webhookSecret: string | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type ExternalApiClientMaxAggregateOutputType = {
    id: number | null
    uuid: string | null
    systemLabel: string | null
    apiKeyHash: string | null
    isActive: boolean | null
    webhookUrl: string | null
    webhookSecret: string | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type ExternalApiClientCountAggregateOutputType = {
    id: number
    uuid: number
    systemLabel: number
    apiKeyHash: number
    isActive: number
    webhookUrl: number
    webhookSecret: number
    createdAt: number
    updatedAt: number
    _all: number
  }


  export type ExternalApiClientAvgAggregateInputType = {
    id?: true
  }

  export type ExternalApiClientSumAggregateInputType = {
    id?: true
  }

  export type ExternalApiClientMinAggregateInputType = {
    id?: true
    uuid?: true
    systemLabel?: true
    apiKeyHash?: true
    isActive?: true
    webhookUrl?: true
    webhookSecret?: true
    createdAt?: true
    updatedAt?: true
  }

  export type ExternalApiClientMaxAggregateInputType = {
    id?: true
    uuid?: true
    systemLabel?: true
    apiKeyHash?: true
    isActive?: true
    webhookUrl?: true
    webhookSecret?: true
    createdAt?: true
    updatedAt?: true
  }

  export type ExternalApiClientCountAggregateInputType = {
    id?: true
    uuid?: true
    systemLabel?: true
    apiKeyHash?: true
    isActive?: true
    webhookUrl?: true
    webhookSecret?: true
    createdAt?: true
    updatedAt?: true
    _all?: true
  }

  export type ExternalApiClientAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which ExternalApiClient to aggregate.
     */
    where?: ExternalApiClientWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of ExternalApiClients to fetch.
     */
    orderBy?: ExternalApiClientOrderByWithRelationInput | ExternalApiClientOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: ExternalApiClientWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` ExternalApiClients from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` ExternalApiClients.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned ExternalApiClients
    **/
    _count?: true | ExternalApiClientCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: ExternalApiClientAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: ExternalApiClientSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: ExternalApiClientMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: ExternalApiClientMaxAggregateInputType
  }

  export type GetExternalApiClientAggregateType<T extends ExternalApiClientAggregateArgs> = {
        [P in keyof T & keyof AggregateExternalApiClient]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateExternalApiClient[P]>
      : GetScalarType<T[P], AggregateExternalApiClient[P]>
  }




  export type ExternalApiClientGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: ExternalApiClientWhereInput
    orderBy?: ExternalApiClientOrderByWithAggregationInput | ExternalApiClientOrderByWithAggregationInput[]
    by: ExternalApiClientScalarFieldEnum[] | ExternalApiClientScalarFieldEnum
    having?: ExternalApiClientScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: ExternalApiClientCountAggregateInputType | true
    _avg?: ExternalApiClientAvgAggregateInputType
    _sum?: ExternalApiClientSumAggregateInputType
    _min?: ExternalApiClientMinAggregateInputType
    _max?: ExternalApiClientMaxAggregateInputType
  }

  export type ExternalApiClientGroupByOutputType = {
    id: number
    uuid: string
    systemLabel: string
    apiKeyHash: string
    isActive: boolean
    webhookUrl: string | null
    webhookSecret: string | null
    createdAt: Date
    updatedAt: Date
    _count: ExternalApiClientCountAggregateOutputType | null
    _avg: ExternalApiClientAvgAggregateOutputType | null
    _sum: ExternalApiClientSumAggregateOutputType | null
    _min: ExternalApiClientMinAggregateOutputType | null
    _max: ExternalApiClientMaxAggregateOutputType | null
  }

  type GetExternalApiClientGroupByPayload<T extends ExternalApiClientGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<ExternalApiClientGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof ExternalApiClientGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], ExternalApiClientGroupByOutputType[P]>
            : GetScalarType<T[P], ExternalApiClientGroupByOutputType[P]>
        }
      >
    >


  export type ExternalApiClientSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    uuid?: boolean
    systemLabel?: boolean
    apiKeyHash?: boolean
    isActive?: boolean
    webhookUrl?: boolean
    webhookSecret?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }, ExtArgs["result"]["externalApiClient"]>



  export type ExternalApiClientSelectScalar = {
    id?: boolean
    uuid?: boolean
    systemLabel?: boolean
    apiKeyHash?: boolean
    isActive?: boolean
    webhookUrl?: boolean
    webhookSecret?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }

  export type ExternalApiClientOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "uuid" | "systemLabel" | "apiKeyHash" | "isActive" | "webhookUrl" | "webhookSecret" | "createdAt" | "updatedAt", ExtArgs["result"]["externalApiClient"]>

  export type $ExternalApiClientPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "ExternalApiClient"
    objects: {}
    scalars: $Extensions.GetPayloadResult<{
      id: number
      uuid: string
      systemLabel: string
      apiKeyHash: string
      isActive: boolean
      webhookUrl: string | null
      webhookSecret: string | null
      createdAt: Date
      updatedAt: Date
    }, ExtArgs["result"]["externalApiClient"]>
    composites: {}
  }

  type ExternalApiClientGetPayload<S extends boolean | null | undefined | ExternalApiClientDefaultArgs> = $Result.GetResult<Prisma.$ExternalApiClientPayload, S>

  type ExternalApiClientCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<ExternalApiClientFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: ExternalApiClientCountAggregateInputType | true
    }

  export interface ExternalApiClientDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['ExternalApiClient'], meta: { name: 'ExternalApiClient' } }
    /**
     * Find zero or one ExternalApiClient that matches the filter.
     * @param {ExternalApiClientFindUniqueArgs} args - Arguments to find a ExternalApiClient
     * @example
     * // Get one ExternalApiClient
     * const externalApiClient = await prisma.externalApiClient.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends ExternalApiClientFindUniqueArgs>(args: SelectSubset<T, ExternalApiClientFindUniqueArgs<ExtArgs>>): Prisma__ExternalApiClientClient<$Result.GetResult<Prisma.$ExternalApiClientPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one ExternalApiClient that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {ExternalApiClientFindUniqueOrThrowArgs} args - Arguments to find a ExternalApiClient
     * @example
     * // Get one ExternalApiClient
     * const externalApiClient = await prisma.externalApiClient.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends ExternalApiClientFindUniqueOrThrowArgs>(args: SelectSubset<T, ExternalApiClientFindUniqueOrThrowArgs<ExtArgs>>): Prisma__ExternalApiClientClient<$Result.GetResult<Prisma.$ExternalApiClientPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first ExternalApiClient that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ExternalApiClientFindFirstArgs} args - Arguments to find a ExternalApiClient
     * @example
     * // Get one ExternalApiClient
     * const externalApiClient = await prisma.externalApiClient.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends ExternalApiClientFindFirstArgs>(args?: SelectSubset<T, ExternalApiClientFindFirstArgs<ExtArgs>>): Prisma__ExternalApiClientClient<$Result.GetResult<Prisma.$ExternalApiClientPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first ExternalApiClient that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ExternalApiClientFindFirstOrThrowArgs} args - Arguments to find a ExternalApiClient
     * @example
     * // Get one ExternalApiClient
     * const externalApiClient = await prisma.externalApiClient.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends ExternalApiClientFindFirstOrThrowArgs>(args?: SelectSubset<T, ExternalApiClientFindFirstOrThrowArgs<ExtArgs>>): Prisma__ExternalApiClientClient<$Result.GetResult<Prisma.$ExternalApiClientPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more ExternalApiClients that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ExternalApiClientFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all ExternalApiClients
     * const externalApiClients = await prisma.externalApiClient.findMany()
     * 
     * // Get first 10 ExternalApiClients
     * const externalApiClients = await prisma.externalApiClient.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const externalApiClientWithIdOnly = await prisma.externalApiClient.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends ExternalApiClientFindManyArgs>(args?: SelectSubset<T, ExternalApiClientFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$ExternalApiClientPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a ExternalApiClient.
     * @param {ExternalApiClientCreateArgs} args - Arguments to create a ExternalApiClient.
     * @example
     * // Create one ExternalApiClient
     * const ExternalApiClient = await prisma.externalApiClient.create({
     *   data: {
     *     // ... data to create a ExternalApiClient
     *   }
     * })
     * 
     */
    create<T extends ExternalApiClientCreateArgs>(args: SelectSubset<T, ExternalApiClientCreateArgs<ExtArgs>>): Prisma__ExternalApiClientClient<$Result.GetResult<Prisma.$ExternalApiClientPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many ExternalApiClients.
     * @param {ExternalApiClientCreateManyArgs} args - Arguments to create many ExternalApiClients.
     * @example
     * // Create many ExternalApiClients
     * const externalApiClient = await prisma.externalApiClient.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends ExternalApiClientCreateManyArgs>(args?: SelectSubset<T, ExternalApiClientCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a ExternalApiClient.
     * @param {ExternalApiClientDeleteArgs} args - Arguments to delete one ExternalApiClient.
     * @example
     * // Delete one ExternalApiClient
     * const ExternalApiClient = await prisma.externalApiClient.delete({
     *   where: {
     *     // ... filter to delete one ExternalApiClient
     *   }
     * })
     * 
     */
    delete<T extends ExternalApiClientDeleteArgs>(args: SelectSubset<T, ExternalApiClientDeleteArgs<ExtArgs>>): Prisma__ExternalApiClientClient<$Result.GetResult<Prisma.$ExternalApiClientPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one ExternalApiClient.
     * @param {ExternalApiClientUpdateArgs} args - Arguments to update one ExternalApiClient.
     * @example
     * // Update one ExternalApiClient
     * const externalApiClient = await prisma.externalApiClient.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends ExternalApiClientUpdateArgs>(args: SelectSubset<T, ExternalApiClientUpdateArgs<ExtArgs>>): Prisma__ExternalApiClientClient<$Result.GetResult<Prisma.$ExternalApiClientPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more ExternalApiClients.
     * @param {ExternalApiClientDeleteManyArgs} args - Arguments to filter ExternalApiClients to delete.
     * @example
     * // Delete a few ExternalApiClients
     * const { count } = await prisma.externalApiClient.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends ExternalApiClientDeleteManyArgs>(args?: SelectSubset<T, ExternalApiClientDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more ExternalApiClients.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ExternalApiClientUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many ExternalApiClients
     * const externalApiClient = await prisma.externalApiClient.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends ExternalApiClientUpdateManyArgs>(args: SelectSubset<T, ExternalApiClientUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one ExternalApiClient.
     * @param {ExternalApiClientUpsertArgs} args - Arguments to update or create a ExternalApiClient.
     * @example
     * // Update or create a ExternalApiClient
     * const externalApiClient = await prisma.externalApiClient.upsert({
     *   create: {
     *     // ... data to create a ExternalApiClient
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the ExternalApiClient we want to update
     *   }
     * })
     */
    upsert<T extends ExternalApiClientUpsertArgs>(args: SelectSubset<T, ExternalApiClientUpsertArgs<ExtArgs>>): Prisma__ExternalApiClientClient<$Result.GetResult<Prisma.$ExternalApiClientPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of ExternalApiClients.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ExternalApiClientCountArgs} args - Arguments to filter ExternalApiClients to count.
     * @example
     * // Count the number of ExternalApiClients
     * const count = await prisma.externalApiClient.count({
     *   where: {
     *     // ... the filter for the ExternalApiClients we want to count
     *   }
     * })
    **/
    count<T extends ExternalApiClientCountArgs>(
      args?: Subset<T, ExternalApiClientCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], ExternalApiClientCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a ExternalApiClient.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ExternalApiClientAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends ExternalApiClientAggregateArgs>(args: Subset<T, ExternalApiClientAggregateArgs>): Prisma.PrismaPromise<GetExternalApiClientAggregateType<T>>

    /**
     * Group by ExternalApiClient.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ExternalApiClientGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends ExternalApiClientGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: ExternalApiClientGroupByArgs['orderBy'] }
        : { orderBy?: ExternalApiClientGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, ExternalApiClientGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetExternalApiClientGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the ExternalApiClient model
   */
  readonly fields: ExternalApiClientFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for ExternalApiClient.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__ExternalApiClientClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the ExternalApiClient model
   */
  interface ExternalApiClientFieldRefs {
    readonly id: FieldRef<"ExternalApiClient", 'Int'>
    readonly uuid: FieldRef<"ExternalApiClient", 'String'>
    readonly systemLabel: FieldRef<"ExternalApiClient", 'String'>
    readonly apiKeyHash: FieldRef<"ExternalApiClient", 'String'>
    readonly isActive: FieldRef<"ExternalApiClient", 'Boolean'>
    readonly webhookUrl: FieldRef<"ExternalApiClient", 'String'>
    readonly webhookSecret: FieldRef<"ExternalApiClient", 'String'>
    readonly createdAt: FieldRef<"ExternalApiClient", 'DateTime'>
    readonly updatedAt: FieldRef<"ExternalApiClient", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * ExternalApiClient findUnique
   */
  export type ExternalApiClientFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ExternalApiClient
     */
    select?: ExternalApiClientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ExternalApiClient
     */
    omit?: ExternalApiClientOmit<ExtArgs> | null
    /**
     * Filter, which ExternalApiClient to fetch.
     */
    where: ExternalApiClientWhereUniqueInput
  }

  /**
   * ExternalApiClient findUniqueOrThrow
   */
  export type ExternalApiClientFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ExternalApiClient
     */
    select?: ExternalApiClientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ExternalApiClient
     */
    omit?: ExternalApiClientOmit<ExtArgs> | null
    /**
     * Filter, which ExternalApiClient to fetch.
     */
    where: ExternalApiClientWhereUniqueInput
  }

  /**
   * ExternalApiClient findFirst
   */
  export type ExternalApiClientFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ExternalApiClient
     */
    select?: ExternalApiClientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ExternalApiClient
     */
    omit?: ExternalApiClientOmit<ExtArgs> | null
    /**
     * Filter, which ExternalApiClient to fetch.
     */
    where?: ExternalApiClientWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of ExternalApiClients to fetch.
     */
    orderBy?: ExternalApiClientOrderByWithRelationInput | ExternalApiClientOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for ExternalApiClients.
     */
    cursor?: ExternalApiClientWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` ExternalApiClients from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` ExternalApiClients.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of ExternalApiClients.
     */
    distinct?: ExternalApiClientScalarFieldEnum | ExternalApiClientScalarFieldEnum[]
  }

  /**
   * ExternalApiClient findFirstOrThrow
   */
  export type ExternalApiClientFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ExternalApiClient
     */
    select?: ExternalApiClientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ExternalApiClient
     */
    omit?: ExternalApiClientOmit<ExtArgs> | null
    /**
     * Filter, which ExternalApiClient to fetch.
     */
    where?: ExternalApiClientWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of ExternalApiClients to fetch.
     */
    orderBy?: ExternalApiClientOrderByWithRelationInput | ExternalApiClientOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for ExternalApiClients.
     */
    cursor?: ExternalApiClientWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` ExternalApiClients from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` ExternalApiClients.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of ExternalApiClients.
     */
    distinct?: ExternalApiClientScalarFieldEnum | ExternalApiClientScalarFieldEnum[]
  }

  /**
   * ExternalApiClient findMany
   */
  export type ExternalApiClientFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ExternalApiClient
     */
    select?: ExternalApiClientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ExternalApiClient
     */
    omit?: ExternalApiClientOmit<ExtArgs> | null
    /**
     * Filter, which ExternalApiClients to fetch.
     */
    where?: ExternalApiClientWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of ExternalApiClients to fetch.
     */
    orderBy?: ExternalApiClientOrderByWithRelationInput | ExternalApiClientOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing ExternalApiClients.
     */
    cursor?: ExternalApiClientWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` ExternalApiClients from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` ExternalApiClients.
     */
    skip?: number
    distinct?: ExternalApiClientScalarFieldEnum | ExternalApiClientScalarFieldEnum[]
  }

  /**
   * ExternalApiClient create
   */
  export type ExternalApiClientCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ExternalApiClient
     */
    select?: ExternalApiClientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ExternalApiClient
     */
    omit?: ExternalApiClientOmit<ExtArgs> | null
    /**
     * The data needed to create a ExternalApiClient.
     */
    data: XOR<ExternalApiClientCreateInput, ExternalApiClientUncheckedCreateInput>
  }

  /**
   * ExternalApiClient createMany
   */
  export type ExternalApiClientCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many ExternalApiClients.
     */
    data: ExternalApiClientCreateManyInput | ExternalApiClientCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * ExternalApiClient update
   */
  export type ExternalApiClientUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ExternalApiClient
     */
    select?: ExternalApiClientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ExternalApiClient
     */
    omit?: ExternalApiClientOmit<ExtArgs> | null
    /**
     * The data needed to update a ExternalApiClient.
     */
    data: XOR<ExternalApiClientUpdateInput, ExternalApiClientUncheckedUpdateInput>
    /**
     * Choose, which ExternalApiClient to update.
     */
    where: ExternalApiClientWhereUniqueInput
  }

  /**
   * ExternalApiClient updateMany
   */
  export type ExternalApiClientUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update ExternalApiClients.
     */
    data: XOR<ExternalApiClientUpdateManyMutationInput, ExternalApiClientUncheckedUpdateManyInput>
    /**
     * Filter which ExternalApiClients to update
     */
    where?: ExternalApiClientWhereInput
    /**
     * Limit how many ExternalApiClients to update.
     */
    limit?: number
  }

  /**
   * ExternalApiClient upsert
   */
  export type ExternalApiClientUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ExternalApiClient
     */
    select?: ExternalApiClientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ExternalApiClient
     */
    omit?: ExternalApiClientOmit<ExtArgs> | null
    /**
     * The filter to search for the ExternalApiClient to update in case it exists.
     */
    where: ExternalApiClientWhereUniqueInput
    /**
     * In case the ExternalApiClient found by the `where` argument doesn't exist, create a new ExternalApiClient with this data.
     */
    create: XOR<ExternalApiClientCreateInput, ExternalApiClientUncheckedCreateInput>
    /**
     * In case the ExternalApiClient was found with the provided `where` argument, update it with this data.
     */
    update: XOR<ExternalApiClientUpdateInput, ExternalApiClientUncheckedUpdateInput>
  }

  /**
   * ExternalApiClient delete
   */
  export type ExternalApiClientDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ExternalApiClient
     */
    select?: ExternalApiClientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ExternalApiClient
     */
    omit?: ExternalApiClientOmit<ExtArgs> | null
    /**
     * Filter which ExternalApiClient to delete.
     */
    where: ExternalApiClientWhereUniqueInput
  }

  /**
   * ExternalApiClient deleteMany
   */
  export type ExternalApiClientDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which ExternalApiClients to delete
     */
    where?: ExternalApiClientWhereInput
    /**
     * Limit how many ExternalApiClients to delete.
     */
    limit?: number
  }

  /**
   * ExternalApiClient without action
   */
  export type ExternalApiClientDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ExternalApiClient
     */
    select?: ExternalApiClientSelect<ExtArgs> | null
    /**
     * Omit specific fields from the ExternalApiClient
     */
    omit?: ExternalApiClientOmit<ExtArgs> | null
  }


  /**
   * Model SystemConfig
   */

  export type AggregateSystemConfig = {
    _count: SystemConfigCountAggregateOutputType | null
    _min: SystemConfigMinAggregateOutputType | null
    _max: SystemConfigMaxAggregateOutputType | null
  }

  export type SystemConfigMinAggregateOutputType = {
    key: string | null
    value: string | null
    updatedAt: Date | null
  }

  export type SystemConfigMaxAggregateOutputType = {
    key: string | null
    value: string | null
    updatedAt: Date | null
  }

  export type SystemConfigCountAggregateOutputType = {
    key: number
    value: number
    updatedAt: number
    _all: number
  }


  export type SystemConfigMinAggregateInputType = {
    key?: true
    value?: true
    updatedAt?: true
  }

  export type SystemConfigMaxAggregateInputType = {
    key?: true
    value?: true
    updatedAt?: true
  }

  export type SystemConfigCountAggregateInputType = {
    key?: true
    value?: true
    updatedAt?: true
    _all?: true
  }

  export type SystemConfigAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which SystemConfig to aggregate.
     */
    where?: SystemConfigWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SystemConfigs to fetch.
     */
    orderBy?: SystemConfigOrderByWithRelationInput | SystemConfigOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: SystemConfigWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SystemConfigs from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SystemConfigs.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned SystemConfigs
    **/
    _count?: true | SystemConfigCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: SystemConfigMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: SystemConfigMaxAggregateInputType
  }

  export type GetSystemConfigAggregateType<T extends SystemConfigAggregateArgs> = {
        [P in keyof T & keyof AggregateSystemConfig]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateSystemConfig[P]>
      : GetScalarType<T[P], AggregateSystemConfig[P]>
  }




  export type SystemConfigGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: SystemConfigWhereInput
    orderBy?: SystemConfigOrderByWithAggregationInput | SystemConfigOrderByWithAggregationInput[]
    by: SystemConfigScalarFieldEnum[] | SystemConfigScalarFieldEnum
    having?: SystemConfigScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: SystemConfigCountAggregateInputType | true
    _min?: SystemConfigMinAggregateInputType
    _max?: SystemConfigMaxAggregateInputType
  }

  export type SystemConfigGroupByOutputType = {
    key: string
    value: string
    updatedAt: Date
    _count: SystemConfigCountAggregateOutputType | null
    _min: SystemConfigMinAggregateOutputType | null
    _max: SystemConfigMaxAggregateOutputType | null
  }

  type GetSystemConfigGroupByPayload<T extends SystemConfigGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<SystemConfigGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof SystemConfigGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], SystemConfigGroupByOutputType[P]>
            : GetScalarType<T[P], SystemConfigGroupByOutputType[P]>
        }
      >
    >


  export type SystemConfigSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    key?: boolean
    value?: boolean
    updatedAt?: boolean
  }, ExtArgs["result"]["systemConfig"]>



  export type SystemConfigSelectScalar = {
    key?: boolean
    value?: boolean
    updatedAt?: boolean
  }

  export type SystemConfigOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"key" | "value" | "updatedAt", ExtArgs["result"]["systemConfig"]>

  export type $SystemConfigPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "SystemConfig"
    objects: {}
    scalars: $Extensions.GetPayloadResult<{
      key: string
      value: string
      updatedAt: Date
    }, ExtArgs["result"]["systemConfig"]>
    composites: {}
  }

  type SystemConfigGetPayload<S extends boolean | null | undefined | SystemConfigDefaultArgs> = $Result.GetResult<Prisma.$SystemConfigPayload, S>

  type SystemConfigCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<SystemConfigFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: SystemConfigCountAggregateInputType | true
    }

  export interface SystemConfigDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['SystemConfig'], meta: { name: 'SystemConfig' } }
    /**
     * Find zero or one SystemConfig that matches the filter.
     * @param {SystemConfigFindUniqueArgs} args - Arguments to find a SystemConfig
     * @example
     * // Get one SystemConfig
     * const systemConfig = await prisma.systemConfig.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends SystemConfigFindUniqueArgs>(args: SelectSubset<T, SystemConfigFindUniqueArgs<ExtArgs>>): Prisma__SystemConfigClient<$Result.GetResult<Prisma.$SystemConfigPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one SystemConfig that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {SystemConfigFindUniqueOrThrowArgs} args - Arguments to find a SystemConfig
     * @example
     * // Get one SystemConfig
     * const systemConfig = await prisma.systemConfig.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends SystemConfigFindUniqueOrThrowArgs>(args: SelectSubset<T, SystemConfigFindUniqueOrThrowArgs<ExtArgs>>): Prisma__SystemConfigClient<$Result.GetResult<Prisma.$SystemConfigPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first SystemConfig that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SystemConfigFindFirstArgs} args - Arguments to find a SystemConfig
     * @example
     * // Get one SystemConfig
     * const systemConfig = await prisma.systemConfig.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends SystemConfigFindFirstArgs>(args?: SelectSubset<T, SystemConfigFindFirstArgs<ExtArgs>>): Prisma__SystemConfigClient<$Result.GetResult<Prisma.$SystemConfigPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first SystemConfig that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SystemConfigFindFirstOrThrowArgs} args - Arguments to find a SystemConfig
     * @example
     * // Get one SystemConfig
     * const systemConfig = await prisma.systemConfig.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends SystemConfigFindFirstOrThrowArgs>(args?: SelectSubset<T, SystemConfigFindFirstOrThrowArgs<ExtArgs>>): Prisma__SystemConfigClient<$Result.GetResult<Prisma.$SystemConfigPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more SystemConfigs that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SystemConfigFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all SystemConfigs
     * const systemConfigs = await prisma.systemConfig.findMany()
     * 
     * // Get first 10 SystemConfigs
     * const systemConfigs = await prisma.systemConfig.findMany({ take: 10 })
     * 
     * // Only select the `key`
     * const systemConfigWithKeyOnly = await prisma.systemConfig.findMany({ select: { key: true } })
     * 
     */
    findMany<T extends SystemConfigFindManyArgs>(args?: SelectSubset<T, SystemConfigFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$SystemConfigPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a SystemConfig.
     * @param {SystemConfigCreateArgs} args - Arguments to create a SystemConfig.
     * @example
     * // Create one SystemConfig
     * const SystemConfig = await prisma.systemConfig.create({
     *   data: {
     *     // ... data to create a SystemConfig
     *   }
     * })
     * 
     */
    create<T extends SystemConfigCreateArgs>(args: SelectSubset<T, SystemConfigCreateArgs<ExtArgs>>): Prisma__SystemConfigClient<$Result.GetResult<Prisma.$SystemConfigPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many SystemConfigs.
     * @param {SystemConfigCreateManyArgs} args - Arguments to create many SystemConfigs.
     * @example
     * // Create many SystemConfigs
     * const systemConfig = await prisma.systemConfig.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends SystemConfigCreateManyArgs>(args?: SelectSubset<T, SystemConfigCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a SystemConfig.
     * @param {SystemConfigDeleteArgs} args - Arguments to delete one SystemConfig.
     * @example
     * // Delete one SystemConfig
     * const SystemConfig = await prisma.systemConfig.delete({
     *   where: {
     *     // ... filter to delete one SystemConfig
     *   }
     * })
     * 
     */
    delete<T extends SystemConfigDeleteArgs>(args: SelectSubset<T, SystemConfigDeleteArgs<ExtArgs>>): Prisma__SystemConfigClient<$Result.GetResult<Prisma.$SystemConfigPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one SystemConfig.
     * @param {SystemConfigUpdateArgs} args - Arguments to update one SystemConfig.
     * @example
     * // Update one SystemConfig
     * const systemConfig = await prisma.systemConfig.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends SystemConfigUpdateArgs>(args: SelectSubset<T, SystemConfigUpdateArgs<ExtArgs>>): Prisma__SystemConfigClient<$Result.GetResult<Prisma.$SystemConfigPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more SystemConfigs.
     * @param {SystemConfigDeleteManyArgs} args - Arguments to filter SystemConfigs to delete.
     * @example
     * // Delete a few SystemConfigs
     * const { count } = await prisma.systemConfig.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends SystemConfigDeleteManyArgs>(args?: SelectSubset<T, SystemConfigDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more SystemConfigs.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SystemConfigUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many SystemConfigs
     * const systemConfig = await prisma.systemConfig.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends SystemConfigUpdateManyArgs>(args: SelectSubset<T, SystemConfigUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one SystemConfig.
     * @param {SystemConfigUpsertArgs} args - Arguments to update or create a SystemConfig.
     * @example
     * // Update or create a SystemConfig
     * const systemConfig = await prisma.systemConfig.upsert({
     *   create: {
     *     // ... data to create a SystemConfig
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the SystemConfig we want to update
     *   }
     * })
     */
    upsert<T extends SystemConfigUpsertArgs>(args: SelectSubset<T, SystemConfigUpsertArgs<ExtArgs>>): Prisma__SystemConfigClient<$Result.GetResult<Prisma.$SystemConfigPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of SystemConfigs.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SystemConfigCountArgs} args - Arguments to filter SystemConfigs to count.
     * @example
     * // Count the number of SystemConfigs
     * const count = await prisma.systemConfig.count({
     *   where: {
     *     // ... the filter for the SystemConfigs we want to count
     *   }
     * })
    **/
    count<T extends SystemConfigCountArgs>(
      args?: Subset<T, SystemConfigCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], SystemConfigCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a SystemConfig.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SystemConfigAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends SystemConfigAggregateArgs>(args: Subset<T, SystemConfigAggregateArgs>): Prisma.PrismaPromise<GetSystemConfigAggregateType<T>>

    /**
     * Group by SystemConfig.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SystemConfigGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends SystemConfigGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: SystemConfigGroupByArgs['orderBy'] }
        : { orderBy?: SystemConfigGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, SystemConfigGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetSystemConfigGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the SystemConfig model
   */
  readonly fields: SystemConfigFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for SystemConfig.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__SystemConfigClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the SystemConfig model
   */
  interface SystemConfigFieldRefs {
    readonly key: FieldRef<"SystemConfig", 'String'>
    readonly value: FieldRef<"SystemConfig", 'String'>
    readonly updatedAt: FieldRef<"SystemConfig", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * SystemConfig findUnique
   */
  export type SystemConfigFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SystemConfig
     */
    select?: SystemConfigSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SystemConfig
     */
    omit?: SystemConfigOmit<ExtArgs> | null
    /**
     * Filter, which SystemConfig to fetch.
     */
    where: SystemConfigWhereUniqueInput
  }

  /**
   * SystemConfig findUniqueOrThrow
   */
  export type SystemConfigFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SystemConfig
     */
    select?: SystemConfigSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SystemConfig
     */
    omit?: SystemConfigOmit<ExtArgs> | null
    /**
     * Filter, which SystemConfig to fetch.
     */
    where: SystemConfigWhereUniqueInput
  }

  /**
   * SystemConfig findFirst
   */
  export type SystemConfigFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SystemConfig
     */
    select?: SystemConfigSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SystemConfig
     */
    omit?: SystemConfigOmit<ExtArgs> | null
    /**
     * Filter, which SystemConfig to fetch.
     */
    where?: SystemConfigWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SystemConfigs to fetch.
     */
    orderBy?: SystemConfigOrderByWithRelationInput | SystemConfigOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for SystemConfigs.
     */
    cursor?: SystemConfigWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SystemConfigs from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SystemConfigs.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of SystemConfigs.
     */
    distinct?: SystemConfigScalarFieldEnum | SystemConfigScalarFieldEnum[]
  }

  /**
   * SystemConfig findFirstOrThrow
   */
  export type SystemConfigFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SystemConfig
     */
    select?: SystemConfigSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SystemConfig
     */
    omit?: SystemConfigOmit<ExtArgs> | null
    /**
     * Filter, which SystemConfig to fetch.
     */
    where?: SystemConfigWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SystemConfigs to fetch.
     */
    orderBy?: SystemConfigOrderByWithRelationInput | SystemConfigOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for SystemConfigs.
     */
    cursor?: SystemConfigWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SystemConfigs from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SystemConfigs.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of SystemConfigs.
     */
    distinct?: SystemConfigScalarFieldEnum | SystemConfigScalarFieldEnum[]
  }

  /**
   * SystemConfig findMany
   */
  export type SystemConfigFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SystemConfig
     */
    select?: SystemConfigSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SystemConfig
     */
    omit?: SystemConfigOmit<ExtArgs> | null
    /**
     * Filter, which SystemConfigs to fetch.
     */
    where?: SystemConfigWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of SystemConfigs to fetch.
     */
    orderBy?: SystemConfigOrderByWithRelationInput | SystemConfigOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing SystemConfigs.
     */
    cursor?: SystemConfigWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` SystemConfigs from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` SystemConfigs.
     */
    skip?: number
    distinct?: SystemConfigScalarFieldEnum | SystemConfigScalarFieldEnum[]
  }

  /**
   * SystemConfig create
   */
  export type SystemConfigCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SystemConfig
     */
    select?: SystemConfigSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SystemConfig
     */
    omit?: SystemConfigOmit<ExtArgs> | null
    /**
     * The data needed to create a SystemConfig.
     */
    data: XOR<SystemConfigCreateInput, SystemConfigUncheckedCreateInput>
  }

  /**
   * SystemConfig createMany
   */
  export type SystemConfigCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many SystemConfigs.
     */
    data: SystemConfigCreateManyInput | SystemConfigCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * SystemConfig update
   */
  export type SystemConfigUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SystemConfig
     */
    select?: SystemConfigSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SystemConfig
     */
    omit?: SystemConfigOmit<ExtArgs> | null
    /**
     * The data needed to update a SystemConfig.
     */
    data: XOR<SystemConfigUpdateInput, SystemConfigUncheckedUpdateInput>
    /**
     * Choose, which SystemConfig to update.
     */
    where: SystemConfigWhereUniqueInput
  }

  /**
   * SystemConfig updateMany
   */
  export type SystemConfigUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update SystemConfigs.
     */
    data: XOR<SystemConfigUpdateManyMutationInput, SystemConfigUncheckedUpdateManyInput>
    /**
     * Filter which SystemConfigs to update
     */
    where?: SystemConfigWhereInput
    /**
     * Limit how many SystemConfigs to update.
     */
    limit?: number
  }

  /**
   * SystemConfig upsert
   */
  export type SystemConfigUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SystemConfig
     */
    select?: SystemConfigSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SystemConfig
     */
    omit?: SystemConfigOmit<ExtArgs> | null
    /**
     * The filter to search for the SystemConfig to update in case it exists.
     */
    where: SystemConfigWhereUniqueInput
    /**
     * In case the SystemConfig found by the `where` argument doesn't exist, create a new SystemConfig with this data.
     */
    create: XOR<SystemConfigCreateInput, SystemConfigUncheckedCreateInput>
    /**
     * In case the SystemConfig was found with the provided `where` argument, update it with this data.
     */
    update: XOR<SystemConfigUpdateInput, SystemConfigUncheckedUpdateInput>
  }

  /**
   * SystemConfig delete
   */
  export type SystemConfigDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SystemConfig
     */
    select?: SystemConfigSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SystemConfig
     */
    omit?: SystemConfigOmit<ExtArgs> | null
    /**
     * Filter which SystemConfig to delete.
     */
    where: SystemConfigWhereUniqueInput
  }

  /**
   * SystemConfig deleteMany
   */
  export type SystemConfigDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which SystemConfigs to delete
     */
    where?: SystemConfigWhereInput
    /**
     * Limit how many SystemConfigs to delete.
     */
    limit?: number
  }

  /**
   * SystemConfig without action
   */
  export type SystemConfigDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the SystemConfig
     */
    select?: SystemConfigSelect<ExtArgs> | null
    /**
     * Omit specific fields from the SystemConfig
     */
    omit?: SystemConfigOmit<ExtArgs> | null
  }


  /**
   * Model AuditLog
   */

  export type AggregateAuditLog = {
    _count: AuditLogCountAggregateOutputType | null
    _avg: AuditLogAvgAggregateOutputType | null
    _sum: AuditLogSumAggregateOutputType | null
    _min: AuditLogMinAggregateOutputType | null
    _max: AuditLogMaxAggregateOutputType | null
  }

  export type AuditLogAvgAggregateOutputType = {
    id: number | null
    performedByUserId: number | null
    performedByCompanyId: number | null
  }

  export type AuditLogSumAggregateOutputType = {
    id: bigint | null
    performedByUserId: number | null
    performedByCompanyId: number | null
  }

  export type AuditLogMinAggregateOutputType = {
    id: bigint | null
    entityName: string | null
    entityId: string | null
    action: string | null
    performedByUserId: number | null
    performedByCompanyId: number | null
    createdAt: Date | null
  }

  export type AuditLogMaxAggregateOutputType = {
    id: bigint | null
    entityName: string | null
    entityId: string | null
    action: string | null
    performedByUserId: number | null
    performedByCompanyId: number | null
    createdAt: Date | null
  }

  export type AuditLogCountAggregateOutputType = {
    id: number
    entityName: number
    entityId: number
    action: number
    oldValue: number
    newValue: number
    changedFields: number
    performedByUserId: number
    performedByCompanyId: number
    createdAt: number
    _all: number
  }


  export type AuditLogAvgAggregateInputType = {
    id?: true
    performedByUserId?: true
    performedByCompanyId?: true
  }

  export type AuditLogSumAggregateInputType = {
    id?: true
    performedByUserId?: true
    performedByCompanyId?: true
  }

  export type AuditLogMinAggregateInputType = {
    id?: true
    entityName?: true
    entityId?: true
    action?: true
    performedByUserId?: true
    performedByCompanyId?: true
    createdAt?: true
  }

  export type AuditLogMaxAggregateInputType = {
    id?: true
    entityName?: true
    entityId?: true
    action?: true
    performedByUserId?: true
    performedByCompanyId?: true
    createdAt?: true
  }

  export type AuditLogCountAggregateInputType = {
    id?: true
    entityName?: true
    entityId?: true
    action?: true
    oldValue?: true
    newValue?: true
    changedFields?: true
    performedByUserId?: true
    performedByCompanyId?: true
    createdAt?: true
    _all?: true
  }

  export type AuditLogAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which AuditLog to aggregate.
     */
    where?: AuditLogWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of AuditLogs to fetch.
     */
    orderBy?: AuditLogOrderByWithRelationInput | AuditLogOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: AuditLogWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` AuditLogs from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` AuditLogs.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned AuditLogs
    **/
    _count?: true | AuditLogCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: AuditLogAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: AuditLogSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: AuditLogMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: AuditLogMaxAggregateInputType
  }

  export type GetAuditLogAggregateType<T extends AuditLogAggregateArgs> = {
        [P in keyof T & keyof AggregateAuditLog]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateAuditLog[P]>
      : GetScalarType<T[P], AggregateAuditLog[P]>
  }




  export type AuditLogGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: AuditLogWhereInput
    orderBy?: AuditLogOrderByWithAggregationInput | AuditLogOrderByWithAggregationInput[]
    by: AuditLogScalarFieldEnum[] | AuditLogScalarFieldEnum
    having?: AuditLogScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: AuditLogCountAggregateInputType | true
    _avg?: AuditLogAvgAggregateInputType
    _sum?: AuditLogSumAggregateInputType
    _min?: AuditLogMinAggregateInputType
    _max?: AuditLogMaxAggregateInputType
  }

  export type AuditLogGroupByOutputType = {
    id: bigint
    entityName: string
    entityId: string
    action: string
    oldValue: JsonValue | null
    newValue: JsonValue | null
    changedFields: JsonValue | null
    performedByUserId: number
    performedByCompanyId: number | null
    createdAt: Date
    _count: AuditLogCountAggregateOutputType | null
    _avg: AuditLogAvgAggregateOutputType | null
    _sum: AuditLogSumAggregateOutputType | null
    _min: AuditLogMinAggregateOutputType | null
    _max: AuditLogMaxAggregateOutputType | null
  }

  type GetAuditLogGroupByPayload<T extends AuditLogGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<AuditLogGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof AuditLogGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], AuditLogGroupByOutputType[P]>
            : GetScalarType<T[P], AuditLogGroupByOutputType[P]>
        }
      >
    >


  export type AuditLogSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    entityName?: boolean
    entityId?: boolean
    action?: boolean
    oldValue?: boolean
    newValue?: boolean
    changedFields?: boolean
    performedByUserId?: boolean
    performedByCompanyId?: boolean
    createdAt?: boolean
  }, ExtArgs["result"]["auditLog"]>



  export type AuditLogSelectScalar = {
    id?: boolean
    entityName?: boolean
    entityId?: boolean
    action?: boolean
    oldValue?: boolean
    newValue?: boolean
    changedFields?: boolean
    performedByUserId?: boolean
    performedByCompanyId?: boolean
    createdAt?: boolean
  }

  export type AuditLogOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "entityName" | "entityId" | "action" | "oldValue" | "newValue" | "changedFields" | "performedByUserId" | "performedByCompanyId" | "createdAt", ExtArgs["result"]["auditLog"]>

  export type $AuditLogPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "AuditLog"
    objects: {}
    scalars: $Extensions.GetPayloadResult<{
      id: bigint
      entityName: string
      entityId: string
      action: string
      oldValue: Prisma.JsonValue | null
      newValue: Prisma.JsonValue | null
      changedFields: Prisma.JsonValue | null
      performedByUserId: number
      performedByCompanyId: number | null
      createdAt: Date
    }, ExtArgs["result"]["auditLog"]>
    composites: {}
  }

  type AuditLogGetPayload<S extends boolean | null | undefined | AuditLogDefaultArgs> = $Result.GetResult<Prisma.$AuditLogPayload, S>

  type AuditLogCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<AuditLogFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: AuditLogCountAggregateInputType | true
    }

  export interface AuditLogDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['AuditLog'], meta: { name: 'AuditLog' } }
    /**
     * Find zero or one AuditLog that matches the filter.
     * @param {AuditLogFindUniqueArgs} args - Arguments to find a AuditLog
     * @example
     * // Get one AuditLog
     * const auditLog = await prisma.auditLog.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends AuditLogFindUniqueArgs>(args: SelectSubset<T, AuditLogFindUniqueArgs<ExtArgs>>): Prisma__AuditLogClient<$Result.GetResult<Prisma.$AuditLogPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one AuditLog that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {AuditLogFindUniqueOrThrowArgs} args - Arguments to find a AuditLog
     * @example
     * // Get one AuditLog
     * const auditLog = await prisma.auditLog.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends AuditLogFindUniqueOrThrowArgs>(args: SelectSubset<T, AuditLogFindUniqueOrThrowArgs<ExtArgs>>): Prisma__AuditLogClient<$Result.GetResult<Prisma.$AuditLogPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first AuditLog that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {AuditLogFindFirstArgs} args - Arguments to find a AuditLog
     * @example
     * // Get one AuditLog
     * const auditLog = await prisma.auditLog.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends AuditLogFindFirstArgs>(args?: SelectSubset<T, AuditLogFindFirstArgs<ExtArgs>>): Prisma__AuditLogClient<$Result.GetResult<Prisma.$AuditLogPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first AuditLog that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {AuditLogFindFirstOrThrowArgs} args - Arguments to find a AuditLog
     * @example
     * // Get one AuditLog
     * const auditLog = await prisma.auditLog.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends AuditLogFindFirstOrThrowArgs>(args?: SelectSubset<T, AuditLogFindFirstOrThrowArgs<ExtArgs>>): Prisma__AuditLogClient<$Result.GetResult<Prisma.$AuditLogPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more AuditLogs that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {AuditLogFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all AuditLogs
     * const auditLogs = await prisma.auditLog.findMany()
     * 
     * // Get first 10 AuditLogs
     * const auditLogs = await prisma.auditLog.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const auditLogWithIdOnly = await prisma.auditLog.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends AuditLogFindManyArgs>(args?: SelectSubset<T, AuditLogFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$AuditLogPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a AuditLog.
     * @param {AuditLogCreateArgs} args - Arguments to create a AuditLog.
     * @example
     * // Create one AuditLog
     * const AuditLog = await prisma.auditLog.create({
     *   data: {
     *     // ... data to create a AuditLog
     *   }
     * })
     * 
     */
    create<T extends AuditLogCreateArgs>(args: SelectSubset<T, AuditLogCreateArgs<ExtArgs>>): Prisma__AuditLogClient<$Result.GetResult<Prisma.$AuditLogPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many AuditLogs.
     * @param {AuditLogCreateManyArgs} args - Arguments to create many AuditLogs.
     * @example
     * // Create many AuditLogs
     * const auditLog = await prisma.auditLog.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends AuditLogCreateManyArgs>(args?: SelectSubset<T, AuditLogCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Delete a AuditLog.
     * @param {AuditLogDeleteArgs} args - Arguments to delete one AuditLog.
     * @example
     * // Delete one AuditLog
     * const AuditLog = await prisma.auditLog.delete({
     *   where: {
     *     // ... filter to delete one AuditLog
     *   }
     * })
     * 
     */
    delete<T extends AuditLogDeleteArgs>(args: SelectSubset<T, AuditLogDeleteArgs<ExtArgs>>): Prisma__AuditLogClient<$Result.GetResult<Prisma.$AuditLogPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one AuditLog.
     * @param {AuditLogUpdateArgs} args - Arguments to update one AuditLog.
     * @example
     * // Update one AuditLog
     * const auditLog = await prisma.auditLog.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends AuditLogUpdateArgs>(args: SelectSubset<T, AuditLogUpdateArgs<ExtArgs>>): Prisma__AuditLogClient<$Result.GetResult<Prisma.$AuditLogPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more AuditLogs.
     * @param {AuditLogDeleteManyArgs} args - Arguments to filter AuditLogs to delete.
     * @example
     * // Delete a few AuditLogs
     * const { count } = await prisma.auditLog.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends AuditLogDeleteManyArgs>(args?: SelectSubset<T, AuditLogDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more AuditLogs.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {AuditLogUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many AuditLogs
     * const auditLog = await prisma.auditLog.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends AuditLogUpdateManyArgs>(args: SelectSubset<T, AuditLogUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one AuditLog.
     * @param {AuditLogUpsertArgs} args - Arguments to update or create a AuditLog.
     * @example
     * // Update or create a AuditLog
     * const auditLog = await prisma.auditLog.upsert({
     *   create: {
     *     // ... data to create a AuditLog
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the AuditLog we want to update
     *   }
     * })
     */
    upsert<T extends AuditLogUpsertArgs>(args: SelectSubset<T, AuditLogUpsertArgs<ExtArgs>>): Prisma__AuditLogClient<$Result.GetResult<Prisma.$AuditLogPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of AuditLogs.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {AuditLogCountArgs} args - Arguments to filter AuditLogs to count.
     * @example
     * // Count the number of AuditLogs
     * const count = await prisma.auditLog.count({
     *   where: {
     *     // ... the filter for the AuditLogs we want to count
     *   }
     * })
    **/
    count<T extends AuditLogCountArgs>(
      args?: Subset<T, AuditLogCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], AuditLogCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a AuditLog.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {AuditLogAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends AuditLogAggregateArgs>(args: Subset<T, AuditLogAggregateArgs>): Prisma.PrismaPromise<GetAuditLogAggregateType<T>>

    /**
     * Group by AuditLog.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {AuditLogGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends AuditLogGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: AuditLogGroupByArgs['orderBy'] }
        : { orderBy?: AuditLogGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends 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 True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, AuditLogGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetAuditLogGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the AuditLog model
   */
  readonly fields: AuditLogFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for AuditLog.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__AuditLogClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the AuditLog model
   */
  interface AuditLogFieldRefs {
    readonly id: FieldRef<"AuditLog", 'BigInt'>
    readonly entityName: FieldRef<"AuditLog", 'String'>
    readonly entityId: FieldRef<"AuditLog", 'String'>
    readonly action: FieldRef<"AuditLog", 'String'>
    readonly oldValue: FieldRef<"AuditLog", 'Json'>
    readonly newValue: FieldRef<"AuditLog", 'Json'>
    readonly changedFields: FieldRef<"AuditLog", 'Json'>
    readonly performedByUserId: FieldRef<"AuditLog", 'Int'>
    readonly performedByCompanyId: FieldRef<"AuditLog", 'Int'>
    readonly createdAt: FieldRef<"AuditLog", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * AuditLog findUnique
   */
  export type AuditLogFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the AuditLog
     */
    select?: AuditLogSelect<ExtArgs> | null
    /**
     * Omit specific fields from the AuditLog
     */
    omit?: AuditLogOmit<ExtArgs> | null
    /**
     * Filter, which AuditLog to fetch.
     */
    where: AuditLogWhereUniqueInput
  }

  /**
   * AuditLog findUniqueOrThrow
   */
  export type AuditLogFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the AuditLog
     */
    select?: AuditLogSelect<ExtArgs> | null
    /**
     * Omit specific fields from the AuditLog
     */
    omit?: AuditLogOmit<ExtArgs> | null
    /**
     * Filter, which AuditLog to fetch.
     */
    where: AuditLogWhereUniqueInput
  }

  /**
   * AuditLog findFirst
   */
  export type AuditLogFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the AuditLog
     */
    select?: AuditLogSelect<ExtArgs> | null
    /**
     * Omit specific fields from the AuditLog
     */
    omit?: AuditLogOmit<ExtArgs> | null
    /**
     * Filter, which AuditLog to fetch.
     */
    where?: AuditLogWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of AuditLogs to fetch.
     */
    orderBy?: AuditLogOrderByWithRelationInput | AuditLogOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for AuditLogs.
     */
    cursor?: AuditLogWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` AuditLogs from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` AuditLogs.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of AuditLogs.
     */
    distinct?: AuditLogScalarFieldEnum | AuditLogScalarFieldEnum[]
  }

  /**
   * AuditLog findFirstOrThrow
   */
  export type AuditLogFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the AuditLog
     */
    select?: AuditLogSelect<ExtArgs> | null
    /**
     * Omit specific fields from the AuditLog
     */
    omit?: AuditLogOmit<ExtArgs> | null
    /**
     * Filter, which AuditLog to fetch.
     */
    where?: AuditLogWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of AuditLogs to fetch.
     */
    orderBy?: AuditLogOrderByWithRelationInput | AuditLogOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for AuditLogs.
     */
    cursor?: AuditLogWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` AuditLogs from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` AuditLogs.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of AuditLogs.
     */
    distinct?: AuditLogScalarFieldEnum | AuditLogScalarFieldEnum[]
  }

  /**
   * AuditLog findMany
   */
  export type AuditLogFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the AuditLog
     */
    select?: AuditLogSelect<ExtArgs> | null
    /**
     * Omit specific fields from the AuditLog
     */
    omit?: AuditLogOmit<ExtArgs> | null
    /**
     * Filter, which AuditLogs to fetch.
     */
    where?: AuditLogWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of AuditLogs to fetch.
     */
    orderBy?: AuditLogOrderByWithRelationInput | AuditLogOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing AuditLogs.
     */
    cursor?: AuditLogWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` AuditLogs from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` AuditLogs.
     */
    skip?: number
    distinct?: AuditLogScalarFieldEnum | AuditLogScalarFieldEnum[]
  }

  /**
   * AuditLog create
   */
  export type AuditLogCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the AuditLog
     */
    select?: AuditLogSelect<ExtArgs> | null
    /**
     * Omit specific fields from the AuditLog
     */
    omit?: AuditLogOmit<ExtArgs> | null
    /**
     * The data needed to create a AuditLog.
     */
    data: XOR<AuditLogCreateInput, AuditLogUncheckedCreateInput>
  }

  /**
   * AuditLog createMany
   */
  export type AuditLogCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many AuditLogs.
     */
    data: AuditLogCreateManyInput | AuditLogCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * AuditLog update
   */
  export type AuditLogUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the AuditLog
     */
    select?: AuditLogSelect<ExtArgs> | null
    /**
     * Omit specific fields from the AuditLog
     */
    omit?: AuditLogOmit<ExtArgs> | null
    /**
     * The data needed to update a AuditLog.
     */
    data: XOR<AuditLogUpdateInput, AuditLogUncheckedUpdateInput>
    /**
     * Choose, which AuditLog to update.
     */
    where: AuditLogWhereUniqueInput
  }

  /**
   * AuditLog updateMany
   */
  export type AuditLogUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update AuditLogs.
     */
    data: XOR<AuditLogUpdateManyMutationInput, AuditLogUncheckedUpdateManyInput>
    /**
     * Filter which AuditLogs to update
     */
    where?: AuditLogWhereInput
    /**
     * Limit how many AuditLogs to update.
     */
    limit?: number
  }

  /**
   * AuditLog upsert
   */
  export type AuditLogUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the AuditLog
     */
    select?: AuditLogSelect<ExtArgs> | null
    /**
     * Omit specific fields from the AuditLog
     */
    omit?: AuditLogOmit<ExtArgs> | null
    /**
     * The filter to search for the AuditLog to update in case it exists.
     */
    where: AuditLogWhereUniqueInput
    /**
     * In case the AuditLog found by the `where` argument doesn't exist, create a new AuditLog with this data.
     */
    create: XOR<AuditLogCreateInput, AuditLogUncheckedCreateInput>
    /**
     * In case the AuditLog was found with the provided `where` argument, update it with this data.
     */
    update: XOR<AuditLogUpdateInput, AuditLogUncheckedUpdateInput>
  }

  /**
   * AuditLog delete
   */
  export type AuditLogDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the AuditLog
     */
    select?: AuditLogSelect<ExtArgs> | null
    /**
     * Omit specific fields from the AuditLog
     */
    omit?: AuditLogOmit<ExtArgs> | null
    /**
     * Filter which AuditLog to delete.
     */
    where: AuditLogWhereUniqueInput
  }

  /**
   * AuditLog deleteMany
   */
  export type AuditLogDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which AuditLogs to delete
     */
    where?: AuditLogWhereInput
    /**
     * Limit how many AuditLogs to delete.
     */
    limit?: number
  }

  /**
   * AuditLog without action
   */
  export type AuditLogDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the AuditLog
     */
    select?: AuditLogSelect<ExtArgs> | null
    /**
     * Omit specific fields from the AuditLog
     */
    omit?: AuditLogOmit<ExtArgs> | null
  }


  /**
   * Enums
   */

  export const TransactionIsolationLevel: {
    ReadUncommitted: 'ReadUncommitted',
    ReadCommitted: 'ReadCommitted',
    RepeatableRead: 'RepeatableRead',
    Serializable: 'Serializable'
  };

  export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel]


  export const CompanyScalarFieldEnum: {
    id: 'id',
    uuid: 'uuid',
    externalCompanyId: 'externalCompanyId',
    source: 'source',
    brNumber: 'brNumber',
    companyName: 'companyName',
    contactNumber: 'contactNumber',
    address: 'address',
    smsCostTransactional: 'smsCostTransactional',
    smsCostPromotional: 'smsCostPromotional',
    smsCostIndividual: 'smsCostIndividual',
    deletedAt: 'deletedAt',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt'
  };

  export type CompanyScalarFieldEnum = (typeof CompanyScalarFieldEnum)[keyof typeof CompanyScalarFieldEnum]


  export const RoleScalarFieldEnum: {
    id: 'id',
    uuid: 'uuid',
    name: 'name',
    displayName: 'displayName',
    isSystem: 'isSystem',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt'
  };

  export type RoleScalarFieldEnum = (typeof RoleScalarFieldEnum)[keyof typeof RoleScalarFieldEnum]


  export const UserScalarFieldEnum: {
    id: 'id',
    uuid: 'uuid',
    externalUserId: 'externalUserId',
    fullName: 'fullName',
    email: 'email',
    contactNumber: 'contactNumber',
    passwordHash: 'passwordHash',
    userType: 'userType',
    isActive: 'isActive',
    hasSeenGuide: 'hasSeenGuide',
    roleId: 'roleId',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt'
  };

  export type UserScalarFieldEnum = (typeof UserScalarFieldEnum)[keyof typeof UserScalarFieldEnum]


  export const RefreshTokenScalarFieldEnum: {
    id: 'id',
    token: 'token',
    userId: 'userId',
    expiresAt: 'expiresAt',
    isRevoked: 'isRevoked',
    createdAt: 'createdAt'
  };

  export type RefreshTokenScalarFieldEnum = (typeof RefreshTokenScalarFieldEnum)[keyof typeof RefreshTokenScalarFieldEnum]


  export const EmailVerificationOtpScalarFieldEnum: {
    id: 'id',
    otpHash: 'otpHash',
    email: 'email',
    expiresAt: 'expiresAt',
    isUsed: 'isUsed',
    createdAt: 'createdAt'
  };

  export type EmailVerificationOtpScalarFieldEnum = (typeof EmailVerificationOtpScalarFieldEnum)[keyof typeof EmailVerificationOtpScalarFieldEnum]


  export const PasswordResetTokenScalarFieldEnum: {
    id: 'id',
    tokenHash: 'tokenHash',
    userId: 'userId',
    expiresAt: 'expiresAt',
    isUsed: 'isUsed',
    createdAt: 'createdAt'
  };

  export type PasswordResetTokenScalarFieldEnum = (typeof PasswordResetTokenScalarFieldEnum)[keyof typeof PasswordResetTokenScalarFieldEnum]


  export const UserCompanyScalarFieldEnum: {
    id: 'id',
    uuid: 'uuid',
    userId: 'userId',
    companyId: 'companyId',
    createdAt: 'createdAt'
  };

  export type UserCompanyScalarFieldEnum = (typeof UserCompanyScalarFieldEnum)[keyof typeof UserCompanyScalarFieldEnum]


  export const BillPaymentScalarFieldEnum: {
    id: 'id',
    uuid: 'uuid',
    billingAccountId: 'billingAccountId',
    amount: 'amount',
    paymentMethod: 'paymentMethod',
    status: 'status',
    orderId: 'orderId',
    orderReference: 'orderReference',
    errorCode: 'errorCode',
    failureReason: 'failureReason',
    paidUserId: 'paidUserId',
    savedCardId: 'savedCardId',
    createdAt: 'createdAt'
  };

  export type BillPaymentScalarFieldEnum = (typeof BillPaymentScalarFieldEnum)[keyof typeof BillPaymentScalarFieldEnum]


  export const BillAccountScalarFieldEnum: {
    id: 'id',
    uuid: 'uuid',
    accountNumber: 'accountNumber',
    accountName: 'accountName',
    outstandingBalance: 'outstandingBalance',
    reservedBalance: 'reservedBalance',
    accountStatus: 'accountStatus',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt',
    companyId: 'companyId'
  };

  export type BillAccountScalarFieldEnum = (typeof BillAccountScalarFieldEnum)[keyof typeof BillAccountScalarFieldEnum]


  export const SavedCardScalarFieldEnum: {
    id: 'id',
    uuid: 'uuid',
    userId: 'userId',
    cardToken: 'cardToken',
    cardFirst6: 'cardFirst6',
    cardLast4: 'cardLast4',
    cardHolderName: 'cardHolderName',
    customerEmail: 'customerEmail',
    isActive: 'isActive',
    deletedAt: 'deletedAt',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt'
  };

  export type SavedCardScalarFieldEnum = (typeof SavedCardScalarFieldEnum)[keyof typeof SavedCardScalarFieldEnum]


  export const LowBalanceAlertScalarFieldEnum: {
    id: 'id',
    uuid: 'uuid',
    billingAccountId: 'billingAccountId',
    userId: 'userId',
    thresholdLevel: 'thresholdLevel',
    isActive: 'isActive',
    balanceAtAlert: 'balanceAtAlert',
    chargedAmount: 'chargedAmount',
    sentTo: 'sentTo',
    maskUsed: 'maskUsed',
    serverRef: 'serverRef',
    status: 'status',
    failureReason: 'failureReason',
    createdAt: 'createdAt'
  };

  export type LowBalanceAlertScalarFieldEnum = (typeof LowBalanceAlertScalarFieldEnum)[keyof typeof LowBalanceAlertScalarFieldEnum]


  export const DepartmentScalarFieldEnum: {
    id: 'id',
    uuid: 'uuid',
    companyId: 'companyId',
    name: 'name',
    externalCompanyId: 'externalCompanyId',
    smsCostTransactional: 'smsCostTransactional',
    smsCostPromotional: 'smsCostPromotional',
    is_enabled: 'is_enabled',
    callBackUrl: 'callBackUrl',
    Signature: 'Signature',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt',
    deletedAt: 'deletedAt'
  };

  export type DepartmentScalarFieldEnum = (typeof DepartmentScalarFieldEnum)[keyof typeof DepartmentScalarFieldEnum]


  export const SMS_TemplateScalarFieldEnum: {
    id: 'id',
    uuid: 'uuid',
    deptId: 'deptId',
    name: 'name',
    text_content: 'text_content',
    smsType: 'smsType',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt',
    deletedAt: 'deletedAt'
  };

  export type SMS_TemplateScalarFieldEnum = (typeof SMS_TemplateScalarFieldEnum)[keyof typeof SMS_TemplateScalarFieldEnum]


  export const SenderMaskScalarFieldEnum: {
    id: 'id',
    uuid: 'uuid',
    maskName: 'maskName',
    purpose: 'purpose',
    is_default: 'is_default',
    status: 'status',
    maskType: 'maskType',
    isExternal: 'isExternal',
    emailSent: 'emailSent',
    emailSentAt: 'emailSentAt',
    approvalNotificationSent: 'approvalNotificationSent',
    approvalNotificationSentAt: 'approvalNotificationSentAt',
    reservedAmount: 'reservedAmount',
    createdByUserId: 'createdByUserId',
    companyId: 'companyId',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt'
  };

  export type SenderMaskScalarFieldEnum = (typeof SenderMaskScalarFieldEnum)[keyof typeof SenderMaskScalarFieldEnum]


  export const DepartmentSenderMaskScalarFieldEnum: {
    id: 'id',
    uuid: 'uuid',
    senderMaskId: 'senderMaskId',
    deptId: 'deptId',
    assignedAt: 'assignedAt',
    deletedAt: 'deletedAt'
  };

  export type DepartmentSenderMaskScalarFieldEnum = (typeof DepartmentSenderMaskScalarFieldEnum)[keyof typeof DepartmentSenderMaskScalarFieldEnum]


  export const ContactParamSettingsScalarFieldEnum: {
    id: 'id',
    companyId: 'companyId',
    param1Label: 'param1Label',
    param2Label: 'param2Label',
    param3Label: 'param3Label',
    param4Label: 'param4Label',
    param5Label: 'param5Label',
    param6Label: 'param6Label',
    param7Label: 'param7Label',
    param8Label: 'param8Label',
    param9Label: 'param9Label',
    param10Label: 'param10Label',
    updatedAt: 'updatedAt'
  };

  export type ContactParamSettingsScalarFieldEnum = (typeof ContactParamSettingsScalarFieldEnum)[keyof typeof ContactParamSettingsScalarFieldEnum]


  export const CampaignScalarFieldEnum: {
    id: 'id',
    uuid: 'uuid',
    name: 'name',
    status: 'status',
    server_ref: 'server_ref',
    serverRefs: 'serverRefs',
    isParameterized: 'isParameterized',
    smsValidityPeriod: 'smsValidityPeriod',
    customMessage: 'customMessage',
    scheduledDate: 'scheduledDate',
    notificationNumber: 'notificationNumber',
    createdByUserId: 'createdByUserId',
    billingAccountId: 'billingAccountId',
    senderMaskId: 'senderMaskId',
    mobileNumberListId: 'mobileNumberListId',
    customBlacklist: 'customBlacklist',
    templateId: 'templateId',
    smsType: 'smsType',
    source: 'source',
    reservedAmount: 'reservedAmount',
    chargedAmount: 'chargedAmount',
    smsCostPerSegment: 'smsCostPerSegment',
    batchUuid: 'batchUuid',
    failureReason: 'failureReason',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt',
    deletedAt: 'deletedAt'
  };

  export type CampaignScalarFieldEnum = (typeof CampaignScalarFieldEnum)[keyof typeof CampaignScalarFieldEnum]


  export const CampaignServerRefScalarFieldEnum: {
    serverRef: 'serverRef',
    campaignId: 'campaignId'
  };

  export type CampaignServerRefScalarFieldEnum = (typeof CampaignServerRefScalarFieldEnum)[keyof typeof CampaignServerRefScalarFieldEnum]


  export const CampaignRecipientScalarFieldEnum: {
    id: 'id',
    campaignId: 'campaignId',
    phoneNumber: 'phoneNumber',
    name: 'name',
    param1: 'param1',
    param2: 'param2',
    param3: 'param3',
    param4: 'param4',
    param5: 'param5',
    param6: 'param6',
    param7: 'param7',
    param8: 'param8',
    param9: 'param9',
    param10: 'param10'
  };

  export type CampaignRecipientScalarFieldEnum = (typeof CampaignRecipientScalarFieldEnum)[keyof typeof CampaignRecipientScalarFieldEnum]


  export const MobileNumberListScalarFieldEnum: {
    id: 'id',
    uuid: 'uuid',
    listName: 'listName',
    listType: 'listType',
    createdByUserId: 'createdByUserId',
    companyId: 'companyId',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt',
    deletedAt: 'deletedAt'
  };

  export type MobileNumberListScalarFieldEnum = (typeof MobileNumberListScalarFieldEnum)[keyof typeof MobileNumberListScalarFieldEnum]


  export const MobileNumberScalarFieldEnum: {
    id: 'id',
    uuid: 'uuid',
    phoneNumber: 'phoneNumber',
    type: 'type',
    is_blocked: 'is_blocked',
    numberListId: 'numberListId',
    deletedAt: 'deletedAt',
    name: 'name',
    param1: 'param1',
    param2: 'param2',
    param3: 'param3',
    param4: 'param4',
    param5: 'param5',
    param6: 'param6',
    param7: 'param7',
    param8: 'param8',
    param9: 'param9',
    param10: 'param10'
  };

  export type MobileNumberScalarFieldEnum = (typeof MobileNumberScalarFieldEnum)[keyof typeof MobileNumberScalarFieldEnum]


  export const SMS_ReportScalarFieldEnum: {
    id: 'id',
    uuid: 'uuid',
    server_ref: 'server_ref',
    campaignId: 'campaignId',
    deliveryType: 'deliveryType',
    number: 'number',
    maskName: 'maskName',
    messagePart: 'messagePart',
    chargedAmount: 'chargedAmount',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt'
  };

  export type SMS_ReportScalarFieldEnum = (typeof SMS_ReportScalarFieldEnum)[keyof typeof SMS_ReportScalarFieldEnum]


  export const ExternalApiClientScalarFieldEnum: {
    id: 'id',
    uuid: 'uuid',
    systemLabel: 'systemLabel',
    apiKeyHash: 'apiKeyHash',
    isActive: 'isActive',
    webhookUrl: 'webhookUrl',
    webhookSecret: 'webhookSecret',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt'
  };

  export type ExternalApiClientScalarFieldEnum = (typeof ExternalApiClientScalarFieldEnum)[keyof typeof ExternalApiClientScalarFieldEnum]


  export const SystemConfigScalarFieldEnum: {
    key: 'key',
    value: 'value',
    updatedAt: 'updatedAt'
  };

  export type SystemConfigScalarFieldEnum = (typeof SystemConfigScalarFieldEnum)[keyof typeof SystemConfigScalarFieldEnum]


  export const AuditLogScalarFieldEnum: {
    id: 'id',
    entityName: 'entityName',
    entityId: 'entityId',
    action: 'action',
    oldValue: 'oldValue',
    newValue: 'newValue',
    changedFields: 'changedFields',
    performedByUserId: 'performedByUserId',
    performedByCompanyId: 'performedByCompanyId',
    createdAt: 'createdAt'
  };

  export type AuditLogScalarFieldEnum = (typeof AuditLogScalarFieldEnum)[keyof typeof AuditLogScalarFieldEnum]


  export const SortOrder: {
    asc: 'asc',
    desc: 'desc'
  };

  export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder]


  export const NullableJsonNullValueInput: {
    DbNull: typeof DbNull,
    JsonNull: typeof JsonNull
  };

  export type NullableJsonNullValueInput = (typeof NullableJsonNullValueInput)[keyof typeof NullableJsonNullValueInput]


  export const NullsOrder: {
    first: 'first',
    last: 'last'
  };

  export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder]


  export const CompanyOrderByRelevanceFieldEnum: {
    uuid: 'uuid',
    source: 'source',
    brNumber: 'brNumber',
    companyName: 'companyName',
    contactNumber: 'contactNumber',
    address: 'address'
  };

  export type CompanyOrderByRelevanceFieldEnum = (typeof CompanyOrderByRelevanceFieldEnum)[keyof typeof CompanyOrderByRelevanceFieldEnum]


  export const RoleOrderByRelevanceFieldEnum: {
    uuid: 'uuid',
    name: 'name',
    displayName: 'displayName'
  };

  export type RoleOrderByRelevanceFieldEnum = (typeof RoleOrderByRelevanceFieldEnum)[keyof typeof RoleOrderByRelevanceFieldEnum]


  export const UserOrderByRelevanceFieldEnum: {
    uuid: 'uuid',
    fullName: 'fullName',
    email: 'email',
    contactNumber: 'contactNumber',
    passwordHash: 'passwordHash',
    userType: 'userType'
  };

  export type UserOrderByRelevanceFieldEnum = (typeof UserOrderByRelevanceFieldEnum)[keyof typeof UserOrderByRelevanceFieldEnum]


  export const RefreshTokenOrderByRelevanceFieldEnum: {
    token: 'token'
  };

  export type RefreshTokenOrderByRelevanceFieldEnum = (typeof RefreshTokenOrderByRelevanceFieldEnum)[keyof typeof RefreshTokenOrderByRelevanceFieldEnum]


  export const EmailVerificationOtpOrderByRelevanceFieldEnum: {
    otpHash: 'otpHash',
    email: 'email'
  };

  export type EmailVerificationOtpOrderByRelevanceFieldEnum = (typeof EmailVerificationOtpOrderByRelevanceFieldEnum)[keyof typeof EmailVerificationOtpOrderByRelevanceFieldEnum]


  export const PasswordResetTokenOrderByRelevanceFieldEnum: {
    tokenHash: 'tokenHash'
  };

  export type PasswordResetTokenOrderByRelevanceFieldEnum = (typeof PasswordResetTokenOrderByRelevanceFieldEnum)[keyof typeof PasswordResetTokenOrderByRelevanceFieldEnum]


  export const UserCompanyOrderByRelevanceFieldEnum: {
    uuid: 'uuid'
  };

  export type UserCompanyOrderByRelevanceFieldEnum = (typeof UserCompanyOrderByRelevanceFieldEnum)[keyof typeof UserCompanyOrderByRelevanceFieldEnum]


  export const BillPaymentOrderByRelevanceFieldEnum: {
    uuid: 'uuid',
    paymentMethod: 'paymentMethod',
    status: 'status',
    orderId: 'orderId',
    orderReference: 'orderReference',
    errorCode: 'errorCode',
    failureReason: 'failureReason'
  };

  export type BillPaymentOrderByRelevanceFieldEnum = (typeof BillPaymentOrderByRelevanceFieldEnum)[keyof typeof BillPaymentOrderByRelevanceFieldEnum]


  export const BillAccountOrderByRelevanceFieldEnum: {
    uuid: 'uuid',
    accountNumber: 'accountNumber',
    accountName: 'accountName',
    accountStatus: 'accountStatus'
  };

  export type BillAccountOrderByRelevanceFieldEnum = (typeof BillAccountOrderByRelevanceFieldEnum)[keyof typeof BillAccountOrderByRelevanceFieldEnum]


  export const SavedCardOrderByRelevanceFieldEnum: {
    uuid: 'uuid',
    cardToken: 'cardToken',
    cardFirst6: 'cardFirst6',
    cardLast4: 'cardLast4',
    cardHolderName: 'cardHolderName',
    customerEmail: 'customerEmail'
  };

  export type SavedCardOrderByRelevanceFieldEnum = (typeof SavedCardOrderByRelevanceFieldEnum)[keyof typeof SavedCardOrderByRelevanceFieldEnum]


  export const LowBalanceAlertOrderByRelevanceFieldEnum: {
    uuid: 'uuid',
    sentTo: 'sentTo',
    maskUsed: 'maskUsed',
    status: 'status',
    failureReason: 'failureReason'
  };

  export type LowBalanceAlertOrderByRelevanceFieldEnum = (typeof LowBalanceAlertOrderByRelevanceFieldEnum)[keyof typeof LowBalanceAlertOrderByRelevanceFieldEnum]


  export const DepartmentOrderByRelevanceFieldEnum: {
    uuid: 'uuid',
    name: 'name',
    callBackUrl: 'callBackUrl',
    Signature: 'Signature'
  };

  export type DepartmentOrderByRelevanceFieldEnum = (typeof DepartmentOrderByRelevanceFieldEnum)[keyof typeof DepartmentOrderByRelevanceFieldEnum]


  export const SMS_TemplateOrderByRelevanceFieldEnum: {
    uuid: 'uuid',
    name: 'name',
    text_content: 'text_content',
    smsType: 'smsType'
  };

  export type SMS_TemplateOrderByRelevanceFieldEnum = (typeof SMS_TemplateOrderByRelevanceFieldEnum)[keyof typeof SMS_TemplateOrderByRelevanceFieldEnum]


  export const SenderMaskOrderByRelevanceFieldEnum: {
    uuid: 'uuid',
    maskName: 'maskName',
    purpose: 'purpose',
    status: 'status',
    maskType: 'maskType'
  };

  export type SenderMaskOrderByRelevanceFieldEnum = (typeof SenderMaskOrderByRelevanceFieldEnum)[keyof typeof SenderMaskOrderByRelevanceFieldEnum]


  export const DepartmentSenderMaskOrderByRelevanceFieldEnum: {
    uuid: 'uuid'
  };

  export type DepartmentSenderMaskOrderByRelevanceFieldEnum = (typeof DepartmentSenderMaskOrderByRelevanceFieldEnum)[keyof typeof DepartmentSenderMaskOrderByRelevanceFieldEnum]


  export const ContactParamSettingsOrderByRelevanceFieldEnum: {
    param1Label: 'param1Label',
    param2Label: 'param2Label',
    param3Label: 'param3Label',
    param4Label: 'param4Label',
    param5Label: 'param5Label',
    param6Label: 'param6Label',
    param7Label: 'param7Label',
    param8Label: 'param8Label',
    param9Label: 'param9Label',
    param10Label: 'param10Label'
  };

  export type ContactParamSettingsOrderByRelevanceFieldEnum = (typeof ContactParamSettingsOrderByRelevanceFieldEnum)[keyof typeof ContactParamSettingsOrderByRelevanceFieldEnum]


  export const JsonNullValueFilter: {
    DbNull: typeof DbNull,
    JsonNull: typeof JsonNull,
    AnyNull: typeof AnyNull
  };

  export type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter]


  export const QueryMode: {
    default: 'default',
    insensitive: 'insensitive'
  };

  export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode]


  export const CampaignOrderByRelevanceFieldEnum: {
    uuid: 'uuid',
    name: 'name',
    status: 'status',
    customMessage: 'customMessage',
    notificationNumber: 'notificationNumber',
    smsType: 'smsType',
    source: 'source',
    batchUuid: 'batchUuid',
    failureReason: 'failureReason'
  };

  export type CampaignOrderByRelevanceFieldEnum = (typeof CampaignOrderByRelevanceFieldEnum)[keyof typeof CampaignOrderByRelevanceFieldEnum]


  export const CampaignRecipientOrderByRelevanceFieldEnum: {
    phoneNumber: 'phoneNumber',
    name: 'name',
    param1: 'param1',
    param2: 'param2',
    param3: 'param3',
    param4: 'param4',
    param5: 'param5',
    param6: 'param6',
    param7: 'param7',
    param8: 'param8',
    param9: 'param9',
    param10: 'param10'
  };

  export type CampaignRecipientOrderByRelevanceFieldEnum = (typeof CampaignRecipientOrderByRelevanceFieldEnum)[keyof typeof CampaignRecipientOrderByRelevanceFieldEnum]


  export const MobileNumberListOrderByRelevanceFieldEnum: {
    uuid: 'uuid',
    listName: 'listName',
    listType: 'listType'
  };

  export type MobileNumberListOrderByRelevanceFieldEnum = (typeof MobileNumberListOrderByRelevanceFieldEnum)[keyof typeof MobileNumberListOrderByRelevanceFieldEnum]


  export const MobileNumberOrderByRelevanceFieldEnum: {
    uuid: 'uuid',
    phoneNumber: 'phoneNumber',
    type: 'type',
    name: 'name',
    param1: 'param1',
    param2: 'param2',
    param3: 'param3',
    param4: 'param4',
    param5: 'param5',
    param6: 'param6',
    param7: 'param7',
    param8: 'param8',
    param9: 'param9',
    param10: 'param10'
  };

  export type MobileNumberOrderByRelevanceFieldEnum = (typeof MobileNumberOrderByRelevanceFieldEnum)[keyof typeof MobileNumberOrderByRelevanceFieldEnum]


  export const SMS_ReportOrderByRelevanceFieldEnum: {
    uuid: 'uuid',
    number: 'number',
    maskName: 'maskName'
  };

  export type SMS_ReportOrderByRelevanceFieldEnum = (typeof SMS_ReportOrderByRelevanceFieldEnum)[keyof typeof SMS_ReportOrderByRelevanceFieldEnum]


  export const ExternalApiClientOrderByRelevanceFieldEnum: {
    uuid: 'uuid',
    systemLabel: 'systemLabel',
    apiKeyHash: 'apiKeyHash',
    webhookUrl: 'webhookUrl',
    webhookSecret: 'webhookSecret'
  };

  export type ExternalApiClientOrderByRelevanceFieldEnum = (typeof ExternalApiClientOrderByRelevanceFieldEnum)[keyof typeof ExternalApiClientOrderByRelevanceFieldEnum]


  export const SystemConfigOrderByRelevanceFieldEnum: {
    key: 'key',
    value: 'value'
  };

  export type SystemConfigOrderByRelevanceFieldEnum = (typeof SystemConfigOrderByRelevanceFieldEnum)[keyof typeof SystemConfigOrderByRelevanceFieldEnum]


  export const AuditLogOrderByRelevanceFieldEnum: {
    entityName: 'entityName',
    entityId: 'entityId',
    action: 'action'
  };

  export type AuditLogOrderByRelevanceFieldEnum = (typeof AuditLogOrderByRelevanceFieldEnum)[keyof typeof AuditLogOrderByRelevanceFieldEnum]


  /**
   * Field references
   */


  /**
   * Reference to a field of type 'Int'
   */
  export type IntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int'>
    


  /**
   * Reference to a field of type 'String'
   */
  export type StringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String'>
    


  /**
   * Reference to a field of type 'Float'
   */
  export type FloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float'>
    


  /**
   * Reference to a field of type 'DateTime'
   */
  export type DateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime'>
    


  /**
   * Reference to a field of type 'Boolean'
   */
  export type BooleanFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Boolean'>
    


  /**
   * Reference to a field of type 'BigInt'
   */
  export type BigIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'BigInt'>
    


  /**
   * Reference to a field of type 'Json'
   */
  export type JsonFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Json'>
    


  /**
   * Reference to a field of type 'QueryMode'
   */
  export type EnumQueryModeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'QueryMode'>
    
  /**
   * Deep Input Types
   */


  export type CompanyWhereInput = {
    AND?: CompanyWhereInput | CompanyWhereInput[]
    OR?: CompanyWhereInput[]
    NOT?: CompanyWhereInput | CompanyWhereInput[]
    id?: IntFilter<"Company"> | number
    uuid?: StringFilter<"Company"> | string
    externalCompanyId?: IntNullableFilter<"Company"> | number | null
    source?: StringNullableFilter<"Company"> | string | null
    brNumber?: StringNullableFilter<"Company"> | string | null
    companyName?: StringFilter<"Company"> | string
    contactNumber?: StringNullableFilter<"Company"> | string | null
    address?: StringNullableFilter<"Company"> | string | null
    smsCostTransactional?: FloatNullableFilter<"Company"> | number | null
    smsCostPromotional?: FloatNullableFilter<"Company"> | number | null
    smsCostIndividual?: FloatNullableFilter<"Company"> | number | null
    deletedAt?: DateTimeNullableFilter<"Company"> | Date | string | null
    createdAt?: DateTimeFilter<"Company"> | Date | string
    updatedAt?: DateTimeFilter<"Company"> | Date | string
    userCompanies?: UserCompanyListRelationFilter
    billAccounts?: BillAccountListRelationFilter
    departments?: DepartmentListRelationFilter
    mobileNumberLists?: MobileNumberListListRelationFilter
    senderMasks?: SenderMaskListRelationFilter
    contactParamSettings?: XOR<ContactParamSettingsNullableScalarRelationFilter, ContactParamSettingsWhereInput> | null
  }

  export type CompanyOrderByWithRelationInput = {
    id?: SortOrder
    uuid?: SortOrder
    externalCompanyId?: SortOrderInput | SortOrder
    source?: SortOrderInput | SortOrder
    brNumber?: SortOrderInput | SortOrder
    companyName?: SortOrder
    contactNumber?: SortOrderInput | SortOrder
    address?: SortOrderInput | SortOrder
    smsCostTransactional?: SortOrderInput | SortOrder
    smsCostPromotional?: SortOrderInput | SortOrder
    smsCostIndividual?: SortOrderInput | SortOrder
    deletedAt?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    userCompanies?: UserCompanyOrderByRelationAggregateInput
    billAccounts?: BillAccountOrderByRelationAggregateInput
    departments?: DepartmentOrderByRelationAggregateInput
    mobileNumberLists?: MobileNumberListOrderByRelationAggregateInput
    senderMasks?: SenderMaskOrderByRelationAggregateInput
    contactParamSettings?: ContactParamSettingsOrderByWithRelationInput
    _relevance?: CompanyOrderByRelevanceInput
  }

  export type CompanyWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    uuid?: string
    brNumber?: string
    externalCompanyId_source?: CompanyExternalCompanyIdSourceCompoundUniqueInput
    AND?: CompanyWhereInput | CompanyWhereInput[]
    OR?: CompanyWhereInput[]
    NOT?: CompanyWhereInput | CompanyWhereInput[]
    externalCompanyId?: IntNullableFilter<"Company"> | number | null
    source?: StringNullableFilter<"Company"> | string | null
    companyName?: StringFilter<"Company"> | string
    contactNumber?: StringNullableFilter<"Company"> | string | null
    address?: StringNullableFilter<"Company"> | string | null
    smsCostTransactional?: FloatNullableFilter<"Company"> | number | null
    smsCostPromotional?: FloatNullableFilter<"Company"> | number | null
    smsCostIndividual?: FloatNullableFilter<"Company"> | number | null
    deletedAt?: DateTimeNullableFilter<"Company"> | Date | string | null
    createdAt?: DateTimeFilter<"Company"> | Date | string
    updatedAt?: DateTimeFilter<"Company"> | Date | string
    userCompanies?: UserCompanyListRelationFilter
    billAccounts?: BillAccountListRelationFilter
    departments?: DepartmentListRelationFilter
    mobileNumberLists?: MobileNumberListListRelationFilter
    senderMasks?: SenderMaskListRelationFilter
    contactParamSettings?: XOR<ContactParamSettingsNullableScalarRelationFilter, ContactParamSettingsWhereInput> | null
  }, "id" | "uuid" | "brNumber" | "externalCompanyId_source">

  export type CompanyOrderByWithAggregationInput = {
    id?: SortOrder
    uuid?: SortOrder
    externalCompanyId?: SortOrderInput | SortOrder
    source?: SortOrderInput | SortOrder
    brNumber?: SortOrderInput | SortOrder
    companyName?: SortOrder
    contactNumber?: SortOrderInput | SortOrder
    address?: SortOrderInput | SortOrder
    smsCostTransactional?: SortOrderInput | SortOrder
    smsCostPromotional?: SortOrderInput | SortOrder
    smsCostIndividual?: SortOrderInput | SortOrder
    deletedAt?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _count?: CompanyCountOrderByAggregateInput
    _avg?: CompanyAvgOrderByAggregateInput
    _max?: CompanyMaxOrderByAggregateInput
    _min?: CompanyMinOrderByAggregateInput
    _sum?: CompanySumOrderByAggregateInput
  }

  export type CompanyScalarWhereWithAggregatesInput = {
    AND?: CompanyScalarWhereWithAggregatesInput | CompanyScalarWhereWithAggregatesInput[]
    OR?: CompanyScalarWhereWithAggregatesInput[]
    NOT?: CompanyScalarWhereWithAggregatesInput | CompanyScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"Company"> | number
    uuid?: StringWithAggregatesFilter<"Company"> | string
    externalCompanyId?: IntNullableWithAggregatesFilter<"Company"> | number | null
    source?: StringNullableWithAggregatesFilter<"Company"> | string | null
    brNumber?: StringNullableWithAggregatesFilter<"Company"> | string | null
    companyName?: StringWithAggregatesFilter<"Company"> | string
    contactNumber?: StringNullableWithAggregatesFilter<"Company"> | string | null
    address?: StringNullableWithAggregatesFilter<"Company"> | string | null
    smsCostTransactional?: FloatNullableWithAggregatesFilter<"Company"> | number | null
    smsCostPromotional?: FloatNullableWithAggregatesFilter<"Company"> | number | null
    smsCostIndividual?: FloatNullableWithAggregatesFilter<"Company"> | number | null
    deletedAt?: DateTimeNullableWithAggregatesFilter<"Company"> | Date | string | null
    createdAt?: DateTimeWithAggregatesFilter<"Company"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"Company"> | Date | string
  }

  export type RoleWhereInput = {
    AND?: RoleWhereInput | RoleWhereInput[]
    OR?: RoleWhereInput[]
    NOT?: RoleWhereInput | RoleWhereInput[]
    id?: IntFilter<"Role"> | number
    uuid?: StringFilter<"Role"> | string
    name?: StringFilter<"Role"> | string
    displayName?: StringFilter<"Role"> | string
    isSystem?: BoolFilter<"Role"> | boolean
    createdAt?: DateTimeFilter<"Role"> | Date | string
    updatedAt?: DateTimeFilter<"Role"> | Date | string
    users?: UserListRelationFilter
  }

  export type RoleOrderByWithRelationInput = {
    id?: SortOrder
    uuid?: SortOrder
    name?: SortOrder
    displayName?: SortOrder
    isSystem?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    users?: UserOrderByRelationAggregateInput
    _relevance?: RoleOrderByRelevanceInput
  }

  export type RoleWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    uuid?: string
    name?: string
    AND?: RoleWhereInput | RoleWhereInput[]
    OR?: RoleWhereInput[]
    NOT?: RoleWhereInput | RoleWhereInput[]
    displayName?: StringFilter<"Role"> | string
    isSystem?: BoolFilter<"Role"> | boolean
    createdAt?: DateTimeFilter<"Role"> | Date | string
    updatedAt?: DateTimeFilter<"Role"> | Date | string
    users?: UserListRelationFilter
  }, "id" | "uuid" | "name">

  export type RoleOrderByWithAggregationInput = {
    id?: SortOrder
    uuid?: SortOrder
    name?: SortOrder
    displayName?: SortOrder
    isSystem?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _count?: RoleCountOrderByAggregateInput
    _avg?: RoleAvgOrderByAggregateInput
    _max?: RoleMaxOrderByAggregateInput
    _min?: RoleMinOrderByAggregateInput
    _sum?: RoleSumOrderByAggregateInput
  }

  export type RoleScalarWhereWithAggregatesInput = {
    AND?: RoleScalarWhereWithAggregatesInput | RoleScalarWhereWithAggregatesInput[]
    OR?: RoleScalarWhereWithAggregatesInput[]
    NOT?: RoleScalarWhereWithAggregatesInput | RoleScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"Role"> | number
    uuid?: StringWithAggregatesFilter<"Role"> | string
    name?: StringWithAggregatesFilter<"Role"> | string
    displayName?: StringWithAggregatesFilter<"Role"> | string
    isSystem?: BoolWithAggregatesFilter<"Role"> | boolean
    createdAt?: DateTimeWithAggregatesFilter<"Role"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"Role"> | Date | string
  }

  export type UserWhereInput = {
    AND?: UserWhereInput | UserWhereInput[]
    OR?: UserWhereInput[]
    NOT?: UserWhereInput | UserWhereInput[]
    id?: IntFilter<"User"> | number
    uuid?: StringFilter<"User"> | string
    externalUserId?: IntNullableFilter<"User"> | number | null
    fullName?: StringFilter<"User"> | string
    email?: StringFilter<"User"> | string
    contactNumber?: StringNullableFilter<"User"> | string | null
    passwordHash?: StringNullableFilter<"User"> | string | null
    userType?: StringFilter<"User"> | string
    isActive?: BoolFilter<"User"> | boolean
    hasSeenGuide?: BoolFilter<"User"> | boolean
    roleId?: IntNullableFilter<"User"> | number | null
    createdAt?: DateTimeFilter<"User"> | Date | string
    updatedAt?: DateTimeFilter<"User"> | Date | string
    role?: XOR<RoleNullableScalarRelationFilter, RoleWhereInput> | null
    companies?: UserCompanyListRelationFilter
    refreshTokens?: RefreshTokenListRelationFilter
    savedCards?: SavedCardListRelationFilter
    passwordResetTokens?: PasswordResetTokenListRelationFilter
  }

  export type UserOrderByWithRelationInput = {
    id?: SortOrder
    uuid?: SortOrder
    externalUserId?: SortOrderInput | SortOrder
    fullName?: SortOrder
    email?: SortOrder
    contactNumber?: SortOrderInput | SortOrder
    passwordHash?: SortOrderInput | SortOrder
    userType?: SortOrder
    isActive?: SortOrder
    hasSeenGuide?: SortOrder
    roleId?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    role?: RoleOrderByWithRelationInput
    companies?: UserCompanyOrderByRelationAggregateInput
    refreshTokens?: RefreshTokenOrderByRelationAggregateInput
    savedCards?: SavedCardOrderByRelationAggregateInput
    passwordResetTokens?: PasswordResetTokenOrderByRelationAggregateInput
    _relevance?: UserOrderByRelevanceInput
  }

  export type UserWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    uuid?: string
    email?: string
    externalUserId_userType?: UserExternalUserIdUserTypeCompoundUniqueInput
    AND?: UserWhereInput | UserWhereInput[]
    OR?: UserWhereInput[]
    NOT?: UserWhereInput | UserWhereInput[]
    externalUserId?: IntNullableFilter<"User"> | number | null
    fullName?: StringFilter<"User"> | string
    contactNumber?: StringNullableFilter<"User"> | string | null
    passwordHash?: StringNullableFilter<"User"> | string | null
    userType?: StringFilter<"User"> | string
    isActive?: BoolFilter<"User"> | boolean
    hasSeenGuide?: BoolFilter<"User"> | boolean
    roleId?: IntNullableFilter<"User"> | number | null
    createdAt?: DateTimeFilter<"User"> | Date | string
    updatedAt?: DateTimeFilter<"User"> | Date | string
    role?: XOR<RoleNullableScalarRelationFilter, RoleWhereInput> | null
    companies?: UserCompanyListRelationFilter
    refreshTokens?: RefreshTokenListRelationFilter
    savedCards?: SavedCardListRelationFilter
    passwordResetTokens?: PasswordResetTokenListRelationFilter
  }, "id" | "uuid" | "email" | "externalUserId_userType">

  export type UserOrderByWithAggregationInput = {
    id?: SortOrder
    uuid?: SortOrder
    externalUserId?: SortOrderInput | SortOrder
    fullName?: SortOrder
    email?: SortOrder
    contactNumber?: SortOrderInput | SortOrder
    passwordHash?: SortOrderInput | SortOrder
    userType?: SortOrder
    isActive?: SortOrder
    hasSeenGuide?: SortOrder
    roleId?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _count?: UserCountOrderByAggregateInput
    _avg?: UserAvgOrderByAggregateInput
    _max?: UserMaxOrderByAggregateInput
    _min?: UserMinOrderByAggregateInput
    _sum?: UserSumOrderByAggregateInput
  }

  export type UserScalarWhereWithAggregatesInput = {
    AND?: UserScalarWhereWithAggregatesInput | UserScalarWhereWithAggregatesInput[]
    OR?: UserScalarWhereWithAggregatesInput[]
    NOT?: UserScalarWhereWithAggregatesInput | UserScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"User"> | number
    uuid?: StringWithAggregatesFilter<"User"> | string
    externalUserId?: IntNullableWithAggregatesFilter<"User"> | number | null
    fullName?: StringWithAggregatesFilter<"User"> | string
    email?: StringWithAggregatesFilter<"User"> | string
    contactNumber?: StringNullableWithAggregatesFilter<"User"> | string | null
    passwordHash?: StringNullableWithAggregatesFilter<"User"> | string | null
    userType?: StringWithAggregatesFilter<"User"> | string
    isActive?: BoolWithAggregatesFilter<"User"> | boolean
    hasSeenGuide?: BoolWithAggregatesFilter<"User"> | boolean
    roleId?: IntNullableWithAggregatesFilter<"User"> | number | null
    createdAt?: DateTimeWithAggregatesFilter<"User"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"User"> | Date | string
  }

  export type RefreshTokenWhereInput = {
    AND?: RefreshTokenWhereInput | RefreshTokenWhereInput[]
    OR?: RefreshTokenWhereInput[]
    NOT?: RefreshTokenWhereInput | RefreshTokenWhereInput[]
    id?: IntFilter<"RefreshToken"> | number
    token?: StringFilter<"RefreshToken"> | string
    userId?: IntFilter<"RefreshToken"> | number
    expiresAt?: DateTimeFilter<"RefreshToken"> | Date | string
    isRevoked?: BoolFilter<"RefreshToken"> | boolean
    createdAt?: DateTimeFilter<"RefreshToken"> | Date | string
    user?: XOR<UserScalarRelationFilter, UserWhereInput>
  }

  export type RefreshTokenOrderByWithRelationInput = {
    id?: SortOrder
    token?: SortOrder
    userId?: SortOrder
    expiresAt?: SortOrder
    isRevoked?: SortOrder
    createdAt?: SortOrder
    user?: UserOrderByWithRelationInput
    _relevance?: RefreshTokenOrderByRelevanceInput
  }

  export type RefreshTokenWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    token?: string
    AND?: RefreshTokenWhereInput | RefreshTokenWhereInput[]
    OR?: RefreshTokenWhereInput[]
    NOT?: RefreshTokenWhereInput | RefreshTokenWhereInput[]
    userId?: IntFilter<"RefreshToken"> | number
    expiresAt?: DateTimeFilter<"RefreshToken"> | Date | string
    isRevoked?: BoolFilter<"RefreshToken"> | boolean
    createdAt?: DateTimeFilter<"RefreshToken"> | Date | string
    user?: XOR<UserScalarRelationFilter, UserWhereInput>
  }, "id" | "token">

  export type RefreshTokenOrderByWithAggregationInput = {
    id?: SortOrder
    token?: SortOrder
    userId?: SortOrder
    expiresAt?: SortOrder
    isRevoked?: SortOrder
    createdAt?: SortOrder
    _count?: RefreshTokenCountOrderByAggregateInput
    _avg?: RefreshTokenAvgOrderByAggregateInput
    _max?: RefreshTokenMaxOrderByAggregateInput
    _min?: RefreshTokenMinOrderByAggregateInput
    _sum?: RefreshTokenSumOrderByAggregateInput
  }

  export type RefreshTokenScalarWhereWithAggregatesInput = {
    AND?: RefreshTokenScalarWhereWithAggregatesInput | RefreshTokenScalarWhereWithAggregatesInput[]
    OR?: RefreshTokenScalarWhereWithAggregatesInput[]
    NOT?: RefreshTokenScalarWhereWithAggregatesInput | RefreshTokenScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"RefreshToken"> | number
    token?: StringWithAggregatesFilter<"RefreshToken"> | string
    userId?: IntWithAggregatesFilter<"RefreshToken"> | number
    expiresAt?: DateTimeWithAggregatesFilter<"RefreshToken"> | Date | string
    isRevoked?: BoolWithAggregatesFilter<"RefreshToken"> | boolean
    createdAt?: DateTimeWithAggregatesFilter<"RefreshToken"> | Date | string
  }

  export type EmailVerificationOtpWhereInput = {
    AND?: EmailVerificationOtpWhereInput | EmailVerificationOtpWhereInput[]
    OR?: EmailVerificationOtpWhereInput[]
    NOT?: EmailVerificationOtpWhereInput | EmailVerificationOtpWhereInput[]
    id?: IntFilter<"EmailVerificationOtp"> | number
    otpHash?: StringFilter<"EmailVerificationOtp"> | string
    email?: StringFilter<"EmailVerificationOtp"> | string
    expiresAt?: DateTimeFilter<"EmailVerificationOtp"> | Date | string
    isUsed?: BoolFilter<"EmailVerificationOtp"> | boolean
    createdAt?: DateTimeFilter<"EmailVerificationOtp"> | Date | string
  }

  export type EmailVerificationOtpOrderByWithRelationInput = {
    id?: SortOrder
    otpHash?: SortOrder
    email?: SortOrder
    expiresAt?: SortOrder
    isUsed?: SortOrder
    createdAt?: SortOrder
    _relevance?: EmailVerificationOtpOrderByRelevanceInput
  }

  export type EmailVerificationOtpWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    otpHash?: string
    AND?: EmailVerificationOtpWhereInput | EmailVerificationOtpWhereInput[]
    OR?: EmailVerificationOtpWhereInput[]
    NOT?: EmailVerificationOtpWhereInput | EmailVerificationOtpWhereInput[]
    email?: StringFilter<"EmailVerificationOtp"> | string
    expiresAt?: DateTimeFilter<"EmailVerificationOtp"> | Date | string
    isUsed?: BoolFilter<"EmailVerificationOtp"> | boolean
    createdAt?: DateTimeFilter<"EmailVerificationOtp"> | Date | string
  }, "id" | "otpHash">

  export type EmailVerificationOtpOrderByWithAggregationInput = {
    id?: SortOrder
    otpHash?: SortOrder
    email?: SortOrder
    expiresAt?: SortOrder
    isUsed?: SortOrder
    createdAt?: SortOrder
    _count?: EmailVerificationOtpCountOrderByAggregateInput
    _avg?: EmailVerificationOtpAvgOrderByAggregateInput
    _max?: EmailVerificationOtpMaxOrderByAggregateInput
    _min?: EmailVerificationOtpMinOrderByAggregateInput
    _sum?: EmailVerificationOtpSumOrderByAggregateInput
  }

  export type EmailVerificationOtpScalarWhereWithAggregatesInput = {
    AND?: EmailVerificationOtpScalarWhereWithAggregatesInput | EmailVerificationOtpScalarWhereWithAggregatesInput[]
    OR?: EmailVerificationOtpScalarWhereWithAggregatesInput[]
    NOT?: EmailVerificationOtpScalarWhereWithAggregatesInput | EmailVerificationOtpScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"EmailVerificationOtp"> | number
    otpHash?: StringWithAggregatesFilter<"EmailVerificationOtp"> | string
    email?: StringWithAggregatesFilter<"EmailVerificationOtp"> | string
    expiresAt?: DateTimeWithAggregatesFilter<"EmailVerificationOtp"> | Date | string
    isUsed?: BoolWithAggregatesFilter<"EmailVerificationOtp"> | boolean
    createdAt?: DateTimeWithAggregatesFilter<"EmailVerificationOtp"> | Date | string
  }

  export type PasswordResetTokenWhereInput = {
    AND?: PasswordResetTokenWhereInput | PasswordResetTokenWhereInput[]
    OR?: PasswordResetTokenWhereInput[]
    NOT?: PasswordResetTokenWhereInput | PasswordResetTokenWhereInput[]
    id?: IntFilter<"PasswordResetToken"> | number
    tokenHash?: StringFilter<"PasswordResetToken"> | string
    userId?: IntFilter<"PasswordResetToken"> | number
    expiresAt?: DateTimeFilter<"PasswordResetToken"> | Date | string
    isUsed?: BoolFilter<"PasswordResetToken"> | boolean
    createdAt?: DateTimeFilter<"PasswordResetToken"> | Date | string
    user?: XOR<UserScalarRelationFilter, UserWhereInput>
  }

  export type PasswordResetTokenOrderByWithRelationInput = {
    id?: SortOrder
    tokenHash?: SortOrder
    userId?: SortOrder
    expiresAt?: SortOrder
    isUsed?: SortOrder
    createdAt?: SortOrder
    user?: UserOrderByWithRelationInput
    _relevance?: PasswordResetTokenOrderByRelevanceInput
  }

  export type PasswordResetTokenWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    tokenHash?: string
    AND?: PasswordResetTokenWhereInput | PasswordResetTokenWhereInput[]
    OR?: PasswordResetTokenWhereInput[]
    NOT?: PasswordResetTokenWhereInput | PasswordResetTokenWhereInput[]
    userId?: IntFilter<"PasswordResetToken"> | number
    expiresAt?: DateTimeFilter<"PasswordResetToken"> | Date | string
    isUsed?: BoolFilter<"PasswordResetToken"> | boolean
    createdAt?: DateTimeFilter<"PasswordResetToken"> | Date | string
    user?: XOR<UserScalarRelationFilter, UserWhereInput>
  }, "id" | "tokenHash">

  export type PasswordResetTokenOrderByWithAggregationInput = {
    id?: SortOrder
    tokenHash?: SortOrder
    userId?: SortOrder
    expiresAt?: SortOrder
    isUsed?: SortOrder
    createdAt?: SortOrder
    _count?: PasswordResetTokenCountOrderByAggregateInput
    _avg?: PasswordResetTokenAvgOrderByAggregateInput
    _max?: PasswordResetTokenMaxOrderByAggregateInput
    _min?: PasswordResetTokenMinOrderByAggregateInput
    _sum?: PasswordResetTokenSumOrderByAggregateInput
  }

  export type PasswordResetTokenScalarWhereWithAggregatesInput = {
    AND?: PasswordResetTokenScalarWhereWithAggregatesInput | PasswordResetTokenScalarWhereWithAggregatesInput[]
    OR?: PasswordResetTokenScalarWhereWithAggregatesInput[]
    NOT?: PasswordResetTokenScalarWhereWithAggregatesInput | PasswordResetTokenScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"PasswordResetToken"> | number
    tokenHash?: StringWithAggregatesFilter<"PasswordResetToken"> | string
    userId?: IntWithAggregatesFilter<"PasswordResetToken"> | number
    expiresAt?: DateTimeWithAggregatesFilter<"PasswordResetToken"> | Date | string
    isUsed?: BoolWithAggregatesFilter<"PasswordResetToken"> | boolean
    createdAt?: DateTimeWithAggregatesFilter<"PasswordResetToken"> | Date | string
  }

  export type UserCompanyWhereInput = {
    AND?: UserCompanyWhereInput | UserCompanyWhereInput[]
    OR?: UserCompanyWhereInput[]
    NOT?: UserCompanyWhereInput | UserCompanyWhereInput[]
    id?: IntFilter<"UserCompany"> | number
    uuid?: StringFilter<"UserCompany"> | string
    userId?: IntFilter<"UserCompany"> | number
    companyId?: IntFilter<"UserCompany"> | number
    createdAt?: DateTimeFilter<"UserCompany"> | Date | string
    user?: XOR<UserScalarRelationFilter, UserWhereInput>
    company?: XOR<CompanyScalarRelationFilter, CompanyWhereInput>
  }

  export type UserCompanyOrderByWithRelationInput = {
    id?: SortOrder
    uuid?: SortOrder
    userId?: SortOrder
    companyId?: SortOrder
    createdAt?: SortOrder
    user?: UserOrderByWithRelationInput
    company?: CompanyOrderByWithRelationInput
    _relevance?: UserCompanyOrderByRelevanceInput
  }

  export type UserCompanyWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    uuid?: string
    userId_companyId?: UserCompanyUserIdCompanyIdCompoundUniqueInput
    AND?: UserCompanyWhereInput | UserCompanyWhereInput[]
    OR?: UserCompanyWhereInput[]
    NOT?: UserCompanyWhereInput | UserCompanyWhereInput[]
    userId?: IntFilter<"UserCompany"> | number
    companyId?: IntFilter<"UserCompany"> | number
    createdAt?: DateTimeFilter<"UserCompany"> | Date | string
    user?: XOR<UserScalarRelationFilter, UserWhereInput>
    company?: XOR<CompanyScalarRelationFilter, CompanyWhereInput>
  }, "id" | "uuid" | "userId_companyId">

  export type UserCompanyOrderByWithAggregationInput = {
    id?: SortOrder
    uuid?: SortOrder
    userId?: SortOrder
    companyId?: SortOrder
    createdAt?: SortOrder
    _count?: UserCompanyCountOrderByAggregateInput
    _avg?: UserCompanyAvgOrderByAggregateInput
    _max?: UserCompanyMaxOrderByAggregateInput
    _min?: UserCompanyMinOrderByAggregateInput
    _sum?: UserCompanySumOrderByAggregateInput
  }

  export type UserCompanyScalarWhereWithAggregatesInput = {
    AND?: UserCompanyScalarWhereWithAggregatesInput | UserCompanyScalarWhereWithAggregatesInput[]
    OR?: UserCompanyScalarWhereWithAggregatesInput[]
    NOT?: UserCompanyScalarWhereWithAggregatesInput | UserCompanyScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"UserCompany"> | number
    uuid?: StringWithAggregatesFilter<"UserCompany"> | string
    userId?: IntWithAggregatesFilter<"UserCompany"> | number
    companyId?: IntWithAggregatesFilter<"UserCompany"> | number
    createdAt?: DateTimeWithAggregatesFilter<"UserCompany"> | Date | string
  }

  export type BillPaymentWhereInput = {
    AND?: BillPaymentWhereInput | BillPaymentWhereInput[]
    OR?: BillPaymentWhereInput[]
    NOT?: BillPaymentWhereInput | BillPaymentWhereInput[]
    id?: IntFilter<"BillPayment"> | number
    uuid?: StringFilter<"BillPayment"> | string
    billingAccountId?: IntFilter<"BillPayment"> | number
    amount?: FloatFilter<"BillPayment"> | number
    paymentMethod?: StringFilter<"BillPayment"> | string
    status?: StringFilter<"BillPayment"> | string
    orderId?: StringFilter<"BillPayment"> | string
    orderReference?: StringNullableFilter<"BillPayment"> | string | null
    errorCode?: StringNullableFilter<"BillPayment"> | string | null
    failureReason?: StringNullableFilter<"BillPayment"> | string | null
    paidUserId?: IntFilter<"BillPayment"> | number
    savedCardId?: IntNullableFilter<"BillPayment"> | number | null
    createdAt?: DateTimeFilter<"BillPayment"> | Date | string
    billAccount?: XOR<BillAccountScalarRelationFilter, BillAccountWhereInput>
    savedCard?: XOR<SavedCardNullableScalarRelationFilter, SavedCardWhereInput> | null
  }

  export type BillPaymentOrderByWithRelationInput = {
    id?: SortOrder
    uuid?: SortOrder
    billingAccountId?: SortOrder
    amount?: SortOrder
    paymentMethod?: SortOrder
    status?: SortOrder
    orderId?: SortOrder
    orderReference?: SortOrderInput | SortOrder
    errorCode?: SortOrderInput | SortOrder
    failureReason?: SortOrderInput | SortOrder
    paidUserId?: SortOrder
    savedCardId?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    billAccount?: BillAccountOrderByWithRelationInput
    savedCard?: SavedCardOrderByWithRelationInput
    _relevance?: BillPaymentOrderByRelevanceInput
  }

  export type BillPaymentWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    uuid?: string
    orderId?: string
    AND?: BillPaymentWhereInput | BillPaymentWhereInput[]
    OR?: BillPaymentWhereInput[]
    NOT?: BillPaymentWhereInput | BillPaymentWhereInput[]
    billingAccountId?: IntFilter<"BillPayment"> | number
    amount?: FloatFilter<"BillPayment"> | number
    paymentMethod?: StringFilter<"BillPayment"> | string
    status?: StringFilter<"BillPayment"> | string
    orderReference?: StringNullableFilter<"BillPayment"> | string | null
    errorCode?: StringNullableFilter<"BillPayment"> | string | null
    failureReason?: StringNullableFilter<"BillPayment"> | string | null
    paidUserId?: IntFilter<"BillPayment"> | number
    savedCardId?: IntNullableFilter<"BillPayment"> | number | null
    createdAt?: DateTimeFilter<"BillPayment"> | Date | string
    billAccount?: XOR<BillAccountScalarRelationFilter, BillAccountWhereInput>
    savedCard?: XOR<SavedCardNullableScalarRelationFilter, SavedCardWhereInput> | null
  }, "id" | "uuid" | "orderId">

  export type BillPaymentOrderByWithAggregationInput = {
    id?: SortOrder
    uuid?: SortOrder
    billingAccountId?: SortOrder
    amount?: SortOrder
    paymentMethod?: SortOrder
    status?: SortOrder
    orderId?: SortOrder
    orderReference?: SortOrderInput | SortOrder
    errorCode?: SortOrderInput | SortOrder
    failureReason?: SortOrderInput | SortOrder
    paidUserId?: SortOrder
    savedCardId?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    _count?: BillPaymentCountOrderByAggregateInput
    _avg?: BillPaymentAvgOrderByAggregateInput
    _max?: BillPaymentMaxOrderByAggregateInput
    _min?: BillPaymentMinOrderByAggregateInput
    _sum?: BillPaymentSumOrderByAggregateInput
  }

  export type BillPaymentScalarWhereWithAggregatesInput = {
    AND?: BillPaymentScalarWhereWithAggregatesInput | BillPaymentScalarWhereWithAggregatesInput[]
    OR?: BillPaymentScalarWhereWithAggregatesInput[]
    NOT?: BillPaymentScalarWhereWithAggregatesInput | BillPaymentScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"BillPayment"> | number
    uuid?: StringWithAggregatesFilter<"BillPayment"> | string
    billingAccountId?: IntWithAggregatesFilter<"BillPayment"> | number
    amount?: FloatWithAggregatesFilter<"BillPayment"> | number
    paymentMethod?: StringWithAggregatesFilter<"BillPayment"> | string
    status?: StringWithAggregatesFilter<"BillPayment"> | string
    orderId?: StringWithAggregatesFilter<"BillPayment"> | string
    orderReference?: StringNullableWithAggregatesFilter<"BillPayment"> | string | null
    errorCode?: StringNullableWithAggregatesFilter<"BillPayment"> | string | null
    failureReason?: StringNullableWithAggregatesFilter<"BillPayment"> | string | null
    paidUserId?: IntWithAggregatesFilter<"BillPayment"> | number
    savedCardId?: IntNullableWithAggregatesFilter<"BillPayment"> | number | null
    createdAt?: DateTimeWithAggregatesFilter<"BillPayment"> | Date | string
  }

  export type BillAccountWhereInput = {
    AND?: BillAccountWhereInput | BillAccountWhereInput[]
    OR?: BillAccountWhereInput[]
    NOT?: BillAccountWhereInput | BillAccountWhereInput[]
    id?: IntFilter<"BillAccount"> | number
    uuid?: StringFilter<"BillAccount"> | string
    accountNumber?: StringFilter<"BillAccount"> | string
    accountName?: StringFilter<"BillAccount"> | string
    outstandingBalance?: FloatFilter<"BillAccount"> | number
    reservedBalance?: FloatFilter<"BillAccount"> | number
    accountStatus?: StringFilter<"BillAccount"> | string
    createdAt?: DateTimeFilter<"BillAccount"> | Date | string
    updatedAt?: DateTimeFilter<"BillAccount"> | Date | string
    companyId?: IntFilter<"BillAccount"> | number
    company?: XOR<CompanyScalarRelationFilter, CompanyWhereInput>
    billPayments?: BillPaymentListRelationFilter
    campaigns?: CampaignListRelationFilter
    lowBalanceAlerts?: LowBalanceAlertListRelationFilter
  }

  export type BillAccountOrderByWithRelationInput = {
    id?: SortOrder
    uuid?: SortOrder
    accountNumber?: SortOrder
    accountName?: SortOrder
    outstandingBalance?: SortOrder
    reservedBalance?: SortOrder
    accountStatus?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    companyId?: SortOrder
    company?: CompanyOrderByWithRelationInput
    billPayments?: BillPaymentOrderByRelationAggregateInput
    campaigns?: CampaignOrderByRelationAggregateInput
    lowBalanceAlerts?: LowBalanceAlertOrderByRelationAggregateInput
    _relevance?: BillAccountOrderByRelevanceInput
  }

  export type BillAccountWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    uuid?: string
    accountNumber?: string
    AND?: BillAccountWhereInput | BillAccountWhereInput[]
    OR?: BillAccountWhereInput[]
    NOT?: BillAccountWhereInput | BillAccountWhereInput[]
    accountName?: StringFilter<"BillAccount"> | string
    outstandingBalance?: FloatFilter<"BillAccount"> | number
    reservedBalance?: FloatFilter<"BillAccount"> | number
    accountStatus?: StringFilter<"BillAccount"> | string
    createdAt?: DateTimeFilter<"BillAccount"> | Date | string
    updatedAt?: DateTimeFilter<"BillAccount"> | Date | string
    companyId?: IntFilter<"BillAccount"> | number
    company?: XOR<CompanyScalarRelationFilter, CompanyWhereInput>
    billPayments?: BillPaymentListRelationFilter
    campaigns?: CampaignListRelationFilter
    lowBalanceAlerts?: LowBalanceAlertListRelationFilter
  }, "id" | "uuid" | "accountNumber">

  export type BillAccountOrderByWithAggregationInput = {
    id?: SortOrder
    uuid?: SortOrder
    accountNumber?: SortOrder
    accountName?: SortOrder
    outstandingBalance?: SortOrder
    reservedBalance?: SortOrder
    accountStatus?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    companyId?: SortOrder
    _count?: BillAccountCountOrderByAggregateInput
    _avg?: BillAccountAvgOrderByAggregateInput
    _max?: BillAccountMaxOrderByAggregateInput
    _min?: BillAccountMinOrderByAggregateInput
    _sum?: BillAccountSumOrderByAggregateInput
  }

  export type BillAccountScalarWhereWithAggregatesInput = {
    AND?: BillAccountScalarWhereWithAggregatesInput | BillAccountScalarWhereWithAggregatesInput[]
    OR?: BillAccountScalarWhereWithAggregatesInput[]
    NOT?: BillAccountScalarWhereWithAggregatesInput | BillAccountScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"BillAccount"> | number
    uuid?: StringWithAggregatesFilter<"BillAccount"> | string
    accountNumber?: StringWithAggregatesFilter<"BillAccount"> | string
    accountName?: StringWithAggregatesFilter<"BillAccount"> | string
    outstandingBalance?: FloatWithAggregatesFilter<"BillAccount"> | number
    reservedBalance?: FloatWithAggregatesFilter<"BillAccount"> | number
    accountStatus?: StringWithAggregatesFilter<"BillAccount"> | string
    createdAt?: DateTimeWithAggregatesFilter<"BillAccount"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"BillAccount"> | Date | string
    companyId?: IntWithAggregatesFilter<"BillAccount"> | number
  }

  export type SavedCardWhereInput = {
    AND?: SavedCardWhereInput | SavedCardWhereInput[]
    OR?: SavedCardWhereInput[]
    NOT?: SavedCardWhereInput | SavedCardWhereInput[]
    id?: IntFilter<"SavedCard"> | number
    uuid?: StringFilter<"SavedCard"> | string
    userId?: IntFilter<"SavedCard"> | number
    cardToken?: StringFilter<"SavedCard"> | string
    cardFirst6?: StringFilter<"SavedCard"> | string
    cardLast4?: StringFilter<"SavedCard"> | string
    cardHolderName?: StringFilter<"SavedCard"> | string
    customerEmail?: StringFilter<"SavedCard"> | string
    isActive?: BoolFilter<"SavedCard"> | boolean
    deletedAt?: DateTimeNullableFilter<"SavedCard"> | Date | string | null
    createdAt?: DateTimeFilter<"SavedCard"> | Date | string
    updatedAt?: DateTimeFilter<"SavedCard"> | Date | string
    user?: XOR<UserScalarRelationFilter, UserWhereInput>
    billPayments?: BillPaymentListRelationFilter
  }

  export type SavedCardOrderByWithRelationInput = {
    id?: SortOrder
    uuid?: SortOrder
    userId?: SortOrder
    cardToken?: SortOrder
    cardFirst6?: SortOrder
    cardLast4?: SortOrder
    cardHolderName?: SortOrder
    customerEmail?: SortOrder
    isActive?: SortOrder
    deletedAt?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    user?: UserOrderByWithRelationInput
    billPayments?: BillPaymentOrderByRelationAggregateInput
    _relevance?: SavedCardOrderByRelevanceInput
  }

  export type SavedCardWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    uuid?: string
    AND?: SavedCardWhereInput | SavedCardWhereInput[]
    OR?: SavedCardWhereInput[]
    NOT?: SavedCardWhereInput | SavedCardWhereInput[]
    userId?: IntFilter<"SavedCard"> | number
    cardToken?: StringFilter<"SavedCard"> | string
    cardFirst6?: StringFilter<"SavedCard"> | string
    cardLast4?: StringFilter<"SavedCard"> | string
    cardHolderName?: StringFilter<"SavedCard"> | string
    customerEmail?: StringFilter<"SavedCard"> | string
    isActive?: BoolFilter<"SavedCard"> | boolean
    deletedAt?: DateTimeNullableFilter<"SavedCard"> | Date | string | null
    createdAt?: DateTimeFilter<"SavedCard"> | Date | string
    updatedAt?: DateTimeFilter<"SavedCard"> | Date | string
    user?: XOR<UserScalarRelationFilter, UserWhereInput>
    billPayments?: BillPaymentListRelationFilter
  }, "id" | "uuid">

  export type SavedCardOrderByWithAggregationInput = {
    id?: SortOrder
    uuid?: SortOrder
    userId?: SortOrder
    cardToken?: SortOrder
    cardFirst6?: SortOrder
    cardLast4?: SortOrder
    cardHolderName?: SortOrder
    customerEmail?: SortOrder
    isActive?: SortOrder
    deletedAt?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _count?: SavedCardCountOrderByAggregateInput
    _avg?: SavedCardAvgOrderByAggregateInput
    _max?: SavedCardMaxOrderByAggregateInput
    _min?: SavedCardMinOrderByAggregateInput
    _sum?: SavedCardSumOrderByAggregateInput
  }

  export type SavedCardScalarWhereWithAggregatesInput = {
    AND?: SavedCardScalarWhereWithAggregatesInput | SavedCardScalarWhereWithAggregatesInput[]
    OR?: SavedCardScalarWhereWithAggregatesInput[]
    NOT?: SavedCardScalarWhereWithAggregatesInput | SavedCardScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"SavedCard"> | number
    uuid?: StringWithAggregatesFilter<"SavedCard"> | string
    userId?: IntWithAggregatesFilter<"SavedCard"> | number
    cardToken?: StringWithAggregatesFilter<"SavedCard"> | string
    cardFirst6?: StringWithAggregatesFilter<"SavedCard"> | string
    cardLast4?: StringWithAggregatesFilter<"SavedCard"> | string
    cardHolderName?: StringWithAggregatesFilter<"SavedCard"> | string
    customerEmail?: StringWithAggregatesFilter<"SavedCard"> | string
    isActive?: BoolWithAggregatesFilter<"SavedCard"> | boolean
    deletedAt?: DateTimeNullableWithAggregatesFilter<"SavedCard"> | Date | string | null
    createdAt?: DateTimeWithAggregatesFilter<"SavedCard"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"SavedCard"> | Date | string
  }

  export type LowBalanceAlertWhereInput = {
    AND?: LowBalanceAlertWhereInput | LowBalanceAlertWhereInput[]
    OR?: LowBalanceAlertWhereInput[]
    NOT?: LowBalanceAlertWhereInput | LowBalanceAlertWhereInput[]
    id?: IntFilter<"LowBalanceAlert"> | number
    uuid?: StringFilter<"LowBalanceAlert"> | string
    billingAccountId?: IntFilter<"LowBalanceAlert"> | number
    userId?: IntFilter<"LowBalanceAlert"> | number
    thresholdLevel?: IntFilter<"LowBalanceAlert"> | number
    isActive?: BoolFilter<"LowBalanceAlert"> | boolean
    balanceAtAlert?: FloatFilter<"LowBalanceAlert"> | number
    chargedAmount?: FloatFilter<"LowBalanceAlert"> | number
    sentTo?: StringFilter<"LowBalanceAlert"> | string
    maskUsed?: StringFilter<"LowBalanceAlert"> | string
    serverRef?: IntNullableFilter<"LowBalanceAlert"> | number | null
    status?: StringFilter<"LowBalanceAlert"> | string
    failureReason?: StringNullableFilter<"LowBalanceAlert"> | string | null
    createdAt?: DateTimeFilter<"LowBalanceAlert"> | Date | string
    billAccount?: XOR<BillAccountScalarRelationFilter, BillAccountWhereInput>
  }

  export type LowBalanceAlertOrderByWithRelationInput = {
    id?: SortOrder
    uuid?: SortOrder
    billingAccountId?: SortOrder
    userId?: SortOrder
    thresholdLevel?: SortOrder
    isActive?: SortOrder
    balanceAtAlert?: SortOrder
    chargedAmount?: SortOrder
    sentTo?: SortOrder
    maskUsed?: SortOrder
    serverRef?: SortOrderInput | SortOrder
    status?: SortOrder
    failureReason?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    billAccount?: BillAccountOrderByWithRelationInput
    _relevance?: LowBalanceAlertOrderByRelevanceInput
  }

  export type LowBalanceAlertWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    uuid?: string
    serverRef?: number
    AND?: LowBalanceAlertWhereInput | LowBalanceAlertWhereInput[]
    OR?: LowBalanceAlertWhereInput[]
    NOT?: LowBalanceAlertWhereInput | LowBalanceAlertWhereInput[]
    billingAccountId?: IntFilter<"LowBalanceAlert"> | number
    userId?: IntFilter<"LowBalanceAlert"> | number
    thresholdLevel?: IntFilter<"LowBalanceAlert"> | number
    isActive?: BoolFilter<"LowBalanceAlert"> | boolean
    balanceAtAlert?: FloatFilter<"LowBalanceAlert"> | number
    chargedAmount?: FloatFilter<"LowBalanceAlert"> | number
    sentTo?: StringFilter<"LowBalanceAlert"> | string
    maskUsed?: StringFilter<"LowBalanceAlert"> | string
    status?: StringFilter<"LowBalanceAlert"> | string
    failureReason?: StringNullableFilter<"LowBalanceAlert"> | string | null
    createdAt?: DateTimeFilter<"LowBalanceAlert"> | Date | string
    billAccount?: XOR<BillAccountScalarRelationFilter, BillAccountWhereInput>
  }, "id" | "uuid" | "serverRef">

  export type LowBalanceAlertOrderByWithAggregationInput = {
    id?: SortOrder
    uuid?: SortOrder
    billingAccountId?: SortOrder
    userId?: SortOrder
    thresholdLevel?: SortOrder
    isActive?: SortOrder
    balanceAtAlert?: SortOrder
    chargedAmount?: SortOrder
    sentTo?: SortOrder
    maskUsed?: SortOrder
    serverRef?: SortOrderInput | SortOrder
    status?: SortOrder
    failureReason?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    _count?: LowBalanceAlertCountOrderByAggregateInput
    _avg?: LowBalanceAlertAvgOrderByAggregateInput
    _max?: LowBalanceAlertMaxOrderByAggregateInput
    _min?: LowBalanceAlertMinOrderByAggregateInput
    _sum?: LowBalanceAlertSumOrderByAggregateInput
  }

  export type LowBalanceAlertScalarWhereWithAggregatesInput = {
    AND?: LowBalanceAlertScalarWhereWithAggregatesInput | LowBalanceAlertScalarWhereWithAggregatesInput[]
    OR?: LowBalanceAlertScalarWhereWithAggregatesInput[]
    NOT?: LowBalanceAlertScalarWhereWithAggregatesInput | LowBalanceAlertScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"LowBalanceAlert"> | number
    uuid?: StringWithAggregatesFilter<"LowBalanceAlert"> | string
    billingAccountId?: IntWithAggregatesFilter<"LowBalanceAlert"> | number
    userId?: IntWithAggregatesFilter<"LowBalanceAlert"> | number
    thresholdLevel?: IntWithAggregatesFilter<"LowBalanceAlert"> | number
    isActive?: BoolWithAggregatesFilter<"LowBalanceAlert"> | boolean
    balanceAtAlert?: FloatWithAggregatesFilter<"LowBalanceAlert"> | number
    chargedAmount?: FloatWithAggregatesFilter<"LowBalanceAlert"> | number
    sentTo?: StringWithAggregatesFilter<"LowBalanceAlert"> | string
    maskUsed?: StringWithAggregatesFilter<"LowBalanceAlert"> | string
    serverRef?: IntNullableWithAggregatesFilter<"LowBalanceAlert"> | number | null
    status?: StringWithAggregatesFilter<"LowBalanceAlert"> | string
    failureReason?: StringNullableWithAggregatesFilter<"LowBalanceAlert"> | string | null
    createdAt?: DateTimeWithAggregatesFilter<"LowBalanceAlert"> | Date | string
  }

  export type DepartmentWhereInput = {
    AND?: DepartmentWhereInput | DepartmentWhereInput[]
    OR?: DepartmentWhereInput[]
    NOT?: DepartmentWhereInput | DepartmentWhereInput[]
    id?: IntFilter<"Department"> | number
    uuid?: StringFilter<"Department"> | string
    companyId?: IntFilter<"Department"> | number
    name?: StringFilter<"Department"> | string
    externalCompanyId?: IntNullableFilter<"Department"> | number | null
    smsCostTransactional?: FloatNullableFilter<"Department"> | number | null
    smsCostPromotional?: FloatNullableFilter<"Department"> | number | null
    is_enabled?: BoolFilter<"Department"> | boolean
    callBackUrl?: StringNullableFilter<"Department"> | string | null
    Signature?: StringNullableFilter<"Department"> | string | null
    createdAt?: DateTimeFilter<"Department"> | Date | string
    updatedAt?: DateTimeFilter<"Department"> | Date | string
    deletedAt?: DateTimeNullableFilter<"Department"> | Date | string | null
    company?: XOR<CompanyScalarRelationFilter, CompanyWhereInput>
    smsTemplates?: SMS_TemplateListRelationFilter
    senderMasks?: DepartmentSenderMaskListRelationFilter
  }

  export type DepartmentOrderByWithRelationInput = {
    id?: SortOrder
    uuid?: SortOrder
    companyId?: SortOrder
    name?: SortOrder
    externalCompanyId?: SortOrderInput | SortOrder
    smsCostTransactional?: SortOrderInput | SortOrder
    smsCostPromotional?: SortOrderInput | SortOrder
    is_enabled?: SortOrder
    callBackUrl?: SortOrderInput | SortOrder
    Signature?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrderInput | SortOrder
    company?: CompanyOrderByWithRelationInput
    smsTemplates?: SMS_TemplateOrderByRelationAggregateInput
    senderMasks?: DepartmentSenderMaskOrderByRelationAggregateInput
    _relevance?: DepartmentOrderByRelevanceInput
  }

  export type DepartmentWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    uuid?: string
    companyId_externalCompanyId?: DepartmentCompanyIdExternalCompanyIdCompoundUniqueInput
    AND?: DepartmentWhereInput | DepartmentWhereInput[]
    OR?: DepartmentWhereInput[]
    NOT?: DepartmentWhereInput | DepartmentWhereInput[]
    companyId?: IntFilter<"Department"> | number
    name?: StringFilter<"Department"> | string
    externalCompanyId?: IntNullableFilter<"Department"> | number | null
    smsCostTransactional?: FloatNullableFilter<"Department"> | number | null
    smsCostPromotional?: FloatNullableFilter<"Department"> | number | null
    is_enabled?: BoolFilter<"Department"> | boolean
    callBackUrl?: StringNullableFilter<"Department"> | string | null
    Signature?: StringNullableFilter<"Department"> | string | null
    createdAt?: DateTimeFilter<"Department"> | Date | string
    updatedAt?: DateTimeFilter<"Department"> | Date | string
    deletedAt?: DateTimeNullableFilter<"Department"> | Date | string | null
    company?: XOR<CompanyScalarRelationFilter, CompanyWhereInput>
    smsTemplates?: SMS_TemplateListRelationFilter
    senderMasks?: DepartmentSenderMaskListRelationFilter
  }, "id" | "uuid" | "companyId_externalCompanyId">

  export type DepartmentOrderByWithAggregationInput = {
    id?: SortOrder
    uuid?: SortOrder
    companyId?: SortOrder
    name?: SortOrder
    externalCompanyId?: SortOrderInput | SortOrder
    smsCostTransactional?: SortOrderInput | SortOrder
    smsCostPromotional?: SortOrderInput | SortOrder
    is_enabled?: SortOrder
    callBackUrl?: SortOrderInput | SortOrder
    Signature?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrderInput | SortOrder
    _count?: DepartmentCountOrderByAggregateInput
    _avg?: DepartmentAvgOrderByAggregateInput
    _max?: DepartmentMaxOrderByAggregateInput
    _min?: DepartmentMinOrderByAggregateInput
    _sum?: DepartmentSumOrderByAggregateInput
  }

  export type DepartmentScalarWhereWithAggregatesInput = {
    AND?: DepartmentScalarWhereWithAggregatesInput | DepartmentScalarWhereWithAggregatesInput[]
    OR?: DepartmentScalarWhereWithAggregatesInput[]
    NOT?: DepartmentScalarWhereWithAggregatesInput | DepartmentScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"Department"> | number
    uuid?: StringWithAggregatesFilter<"Department"> | string
    companyId?: IntWithAggregatesFilter<"Department"> | number
    name?: StringWithAggregatesFilter<"Department"> | string
    externalCompanyId?: IntNullableWithAggregatesFilter<"Department"> | number | null
    smsCostTransactional?: FloatNullableWithAggregatesFilter<"Department"> | number | null
    smsCostPromotional?: FloatNullableWithAggregatesFilter<"Department"> | number | null
    is_enabled?: BoolWithAggregatesFilter<"Department"> | boolean
    callBackUrl?: StringNullableWithAggregatesFilter<"Department"> | string | null
    Signature?: StringNullableWithAggregatesFilter<"Department"> | string | null
    createdAt?: DateTimeWithAggregatesFilter<"Department"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"Department"> | Date | string
    deletedAt?: DateTimeNullableWithAggregatesFilter<"Department"> | Date | string | null
  }

  export type SMS_TemplateWhereInput = {
    AND?: SMS_TemplateWhereInput | SMS_TemplateWhereInput[]
    OR?: SMS_TemplateWhereInput[]
    NOT?: SMS_TemplateWhereInput | SMS_TemplateWhereInput[]
    id?: IntFilter<"SMS_Template"> | number
    uuid?: StringFilter<"SMS_Template"> | string
    deptId?: IntFilter<"SMS_Template"> | number
    name?: StringFilter<"SMS_Template"> | string
    text_content?: StringFilter<"SMS_Template"> | string
    smsType?: StringFilter<"SMS_Template"> | string
    createdAt?: DateTimeFilter<"SMS_Template"> | Date | string
    updatedAt?: DateTimeFilter<"SMS_Template"> | Date | string
    deletedAt?: DateTimeNullableFilter<"SMS_Template"> | Date | string | null
    department?: XOR<DepartmentScalarRelationFilter, DepartmentWhereInput>
    campaigns?: CampaignListRelationFilter
  }

  export type SMS_TemplateOrderByWithRelationInput = {
    id?: SortOrder
    uuid?: SortOrder
    deptId?: SortOrder
    name?: SortOrder
    text_content?: SortOrder
    smsType?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrderInput | SortOrder
    department?: DepartmentOrderByWithRelationInput
    campaigns?: CampaignOrderByRelationAggregateInput
    _relevance?: SMS_TemplateOrderByRelevanceInput
  }

  export type SMS_TemplateWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    uuid?: string
    AND?: SMS_TemplateWhereInput | SMS_TemplateWhereInput[]
    OR?: SMS_TemplateWhereInput[]
    NOT?: SMS_TemplateWhereInput | SMS_TemplateWhereInput[]
    deptId?: IntFilter<"SMS_Template"> | number
    name?: StringFilter<"SMS_Template"> | string
    text_content?: StringFilter<"SMS_Template"> | string
    smsType?: StringFilter<"SMS_Template"> | string
    createdAt?: DateTimeFilter<"SMS_Template"> | Date | string
    updatedAt?: DateTimeFilter<"SMS_Template"> | Date | string
    deletedAt?: DateTimeNullableFilter<"SMS_Template"> | Date | string | null
    department?: XOR<DepartmentScalarRelationFilter, DepartmentWhereInput>
    campaigns?: CampaignListRelationFilter
  }, "id" | "uuid">

  export type SMS_TemplateOrderByWithAggregationInput = {
    id?: SortOrder
    uuid?: SortOrder
    deptId?: SortOrder
    name?: SortOrder
    text_content?: SortOrder
    smsType?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrderInput | SortOrder
    _count?: SMS_TemplateCountOrderByAggregateInput
    _avg?: SMS_TemplateAvgOrderByAggregateInput
    _max?: SMS_TemplateMaxOrderByAggregateInput
    _min?: SMS_TemplateMinOrderByAggregateInput
    _sum?: SMS_TemplateSumOrderByAggregateInput
  }

  export type SMS_TemplateScalarWhereWithAggregatesInput = {
    AND?: SMS_TemplateScalarWhereWithAggregatesInput | SMS_TemplateScalarWhereWithAggregatesInput[]
    OR?: SMS_TemplateScalarWhereWithAggregatesInput[]
    NOT?: SMS_TemplateScalarWhereWithAggregatesInput | SMS_TemplateScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"SMS_Template"> | number
    uuid?: StringWithAggregatesFilter<"SMS_Template"> | string
    deptId?: IntWithAggregatesFilter<"SMS_Template"> | number
    name?: StringWithAggregatesFilter<"SMS_Template"> | string
    text_content?: StringWithAggregatesFilter<"SMS_Template"> | string
    smsType?: StringWithAggregatesFilter<"SMS_Template"> | string
    createdAt?: DateTimeWithAggregatesFilter<"SMS_Template"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"SMS_Template"> | Date | string
    deletedAt?: DateTimeNullableWithAggregatesFilter<"SMS_Template"> | Date | string | null
  }

  export type SenderMaskWhereInput = {
    AND?: SenderMaskWhereInput | SenderMaskWhereInput[]
    OR?: SenderMaskWhereInput[]
    NOT?: SenderMaskWhereInput | SenderMaskWhereInput[]
    id?: IntFilter<"SenderMask"> | number
    uuid?: StringFilter<"SenderMask"> | string
    maskName?: StringFilter<"SenderMask"> | string
    purpose?: StringFilter<"SenderMask"> | string
    is_default?: BoolFilter<"SenderMask"> | boolean
    status?: StringFilter<"SenderMask"> | string
    maskType?: StringNullableFilter<"SenderMask"> | string | null
    isExternal?: BoolFilter<"SenderMask"> | boolean
    emailSent?: BoolFilter<"SenderMask"> | boolean
    emailSentAt?: DateTimeNullableFilter<"SenderMask"> | Date | string | null
    approvalNotificationSent?: BoolFilter<"SenderMask"> | boolean
    approvalNotificationSentAt?: DateTimeNullableFilter<"SenderMask"> | Date | string | null
    reservedAmount?: FloatFilter<"SenderMask"> | number
    createdByUserId?: IntFilter<"SenderMask"> | number
    companyId?: IntNullableFilter<"SenderMask"> | number | null
    createdAt?: DateTimeFilter<"SenderMask"> | Date | string
    updatedAt?: DateTimeFilter<"SenderMask"> | Date | string
    company?: XOR<CompanyNullableScalarRelationFilter, CompanyWhereInput> | null
    campaigns?: CampaignListRelationFilter
    departments?: DepartmentSenderMaskListRelationFilter
  }

  export type SenderMaskOrderByWithRelationInput = {
    id?: SortOrder
    uuid?: SortOrder
    maskName?: SortOrder
    purpose?: SortOrder
    is_default?: SortOrder
    status?: SortOrder
    maskType?: SortOrderInput | SortOrder
    isExternal?: SortOrder
    emailSent?: SortOrder
    emailSentAt?: SortOrderInput | SortOrder
    approvalNotificationSent?: SortOrder
    approvalNotificationSentAt?: SortOrderInput | SortOrder
    reservedAmount?: SortOrder
    createdByUserId?: SortOrder
    companyId?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    company?: CompanyOrderByWithRelationInput
    campaigns?: CampaignOrderByRelationAggregateInput
    departments?: DepartmentSenderMaskOrderByRelationAggregateInput
    _relevance?: SenderMaskOrderByRelevanceInput
  }

  export type SenderMaskWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    uuid?: string
    AND?: SenderMaskWhereInput | SenderMaskWhereInput[]
    OR?: SenderMaskWhereInput[]
    NOT?: SenderMaskWhereInput | SenderMaskWhereInput[]
    maskName?: StringFilter<"SenderMask"> | string
    purpose?: StringFilter<"SenderMask"> | string
    is_default?: BoolFilter<"SenderMask"> | boolean
    status?: StringFilter<"SenderMask"> | string
    maskType?: StringNullableFilter<"SenderMask"> | string | null
    isExternal?: BoolFilter<"SenderMask"> | boolean
    emailSent?: BoolFilter<"SenderMask"> | boolean
    emailSentAt?: DateTimeNullableFilter<"SenderMask"> | Date | string | null
    approvalNotificationSent?: BoolFilter<"SenderMask"> | boolean
    approvalNotificationSentAt?: DateTimeNullableFilter<"SenderMask"> | Date | string | null
    reservedAmount?: FloatFilter<"SenderMask"> | number
    createdByUserId?: IntFilter<"SenderMask"> | number
    companyId?: IntNullableFilter<"SenderMask"> | number | null
    createdAt?: DateTimeFilter<"SenderMask"> | Date | string
    updatedAt?: DateTimeFilter<"SenderMask"> | Date | string
    company?: XOR<CompanyNullableScalarRelationFilter, CompanyWhereInput> | null
    campaigns?: CampaignListRelationFilter
    departments?: DepartmentSenderMaskListRelationFilter
  }, "id" | "uuid">

  export type SenderMaskOrderByWithAggregationInput = {
    id?: SortOrder
    uuid?: SortOrder
    maskName?: SortOrder
    purpose?: SortOrder
    is_default?: SortOrder
    status?: SortOrder
    maskType?: SortOrderInput | SortOrder
    isExternal?: SortOrder
    emailSent?: SortOrder
    emailSentAt?: SortOrderInput | SortOrder
    approvalNotificationSent?: SortOrder
    approvalNotificationSentAt?: SortOrderInput | SortOrder
    reservedAmount?: SortOrder
    createdByUserId?: SortOrder
    companyId?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _count?: SenderMaskCountOrderByAggregateInput
    _avg?: SenderMaskAvgOrderByAggregateInput
    _max?: SenderMaskMaxOrderByAggregateInput
    _min?: SenderMaskMinOrderByAggregateInput
    _sum?: SenderMaskSumOrderByAggregateInput
  }

  export type SenderMaskScalarWhereWithAggregatesInput = {
    AND?: SenderMaskScalarWhereWithAggregatesInput | SenderMaskScalarWhereWithAggregatesInput[]
    OR?: SenderMaskScalarWhereWithAggregatesInput[]
    NOT?: SenderMaskScalarWhereWithAggregatesInput | SenderMaskScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"SenderMask"> | number
    uuid?: StringWithAggregatesFilter<"SenderMask"> | string
    maskName?: StringWithAggregatesFilter<"SenderMask"> | string
    purpose?: StringWithAggregatesFilter<"SenderMask"> | string
    is_default?: BoolWithAggregatesFilter<"SenderMask"> | boolean
    status?: StringWithAggregatesFilter<"SenderMask"> | string
    maskType?: StringNullableWithAggregatesFilter<"SenderMask"> | string | null
    isExternal?: BoolWithAggregatesFilter<"SenderMask"> | boolean
    emailSent?: BoolWithAggregatesFilter<"SenderMask"> | boolean
    emailSentAt?: DateTimeNullableWithAggregatesFilter<"SenderMask"> | Date | string | null
    approvalNotificationSent?: BoolWithAggregatesFilter<"SenderMask"> | boolean
    approvalNotificationSentAt?: DateTimeNullableWithAggregatesFilter<"SenderMask"> | Date | string | null
    reservedAmount?: FloatWithAggregatesFilter<"SenderMask"> | number
    createdByUserId?: IntWithAggregatesFilter<"SenderMask"> | number
    companyId?: IntNullableWithAggregatesFilter<"SenderMask"> | number | null
    createdAt?: DateTimeWithAggregatesFilter<"SenderMask"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"SenderMask"> | Date | string
  }

  export type DepartmentSenderMaskWhereInput = {
    AND?: DepartmentSenderMaskWhereInput | DepartmentSenderMaskWhereInput[]
    OR?: DepartmentSenderMaskWhereInput[]
    NOT?: DepartmentSenderMaskWhereInput | DepartmentSenderMaskWhereInput[]
    id?: IntFilter<"DepartmentSenderMask"> | number
    uuid?: StringFilter<"DepartmentSenderMask"> | string
    senderMaskId?: IntFilter<"DepartmentSenderMask"> | number
    deptId?: IntFilter<"DepartmentSenderMask"> | number
    assignedAt?: DateTimeFilter<"DepartmentSenderMask"> | Date | string
    deletedAt?: DateTimeNullableFilter<"DepartmentSenderMask"> | Date | string | null
    senderMask?: XOR<SenderMaskScalarRelationFilter, SenderMaskWhereInput>
    department?: XOR<DepartmentScalarRelationFilter, DepartmentWhereInput>
  }

  export type DepartmentSenderMaskOrderByWithRelationInput = {
    id?: SortOrder
    uuid?: SortOrder
    senderMaskId?: SortOrder
    deptId?: SortOrder
    assignedAt?: SortOrder
    deletedAt?: SortOrderInput | SortOrder
    senderMask?: SenderMaskOrderByWithRelationInput
    department?: DepartmentOrderByWithRelationInput
    _relevance?: DepartmentSenderMaskOrderByRelevanceInput
  }

  export type DepartmentSenderMaskWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    uuid?: string
    senderMaskId_deptId?: DepartmentSenderMaskSenderMaskIdDeptIdCompoundUniqueInput
    AND?: DepartmentSenderMaskWhereInput | DepartmentSenderMaskWhereInput[]
    OR?: DepartmentSenderMaskWhereInput[]
    NOT?: DepartmentSenderMaskWhereInput | DepartmentSenderMaskWhereInput[]
    senderMaskId?: IntFilter<"DepartmentSenderMask"> | number
    deptId?: IntFilter<"DepartmentSenderMask"> | number
    assignedAt?: DateTimeFilter<"DepartmentSenderMask"> | Date | string
    deletedAt?: DateTimeNullableFilter<"DepartmentSenderMask"> | Date | string | null
    senderMask?: XOR<SenderMaskScalarRelationFilter, SenderMaskWhereInput>
    department?: XOR<DepartmentScalarRelationFilter, DepartmentWhereInput>
  }, "id" | "uuid" | "senderMaskId_deptId">

  export type DepartmentSenderMaskOrderByWithAggregationInput = {
    id?: SortOrder
    uuid?: SortOrder
    senderMaskId?: SortOrder
    deptId?: SortOrder
    assignedAt?: SortOrder
    deletedAt?: SortOrderInput | SortOrder
    _count?: DepartmentSenderMaskCountOrderByAggregateInput
    _avg?: DepartmentSenderMaskAvgOrderByAggregateInput
    _max?: DepartmentSenderMaskMaxOrderByAggregateInput
    _min?: DepartmentSenderMaskMinOrderByAggregateInput
    _sum?: DepartmentSenderMaskSumOrderByAggregateInput
  }

  export type DepartmentSenderMaskScalarWhereWithAggregatesInput = {
    AND?: DepartmentSenderMaskScalarWhereWithAggregatesInput | DepartmentSenderMaskScalarWhereWithAggregatesInput[]
    OR?: DepartmentSenderMaskScalarWhereWithAggregatesInput[]
    NOT?: DepartmentSenderMaskScalarWhereWithAggregatesInput | DepartmentSenderMaskScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"DepartmentSenderMask"> | number
    uuid?: StringWithAggregatesFilter<"DepartmentSenderMask"> | string
    senderMaskId?: IntWithAggregatesFilter<"DepartmentSenderMask"> | number
    deptId?: IntWithAggregatesFilter<"DepartmentSenderMask"> | number
    assignedAt?: DateTimeWithAggregatesFilter<"DepartmentSenderMask"> | Date | string
    deletedAt?: DateTimeNullableWithAggregatesFilter<"DepartmentSenderMask"> | Date | string | null
  }

  export type ContactParamSettingsWhereInput = {
    AND?: ContactParamSettingsWhereInput | ContactParamSettingsWhereInput[]
    OR?: ContactParamSettingsWhereInput[]
    NOT?: ContactParamSettingsWhereInput | ContactParamSettingsWhereInput[]
    id?: IntFilter<"ContactParamSettings"> | number
    companyId?: IntFilter<"ContactParamSettings"> | number
    param1Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param2Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param3Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param4Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param5Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param6Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param7Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param8Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param9Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param10Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    updatedAt?: DateTimeFilter<"ContactParamSettings"> | Date | string
    company?: XOR<CompanyScalarRelationFilter, CompanyWhereInput>
  }

  export type ContactParamSettingsOrderByWithRelationInput = {
    id?: SortOrder
    companyId?: SortOrder
    param1Label?: SortOrderInput | SortOrder
    param2Label?: SortOrderInput | SortOrder
    param3Label?: SortOrderInput | SortOrder
    param4Label?: SortOrderInput | SortOrder
    param5Label?: SortOrderInput | SortOrder
    param6Label?: SortOrderInput | SortOrder
    param7Label?: SortOrderInput | SortOrder
    param8Label?: SortOrderInput | SortOrder
    param9Label?: SortOrderInput | SortOrder
    param10Label?: SortOrderInput | SortOrder
    updatedAt?: SortOrder
    company?: CompanyOrderByWithRelationInput
    _relevance?: ContactParamSettingsOrderByRelevanceInput
  }

  export type ContactParamSettingsWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    companyId?: number
    AND?: ContactParamSettingsWhereInput | ContactParamSettingsWhereInput[]
    OR?: ContactParamSettingsWhereInput[]
    NOT?: ContactParamSettingsWhereInput | ContactParamSettingsWhereInput[]
    param1Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param2Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param3Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param4Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param5Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param6Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param7Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param8Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param9Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    param10Label?: StringNullableFilter<"ContactParamSettings"> | string | null
    updatedAt?: DateTimeFilter<"ContactParamSettings"> | Date | string
    company?: XOR<CompanyScalarRelationFilter, CompanyWhereInput>
  }, "id" | "companyId">

  export type ContactParamSettingsOrderByWithAggregationInput = {
    id?: SortOrder
    companyId?: SortOrder
    param1Label?: SortOrderInput | SortOrder
    param2Label?: SortOrderInput | SortOrder
    param3Label?: SortOrderInput | SortOrder
    param4Label?: SortOrderInput | SortOrder
    param5Label?: SortOrderInput | SortOrder
    param6Label?: SortOrderInput | SortOrder
    param7Label?: SortOrderInput | SortOrder
    param8Label?: SortOrderInput | SortOrder
    param9Label?: SortOrderInput | SortOrder
    param10Label?: SortOrderInput | SortOrder
    updatedAt?: SortOrder
    _count?: ContactParamSettingsCountOrderByAggregateInput
    _avg?: ContactParamSettingsAvgOrderByAggregateInput
    _max?: ContactParamSettingsMaxOrderByAggregateInput
    _min?: ContactParamSettingsMinOrderByAggregateInput
    _sum?: ContactParamSettingsSumOrderByAggregateInput
  }

  export type ContactParamSettingsScalarWhereWithAggregatesInput = {
    AND?: ContactParamSettingsScalarWhereWithAggregatesInput | ContactParamSettingsScalarWhereWithAggregatesInput[]
    OR?: ContactParamSettingsScalarWhereWithAggregatesInput[]
    NOT?: ContactParamSettingsScalarWhereWithAggregatesInput | ContactParamSettingsScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"ContactParamSettings"> | number
    companyId?: IntWithAggregatesFilter<"ContactParamSettings"> | number
    param1Label?: StringNullableWithAggregatesFilter<"ContactParamSettings"> | string | null
    param2Label?: StringNullableWithAggregatesFilter<"ContactParamSettings"> | string | null
    param3Label?: StringNullableWithAggregatesFilter<"ContactParamSettings"> | string | null
    param4Label?: StringNullableWithAggregatesFilter<"ContactParamSettings"> | string | null
    param5Label?: StringNullableWithAggregatesFilter<"ContactParamSettings"> | string | null
    param6Label?: StringNullableWithAggregatesFilter<"ContactParamSettings"> | string | null
    param7Label?: StringNullableWithAggregatesFilter<"ContactParamSettings"> | string | null
    param8Label?: StringNullableWithAggregatesFilter<"ContactParamSettings"> | string | null
    param9Label?: StringNullableWithAggregatesFilter<"ContactParamSettings"> | string | null
    param10Label?: StringNullableWithAggregatesFilter<"ContactParamSettings"> | string | null
    updatedAt?: DateTimeWithAggregatesFilter<"ContactParamSettings"> | Date | string
  }

  export type CampaignWhereInput = {
    AND?: CampaignWhereInput | CampaignWhereInput[]
    OR?: CampaignWhereInput[]
    NOT?: CampaignWhereInput | CampaignWhereInput[]
    id?: IntFilter<"Campaign"> | number
    uuid?: StringFilter<"Campaign"> | string
    name?: StringFilter<"Campaign"> | string
    status?: StringFilter<"Campaign"> | string
    server_ref?: BigIntNullableFilter<"Campaign"> | bigint | number | null
    serverRefs?: JsonNullableFilter<"Campaign">
    isParameterized?: BoolFilter<"Campaign"> | boolean
    smsValidityPeriod?: IntNullableFilter<"Campaign"> | number | null
    customMessage?: StringNullableFilter<"Campaign"> | string | null
    scheduledDate?: DateTimeFilter<"Campaign"> | Date | string
    notificationNumber?: StringNullableFilter<"Campaign"> | string | null
    createdByUserId?: IntNullableFilter<"Campaign"> | number | null
    billingAccountId?: IntFilter<"Campaign"> | number
    senderMaskId?: IntFilter<"Campaign"> | number
    mobileNumberListId?: BigIntNullableFilter<"Campaign"> | bigint | number | null
    customBlacklist?: JsonNullableFilter<"Campaign">
    templateId?: IntNullableFilter<"Campaign"> | number | null
    smsType?: StringFilter<"Campaign"> | string
    source?: StringFilter<"Campaign"> | string
    reservedAmount?: FloatFilter<"Campaign"> | number
    chargedAmount?: FloatFilter<"Campaign"> | number
    smsCostPerSegment?: FloatNullableFilter<"Campaign"> | number | null
    batchUuid?: StringNullableFilter<"Campaign"> | string | null
    failureReason?: StringNullableFilter<"Campaign"> | string | null
    createdAt?: DateTimeFilter<"Campaign"> | Date | string
    updatedAt?: DateTimeFilter<"Campaign"> | Date | string
    deletedAt?: DateTimeNullableFilter<"Campaign"> | Date | string | null
    billingAccount?: XOR<BillAccountScalarRelationFilter, BillAccountWhereInput>
    senderMask?: XOR<SenderMaskScalarRelationFilter, SenderMaskWhereInput>
    mobileNumberList?: XOR<MobileNumberListNullableScalarRelationFilter, MobileNumberListWhereInput> | null
    template?: XOR<SMS_TemplateNullableScalarRelationFilter, SMS_TemplateWhereInput> | null
    smsReports?: SMS_ReportListRelationFilter
    bulkServerRefs?: CampaignServerRefListRelationFilter
    recipients?: CampaignRecipientListRelationFilter
  }

  export type CampaignOrderByWithRelationInput = {
    id?: SortOrder
    uuid?: SortOrder
    name?: SortOrder
    status?: SortOrder
    server_ref?: SortOrderInput | SortOrder
    serverRefs?: SortOrderInput | SortOrder
    isParameterized?: SortOrder
    smsValidityPeriod?: SortOrderInput | SortOrder
    customMessage?: SortOrderInput | SortOrder
    scheduledDate?: SortOrder
    notificationNumber?: SortOrderInput | SortOrder
    createdByUserId?: SortOrderInput | SortOrder
    billingAccountId?: SortOrder
    senderMaskId?: SortOrder
    mobileNumberListId?: SortOrderInput | SortOrder
    customBlacklist?: SortOrderInput | SortOrder
    templateId?: SortOrderInput | SortOrder
    smsType?: SortOrder
    source?: SortOrder
    reservedAmount?: SortOrder
    chargedAmount?: SortOrder
    smsCostPerSegment?: SortOrderInput | SortOrder
    batchUuid?: SortOrderInput | SortOrder
    failureReason?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrderInput | SortOrder
    billingAccount?: BillAccountOrderByWithRelationInput
    senderMask?: SenderMaskOrderByWithRelationInput
    mobileNumberList?: MobileNumberListOrderByWithRelationInput
    template?: SMS_TemplateOrderByWithRelationInput
    smsReports?: SMS_ReportOrderByRelationAggregateInput
    bulkServerRefs?: CampaignServerRefOrderByRelationAggregateInput
    recipients?: CampaignRecipientOrderByRelationAggregateInput
    _relevance?: CampaignOrderByRelevanceInput
  }

  export type CampaignWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    uuid?: string
    server_ref?: bigint | number
    AND?: CampaignWhereInput | CampaignWhereInput[]
    OR?: CampaignWhereInput[]
    NOT?: CampaignWhereInput | CampaignWhereInput[]
    name?: StringFilter<"Campaign"> | string
    status?: StringFilter<"Campaign"> | string
    serverRefs?: JsonNullableFilter<"Campaign">
    isParameterized?: BoolFilter<"Campaign"> | boolean
    smsValidityPeriod?: IntNullableFilter<"Campaign"> | number | null
    customMessage?: StringNullableFilter<"Campaign"> | string | null
    scheduledDate?: DateTimeFilter<"Campaign"> | Date | string
    notificationNumber?: StringNullableFilter<"Campaign"> | string | null
    createdByUserId?: IntNullableFilter<"Campaign"> | number | null
    billingAccountId?: IntFilter<"Campaign"> | number
    senderMaskId?: IntFilter<"Campaign"> | number
    mobileNumberListId?: BigIntNullableFilter<"Campaign"> | bigint | number | null
    customBlacklist?: JsonNullableFilter<"Campaign">
    templateId?: IntNullableFilter<"Campaign"> | number | null
    smsType?: StringFilter<"Campaign"> | string
    source?: StringFilter<"Campaign"> | string
    reservedAmount?: FloatFilter<"Campaign"> | number
    chargedAmount?: FloatFilter<"Campaign"> | number
    smsCostPerSegment?: FloatNullableFilter<"Campaign"> | number | null
    batchUuid?: StringNullableFilter<"Campaign"> | string | null
    failureReason?: StringNullableFilter<"Campaign"> | string | null
    createdAt?: DateTimeFilter<"Campaign"> | Date | string
    updatedAt?: DateTimeFilter<"Campaign"> | Date | string
    deletedAt?: DateTimeNullableFilter<"Campaign"> | Date | string | null
    billingAccount?: XOR<BillAccountScalarRelationFilter, BillAccountWhereInput>
    senderMask?: XOR<SenderMaskScalarRelationFilter, SenderMaskWhereInput>
    mobileNumberList?: XOR<MobileNumberListNullableScalarRelationFilter, MobileNumberListWhereInput> | null
    template?: XOR<SMS_TemplateNullableScalarRelationFilter, SMS_TemplateWhereInput> | null
    smsReports?: SMS_ReportListRelationFilter
    bulkServerRefs?: CampaignServerRefListRelationFilter
    recipients?: CampaignRecipientListRelationFilter
  }, "id" | "uuid" | "server_ref">

  export type CampaignOrderByWithAggregationInput = {
    id?: SortOrder
    uuid?: SortOrder
    name?: SortOrder
    status?: SortOrder
    server_ref?: SortOrderInput | SortOrder
    serverRefs?: SortOrderInput | SortOrder
    isParameterized?: SortOrder
    smsValidityPeriod?: SortOrderInput | SortOrder
    customMessage?: SortOrderInput | SortOrder
    scheduledDate?: SortOrder
    notificationNumber?: SortOrderInput | SortOrder
    createdByUserId?: SortOrderInput | SortOrder
    billingAccountId?: SortOrder
    senderMaskId?: SortOrder
    mobileNumberListId?: SortOrderInput | SortOrder
    customBlacklist?: SortOrderInput | SortOrder
    templateId?: SortOrderInput | SortOrder
    smsType?: SortOrder
    source?: SortOrder
    reservedAmount?: SortOrder
    chargedAmount?: SortOrder
    smsCostPerSegment?: SortOrderInput | SortOrder
    batchUuid?: SortOrderInput | SortOrder
    failureReason?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrderInput | SortOrder
    _count?: CampaignCountOrderByAggregateInput
    _avg?: CampaignAvgOrderByAggregateInput
    _max?: CampaignMaxOrderByAggregateInput
    _min?: CampaignMinOrderByAggregateInput
    _sum?: CampaignSumOrderByAggregateInput
  }

  export type CampaignScalarWhereWithAggregatesInput = {
    AND?: CampaignScalarWhereWithAggregatesInput | CampaignScalarWhereWithAggregatesInput[]
    OR?: CampaignScalarWhereWithAggregatesInput[]
    NOT?: CampaignScalarWhereWithAggregatesInput | CampaignScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"Campaign"> | number
    uuid?: StringWithAggregatesFilter<"Campaign"> | string
    name?: StringWithAggregatesFilter<"Campaign"> | string
    status?: StringWithAggregatesFilter<"Campaign"> | string
    server_ref?: BigIntNullableWithAggregatesFilter<"Campaign"> | bigint | number | null
    serverRefs?: JsonNullableWithAggregatesFilter<"Campaign">
    isParameterized?: BoolWithAggregatesFilter<"Campaign"> | boolean
    smsValidityPeriod?: IntNullableWithAggregatesFilter<"Campaign"> | number | null
    customMessage?: StringNullableWithAggregatesFilter<"Campaign"> | string | null
    scheduledDate?: DateTimeWithAggregatesFilter<"Campaign"> | Date | string
    notificationNumber?: StringNullableWithAggregatesFilter<"Campaign"> | string | null
    createdByUserId?: IntNullableWithAggregatesFilter<"Campaign"> | number | null
    billingAccountId?: IntWithAggregatesFilter<"Campaign"> | number
    senderMaskId?: IntWithAggregatesFilter<"Campaign"> | number
    mobileNumberListId?: BigIntNullableWithAggregatesFilter<"Campaign"> | bigint | number | null
    customBlacklist?: JsonNullableWithAggregatesFilter<"Campaign">
    templateId?: IntNullableWithAggregatesFilter<"Campaign"> | number | null
    smsType?: StringWithAggregatesFilter<"Campaign"> | string
    source?: StringWithAggregatesFilter<"Campaign"> | string
    reservedAmount?: FloatWithAggregatesFilter<"Campaign"> | number
    chargedAmount?: FloatWithAggregatesFilter<"Campaign"> | number
    smsCostPerSegment?: FloatNullableWithAggregatesFilter<"Campaign"> | number | null
    batchUuid?: StringNullableWithAggregatesFilter<"Campaign"> | string | null
    failureReason?: StringNullableWithAggregatesFilter<"Campaign"> | string | null
    createdAt?: DateTimeWithAggregatesFilter<"Campaign"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"Campaign"> | Date | string
    deletedAt?: DateTimeNullableWithAggregatesFilter<"Campaign"> | Date | string | null
  }

  export type CampaignServerRefWhereInput = {
    AND?: CampaignServerRefWhereInput | CampaignServerRefWhereInput[]
    OR?: CampaignServerRefWhereInput[]
    NOT?: CampaignServerRefWhereInput | CampaignServerRefWhereInput[]
    serverRef?: BigIntFilter<"CampaignServerRef"> | bigint | number
    campaignId?: IntFilter<"CampaignServerRef"> | number
    campaign?: XOR<CampaignScalarRelationFilter, CampaignWhereInput>
  }

  export type CampaignServerRefOrderByWithRelationInput = {
    serverRef?: SortOrder
    campaignId?: SortOrder
    campaign?: CampaignOrderByWithRelationInput
  }

  export type CampaignServerRefWhereUniqueInput = Prisma.AtLeast<{
    serverRef?: bigint | number
    AND?: CampaignServerRefWhereInput | CampaignServerRefWhereInput[]
    OR?: CampaignServerRefWhereInput[]
    NOT?: CampaignServerRefWhereInput | CampaignServerRefWhereInput[]
    campaignId?: IntFilter<"CampaignServerRef"> | number
    campaign?: XOR<CampaignScalarRelationFilter, CampaignWhereInput>
  }, "serverRef">

  export type CampaignServerRefOrderByWithAggregationInput = {
    serverRef?: SortOrder
    campaignId?: SortOrder
    _count?: CampaignServerRefCountOrderByAggregateInput
    _avg?: CampaignServerRefAvgOrderByAggregateInput
    _max?: CampaignServerRefMaxOrderByAggregateInput
    _min?: CampaignServerRefMinOrderByAggregateInput
    _sum?: CampaignServerRefSumOrderByAggregateInput
  }

  export type CampaignServerRefScalarWhereWithAggregatesInput = {
    AND?: CampaignServerRefScalarWhereWithAggregatesInput | CampaignServerRefScalarWhereWithAggregatesInput[]
    OR?: CampaignServerRefScalarWhereWithAggregatesInput[]
    NOT?: CampaignServerRefScalarWhereWithAggregatesInput | CampaignServerRefScalarWhereWithAggregatesInput[]
    serverRef?: BigIntWithAggregatesFilter<"CampaignServerRef"> | bigint | number
    campaignId?: IntWithAggregatesFilter<"CampaignServerRef"> | number
  }

  export type CampaignRecipientWhereInput = {
    AND?: CampaignRecipientWhereInput | CampaignRecipientWhereInput[]
    OR?: CampaignRecipientWhereInput[]
    NOT?: CampaignRecipientWhereInput | CampaignRecipientWhereInput[]
    id?: BigIntFilter<"CampaignRecipient"> | bigint | number
    campaignId?: IntFilter<"CampaignRecipient"> | number
    phoneNumber?: StringFilter<"CampaignRecipient"> | string
    name?: StringNullableFilter<"CampaignRecipient"> | string | null
    param1?: StringNullableFilter<"CampaignRecipient"> | string | null
    param2?: StringNullableFilter<"CampaignRecipient"> | string | null
    param3?: StringNullableFilter<"CampaignRecipient"> | string | null
    param4?: StringNullableFilter<"CampaignRecipient"> | string | null
    param5?: StringNullableFilter<"CampaignRecipient"> | string | null
    param6?: StringNullableFilter<"CampaignRecipient"> | string | null
    param7?: StringNullableFilter<"CampaignRecipient"> | string | null
    param8?: StringNullableFilter<"CampaignRecipient"> | string | null
    param9?: StringNullableFilter<"CampaignRecipient"> | string | null
    param10?: StringNullableFilter<"CampaignRecipient"> | string | null
    campaign?: XOR<CampaignScalarRelationFilter, CampaignWhereInput>
  }

  export type CampaignRecipientOrderByWithRelationInput = {
    id?: SortOrder
    campaignId?: SortOrder
    phoneNumber?: SortOrder
    name?: SortOrderInput | SortOrder
    param1?: SortOrderInput | SortOrder
    param2?: SortOrderInput | SortOrder
    param3?: SortOrderInput | SortOrder
    param4?: SortOrderInput | SortOrder
    param5?: SortOrderInput | SortOrder
    param6?: SortOrderInput | SortOrder
    param7?: SortOrderInput | SortOrder
    param8?: SortOrderInput | SortOrder
    param9?: SortOrderInput | SortOrder
    param10?: SortOrderInput | SortOrder
    campaign?: CampaignOrderByWithRelationInput
    _relevance?: CampaignRecipientOrderByRelevanceInput
  }

  export type CampaignRecipientWhereUniqueInput = Prisma.AtLeast<{
    id?: bigint | number
    AND?: CampaignRecipientWhereInput | CampaignRecipientWhereInput[]
    OR?: CampaignRecipientWhereInput[]
    NOT?: CampaignRecipientWhereInput | CampaignRecipientWhereInput[]
    campaignId?: IntFilter<"CampaignRecipient"> | number
    phoneNumber?: StringFilter<"CampaignRecipient"> | string
    name?: StringNullableFilter<"CampaignRecipient"> | string | null
    param1?: StringNullableFilter<"CampaignRecipient"> | string | null
    param2?: StringNullableFilter<"CampaignRecipient"> | string | null
    param3?: StringNullableFilter<"CampaignRecipient"> | string | null
    param4?: StringNullableFilter<"CampaignRecipient"> | string | null
    param5?: StringNullableFilter<"CampaignRecipient"> | string | null
    param6?: StringNullableFilter<"CampaignRecipient"> | string | null
    param7?: StringNullableFilter<"CampaignRecipient"> | string | null
    param8?: StringNullableFilter<"CampaignRecipient"> | string | null
    param9?: StringNullableFilter<"CampaignRecipient"> | string | null
    param10?: StringNullableFilter<"CampaignRecipient"> | string | null
    campaign?: XOR<CampaignScalarRelationFilter, CampaignWhereInput>
  }, "id">

  export type CampaignRecipientOrderByWithAggregationInput = {
    id?: SortOrder
    campaignId?: SortOrder
    phoneNumber?: SortOrder
    name?: SortOrderInput | SortOrder
    param1?: SortOrderInput | SortOrder
    param2?: SortOrderInput | SortOrder
    param3?: SortOrderInput | SortOrder
    param4?: SortOrderInput | SortOrder
    param5?: SortOrderInput | SortOrder
    param6?: SortOrderInput | SortOrder
    param7?: SortOrderInput | SortOrder
    param8?: SortOrderInput | SortOrder
    param9?: SortOrderInput | SortOrder
    param10?: SortOrderInput | SortOrder
    _count?: CampaignRecipientCountOrderByAggregateInput
    _avg?: CampaignRecipientAvgOrderByAggregateInput
    _max?: CampaignRecipientMaxOrderByAggregateInput
    _min?: CampaignRecipientMinOrderByAggregateInput
    _sum?: CampaignRecipientSumOrderByAggregateInput
  }

  export type CampaignRecipientScalarWhereWithAggregatesInput = {
    AND?: CampaignRecipientScalarWhereWithAggregatesInput | CampaignRecipientScalarWhereWithAggregatesInput[]
    OR?: CampaignRecipientScalarWhereWithAggregatesInput[]
    NOT?: CampaignRecipientScalarWhereWithAggregatesInput | CampaignRecipientScalarWhereWithAggregatesInput[]
    id?: BigIntWithAggregatesFilter<"CampaignRecipient"> | bigint | number
    campaignId?: IntWithAggregatesFilter<"CampaignRecipient"> | number
    phoneNumber?: StringWithAggregatesFilter<"CampaignRecipient"> | string
    name?: StringNullableWithAggregatesFilter<"CampaignRecipient"> | string | null
    param1?: StringNullableWithAggregatesFilter<"CampaignRecipient"> | string | null
    param2?: StringNullableWithAggregatesFilter<"CampaignRecipient"> | string | null
    param3?: StringNullableWithAggregatesFilter<"CampaignRecipient"> | string | null
    param4?: StringNullableWithAggregatesFilter<"CampaignRecipient"> | string | null
    param5?: StringNullableWithAggregatesFilter<"CampaignRecipient"> | string | null
    param6?: StringNullableWithAggregatesFilter<"CampaignRecipient"> | string | null
    param7?: StringNullableWithAggregatesFilter<"CampaignRecipient"> | string | null
    param8?: StringNullableWithAggregatesFilter<"CampaignRecipient"> | string | null
    param9?: StringNullableWithAggregatesFilter<"CampaignRecipient"> | string | null
    param10?: StringNullableWithAggregatesFilter<"CampaignRecipient"> | string | null
  }

  export type MobileNumberListWhereInput = {
    AND?: MobileNumberListWhereInput | MobileNumberListWhereInput[]
    OR?: MobileNumberListWhereInput[]
    NOT?: MobileNumberListWhereInput | MobileNumberListWhereInput[]
    id?: BigIntFilter<"MobileNumberList"> | bigint | number
    uuid?: StringFilter<"MobileNumberList"> | string
    listName?: StringFilter<"MobileNumberList"> | string
    listType?: StringFilter<"MobileNumberList"> | string
    createdByUserId?: IntFilter<"MobileNumberList"> | number
    companyId?: IntNullableFilter<"MobileNumberList"> | number | null
    createdAt?: DateTimeFilter<"MobileNumberList"> | Date | string
    updatedAt?: DateTimeFilter<"MobileNumberList"> | Date | string
    deletedAt?: DateTimeNullableFilter<"MobileNumberList"> | Date | string | null
    company?: XOR<CompanyNullableScalarRelationFilter, CompanyWhereInput> | null
    campaigns?: CampaignListRelationFilter
    mobileNumbers?: MobileNumberListRelationFilter
  }

  export type MobileNumberListOrderByWithRelationInput = {
    id?: SortOrder
    uuid?: SortOrder
    listName?: SortOrder
    listType?: SortOrder
    createdByUserId?: SortOrder
    companyId?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrderInput | SortOrder
    company?: CompanyOrderByWithRelationInput
    campaigns?: CampaignOrderByRelationAggregateInput
    mobileNumbers?: MobileNumberOrderByRelationAggregateInput
    _relevance?: MobileNumberListOrderByRelevanceInput
  }

  export type MobileNumberListWhereUniqueInput = Prisma.AtLeast<{
    id?: bigint | number
    uuid?: string
    AND?: MobileNumberListWhereInput | MobileNumberListWhereInput[]
    OR?: MobileNumberListWhereInput[]
    NOT?: MobileNumberListWhereInput | MobileNumberListWhereInput[]
    listName?: StringFilter<"MobileNumberList"> | string
    listType?: StringFilter<"MobileNumberList"> | string
    createdByUserId?: IntFilter<"MobileNumberList"> | number
    companyId?: IntNullableFilter<"MobileNumberList"> | number | null
    createdAt?: DateTimeFilter<"MobileNumberList"> | Date | string
    updatedAt?: DateTimeFilter<"MobileNumberList"> | Date | string
    deletedAt?: DateTimeNullableFilter<"MobileNumberList"> | Date | string | null
    company?: XOR<CompanyNullableScalarRelationFilter, CompanyWhereInput> | null
    campaigns?: CampaignListRelationFilter
    mobileNumbers?: MobileNumberListRelationFilter
  }, "id" | "uuid">

  export type MobileNumberListOrderByWithAggregationInput = {
    id?: SortOrder
    uuid?: SortOrder
    listName?: SortOrder
    listType?: SortOrder
    createdByUserId?: SortOrder
    companyId?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrderInput | SortOrder
    _count?: MobileNumberListCountOrderByAggregateInput
    _avg?: MobileNumberListAvgOrderByAggregateInput
    _max?: MobileNumberListMaxOrderByAggregateInput
    _min?: MobileNumberListMinOrderByAggregateInput
    _sum?: MobileNumberListSumOrderByAggregateInput
  }

  export type MobileNumberListScalarWhereWithAggregatesInput = {
    AND?: MobileNumberListScalarWhereWithAggregatesInput | MobileNumberListScalarWhereWithAggregatesInput[]
    OR?: MobileNumberListScalarWhereWithAggregatesInput[]
    NOT?: MobileNumberListScalarWhereWithAggregatesInput | MobileNumberListScalarWhereWithAggregatesInput[]
    id?: BigIntWithAggregatesFilter<"MobileNumberList"> | bigint | number
    uuid?: StringWithAggregatesFilter<"MobileNumberList"> | string
    listName?: StringWithAggregatesFilter<"MobileNumberList"> | string
    listType?: StringWithAggregatesFilter<"MobileNumberList"> | string
    createdByUserId?: IntWithAggregatesFilter<"MobileNumberList"> | number
    companyId?: IntNullableWithAggregatesFilter<"MobileNumberList"> | number | null
    createdAt?: DateTimeWithAggregatesFilter<"MobileNumberList"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"MobileNumberList"> | Date | string
    deletedAt?: DateTimeNullableWithAggregatesFilter<"MobileNumberList"> | Date | string | null
  }

  export type MobileNumberWhereInput = {
    AND?: MobileNumberWhereInput | MobileNumberWhereInput[]
    OR?: MobileNumberWhereInput[]
    NOT?: MobileNumberWhereInput | MobileNumberWhereInput[]
    id?: BigIntFilter<"MobileNumber"> | bigint | number
    uuid?: StringFilter<"MobileNumber"> | string
    phoneNumber?: StringFilter<"MobileNumber"> | string
    type?: StringFilter<"MobileNumber"> | string
    is_blocked?: BoolFilter<"MobileNumber"> | boolean
    numberListId?: BigIntNullableFilter<"MobileNumber"> | bigint | number | null
    deletedAt?: DateTimeNullableFilter<"MobileNumber"> | Date | string | null
    name?: StringNullableFilter<"MobileNumber"> | string | null
    param1?: StringNullableFilter<"MobileNumber"> | string | null
    param2?: StringNullableFilter<"MobileNumber"> | string | null
    param3?: StringNullableFilter<"MobileNumber"> | string | null
    param4?: StringNullableFilter<"MobileNumber"> | string | null
    param5?: StringNullableFilter<"MobileNumber"> | string | null
    param6?: StringNullableFilter<"MobileNumber"> | string | null
    param7?: StringNullableFilter<"MobileNumber"> | string | null
    param8?: StringNullableFilter<"MobileNumber"> | string | null
    param9?: StringNullableFilter<"MobileNumber"> | string | null
    param10?: StringNullableFilter<"MobileNumber"> | string | null
    list?: XOR<MobileNumberListNullableScalarRelationFilter, MobileNumberListWhereInput> | null
  }

  export type MobileNumberOrderByWithRelationInput = {
    id?: SortOrder
    uuid?: SortOrder
    phoneNumber?: SortOrder
    type?: SortOrder
    is_blocked?: SortOrder
    numberListId?: SortOrderInput | SortOrder
    deletedAt?: SortOrderInput | SortOrder
    name?: SortOrderInput | SortOrder
    param1?: SortOrderInput | SortOrder
    param2?: SortOrderInput | SortOrder
    param3?: SortOrderInput | SortOrder
    param4?: SortOrderInput | SortOrder
    param5?: SortOrderInput | SortOrder
    param6?: SortOrderInput | SortOrder
    param7?: SortOrderInput | SortOrder
    param8?: SortOrderInput | SortOrder
    param9?: SortOrderInput | SortOrder
    param10?: SortOrderInput | SortOrder
    list?: MobileNumberListOrderByWithRelationInput
    _relevance?: MobileNumberOrderByRelevanceInput
  }

  export type MobileNumberWhereUniqueInput = Prisma.AtLeast<{
    id?: bigint | number
    uuid?: string
    AND?: MobileNumberWhereInput | MobileNumberWhereInput[]
    OR?: MobileNumberWhereInput[]
    NOT?: MobileNumberWhereInput | MobileNumberWhereInput[]
    phoneNumber?: StringFilter<"MobileNumber"> | string
    type?: StringFilter<"MobileNumber"> | string
    is_blocked?: BoolFilter<"MobileNumber"> | boolean
    numberListId?: BigIntNullableFilter<"MobileNumber"> | bigint | number | null
    deletedAt?: DateTimeNullableFilter<"MobileNumber"> | Date | string | null
    name?: StringNullableFilter<"MobileNumber"> | string | null
    param1?: StringNullableFilter<"MobileNumber"> | string | null
    param2?: StringNullableFilter<"MobileNumber"> | string | null
    param3?: StringNullableFilter<"MobileNumber"> | string | null
    param4?: StringNullableFilter<"MobileNumber"> | string | null
    param5?: StringNullableFilter<"MobileNumber"> | string | null
    param6?: StringNullableFilter<"MobileNumber"> | string | null
    param7?: StringNullableFilter<"MobileNumber"> | string | null
    param8?: StringNullableFilter<"MobileNumber"> | string | null
    param9?: StringNullableFilter<"MobileNumber"> | string | null
    param10?: StringNullableFilter<"MobileNumber"> | string | null
    list?: XOR<MobileNumberListNullableScalarRelationFilter, MobileNumberListWhereInput> | null
  }, "id" | "uuid">

  export type MobileNumberOrderByWithAggregationInput = {
    id?: SortOrder
    uuid?: SortOrder
    phoneNumber?: SortOrder
    type?: SortOrder
    is_blocked?: SortOrder
    numberListId?: SortOrderInput | SortOrder
    deletedAt?: SortOrderInput | SortOrder
    name?: SortOrderInput | SortOrder
    param1?: SortOrderInput | SortOrder
    param2?: SortOrderInput | SortOrder
    param3?: SortOrderInput | SortOrder
    param4?: SortOrderInput | SortOrder
    param5?: SortOrderInput | SortOrder
    param6?: SortOrderInput | SortOrder
    param7?: SortOrderInput | SortOrder
    param8?: SortOrderInput | SortOrder
    param9?: SortOrderInput | SortOrder
    param10?: SortOrderInput | SortOrder
    _count?: MobileNumberCountOrderByAggregateInput
    _avg?: MobileNumberAvgOrderByAggregateInput
    _max?: MobileNumberMaxOrderByAggregateInput
    _min?: MobileNumberMinOrderByAggregateInput
    _sum?: MobileNumberSumOrderByAggregateInput
  }

  export type MobileNumberScalarWhereWithAggregatesInput = {
    AND?: MobileNumberScalarWhereWithAggregatesInput | MobileNumberScalarWhereWithAggregatesInput[]
    OR?: MobileNumberScalarWhereWithAggregatesInput[]
    NOT?: MobileNumberScalarWhereWithAggregatesInput | MobileNumberScalarWhereWithAggregatesInput[]
    id?: BigIntWithAggregatesFilter<"MobileNumber"> | bigint | number
    uuid?: StringWithAggregatesFilter<"MobileNumber"> | string
    phoneNumber?: StringWithAggregatesFilter<"MobileNumber"> | string
    type?: StringWithAggregatesFilter<"MobileNumber"> | string
    is_blocked?: BoolWithAggregatesFilter<"MobileNumber"> | boolean
    numberListId?: BigIntNullableWithAggregatesFilter<"MobileNumber"> | bigint | number | null
    deletedAt?: DateTimeNullableWithAggregatesFilter<"MobileNumber"> | Date | string | null
    name?: StringNullableWithAggregatesFilter<"MobileNumber"> | string | null
    param1?: StringNullableWithAggregatesFilter<"MobileNumber"> | string | null
    param2?: StringNullableWithAggregatesFilter<"MobileNumber"> | string | null
    param3?: StringNullableWithAggregatesFilter<"MobileNumber"> | string | null
    param4?: StringNullableWithAggregatesFilter<"MobileNumber"> | string | null
    param5?: StringNullableWithAggregatesFilter<"MobileNumber"> | string | null
    param6?: StringNullableWithAggregatesFilter<"MobileNumber"> | string | null
    param7?: StringNullableWithAggregatesFilter<"MobileNumber"> | string | null
    param8?: StringNullableWithAggregatesFilter<"MobileNumber"> | string | null
    param9?: StringNullableWithAggregatesFilter<"MobileNumber"> | string | null
    param10?: StringNullableWithAggregatesFilter<"MobileNumber"> | string | null
  }

  export type SMS_ReportWhereInput = {
    AND?: SMS_ReportWhereInput | SMS_ReportWhereInput[]
    OR?: SMS_ReportWhereInput[]
    NOT?: SMS_ReportWhereInput | SMS_ReportWhereInput[]
    id?: IntFilter<"SMS_Report"> | number
    uuid?: StringFilter<"SMS_Report"> | string
    server_ref?: BigIntFilter<"SMS_Report"> | bigint | number
    campaignId?: IntFilter<"SMS_Report"> | number
    deliveryType?: IntFilter<"SMS_Report"> | number
    number?: StringFilter<"SMS_Report"> | string
    maskName?: StringFilter<"SMS_Report"> | string
    messagePart?: IntFilter<"SMS_Report"> | number
    chargedAmount?: FloatFilter<"SMS_Report"> | number
    createdAt?: DateTimeFilter<"SMS_Report"> | Date | string
    updatedAt?: DateTimeFilter<"SMS_Report"> | Date | string
    campaign?: XOR<CampaignScalarRelationFilter, CampaignWhereInput>
  }

  export type SMS_ReportOrderByWithRelationInput = {
    id?: SortOrder
    uuid?: SortOrder
    server_ref?: SortOrder
    campaignId?: SortOrder
    deliveryType?: SortOrder
    number?: SortOrder
    maskName?: SortOrder
    messagePart?: SortOrder
    chargedAmount?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    campaign?: CampaignOrderByWithRelationInput
    _relevance?: SMS_ReportOrderByRelevanceInput
  }

  export type SMS_ReportWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    uuid?: string
    server_ref_number_messagePart?: SMS_ReportServer_refNumberMessagePartCompoundUniqueInput
    AND?: SMS_ReportWhereInput | SMS_ReportWhereInput[]
    OR?: SMS_ReportWhereInput[]
    NOT?: SMS_ReportWhereInput | SMS_ReportWhereInput[]
    server_ref?: BigIntFilter<"SMS_Report"> | bigint | number
    campaignId?: IntFilter<"SMS_Report"> | number
    deliveryType?: IntFilter<"SMS_Report"> | number
    number?: StringFilter<"SMS_Report"> | string
    maskName?: StringFilter<"SMS_Report"> | string
    messagePart?: IntFilter<"SMS_Report"> | number
    chargedAmount?: FloatFilter<"SMS_Report"> | number
    createdAt?: DateTimeFilter<"SMS_Report"> | Date | string
    updatedAt?: DateTimeFilter<"SMS_Report"> | Date | string
    campaign?: XOR<CampaignScalarRelationFilter, CampaignWhereInput>
  }, "id" | "uuid" | "server_ref_number_messagePart">

  export type SMS_ReportOrderByWithAggregationInput = {
    id?: SortOrder
    uuid?: SortOrder
    server_ref?: SortOrder
    campaignId?: SortOrder
    deliveryType?: SortOrder
    number?: SortOrder
    maskName?: SortOrder
    messagePart?: SortOrder
    chargedAmount?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _count?: SMS_ReportCountOrderByAggregateInput
    _avg?: SMS_ReportAvgOrderByAggregateInput
    _max?: SMS_ReportMaxOrderByAggregateInput
    _min?: SMS_ReportMinOrderByAggregateInput
    _sum?: SMS_ReportSumOrderByAggregateInput
  }

  export type SMS_ReportScalarWhereWithAggregatesInput = {
    AND?: SMS_ReportScalarWhereWithAggregatesInput | SMS_ReportScalarWhereWithAggregatesInput[]
    OR?: SMS_ReportScalarWhereWithAggregatesInput[]
    NOT?: SMS_ReportScalarWhereWithAggregatesInput | SMS_ReportScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"SMS_Report"> | number
    uuid?: StringWithAggregatesFilter<"SMS_Report"> | string
    server_ref?: BigIntWithAggregatesFilter<"SMS_Report"> | bigint | number
    campaignId?: IntWithAggregatesFilter<"SMS_Report"> | number
    deliveryType?: IntWithAggregatesFilter<"SMS_Report"> | number
    number?: StringWithAggregatesFilter<"SMS_Report"> | string
    maskName?: StringWithAggregatesFilter<"SMS_Report"> | string
    messagePart?: IntWithAggregatesFilter<"SMS_Report"> | number
    chargedAmount?: FloatWithAggregatesFilter<"SMS_Report"> | number
    createdAt?: DateTimeWithAggregatesFilter<"SMS_Report"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"SMS_Report"> | Date | string
  }

  export type ExternalApiClientWhereInput = {
    AND?: ExternalApiClientWhereInput | ExternalApiClientWhereInput[]
    OR?: ExternalApiClientWhereInput[]
    NOT?: ExternalApiClientWhereInput | ExternalApiClientWhereInput[]
    id?: IntFilter<"ExternalApiClient"> | number
    uuid?: StringFilter<"ExternalApiClient"> | string
    systemLabel?: StringFilter<"ExternalApiClient"> | string
    apiKeyHash?: StringFilter<"ExternalApiClient"> | string
    isActive?: BoolFilter<"ExternalApiClient"> | boolean
    webhookUrl?: StringNullableFilter<"ExternalApiClient"> | string | null
    webhookSecret?: StringNullableFilter<"ExternalApiClient"> | string | null
    createdAt?: DateTimeFilter<"ExternalApiClient"> | Date | string
    updatedAt?: DateTimeFilter<"ExternalApiClient"> | Date | string
  }

  export type ExternalApiClientOrderByWithRelationInput = {
    id?: SortOrder
    uuid?: SortOrder
    systemLabel?: SortOrder
    apiKeyHash?: SortOrder
    isActive?: SortOrder
    webhookUrl?: SortOrderInput | SortOrder
    webhookSecret?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _relevance?: ExternalApiClientOrderByRelevanceInput
  }

  export type ExternalApiClientWhereUniqueInput = Prisma.AtLeast<{
    id?: number
    uuid?: string
    systemLabel?: string
    AND?: ExternalApiClientWhereInput | ExternalApiClientWhereInput[]
    OR?: ExternalApiClientWhereInput[]
    NOT?: ExternalApiClientWhereInput | ExternalApiClientWhereInput[]
    apiKeyHash?: StringFilter<"ExternalApiClient"> | string
    isActive?: BoolFilter<"ExternalApiClient"> | boolean
    webhookUrl?: StringNullableFilter<"ExternalApiClient"> | string | null
    webhookSecret?: StringNullableFilter<"ExternalApiClient"> | string | null
    createdAt?: DateTimeFilter<"ExternalApiClient"> | Date | string
    updatedAt?: DateTimeFilter<"ExternalApiClient"> | Date | string
  }, "id" | "uuid" | "systemLabel">

  export type ExternalApiClientOrderByWithAggregationInput = {
    id?: SortOrder
    uuid?: SortOrder
    systemLabel?: SortOrder
    apiKeyHash?: SortOrder
    isActive?: SortOrder
    webhookUrl?: SortOrderInput | SortOrder
    webhookSecret?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _count?: ExternalApiClientCountOrderByAggregateInput
    _avg?: ExternalApiClientAvgOrderByAggregateInput
    _max?: ExternalApiClientMaxOrderByAggregateInput
    _min?: ExternalApiClientMinOrderByAggregateInput
    _sum?: ExternalApiClientSumOrderByAggregateInput
  }

  export type ExternalApiClientScalarWhereWithAggregatesInput = {
    AND?: ExternalApiClientScalarWhereWithAggregatesInput | ExternalApiClientScalarWhereWithAggregatesInput[]
    OR?: ExternalApiClientScalarWhereWithAggregatesInput[]
    NOT?: ExternalApiClientScalarWhereWithAggregatesInput | ExternalApiClientScalarWhereWithAggregatesInput[]
    id?: IntWithAggregatesFilter<"ExternalApiClient"> | number
    uuid?: StringWithAggregatesFilter<"ExternalApiClient"> | string
    systemLabel?: StringWithAggregatesFilter<"ExternalApiClient"> | string
    apiKeyHash?: StringWithAggregatesFilter<"ExternalApiClient"> | string
    isActive?: BoolWithAggregatesFilter<"ExternalApiClient"> | boolean
    webhookUrl?: StringNullableWithAggregatesFilter<"ExternalApiClient"> | string | null
    webhookSecret?: StringNullableWithAggregatesFilter<"ExternalApiClient"> | string | null
    createdAt?: DateTimeWithAggregatesFilter<"ExternalApiClient"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"ExternalApiClient"> | Date | string
  }

  export type SystemConfigWhereInput = {
    AND?: SystemConfigWhereInput | SystemConfigWhereInput[]
    OR?: SystemConfigWhereInput[]
    NOT?: SystemConfigWhereInput | SystemConfigWhereInput[]
    key?: StringFilter<"SystemConfig"> | string
    value?: StringFilter<"SystemConfig"> | string
    updatedAt?: DateTimeFilter<"SystemConfig"> | Date | string
  }

  export type SystemConfigOrderByWithRelationInput = {
    key?: SortOrder
    value?: SortOrder
    updatedAt?: SortOrder
    _relevance?: SystemConfigOrderByRelevanceInput
  }

  export type SystemConfigWhereUniqueInput = Prisma.AtLeast<{
    key?: string
    AND?: SystemConfigWhereInput | SystemConfigWhereInput[]
    OR?: SystemConfigWhereInput[]
    NOT?: SystemConfigWhereInput | SystemConfigWhereInput[]
    value?: StringFilter<"SystemConfig"> | string
    updatedAt?: DateTimeFilter<"SystemConfig"> | Date | string
  }, "key">

  export type SystemConfigOrderByWithAggregationInput = {
    key?: SortOrder
    value?: SortOrder
    updatedAt?: SortOrder
    _count?: SystemConfigCountOrderByAggregateInput
    _max?: SystemConfigMaxOrderByAggregateInput
    _min?: SystemConfigMinOrderByAggregateInput
  }

  export type SystemConfigScalarWhereWithAggregatesInput = {
    AND?: SystemConfigScalarWhereWithAggregatesInput | SystemConfigScalarWhereWithAggregatesInput[]
    OR?: SystemConfigScalarWhereWithAggregatesInput[]
    NOT?: SystemConfigScalarWhereWithAggregatesInput | SystemConfigScalarWhereWithAggregatesInput[]
    key?: StringWithAggregatesFilter<"SystemConfig"> | string
    value?: StringWithAggregatesFilter<"SystemConfig"> | string
    updatedAt?: DateTimeWithAggregatesFilter<"SystemConfig"> | Date | string
  }

  export type AuditLogWhereInput = {
    AND?: AuditLogWhereInput | AuditLogWhereInput[]
    OR?: AuditLogWhereInput[]
    NOT?: AuditLogWhereInput | AuditLogWhereInput[]
    id?: BigIntFilter<"AuditLog"> | bigint | number
    entityName?: StringFilter<"AuditLog"> | string
    entityId?: StringFilter<"AuditLog"> | string
    action?: StringFilter<"AuditLog"> | string
    oldValue?: JsonNullableFilter<"AuditLog">
    newValue?: JsonNullableFilter<"AuditLog">
    changedFields?: JsonNullableFilter<"AuditLog">
    performedByUserId?: IntFilter<"AuditLog"> | number
    performedByCompanyId?: IntNullableFilter<"AuditLog"> | number | null
    createdAt?: DateTimeFilter<"AuditLog"> | Date | string
  }

  export type AuditLogOrderByWithRelationInput = {
    id?: SortOrder
    entityName?: SortOrder
    entityId?: SortOrder
    action?: SortOrder
    oldValue?: SortOrderInput | SortOrder
    newValue?: SortOrderInput | SortOrder
    changedFields?: SortOrderInput | SortOrder
    performedByUserId?: SortOrder
    performedByCompanyId?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    _relevance?: AuditLogOrderByRelevanceInput
  }

  export type AuditLogWhereUniqueInput = Prisma.AtLeast<{
    id?: bigint | number
    AND?: AuditLogWhereInput | AuditLogWhereInput[]
    OR?: AuditLogWhereInput[]
    NOT?: AuditLogWhereInput | AuditLogWhereInput[]
    entityName?: StringFilter<"AuditLog"> | string
    entityId?: StringFilter<"AuditLog"> | string
    action?: StringFilter<"AuditLog"> | string
    oldValue?: JsonNullableFilter<"AuditLog">
    newValue?: JsonNullableFilter<"AuditLog">
    changedFields?: JsonNullableFilter<"AuditLog">
    performedByUserId?: IntFilter<"AuditLog"> | number
    performedByCompanyId?: IntNullableFilter<"AuditLog"> | number | null
    createdAt?: DateTimeFilter<"AuditLog"> | Date | string
  }, "id">

  export type AuditLogOrderByWithAggregationInput = {
    id?: SortOrder
    entityName?: SortOrder
    entityId?: SortOrder
    action?: SortOrder
    oldValue?: SortOrderInput | SortOrder
    newValue?: SortOrderInput | SortOrder
    changedFields?: SortOrderInput | SortOrder
    performedByUserId?: SortOrder
    performedByCompanyId?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    _count?: AuditLogCountOrderByAggregateInput
    _avg?: AuditLogAvgOrderByAggregateInput
    _max?: AuditLogMaxOrderByAggregateInput
    _min?: AuditLogMinOrderByAggregateInput
    _sum?: AuditLogSumOrderByAggregateInput
  }

  export type AuditLogScalarWhereWithAggregatesInput = {
    AND?: AuditLogScalarWhereWithAggregatesInput | AuditLogScalarWhereWithAggregatesInput[]
    OR?: AuditLogScalarWhereWithAggregatesInput[]
    NOT?: AuditLogScalarWhereWithAggregatesInput | AuditLogScalarWhereWithAggregatesInput[]
    id?: BigIntWithAggregatesFilter<"AuditLog"> | bigint | number
    entityName?: StringWithAggregatesFilter<"AuditLog"> | string
    entityId?: StringWithAggregatesFilter<"AuditLog"> | string
    action?: StringWithAggregatesFilter<"AuditLog"> | string
    oldValue?: JsonNullableWithAggregatesFilter<"AuditLog">
    newValue?: JsonNullableWithAggregatesFilter<"AuditLog">
    changedFields?: JsonNullableWithAggregatesFilter<"AuditLog">
    performedByUserId?: IntWithAggregatesFilter<"AuditLog"> | number
    performedByCompanyId?: IntNullableWithAggregatesFilter<"AuditLog"> | number | null
    createdAt?: DateTimeWithAggregatesFilter<"AuditLog"> | Date | string
  }

  export type CompanyCreateInput = {
    uuid?: string
    externalCompanyId?: number | null
    source?: string | null
    brNumber?: string | null
    companyName: string
    contactNumber?: string | null
    address?: string | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    smsCostIndividual?: number | null
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    userCompanies?: UserCompanyCreateNestedManyWithoutCompanyInput
    billAccounts?: BillAccountCreateNestedManyWithoutCompanyInput
    departments?: DepartmentCreateNestedManyWithoutCompanyInput
    mobileNumberLists?: MobileNumberListCreateNestedManyWithoutCompanyInput
    senderMasks?: SenderMaskCreateNestedManyWithoutCompanyInput
    contactParamSettings?: ContactParamSettingsCreateNestedOneWithoutCompanyInput
  }

  export type CompanyUncheckedCreateInput = {
    id?: number
    uuid?: string
    externalCompanyId?: number | null
    source?: string | null
    brNumber?: string | null
    companyName: string
    contactNumber?: string | null
    address?: string | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    smsCostIndividual?: number | null
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    userCompanies?: UserCompanyUncheckedCreateNestedManyWithoutCompanyInput
    billAccounts?: BillAccountUncheckedCreateNestedManyWithoutCompanyInput
    departments?: DepartmentUncheckedCreateNestedManyWithoutCompanyInput
    mobileNumberLists?: MobileNumberListUncheckedCreateNestedManyWithoutCompanyInput
    senderMasks?: SenderMaskUncheckedCreateNestedManyWithoutCompanyInput
    contactParamSettings?: ContactParamSettingsUncheckedCreateNestedOneWithoutCompanyInput
  }

  export type CompanyUpdateInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    source?: NullableStringFieldUpdateOperationsInput | string | null
    brNumber?: NullableStringFieldUpdateOperationsInput | string | null
    companyName?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    address?: NullableStringFieldUpdateOperationsInput | string | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostIndividual?: NullableFloatFieldUpdateOperationsInput | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    userCompanies?: UserCompanyUpdateManyWithoutCompanyNestedInput
    billAccounts?: BillAccountUpdateManyWithoutCompanyNestedInput
    departments?: DepartmentUpdateManyWithoutCompanyNestedInput
    mobileNumberLists?: MobileNumberListUpdateManyWithoutCompanyNestedInput
    senderMasks?: SenderMaskUpdateManyWithoutCompanyNestedInput
    contactParamSettings?: ContactParamSettingsUpdateOneWithoutCompanyNestedInput
  }

  export type CompanyUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    source?: NullableStringFieldUpdateOperationsInput | string | null
    brNumber?: NullableStringFieldUpdateOperationsInput | string | null
    companyName?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    address?: NullableStringFieldUpdateOperationsInput | string | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostIndividual?: NullableFloatFieldUpdateOperationsInput | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    userCompanies?: UserCompanyUncheckedUpdateManyWithoutCompanyNestedInput
    billAccounts?: BillAccountUncheckedUpdateManyWithoutCompanyNestedInput
    departments?: DepartmentUncheckedUpdateManyWithoutCompanyNestedInput
    mobileNumberLists?: MobileNumberListUncheckedUpdateManyWithoutCompanyNestedInput
    senderMasks?: SenderMaskUncheckedUpdateManyWithoutCompanyNestedInput
    contactParamSettings?: ContactParamSettingsUncheckedUpdateOneWithoutCompanyNestedInput
  }

  export type CompanyCreateManyInput = {
    id?: number
    uuid?: string
    externalCompanyId?: number | null
    source?: string | null
    brNumber?: string | null
    companyName: string
    contactNumber?: string | null
    address?: string | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    smsCostIndividual?: number | null
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type CompanyUpdateManyMutationInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    source?: NullableStringFieldUpdateOperationsInput | string | null
    brNumber?: NullableStringFieldUpdateOperationsInput | string | null
    companyName?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    address?: NullableStringFieldUpdateOperationsInput | string | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostIndividual?: NullableFloatFieldUpdateOperationsInput | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type CompanyUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    source?: NullableStringFieldUpdateOperationsInput | string | null
    brNumber?: NullableStringFieldUpdateOperationsInput | string | null
    companyName?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    address?: NullableStringFieldUpdateOperationsInput | string | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostIndividual?: NullableFloatFieldUpdateOperationsInput | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type RoleCreateInput = {
    uuid?: string
    name: string
    displayName: string
    isSystem?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
    users?: UserCreateNestedManyWithoutRoleInput
  }

  export type RoleUncheckedCreateInput = {
    id?: number
    uuid?: string
    name: string
    displayName: string
    isSystem?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
    users?: UserUncheckedCreateNestedManyWithoutRoleInput
  }

  export type RoleUpdateInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    displayName?: StringFieldUpdateOperationsInput | string
    isSystem?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    users?: UserUpdateManyWithoutRoleNestedInput
  }

  export type RoleUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    displayName?: StringFieldUpdateOperationsInput | string
    isSystem?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    users?: UserUncheckedUpdateManyWithoutRoleNestedInput
  }

  export type RoleCreateManyInput = {
    id?: number
    uuid?: string
    name: string
    displayName: string
    isSystem?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type RoleUpdateManyMutationInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    displayName?: StringFieldUpdateOperationsInput | string
    isSystem?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type RoleUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    displayName?: StringFieldUpdateOperationsInput | string
    isSystem?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type UserCreateInput = {
    uuid?: string
    externalUserId?: number | null
    fullName: string
    email: string
    contactNumber?: string | null
    passwordHash?: string | null
    userType?: string
    isActive?: boolean
    hasSeenGuide?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
    role?: RoleCreateNestedOneWithoutUsersInput
    companies?: UserCompanyCreateNestedManyWithoutUserInput
    refreshTokens?: RefreshTokenCreateNestedManyWithoutUserInput
    savedCards?: SavedCardCreateNestedManyWithoutUserInput
    passwordResetTokens?: PasswordResetTokenCreateNestedManyWithoutUserInput
  }

  export type UserUncheckedCreateInput = {
    id?: number
    uuid?: string
    externalUserId?: number | null
    fullName: string
    email: string
    contactNumber?: string | null
    passwordHash?: string | null
    userType?: string
    isActive?: boolean
    hasSeenGuide?: boolean
    roleId?: number | null
    createdAt?: Date | string
    updatedAt?: Date | string
    companies?: UserCompanyUncheckedCreateNestedManyWithoutUserInput
    refreshTokens?: RefreshTokenUncheckedCreateNestedManyWithoutUserInput
    savedCards?: SavedCardUncheckedCreateNestedManyWithoutUserInput
    passwordResetTokens?: PasswordResetTokenUncheckedCreateNestedManyWithoutUserInput
  }

  export type UserUpdateInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    externalUserId?: NullableIntFieldUpdateOperationsInput | number | null
    fullName?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    passwordHash?: NullableStringFieldUpdateOperationsInput | string | null
    userType?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    hasSeenGuide?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    role?: RoleUpdateOneWithoutUsersNestedInput
    companies?: UserCompanyUpdateManyWithoutUserNestedInput
    refreshTokens?: RefreshTokenUpdateManyWithoutUserNestedInput
    savedCards?: SavedCardUpdateManyWithoutUserNestedInput
    passwordResetTokens?: PasswordResetTokenUpdateManyWithoutUserNestedInput
  }

  export type UserUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    externalUserId?: NullableIntFieldUpdateOperationsInput | number | null
    fullName?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    passwordHash?: NullableStringFieldUpdateOperationsInput | string | null
    userType?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    hasSeenGuide?: BoolFieldUpdateOperationsInput | boolean
    roleId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    companies?: UserCompanyUncheckedUpdateManyWithoutUserNestedInput
    refreshTokens?: RefreshTokenUncheckedUpdateManyWithoutUserNestedInput
    savedCards?: SavedCardUncheckedUpdateManyWithoutUserNestedInput
    passwordResetTokens?: PasswordResetTokenUncheckedUpdateManyWithoutUserNestedInput
  }

  export type UserCreateManyInput = {
    id?: number
    uuid?: string
    externalUserId?: number | null
    fullName: string
    email: string
    contactNumber?: string | null
    passwordHash?: string | null
    userType?: string
    isActive?: boolean
    hasSeenGuide?: boolean
    roleId?: number | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type UserUpdateManyMutationInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    externalUserId?: NullableIntFieldUpdateOperationsInput | number | null
    fullName?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    passwordHash?: NullableStringFieldUpdateOperationsInput | string | null
    userType?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    hasSeenGuide?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type UserUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    externalUserId?: NullableIntFieldUpdateOperationsInput | number | null
    fullName?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    passwordHash?: NullableStringFieldUpdateOperationsInput | string | null
    userType?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    hasSeenGuide?: BoolFieldUpdateOperationsInput | boolean
    roleId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type RefreshTokenCreateInput = {
    token: string
    expiresAt: Date | string
    isRevoked?: boolean
    createdAt?: Date | string
    user: UserCreateNestedOneWithoutRefreshTokensInput
  }

  export type RefreshTokenUncheckedCreateInput = {
    id?: number
    token: string
    userId: number
    expiresAt: Date | string
    isRevoked?: boolean
    createdAt?: Date | string
  }

  export type RefreshTokenUpdateInput = {
    token?: StringFieldUpdateOperationsInput | string
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isRevoked?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    user?: UserUpdateOneRequiredWithoutRefreshTokensNestedInput
  }

  export type RefreshTokenUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    token?: StringFieldUpdateOperationsInput | string
    userId?: IntFieldUpdateOperationsInput | number
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isRevoked?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type RefreshTokenCreateManyInput = {
    id?: number
    token: string
    userId: number
    expiresAt: Date | string
    isRevoked?: boolean
    createdAt?: Date | string
  }

  export type RefreshTokenUpdateManyMutationInput = {
    token?: StringFieldUpdateOperationsInput | string
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isRevoked?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type RefreshTokenUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    token?: StringFieldUpdateOperationsInput | string
    userId?: IntFieldUpdateOperationsInput | number
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isRevoked?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type EmailVerificationOtpCreateInput = {
    otpHash: string
    email: string
    expiresAt: Date | string
    isUsed?: boolean
    createdAt?: Date | string
  }

  export type EmailVerificationOtpUncheckedCreateInput = {
    id?: number
    otpHash: string
    email: string
    expiresAt: Date | string
    isUsed?: boolean
    createdAt?: Date | string
  }

  export type EmailVerificationOtpUpdateInput = {
    otpHash?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isUsed?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type EmailVerificationOtpUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    otpHash?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isUsed?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type EmailVerificationOtpCreateManyInput = {
    id?: number
    otpHash: string
    email: string
    expiresAt: Date | string
    isUsed?: boolean
    createdAt?: Date | string
  }

  export type EmailVerificationOtpUpdateManyMutationInput = {
    otpHash?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isUsed?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type EmailVerificationOtpUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    otpHash?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isUsed?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type PasswordResetTokenCreateInput = {
    tokenHash: string
    expiresAt: Date | string
    isUsed?: boolean
    createdAt?: Date | string
    user: UserCreateNestedOneWithoutPasswordResetTokensInput
  }

  export type PasswordResetTokenUncheckedCreateInput = {
    id?: number
    tokenHash: string
    userId: number
    expiresAt: Date | string
    isUsed?: boolean
    createdAt?: Date | string
  }

  export type PasswordResetTokenUpdateInput = {
    tokenHash?: StringFieldUpdateOperationsInput | string
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isUsed?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    user?: UserUpdateOneRequiredWithoutPasswordResetTokensNestedInput
  }

  export type PasswordResetTokenUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    tokenHash?: StringFieldUpdateOperationsInput | string
    userId?: IntFieldUpdateOperationsInput | number
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isUsed?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type PasswordResetTokenCreateManyInput = {
    id?: number
    tokenHash: string
    userId: number
    expiresAt: Date | string
    isUsed?: boolean
    createdAt?: Date | string
  }

  export type PasswordResetTokenUpdateManyMutationInput = {
    tokenHash?: StringFieldUpdateOperationsInput | string
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isUsed?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type PasswordResetTokenUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    tokenHash?: StringFieldUpdateOperationsInput | string
    userId?: IntFieldUpdateOperationsInput | number
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isUsed?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type UserCompanyCreateInput = {
    uuid?: string
    createdAt?: Date | string
    user: UserCreateNestedOneWithoutCompaniesInput
    company: CompanyCreateNestedOneWithoutUserCompaniesInput
  }

  export type UserCompanyUncheckedCreateInput = {
    id?: number
    uuid?: string
    userId: number
    companyId: number
    createdAt?: Date | string
  }

  export type UserCompanyUpdateInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    user?: UserUpdateOneRequiredWithoutCompaniesNestedInput
    company?: CompanyUpdateOneRequiredWithoutUserCompaniesNestedInput
  }

  export type UserCompanyUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    userId?: IntFieldUpdateOperationsInput | number
    companyId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type UserCompanyCreateManyInput = {
    id?: number
    uuid?: string
    userId: number
    companyId: number
    createdAt?: Date | string
  }

  export type UserCompanyUpdateManyMutationInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type UserCompanyUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    userId?: IntFieldUpdateOperationsInput | number
    companyId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type BillPaymentCreateInput = {
    uuid?: string
    amount: number
    paymentMethod: string
    status?: string
    orderId: string
    orderReference?: string | null
    errorCode?: string | null
    failureReason?: string | null
    paidUserId: number
    createdAt?: Date | string
    billAccount: BillAccountCreateNestedOneWithoutBillPaymentsInput
    savedCard?: SavedCardCreateNestedOneWithoutBillPaymentsInput
  }

  export type BillPaymentUncheckedCreateInput = {
    id?: number
    uuid?: string
    billingAccountId: number
    amount: number
    paymentMethod: string
    status?: string
    orderId: string
    orderReference?: string | null
    errorCode?: string | null
    failureReason?: string | null
    paidUserId: number
    savedCardId?: number | null
    createdAt?: Date | string
  }

  export type BillPaymentUpdateInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    amount?: FloatFieldUpdateOperationsInput | number
    paymentMethod?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    orderId?: StringFieldUpdateOperationsInput | string
    orderReference?: NullableStringFieldUpdateOperationsInput | string | null
    errorCode?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    paidUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    billAccount?: BillAccountUpdateOneRequiredWithoutBillPaymentsNestedInput
    savedCard?: SavedCardUpdateOneWithoutBillPaymentsNestedInput
  }

  export type BillPaymentUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    billingAccountId?: IntFieldUpdateOperationsInput | number
    amount?: FloatFieldUpdateOperationsInput | number
    paymentMethod?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    orderId?: StringFieldUpdateOperationsInput | string
    orderReference?: NullableStringFieldUpdateOperationsInput | string | null
    errorCode?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    paidUserId?: IntFieldUpdateOperationsInput | number
    savedCardId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type BillPaymentCreateManyInput = {
    id?: number
    uuid?: string
    billingAccountId: number
    amount: number
    paymentMethod: string
    status?: string
    orderId: string
    orderReference?: string | null
    errorCode?: string | null
    failureReason?: string | null
    paidUserId: number
    savedCardId?: number | null
    createdAt?: Date | string
  }

  export type BillPaymentUpdateManyMutationInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    amount?: FloatFieldUpdateOperationsInput | number
    paymentMethod?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    orderId?: StringFieldUpdateOperationsInput | string
    orderReference?: NullableStringFieldUpdateOperationsInput | string | null
    errorCode?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    paidUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type BillPaymentUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    billingAccountId?: IntFieldUpdateOperationsInput | number
    amount?: FloatFieldUpdateOperationsInput | number
    paymentMethod?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    orderId?: StringFieldUpdateOperationsInput | string
    orderReference?: NullableStringFieldUpdateOperationsInput | string | null
    errorCode?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    paidUserId?: IntFieldUpdateOperationsInput | number
    savedCardId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type BillAccountCreateInput = {
    uuid?: string
    accountNumber: string
    accountName: string
    outstandingBalance: number
    reservedBalance?: number
    accountStatus?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    company: CompanyCreateNestedOneWithoutBillAccountsInput
    billPayments?: BillPaymentCreateNestedManyWithoutBillAccountInput
    campaigns?: CampaignCreateNestedManyWithoutBillingAccountInput
    lowBalanceAlerts?: LowBalanceAlertCreateNestedManyWithoutBillAccountInput
  }

  export type BillAccountUncheckedCreateInput = {
    id?: number
    uuid?: string
    accountNumber: string
    accountName: string
    outstandingBalance: number
    reservedBalance?: number
    accountStatus?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    companyId: number
    billPayments?: BillPaymentUncheckedCreateNestedManyWithoutBillAccountInput
    campaigns?: CampaignUncheckedCreateNestedManyWithoutBillingAccountInput
    lowBalanceAlerts?: LowBalanceAlertUncheckedCreateNestedManyWithoutBillAccountInput
  }

  export type BillAccountUpdateInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    accountNumber?: StringFieldUpdateOperationsInput | string
    accountName?: StringFieldUpdateOperationsInput | string
    outstandingBalance?: FloatFieldUpdateOperationsInput | number
    reservedBalance?: FloatFieldUpdateOperationsInput | number
    accountStatus?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    company?: CompanyUpdateOneRequiredWithoutBillAccountsNestedInput
    billPayments?: BillPaymentUpdateManyWithoutBillAccountNestedInput
    campaigns?: CampaignUpdateManyWithoutBillingAccountNestedInput
    lowBalanceAlerts?: LowBalanceAlertUpdateManyWithoutBillAccountNestedInput
  }

  export type BillAccountUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    accountNumber?: StringFieldUpdateOperationsInput | string
    accountName?: StringFieldUpdateOperationsInput | string
    outstandingBalance?: FloatFieldUpdateOperationsInput | number
    reservedBalance?: FloatFieldUpdateOperationsInput | number
    accountStatus?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    companyId?: IntFieldUpdateOperationsInput | number
    billPayments?: BillPaymentUncheckedUpdateManyWithoutBillAccountNestedInput
    campaigns?: CampaignUncheckedUpdateManyWithoutBillingAccountNestedInput
    lowBalanceAlerts?: LowBalanceAlertUncheckedUpdateManyWithoutBillAccountNestedInput
  }

  export type BillAccountCreateManyInput = {
    id?: number
    uuid?: string
    accountNumber: string
    accountName: string
    outstandingBalance: number
    reservedBalance?: number
    accountStatus?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    companyId: number
  }

  export type BillAccountUpdateManyMutationInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    accountNumber?: StringFieldUpdateOperationsInput | string
    accountName?: StringFieldUpdateOperationsInput | string
    outstandingBalance?: FloatFieldUpdateOperationsInput | number
    reservedBalance?: FloatFieldUpdateOperationsInput | number
    accountStatus?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type BillAccountUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    accountNumber?: StringFieldUpdateOperationsInput | string
    accountName?: StringFieldUpdateOperationsInput | string
    outstandingBalance?: FloatFieldUpdateOperationsInput | number
    reservedBalance?: FloatFieldUpdateOperationsInput | number
    accountStatus?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    companyId?: IntFieldUpdateOperationsInput | number
  }

  export type SavedCardCreateInput = {
    uuid?: string
    cardToken: string
    cardFirst6: string
    cardLast4: string
    cardHolderName: string
    customerEmail: string
    isActive?: boolean
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    user: UserCreateNestedOneWithoutSavedCardsInput
    billPayments?: BillPaymentCreateNestedManyWithoutSavedCardInput
  }

  export type SavedCardUncheckedCreateInput = {
    id?: number
    uuid?: string
    userId: number
    cardToken: string
    cardFirst6: string
    cardLast4: string
    cardHolderName: string
    customerEmail: string
    isActive?: boolean
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    billPayments?: BillPaymentUncheckedCreateNestedManyWithoutSavedCardInput
  }

  export type SavedCardUpdateInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    cardToken?: StringFieldUpdateOperationsInput | string
    cardFirst6?: StringFieldUpdateOperationsInput | string
    cardLast4?: StringFieldUpdateOperationsInput | string
    cardHolderName?: StringFieldUpdateOperationsInput | string
    customerEmail?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    user?: UserUpdateOneRequiredWithoutSavedCardsNestedInput
    billPayments?: BillPaymentUpdateManyWithoutSavedCardNestedInput
  }

  export type SavedCardUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    userId?: IntFieldUpdateOperationsInput | number
    cardToken?: StringFieldUpdateOperationsInput | string
    cardFirst6?: StringFieldUpdateOperationsInput | string
    cardLast4?: StringFieldUpdateOperationsInput | string
    cardHolderName?: StringFieldUpdateOperationsInput | string
    customerEmail?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    billPayments?: BillPaymentUncheckedUpdateManyWithoutSavedCardNestedInput
  }

  export type SavedCardCreateManyInput = {
    id?: number
    uuid?: string
    userId: number
    cardToken: string
    cardFirst6: string
    cardLast4: string
    cardHolderName: string
    customerEmail: string
    isActive?: boolean
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type SavedCardUpdateManyMutationInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    cardToken?: StringFieldUpdateOperationsInput | string
    cardFirst6?: StringFieldUpdateOperationsInput | string
    cardLast4?: StringFieldUpdateOperationsInput | string
    cardHolderName?: StringFieldUpdateOperationsInput | string
    customerEmail?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type SavedCardUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    userId?: IntFieldUpdateOperationsInput | number
    cardToken?: StringFieldUpdateOperationsInput | string
    cardFirst6?: StringFieldUpdateOperationsInput | string
    cardLast4?: StringFieldUpdateOperationsInput | string
    cardHolderName?: StringFieldUpdateOperationsInput | string
    customerEmail?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type LowBalanceAlertCreateInput = {
    uuid?: string
    userId: number
    thresholdLevel?: number
    isActive?: boolean
    balanceAtAlert: number
    chargedAmount?: number
    sentTo: string
    maskUsed: string
    serverRef?: number | null
    status?: string
    failureReason?: string | null
    createdAt?: Date | string
    billAccount: BillAccountCreateNestedOneWithoutLowBalanceAlertsInput
  }

  export type LowBalanceAlertUncheckedCreateInput = {
    id?: number
    uuid?: string
    billingAccountId: number
    userId: number
    thresholdLevel?: number
    isActive?: boolean
    balanceAtAlert: number
    chargedAmount?: number
    sentTo: string
    maskUsed: string
    serverRef?: number | null
    status?: string
    failureReason?: string | null
    createdAt?: Date | string
  }

  export type LowBalanceAlertUpdateInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    userId?: IntFieldUpdateOperationsInput | number
    thresholdLevel?: IntFieldUpdateOperationsInput | number
    isActive?: BoolFieldUpdateOperationsInput | boolean
    balanceAtAlert?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    sentTo?: StringFieldUpdateOperationsInput | string
    maskUsed?: StringFieldUpdateOperationsInput | string
    serverRef?: NullableIntFieldUpdateOperationsInput | number | null
    status?: StringFieldUpdateOperationsInput | string
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    billAccount?: BillAccountUpdateOneRequiredWithoutLowBalanceAlertsNestedInput
  }

  export type LowBalanceAlertUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    billingAccountId?: IntFieldUpdateOperationsInput | number
    userId?: IntFieldUpdateOperationsInput | number
    thresholdLevel?: IntFieldUpdateOperationsInput | number
    isActive?: BoolFieldUpdateOperationsInput | boolean
    balanceAtAlert?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    sentTo?: StringFieldUpdateOperationsInput | string
    maskUsed?: StringFieldUpdateOperationsInput | string
    serverRef?: NullableIntFieldUpdateOperationsInput | number | null
    status?: StringFieldUpdateOperationsInput | string
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type LowBalanceAlertCreateManyInput = {
    id?: number
    uuid?: string
    billingAccountId: number
    userId: number
    thresholdLevel?: number
    isActive?: boolean
    balanceAtAlert: number
    chargedAmount?: number
    sentTo: string
    maskUsed: string
    serverRef?: number | null
    status?: string
    failureReason?: string | null
    createdAt?: Date | string
  }

  export type LowBalanceAlertUpdateManyMutationInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    userId?: IntFieldUpdateOperationsInput | number
    thresholdLevel?: IntFieldUpdateOperationsInput | number
    isActive?: BoolFieldUpdateOperationsInput | boolean
    balanceAtAlert?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    sentTo?: StringFieldUpdateOperationsInput | string
    maskUsed?: StringFieldUpdateOperationsInput | string
    serverRef?: NullableIntFieldUpdateOperationsInput | number | null
    status?: StringFieldUpdateOperationsInput | string
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type LowBalanceAlertUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    billingAccountId?: IntFieldUpdateOperationsInput | number
    userId?: IntFieldUpdateOperationsInput | number
    thresholdLevel?: IntFieldUpdateOperationsInput | number
    isActive?: BoolFieldUpdateOperationsInput | boolean
    balanceAtAlert?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    sentTo?: StringFieldUpdateOperationsInput | string
    maskUsed?: StringFieldUpdateOperationsInput | string
    serverRef?: NullableIntFieldUpdateOperationsInput | number | null
    status?: StringFieldUpdateOperationsInput | string
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type DepartmentCreateInput = {
    uuid?: string
    name: string
    externalCompanyId?: number | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    is_enabled?: boolean
    callBackUrl?: string | null
    Signature?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    company: CompanyCreateNestedOneWithoutDepartmentsInput
    smsTemplates?: SMS_TemplateCreateNestedManyWithoutDepartmentInput
    senderMasks?: DepartmentSenderMaskCreateNestedManyWithoutDepartmentInput
  }

  export type DepartmentUncheckedCreateInput = {
    id?: number
    uuid?: string
    companyId: number
    name: string
    externalCompanyId?: number | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    is_enabled?: boolean
    callBackUrl?: string | null
    Signature?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    smsTemplates?: SMS_TemplateUncheckedCreateNestedManyWithoutDepartmentInput
    senderMasks?: DepartmentSenderMaskUncheckedCreateNestedManyWithoutDepartmentInput
  }

  export type DepartmentUpdateInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    is_enabled?: BoolFieldUpdateOperationsInput | boolean
    callBackUrl?: NullableStringFieldUpdateOperationsInput | string | null
    Signature?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    company?: CompanyUpdateOneRequiredWithoutDepartmentsNestedInput
    smsTemplates?: SMS_TemplateUpdateManyWithoutDepartmentNestedInput
    senderMasks?: DepartmentSenderMaskUpdateManyWithoutDepartmentNestedInput
  }

  export type DepartmentUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    companyId?: IntFieldUpdateOperationsInput | number
    name?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    is_enabled?: BoolFieldUpdateOperationsInput | boolean
    callBackUrl?: NullableStringFieldUpdateOperationsInput | string | null
    Signature?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    smsTemplates?: SMS_TemplateUncheckedUpdateManyWithoutDepartmentNestedInput
    senderMasks?: DepartmentSenderMaskUncheckedUpdateManyWithoutDepartmentNestedInput
  }

  export type DepartmentCreateManyInput = {
    id?: number
    uuid?: string
    companyId: number
    name: string
    externalCompanyId?: number | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    is_enabled?: boolean
    callBackUrl?: string | null
    Signature?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type DepartmentUpdateManyMutationInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    is_enabled?: BoolFieldUpdateOperationsInput | boolean
    callBackUrl?: NullableStringFieldUpdateOperationsInput | string | null
    Signature?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type DepartmentUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    companyId?: IntFieldUpdateOperationsInput | number
    name?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    is_enabled?: BoolFieldUpdateOperationsInput | boolean
    callBackUrl?: NullableStringFieldUpdateOperationsInput | string | null
    Signature?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type SMS_TemplateCreateInput = {
    uuid?: string
    name: string
    text_content: string
    smsType?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    department: DepartmentCreateNestedOneWithoutSmsTemplatesInput
    campaigns?: CampaignCreateNestedManyWithoutTemplateInput
  }

  export type SMS_TemplateUncheckedCreateInput = {
    id?: number
    uuid?: string
    deptId: number
    name: string
    text_content: string
    smsType?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    campaigns?: CampaignUncheckedCreateNestedManyWithoutTemplateInput
  }

  export type SMS_TemplateUpdateInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    text_content?: StringFieldUpdateOperationsInput | string
    smsType?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    department?: DepartmentUpdateOneRequiredWithoutSmsTemplatesNestedInput
    campaigns?: CampaignUpdateManyWithoutTemplateNestedInput
  }

  export type SMS_TemplateUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    deptId?: IntFieldUpdateOperationsInput | number
    name?: StringFieldUpdateOperationsInput | string
    text_content?: StringFieldUpdateOperationsInput | string
    smsType?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    campaigns?: CampaignUncheckedUpdateManyWithoutTemplateNestedInput
  }

  export type SMS_TemplateCreateManyInput = {
    id?: number
    uuid?: string
    deptId: number
    name: string
    text_content: string
    smsType?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type SMS_TemplateUpdateManyMutationInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    text_content?: StringFieldUpdateOperationsInput | string
    smsType?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type SMS_TemplateUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    deptId?: IntFieldUpdateOperationsInput | number
    name?: StringFieldUpdateOperationsInput | string
    text_content?: StringFieldUpdateOperationsInput | string
    smsType?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type SenderMaskCreateInput = {
    uuid?: string
    maskName: string
    purpose: string
    is_default?: boolean
    status?: string
    maskType?: string | null
    isExternal?: boolean
    emailSent?: boolean
    emailSentAt?: Date | string | null
    approvalNotificationSent?: boolean
    approvalNotificationSentAt?: Date | string | null
    reservedAmount?: number
    createdByUserId: number
    createdAt?: Date | string
    updatedAt?: Date | string
    company?: CompanyCreateNestedOneWithoutSenderMasksInput
    campaigns?: CampaignCreateNestedManyWithoutSenderMaskInput
    departments?: DepartmentSenderMaskCreateNestedManyWithoutSenderMaskInput
  }

  export type SenderMaskUncheckedCreateInput = {
    id?: number
    uuid?: string
    maskName: string
    purpose: string
    is_default?: boolean
    status?: string
    maskType?: string | null
    isExternal?: boolean
    emailSent?: boolean
    emailSentAt?: Date | string | null
    approvalNotificationSent?: boolean
    approvalNotificationSentAt?: Date | string | null
    reservedAmount?: number
    createdByUserId: number
    companyId?: number | null
    createdAt?: Date | string
    updatedAt?: Date | string
    campaigns?: CampaignUncheckedCreateNestedManyWithoutSenderMaskInput
    departments?: DepartmentSenderMaskUncheckedCreateNestedManyWithoutSenderMaskInput
  }

  export type SenderMaskUpdateInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    purpose?: StringFieldUpdateOperationsInput | string
    is_default?: BoolFieldUpdateOperationsInput | boolean
    status?: StringFieldUpdateOperationsInput | string
    maskType?: NullableStringFieldUpdateOperationsInput | string | null
    isExternal?: BoolFieldUpdateOperationsInput | boolean
    emailSent?: BoolFieldUpdateOperationsInput | boolean
    emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    approvalNotificationSent?: BoolFieldUpdateOperationsInput | boolean
    approvalNotificationSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    createdByUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    company?: CompanyUpdateOneWithoutSenderMasksNestedInput
    campaigns?: CampaignUpdateManyWithoutSenderMaskNestedInput
    departments?: DepartmentSenderMaskUpdateManyWithoutSenderMaskNestedInput
  }

  export type SenderMaskUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    purpose?: StringFieldUpdateOperationsInput | string
    is_default?: BoolFieldUpdateOperationsInput | boolean
    status?: StringFieldUpdateOperationsInput | string
    maskType?: NullableStringFieldUpdateOperationsInput | string | null
    isExternal?: BoolFieldUpdateOperationsInput | boolean
    emailSent?: BoolFieldUpdateOperationsInput | boolean
    emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    approvalNotificationSent?: BoolFieldUpdateOperationsInput | boolean
    approvalNotificationSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    createdByUserId?: IntFieldUpdateOperationsInput | number
    companyId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    campaigns?: CampaignUncheckedUpdateManyWithoutSenderMaskNestedInput
    departments?: DepartmentSenderMaskUncheckedUpdateManyWithoutSenderMaskNestedInput
  }

  export type SenderMaskCreateManyInput = {
    id?: number
    uuid?: string
    maskName: string
    purpose: string
    is_default?: boolean
    status?: string
    maskType?: string | null
    isExternal?: boolean
    emailSent?: boolean
    emailSentAt?: Date | string | null
    approvalNotificationSent?: boolean
    approvalNotificationSentAt?: Date | string | null
    reservedAmount?: number
    createdByUserId: number
    companyId?: number | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type SenderMaskUpdateManyMutationInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    purpose?: StringFieldUpdateOperationsInput | string
    is_default?: BoolFieldUpdateOperationsInput | boolean
    status?: StringFieldUpdateOperationsInput | string
    maskType?: NullableStringFieldUpdateOperationsInput | string | null
    isExternal?: BoolFieldUpdateOperationsInput | boolean
    emailSent?: BoolFieldUpdateOperationsInput | boolean
    emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    approvalNotificationSent?: BoolFieldUpdateOperationsInput | boolean
    approvalNotificationSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    createdByUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type SenderMaskUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    purpose?: StringFieldUpdateOperationsInput | string
    is_default?: BoolFieldUpdateOperationsInput | boolean
    status?: StringFieldUpdateOperationsInput | string
    maskType?: NullableStringFieldUpdateOperationsInput | string | null
    isExternal?: BoolFieldUpdateOperationsInput | boolean
    emailSent?: BoolFieldUpdateOperationsInput | boolean
    emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    approvalNotificationSent?: BoolFieldUpdateOperationsInput | boolean
    approvalNotificationSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    createdByUserId?: IntFieldUpdateOperationsInput | number
    companyId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type DepartmentSenderMaskCreateInput = {
    uuid?: string
    assignedAt?: Date | string
    deletedAt?: Date | string | null
    senderMask: SenderMaskCreateNestedOneWithoutDepartmentsInput
    department: DepartmentCreateNestedOneWithoutSenderMasksInput
  }

  export type DepartmentSenderMaskUncheckedCreateInput = {
    id?: number
    uuid?: string
    senderMaskId: number
    deptId: number
    assignedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type DepartmentSenderMaskUpdateInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    assignedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    senderMask?: SenderMaskUpdateOneRequiredWithoutDepartmentsNestedInput
    department?: DepartmentUpdateOneRequiredWithoutSenderMasksNestedInput
  }

  export type DepartmentSenderMaskUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    senderMaskId?: IntFieldUpdateOperationsInput | number
    deptId?: IntFieldUpdateOperationsInput | number
    assignedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type DepartmentSenderMaskCreateManyInput = {
    id?: number
    uuid?: string
    senderMaskId: number
    deptId: number
    assignedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type DepartmentSenderMaskUpdateManyMutationInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    assignedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type DepartmentSenderMaskUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    senderMaskId?: IntFieldUpdateOperationsInput | number
    deptId?: IntFieldUpdateOperationsInput | number
    assignedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type ContactParamSettingsCreateInput = {
    param1Label?: string | null
    param2Label?: string | null
    param3Label?: string | null
    param4Label?: string | null
    param5Label?: string | null
    param6Label?: string | null
    param7Label?: string | null
    param8Label?: string | null
    param9Label?: string | null
    param10Label?: string | null
    updatedAt?: Date | string
    company: CompanyCreateNestedOneWithoutContactParamSettingsInput
  }

  export type ContactParamSettingsUncheckedCreateInput = {
    id?: number
    companyId: number
    param1Label?: string | null
    param2Label?: string | null
    param3Label?: string | null
    param4Label?: string | null
    param5Label?: string | null
    param6Label?: string | null
    param7Label?: string | null
    param8Label?: string | null
    param9Label?: string | null
    param10Label?: string | null
    updatedAt?: Date | string
  }

  export type ContactParamSettingsUpdateInput = {
    param1Label?: NullableStringFieldUpdateOperationsInput | string | null
    param2Label?: NullableStringFieldUpdateOperationsInput | string | null
    param3Label?: NullableStringFieldUpdateOperationsInput | string | null
    param4Label?: NullableStringFieldUpdateOperationsInput | string | null
    param5Label?: NullableStringFieldUpdateOperationsInput | string | null
    param6Label?: NullableStringFieldUpdateOperationsInput | string | null
    param7Label?: NullableStringFieldUpdateOperationsInput | string | null
    param8Label?: NullableStringFieldUpdateOperationsInput | string | null
    param9Label?: NullableStringFieldUpdateOperationsInput | string | null
    param10Label?: NullableStringFieldUpdateOperationsInput | string | null
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    company?: CompanyUpdateOneRequiredWithoutContactParamSettingsNestedInput
  }

  export type ContactParamSettingsUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    companyId?: IntFieldUpdateOperationsInput | number
    param1Label?: NullableStringFieldUpdateOperationsInput | string | null
    param2Label?: NullableStringFieldUpdateOperationsInput | string | null
    param3Label?: NullableStringFieldUpdateOperationsInput | string | null
    param4Label?: NullableStringFieldUpdateOperationsInput | string | null
    param5Label?: NullableStringFieldUpdateOperationsInput | string | null
    param6Label?: NullableStringFieldUpdateOperationsInput | string | null
    param7Label?: NullableStringFieldUpdateOperationsInput | string | null
    param8Label?: NullableStringFieldUpdateOperationsInput | string | null
    param9Label?: NullableStringFieldUpdateOperationsInput | string | null
    param10Label?: NullableStringFieldUpdateOperationsInput | string | null
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type ContactParamSettingsCreateManyInput = {
    id?: number
    companyId: number
    param1Label?: string | null
    param2Label?: string | null
    param3Label?: string | null
    param4Label?: string | null
    param5Label?: string | null
    param6Label?: string | null
    param7Label?: string | null
    param8Label?: string | null
    param9Label?: string | null
    param10Label?: string | null
    updatedAt?: Date | string
  }

  export type ContactParamSettingsUpdateManyMutationInput = {
    param1Label?: NullableStringFieldUpdateOperationsInput | string | null
    param2Label?: NullableStringFieldUpdateOperationsInput | string | null
    param3Label?: NullableStringFieldUpdateOperationsInput | string | null
    param4Label?: NullableStringFieldUpdateOperationsInput | string | null
    param5Label?: NullableStringFieldUpdateOperationsInput | string | null
    param6Label?: NullableStringFieldUpdateOperationsInput | string | null
    param7Label?: NullableStringFieldUpdateOperationsInput | string | null
    param8Label?: NullableStringFieldUpdateOperationsInput | string | null
    param9Label?: NullableStringFieldUpdateOperationsInput | string | null
    param10Label?: NullableStringFieldUpdateOperationsInput | string | null
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type ContactParamSettingsUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    companyId?: IntFieldUpdateOperationsInput | number
    param1Label?: NullableStringFieldUpdateOperationsInput | string | null
    param2Label?: NullableStringFieldUpdateOperationsInput | string | null
    param3Label?: NullableStringFieldUpdateOperationsInput | string | null
    param4Label?: NullableStringFieldUpdateOperationsInput | string | null
    param5Label?: NullableStringFieldUpdateOperationsInput | string | null
    param6Label?: NullableStringFieldUpdateOperationsInput | string | null
    param7Label?: NullableStringFieldUpdateOperationsInput | string | null
    param8Label?: NullableStringFieldUpdateOperationsInput | string | null
    param9Label?: NullableStringFieldUpdateOperationsInput | string | null
    param10Label?: NullableStringFieldUpdateOperationsInput | string | null
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type CampaignCreateInput = {
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    billingAccount: BillAccountCreateNestedOneWithoutCampaignsInput
    senderMask: SenderMaskCreateNestedOneWithoutCampaignsInput
    mobileNumberList?: MobileNumberListCreateNestedOneWithoutCampaignsInput
    template?: SMS_TemplateCreateNestedOneWithoutCampaignsInput
    smsReports?: SMS_ReportCreateNestedManyWithoutCampaignInput
    bulkServerRefs?: CampaignServerRefCreateNestedManyWithoutCampaignInput
    recipients?: CampaignRecipientCreateNestedManyWithoutCampaignInput
  }

  export type CampaignUncheckedCreateInput = {
    id?: number
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    billingAccountId: number
    senderMaskId: number
    mobileNumberListId?: bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: number | null
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    smsReports?: SMS_ReportUncheckedCreateNestedManyWithoutCampaignInput
    bulkServerRefs?: CampaignServerRefUncheckedCreateNestedManyWithoutCampaignInput
    recipients?: CampaignRecipientUncheckedCreateNestedManyWithoutCampaignInput
  }

  export type CampaignUpdateInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    billingAccount?: BillAccountUpdateOneRequiredWithoutCampaignsNestedInput
    senderMask?: SenderMaskUpdateOneRequiredWithoutCampaignsNestedInput
    mobileNumberList?: MobileNumberListUpdateOneWithoutCampaignsNestedInput
    template?: SMS_TemplateUpdateOneWithoutCampaignsNestedInput
    smsReports?: SMS_ReportUpdateManyWithoutCampaignNestedInput
    bulkServerRefs?: CampaignServerRefUpdateManyWithoutCampaignNestedInput
    recipients?: CampaignRecipientUpdateManyWithoutCampaignNestedInput
  }

  export type CampaignUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    billingAccountId?: IntFieldUpdateOperationsInput | number
    senderMaskId?: IntFieldUpdateOperationsInput | number
    mobileNumberListId?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: NullableIntFieldUpdateOperationsInput | number | null
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    smsReports?: SMS_ReportUncheckedUpdateManyWithoutCampaignNestedInput
    bulkServerRefs?: CampaignServerRefUncheckedUpdateManyWithoutCampaignNestedInput
    recipients?: CampaignRecipientUncheckedUpdateManyWithoutCampaignNestedInput
  }

  export type CampaignCreateManyInput = {
    id?: number
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    billingAccountId: number
    senderMaskId: number
    mobileNumberListId?: bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: number | null
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type CampaignUpdateManyMutationInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type CampaignUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    billingAccountId?: IntFieldUpdateOperationsInput | number
    senderMaskId?: IntFieldUpdateOperationsInput | number
    mobileNumberListId?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: NullableIntFieldUpdateOperationsInput | number | null
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type CampaignServerRefCreateInput = {
    serverRef: bigint | number
    campaign: CampaignCreateNestedOneWithoutBulkServerRefsInput
  }

  export type CampaignServerRefUncheckedCreateInput = {
    serverRef: bigint | number
    campaignId: number
  }

  export type CampaignServerRefUpdateInput = {
    serverRef?: BigIntFieldUpdateOperationsInput | bigint | number
    campaign?: CampaignUpdateOneRequiredWithoutBulkServerRefsNestedInput
  }

  export type CampaignServerRefUncheckedUpdateInput = {
    serverRef?: BigIntFieldUpdateOperationsInput | bigint | number
    campaignId?: IntFieldUpdateOperationsInput | number
  }

  export type CampaignServerRefCreateManyInput = {
    serverRef: bigint | number
    campaignId: number
  }

  export type CampaignServerRefUpdateManyMutationInput = {
    serverRef?: BigIntFieldUpdateOperationsInput | bigint | number
  }

  export type CampaignServerRefUncheckedUpdateManyInput = {
    serverRef?: BigIntFieldUpdateOperationsInput | bigint | number
    campaignId?: IntFieldUpdateOperationsInput | number
  }

  export type CampaignRecipientCreateInput = {
    id?: bigint | number
    phoneNumber: string
    name?: string | null
    param1?: string | null
    param2?: string | null
    param3?: string | null
    param4?: string | null
    param5?: string | null
    param6?: string | null
    param7?: string | null
    param8?: string | null
    param9?: string | null
    param10?: string | null
    campaign: CampaignCreateNestedOneWithoutRecipientsInput
  }

  export type CampaignRecipientUncheckedCreateInput = {
    id?: bigint | number
    campaignId: number
    phoneNumber: string
    name?: string | null
    param1?: string | null
    param2?: string | null
    param3?: string | null
    param4?: string | null
    param5?: string | null
    param6?: string | null
    param7?: string | null
    param8?: string | null
    param9?: string | null
    param10?: string | null
  }

  export type CampaignRecipientUpdateInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    phoneNumber?: StringFieldUpdateOperationsInput | string
    name?: NullableStringFieldUpdateOperationsInput | string | null
    param1?: NullableStringFieldUpdateOperationsInput | string | null
    param2?: NullableStringFieldUpdateOperationsInput | string | null
    param3?: NullableStringFieldUpdateOperationsInput | string | null
    param4?: NullableStringFieldUpdateOperationsInput | string | null
    param5?: NullableStringFieldUpdateOperationsInput | string | null
    param6?: NullableStringFieldUpdateOperationsInput | string | null
    param7?: NullableStringFieldUpdateOperationsInput | string | null
    param8?: NullableStringFieldUpdateOperationsInput | string | null
    param9?: NullableStringFieldUpdateOperationsInput | string | null
    param10?: NullableStringFieldUpdateOperationsInput | string | null
    campaign?: CampaignUpdateOneRequiredWithoutRecipientsNestedInput
  }

  export type CampaignRecipientUncheckedUpdateInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    campaignId?: IntFieldUpdateOperationsInput | number
    phoneNumber?: StringFieldUpdateOperationsInput | string
    name?: NullableStringFieldUpdateOperationsInput | string | null
    param1?: NullableStringFieldUpdateOperationsInput | string | null
    param2?: NullableStringFieldUpdateOperationsInput | string | null
    param3?: NullableStringFieldUpdateOperationsInput | string | null
    param4?: NullableStringFieldUpdateOperationsInput | string | null
    param5?: NullableStringFieldUpdateOperationsInput | string | null
    param6?: NullableStringFieldUpdateOperationsInput | string | null
    param7?: NullableStringFieldUpdateOperationsInput | string | null
    param8?: NullableStringFieldUpdateOperationsInput | string | null
    param9?: NullableStringFieldUpdateOperationsInput | string | null
    param10?: NullableStringFieldUpdateOperationsInput | string | null
  }

  export type CampaignRecipientCreateManyInput = {
    id?: bigint | number
    campaignId: number
    phoneNumber: string
    name?: string | null
    param1?: string | null
    param2?: string | null
    param3?: string | null
    param4?: string | null
    param5?: string | null
    param6?: string | null
    param7?: string | null
    param8?: string | null
    param9?: string | null
    param10?: string | null
  }

  export type CampaignRecipientUpdateManyMutationInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    phoneNumber?: StringFieldUpdateOperationsInput | string
    name?: NullableStringFieldUpdateOperationsInput | string | null
    param1?: NullableStringFieldUpdateOperationsInput | string | null
    param2?: NullableStringFieldUpdateOperationsInput | string | null
    param3?: NullableStringFieldUpdateOperationsInput | string | null
    param4?: NullableStringFieldUpdateOperationsInput | string | null
    param5?: NullableStringFieldUpdateOperationsInput | string | null
    param6?: NullableStringFieldUpdateOperationsInput | string | null
    param7?: NullableStringFieldUpdateOperationsInput | string | null
    param8?: NullableStringFieldUpdateOperationsInput | string | null
    param9?: NullableStringFieldUpdateOperationsInput | string | null
    param10?: NullableStringFieldUpdateOperationsInput | string | null
  }

  export type CampaignRecipientUncheckedUpdateManyInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    campaignId?: IntFieldUpdateOperationsInput | number
    phoneNumber?: StringFieldUpdateOperationsInput | string
    name?: NullableStringFieldUpdateOperationsInput | string | null
    param1?: NullableStringFieldUpdateOperationsInput | string | null
    param2?: NullableStringFieldUpdateOperationsInput | string | null
    param3?: NullableStringFieldUpdateOperationsInput | string | null
    param4?: NullableStringFieldUpdateOperationsInput | string | null
    param5?: NullableStringFieldUpdateOperationsInput | string | null
    param6?: NullableStringFieldUpdateOperationsInput | string | null
    param7?: NullableStringFieldUpdateOperationsInput | string | null
    param8?: NullableStringFieldUpdateOperationsInput | string | null
    param9?: NullableStringFieldUpdateOperationsInput | string | null
    param10?: NullableStringFieldUpdateOperationsInput | string | null
  }

  export type MobileNumberListCreateInput = {
    id?: bigint | number
    uuid?: string
    listName: string
    listType?: string
    createdByUserId: number
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    company?: CompanyCreateNestedOneWithoutMobileNumberListsInput
    campaigns?: CampaignCreateNestedManyWithoutMobileNumberListInput
    mobileNumbers?: MobileNumberCreateNestedManyWithoutListInput
  }

  export type MobileNumberListUncheckedCreateInput = {
    id?: bigint | number
    uuid?: string
    listName: string
    listType?: string
    createdByUserId: number
    companyId?: number | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    campaigns?: CampaignUncheckedCreateNestedManyWithoutMobileNumberListInput
    mobileNumbers?: MobileNumberUncheckedCreateNestedManyWithoutListInput
  }

  export type MobileNumberListUpdateInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    listName?: StringFieldUpdateOperationsInput | string
    listType?: StringFieldUpdateOperationsInput | string
    createdByUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    company?: CompanyUpdateOneWithoutMobileNumberListsNestedInput
    campaigns?: CampaignUpdateManyWithoutMobileNumberListNestedInput
    mobileNumbers?: MobileNumberUpdateManyWithoutListNestedInput
  }

  export type MobileNumberListUncheckedUpdateInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    listName?: StringFieldUpdateOperationsInput | string
    listType?: StringFieldUpdateOperationsInput | string
    createdByUserId?: IntFieldUpdateOperationsInput | number
    companyId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    campaigns?: CampaignUncheckedUpdateManyWithoutMobileNumberListNestedInput
    mobileNumbers?: MobileNumberUncheckedUpdateManyWithoutListNestedInput
  }

  export type MobileNumberListCreateManyInput = {
    id?: bigint | number
    uuid?: string
    listName: string
    listType?: string
    createdByUserId: number
    companyId?: number | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type MobileNumberListUpdateManyMutationInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    listName?: StringFieldUpdateOperationsInput | string
    listType?: StringFieldUpdateOperationsInput | string
    createdByUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type MobileNumberListUncheckedUpdateManyInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    listName?: StringFieldUpdateOperationsInput | string
    listType?: StringFieldUpdateOperationsInput | string
    createdByUserId?: IntFieldUpdateOperationsInput | number
    companyId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type MobileNumberCreateInput = {
    id?: bigint | number
    uuid?: string
    phoneNumber: string
    type: string
    is_blocked?: boolean
    deletedAt?: Date | string | null
    name?: string | null
    param1?: string | null
    param2?: string | null
    param3?: string | null
    param4?: string | null
    param5?: string | null
    param6?: string | null
    param7?: string | null
    param8?: string | null
    param9?: string | null
    param10?: string | null
    list?: MobileNumberListCreateNestedOneWithoutMobileNumbersInput
  }

  export type MobileNumberUncheckedCreateInput = {
    id?: bigint | number
    uuid?: string
    phoneNumber: string
    type: string
    is_blocked?: boolean
    numberListId?: bigint | number | null
    deletedAt?: Date | string | null
    name?: string | null
    param1?: string | null
    param2?: string | null
    param3?: string | null
    param4?: string | null
    param5?: string | null
    param6?: string | null
    param7?: string | null
    param8?: string | null
    param9?: string | null
    param10?: string | null
  }

  export type MobileNumberUpdateInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    phoneNumber?: StringFieldUpdateOperationsInput | string
    type?: StringFieldUpdateOperationsInput | string
    is_blocked?: BoolFieldUpdateOperationsInput | boolean
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    name?: NullableStringFieldUpdateOperationsInput | string | null
    param1?: NullableStringFieldUpdateOperationsInput | string | null
    param2?: NullableStringFieldUpdateOperationsInput | string | null
    param3?: NullableStringFieldUpdateOperationsInput | string | null
    param4?: NullableStringFieldUpdateOperationsInput | string | null
    param5?: NullableStringFieldUpdateOperationsInput | string | null
    param6?: NullableStringFieldUpdateOperationsInput | string | null
    param7?: NullableStringFieldUpdateOperationsInput | string | null
    param8?: NullableStringFieldUpdateOperationsInput | string | null
    param9?: NullableStringFieldUpdateOperationsInput | string | null
    param10?: NullableStringFieldUpdateOperationsInput | string | null
    list?: MobileNumberListUpdateOneWithoutMobileNumbersNestedInput
  }

  export type MobileNumberUncheckedUpdateInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    phoneNumber?: StringFieldUpdateOperationsInput | string
    type?: StringFieldUpdateOperationsInput | string
    is_blocked?: BoolFieldUpdateOperationsInput | boolean
    numberListId?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    name?: NullableStringFieldUpdateOperationsInput | string | null
    param1?: NullableStringFieldUpdateOperationsInput | string | null
    param2?: NullableStringFieldUpdateOperationsInput | string | null
    param3?: NullableStringFieldUpdateOperationsInput | string | null
    param4?: NullableStringFieldUpdateOperationsInput | string | null
    param5?: NullableStringFieldUpdateOperationsInput | string | null
    param6?: NullableStringFieldUpdateOperationsInput | string | null
    param7?: NullableStringFieldUpdateOperationsInput | string | null
    param8?: NullableStringFieldUpdateOperationsInput | string | null
    param9?: NullableStringFieldUpdateOperationsInput | string | null
    param10?: NullableStringFieldUpdateOperationsInput | string | null
  }

  export type MobileNumberCreateManyInput = {
    id?: bigint | number
    uuid?: string
    phoneNumber: string
    type: string
    is_blocked?: boolean
    numberListId?: bigint | number | null
    deletedAt?: Date | string | null
    name?: string | null
    param1?: string | null
    param2?: string | null
    param3?: string | null
    param4?: string | null
    param5?: string | null
    param6?: string | null
    param7?: string | null
    param8?: string | null
    param9?: string | null
    param10?: string | null
  }

  export type MobileNumberUpdateManyMutationInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    phoneNumber?: StringFieldUpdateOperationsInput | string
    type?: StringFieldUpdateOperationsInput | string
    is_blocked?: BoolFieldUpdateOperationsInput | boolean
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    name?: NullableStringFieldUpdateOperationsInput | string | null
    param1?: NullableStringFieldUpdateOperationsInput | string | null
    param2?: NullableStringFieldUpdateOperationsInput | string | null
    param3?: NullableStringFieldUpdateOperationsInput | string | null
    param4?: NullableStringFieldUpdateOperationsInput | string | null
    param5?: NullableStringFieldUpdateOperationsInput | string | null
    param6?: NullableStringFieldUpdateOperationsInput | string | null
    param7?: NullableStringFieldUpdateOperationsInput | string | null
    param8?: NullableStringFieldUpdateOperationsInput | string | null
    param9?: NullableStringFieldUpdateOperationsInput | string | null
    param10?: NullableStringFieldUpdateOperationsInput | string | null
  }

  export type MobileNumberUncheckedUpdateManyInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    phoneNumber?: StringFieldUpdateOperationsInput | string
    type?: StringFieldUpdateOperationsInput | string
    is_blocked?: BoolFieldUpdateOperationsInput | boolean
    numberListId?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    name?: NullableStringFieldUpdateOperationsInput | string | null
    param1?: NullableStringFieldUpdateOperationsInput | string | null
    param2?: NullableStringFieldUpdateOperationsInput | string | null
    param3?: NullableStringFieldUpdateOperationsInput | string | null
    param4?: NullableStringFieldUpdateOperationsInput | string | null
    param5?: NullableStringFieldUpdateOperationsInput | string | null
    param6?: NullableStringFieldUpdateOperationsInput | string | null
    param7?: NullableStringFieldUpdateOperationsInput | string | null
    param8?: NullableStringFieldUpdateOperationsInput | string | null
    param9?: NullableStringFieldUpdateOperationsInput | string | null
    param10?: NullableStringFieldUpdateOperationsInput | string | null
  }

  export type SMS_ReportCreateInput = {
    uuid?: string
    server_ref: bigint | number
    deliveryType: number
    number: string
    maskName: string
    messagePart: number
    chargedAmount?: number
    createdAt?: Date | string
    updatedAt?: Date | string
    campaign: CampaignCreateNestedOneWithoutSmsReportsInput
  }

  export type SMS_ReportUncheckedCreateInput = {
    id?: number
    uuid?: string
    server_ref: bigint | number
    campaignId: number
    deliveryType: number
    number: string
    maskName: string
    messagePart: number
    chargedAmount?: number
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type SMS_ReportUpdateInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    server_ref?: BigIntFieldUpdateOperationsInput | bigint | number
    deliveryType?: IntFieldUpdateOperationsInput | number
    number?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    messagePart?: IntFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    campaign?: CampaignUpdateOneRequiredWithoutSmsReportsNestedInput
  }

  export type SMS_ReportUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    server_ref?: BigIntFieldUpdateOperationsInput | bigint | number
    campaignId?: IntFieldUpdateOperationsInput | number
    deliveryType?: IntFieldUpdateOperationsInput | number
    number?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    messagePart?: IntFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type SMS_ReportCreateManyInput = {
    id?: number
    uuid?: string
    server_ref: bigint | number
    campaignId: number
    deliveryType: number
    number: string
    maskName: string
    messagePart: number
    chargedAmount?: number
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type SMS_ReportUpdateManyMutationInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    server_ref?: BigIntFieldUpdateOperationsInput | bigint | number
    deliveryType?: IntFieldUpdateOperationsInput | number
    number?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    messagePart?: IntFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type SMS_ReportUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    server_ref?: BigIntFieldUpdateOperationsInput | bigint | number
    campaignId?: IntFieldUpdateOperationsInput | number
    deliveryType?: IntFieldUpdateOperationsInput | number
    number?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    messagePart?: IntFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type ExternalApiClientCreateInput = {
    uuid?: string
    systemLabel: string
    apiKeyHash: string
    isActive?: boolean
    webhookUrl?: string | null
    webhookSecret?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type ExternalApiClientUncheckedCreateInput = {
    id?: number
    uuid?: string
    systemLabel: string
    apiKeyHash: string
    isActive?: boolean
    webhookUrl?: string | null
    webhookSecret?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type ExternalApiClientUpdateInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    systemLabel?: StringFieldUpdateOperationsInput | string
    apiKeyHash?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    webhookUrl?: NullableStringFieldUpdateOperationsInput | string | null
    webhookSecret?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type ExternalApiClientUncheckedUpdateInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    systemLabel?: StringFieldUpdateOperationsInput | string
    apiKeyHash?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    webhookUrl?: NullableStringFieldUpdateOperationsInput | string | null
    webhookSecret?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type ExternalApiClientCreateManyInput = {
    id?: number
    uuid?: string
    systemLabel: string
    apiKeyHash: string
    isActive?: boolean
    webhookUrl?: string | null
    webhookSecret?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type ExternalApiClientUpdateManyMutationInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    systemLabel?: StringFieldUpdateOperationsInput | string
    apiKeyHash?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    webhookUrl?: NullableStringFieldUpdateOperationsInput | string | null
    webhookSecret?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type ExternalApiClientUncheckedUpdateManyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    systemLabel?: StringFieldUpdateOperationsInput | string
    apiKeyHash?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    webhookUrl?: NullableStringFieldUpdateOperationsInput | string | null
    webhookSecret?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type SystemConfigCreateInput = {
    key: string
    value: string
    updatedAt?: Date | string
  }

  export type SystemConfigUncheckedCreateInput = {
    key: string
    value: string
    updatedAt?: Date | string
  }

  export type SystemConfigUpdateInput = {
    key?: StringFieldUpdateOperationsInput | string
    value?: StringFieldUpdateOperationsInput | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type SystemConfigUncheckedUpdateInput = {
    key?: StringFieldUpdateOperationsInput | string
    value?: StringFieldUpdateOperationsInput | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type SystemConfigCreateManyInput = {
    key: string
    value: string
    updatedAt?: Date | string
  }

  export type SystemConfigUpdateManyMutationInput = {
    key?: StringFieldUpdateOperationsInput | string
    value?: StringFieldUpdateOperationsInput | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type SystemConfigUncheckedUpdateManyInput = {
    key?: StringFieldUpdateOperationsInput | string
    value?: StringFieldUpdateOperationsInput | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type AuditLogCreateInput = {
    id?: bigint | number
    entityName: string
    entityId: string
    action: string
    oldValue?: NullableJsonNullValueInput | InputJsonValue
    newValue?: NullableJsonNullValueInput | InputJsonValue
    changedFields?: NullableJsonNullValueInput | InputJsonValue
    performedByUserId: number
    performedByCompanyId?: number | null
    createdAt?: Date | string
  }

  export type AuditLogUncheckedCreateInput = {
    id?: bigint | number
    entityName: string
    entityId: string
    action: string
    oldValue?: NullableJsonNullValueInput | InputJsonValue
    newValue?: NullableJsonNullValueInput | InputJsonValue
    changedFields?: NullableJsonNullValueInput | InputJsonValue
    performedByUserId: number
    performedByCompanyId?: number | null
    createdAt?: Date | string
  }

  export type AuditLogUpdateInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    entityName?: StringFieldUpdateOperationsInput | string
    entityId?: StringFieldUpdateOperationsInput | string
    action?: StringFieldUpdateOperationsInput | string
    oldValue?: NullableJsonNullValueInput | InputJsonValue
    newValue?: NullableJsonNullValueInput | InputJsonValue
    changedFields?: NullableJsonNullValueInput | InputJsonValue
    performedByUserId?: IntFieldUpdateOperationsInput | number
    performedByCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type AuditLogUncheckedUpdateInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    entityName?: StringFieldUpdateOperationsInput | string
    entityId?: StringFieldUpdateOperationsInput | string
    action?: StringFieldUpdateOperationsInput | string
    oldValue?: NullableJsonNullValueInput | InputJsonValue
    newValue?: NullableJsonNullValueInput | InputJsonValue
    changedFields?: NullableJsonNullValueInput | InputJsonValue
    performedByUserId?: IntFieldUpdateOperationsInput | number
    performedByCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type AuditLogCreateManyInput = {
    id?: bigint | number
    entityName: string
    entityId: string
    action: string
    oldValue?: NullableJsonNullValueInput | InputJsonValue
    newValue?: NullableJsonNullValueInput | InputJsonValue
    changedFields?: NullableJsonNullValueInput | InputJsonValue
    performedByUserId: number
    performedByCompanyId?: number | null
    createdAt?: Date | string
  }

  export type AuditLogUpdateManyMutationInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    entityName?: StringFieldUpdateOperationsInput | string
    entityId?: StringFieldUpdateOperationsInput | string
    action?: StringFieldUpdateOperationsInput | string
    oldValue?: NullableJsonNullValueInput | InputJsonValue
    newValue?: NullableJsonNullValueInput | InputJsonValue
    changedFields?: NullableJsonNullValueInput | InputJsonValue
    performedByUserId?: IntFieldUpdateOperationsInput | number
    performedByCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type AuditLogUncheckedUpdateManyInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    entityName?: StringFieldUpdateOperationsInput | string
    entityId?: StringFieldUpdateOperationsInput | string
    action?: StringFieldUpdateOperationsInput | string
    oldValue?: NullableJsonNullValueInput | InputJsonValue
    newValue?: NullableJsonNullValueInput | InputJsonValue
    changedFields?: NullableJsonNullValueInput | InputJsonValue
    performedByUserId?: IntFieldUpdateOperationsInput | number
    performedByCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type IntFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel>
    in?: number[]
    notIn?: number[]
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntFilter<$PrismaModel> | number
  }

  export type StringFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[]
    notIn?: string[]
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    search?: string
    not?: NestedStringFilter<$PrismaModel> | string
  }

  export type IntNullableFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel> | null
    in?: number[] | null
    notIn?: number[] | null
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntNullableFilter<$PrismaModel> | number | null
  }

  export type StringNullableFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | null
    notIn?: string[] | null
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    search?: string
    not?: NestedStringNullableFilter<$PrismaModel> | string | null
  }

  export type FloatNullableFilter<$PrismaModel = never> = {
    equals?: number | FloatFieldRefInput<$PrismaModel> | null
    in?: number[] | null
    notIn?: number[] | null
    lt?: number | FloatFieldRefInput<$PrismaModel>
    lte?: number | FloatFieldRefInput<$PrismaModel>
    gt?: number | FloatFieldRefInput<$PrismaModel>
    gte?: number | FloatFieldRefInput<$PrismaModel>
    not?: NestedFloatNullableFilter<$PrismaModel> | number | null
  }

  export type DateTimeNullableFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null
    in?: Date[] | string[] | null
    notIn?: Date[] | string[] | null
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null
  }

  export type DateTimeFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    in?: Date[] | string[]
    notIn?: Date[] | string[]
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeFilter<$PrismaModel> | Date | string
  }

  export type UserCompanyListRelationFilter = {
    every?: UserCompanyWhereInput
    some?: UserCompanyWhereInput
    none?: UserCompanyWhereInput
  }

  export type BillAccountListRelationFilter = {
    every?: BillAccountWhereInput
    some?: BillAccountWhereInput
    none?: BillAccountWhereInput
  }

  export type DepartmentListRelationFilter = {
    every?: DepartmentWhereInput
    some?: DepartmentWhereInput
    none?: DepartmentWhereInput
  }

  export type MobileNumberListListRelationFilter = {
    every?: MobileNumberListWhereInput
    some?: MobileNumberListWhereInput
    none?: MobileNumberListWhereInput
  }

  export type SenderMaskListRelationFilter = {
    every?: SenderMaskWhereInput
    some?: SenderMaskWhereInput
    none?: SenderMaskWhereInput
  }

  export type ContactParamSettingsNullableScalarRelationFilter = {
    is?: ContactParamSettingsWhereInput | null
    isNot?: ContactParamSettingsWhereInput | null
  }

  export type SortOrderInput = {
    sort: SortOrder
    nulls?: NullsOrder
  }

  export type UserCompanyOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type BillAccountOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type DepartmentOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type MobileNumberListOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type SenderMaskOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type CompanyOrderByRelevanceInput = {
    fields: CompanyOrderByRelevanceFieldEnum | CompanyOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type CompanyExternalCompanyIdSourceCompoundUniqueInput = {
    externalCompanyId: number
    source: string
  }

  export type CompanyCountOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    externalCompanyId?: SortOrder
    source?: SortOrder
    brNumber?: SortOrder
    companyName?: SortOrder
    contactNumber?: SortOrder
    address?: SortOrder
    smsCostTransactional?: SortOrder
    smsCostPromotional?: SortOrder
    smsCostIndividual?: SortOrder
    deletedAt?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type CompanyAvgOrderByAggregateInput = {
    id?: SortOrder
    externalCompanyId?: SortOrder
    smsCostTransactional?: SortOrder
    smsCostPromotional?: SortOrder
    smsCostIndividual?: SortOrder
  }

  export type CompanyMaxOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    externalCompanyId?: SortOrder
    source?: SortOrder
    brNumber?: SortOrder
    companyName?: SortOrder
    contactNumber?: SortOrder
    address?: SortOrder
    smsCostTransactional?: SortOrder
    smsCostPromotional?: SortOrder
    smsCostIndividual?: SortOrder
    deletedAt?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type CompanyMinOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    externalCompanyId?: SortOrder
    source?: SortOrder
    brNumber?: SortOrder
    companyName?: SortOrder
    contactNumber?: SortOrder
    address?: SortOrder
    smsCostTransactional?: SortOrder
    smsCostPromotional?: SortOrder
    smsCostIndividual?: SortOrder
    deletedAt?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type CompanySumOrderByAggregateInput = {
    id?: SortOrder
    externalCompanyId?: SortOrder
    smsCostTransactional?: SortOrder
    smsCostPromotional?: SortOrder
    smsCostIndividual?: SortOrder
  }

  export type IntWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel>
    in?: number[]
    notIn?: number[]
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntWithAggregatesFilter<$PrismaModel> | number
    _count?: NestedIntFilter<$PrismaModel>
    _avg?: NestedFloatFilter<$PrismaModel>
    _sum?: NestedIntFilter<$PrismaModel>
    _min?: NestedIntFilter<$PrismaModel>
    _max?: NestedIntFilter<$PrismaModel>
  }

  export type StringWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[]
    notIn?: string[]
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    search?: string
    not?: NestedStringWithAggregatesFilter<$PrismaModel> | string
    _count?: NestedIntFilter<$PrismaModel>
    _min?: NestedStringFilter<$PrismaModel>
    _max?: NestedStringFilter<$PrismaModel>
  }

  export type IntNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel> | null
    in?: number[] | null
    notIn?: number[] | null
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _avg?: NestedFloatNullableFilter<$PrismaModel>
    _sum?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedIntNullableFilter<$PrismaModel>
    _max?: NestedIntNullableFilter<$PrismaModel>
  }

  export type StringNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | null
    notIn?: string[] | null
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    search?: string
    not?: NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedStringNullableFilter<$PrismaModel>
    _max?: NestedStringNullableFilter<$PrismaModel>
  }

  export type FloatNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | FloatFieldRefInput<$PrismaModel> | null
    in?: number[] | null
    notIn?: number[] | null
    lt?: number | FloatFieldRefInput<$PrismaModel>
    lte?: number | FloatFieldRefInput<$PrismaModel>
    gt?: number | FloatFieldRefInput<$PrismaModel>
    gte?: number | FloatFieldRefInput<$PrismaModel>
    not?: NestedFloatNullableWithAggregatesFilter<$PrismaModel> | number | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _avg?: NestedFloatNullableFilter<$PrismaModel>
    _sum?: NestedFloatNullableFilter<$PrismaModel>
    _min?: NestedFloatNullableFilter<$PrismaModel>
    _max?: NestedFloatNullableFilter<$PrismaModel>
  }

  export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null
    in?: Date[] | string[] | null
    notIn?: Date[] | string[] | null
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedDateTimeNullableFilter<$PrismaModel>
    _max?: NestedDateTimeNullableFilter<$PrismaModel>
  }

  export type DateTimeWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    in?: Date[] | string[]
    notIn?: Date[] | string[]
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string
    _count?: NestedIntFilter<$PrismaModel>
    _min?: NestedDateTimeFilter<$PrismaModel>
    _max?: NestedDateTimeFilter<$PrismaModel>
  }

  export type BoolFilter<$PrismaModel = never> = {
    equals?: boolean | BooleanFieldRefInput<$PrismaModel>
    not?: NestedBoolFilter<$PrismaModel> | boolean
  }

  export type UserListRelationFilter = {
    every?: UserWhereInput
    some?: UserWhereInput
    none?: UserWhereInput
  }

  export type UserOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type RoleOrderByRelevanceInput = {
    fields: RoleOrderByRelevanceFieldEnum | RoleOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type RoleCountOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    name?: SortOrder
    displayName?: SortOrder
    isSystem?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type RoleAvgOrderByAggregateInput = {
    id?: SortOrder
  }

  export type RoleMaxOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    name?: SortOrder
    displayName?: SortOrder
    isSystem?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type RoleMinOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    name?: SortOrder
    displayName?: SortOrder
    isSystem?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type RoleSumOrderByAggregateInput = {
    id?: SortOrder
  }

  export type BoolWithAggregatesFilter<$PrismaModel = never> = {
    equals?: boolean | BooleanFieldRefInput<$PrismaModel>
    not?: NestedBoolWithAggregatesFilter<$PrismaModel> | boolean
    _count?: NestedIntFilter<$PrismaModel>
    _min?: NestedBoolFilter<$PrismaModel>
    _max?: NestedBoolFilter<$PrismaModel>
  }

  export type RoleNullableScalarRelationFilter = {
    is?: RoleWhereInput | null
    isNot?: RoleWhereInput | null
  }

  export type RefreshTokenListRelationFilter = {
    every?: RefreshTokenWhereInput
    some?: RefreshTokenWhereInput
    none?: RefreshTokenWhereInput
  }

  export type SavedCardListRelationFilter = {
    every?: SavedCardWhereInput
    some?: SavedCardWhereInput
    none?: SavedCardWhereInput
  }

  export type PasswordResetTokenListRelationFilter = {
    every?: PasswordResetTokenWhereInput
    some?: PasswordResetTokenWhereInput
    none?: PasswordResetTokenWhereInput
  }

  export type RefreshTokenOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type SavedCardOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type PasswordResetTokenOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type UserOrderByRelevanceInput = {
    fields: UserOrderByRelevanceFieldEnum | UserOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type UserExternalUserIdUserTypeCompoundUniqueInput = {
    externalUserId: number
    userType: string
  }

  export type UserCountOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    externalUserId?: SortOrder
    fullName?: SortOrder
    email?: SortOrder
    contactNumber?: SortOrder
    passwordHash?: SortOrder
    userType?: SortOrder
    isActive?: SortOrder
    hasSeenGuide?: SortOrder
    roleId?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type UserAvgOrderByAggregateInput = {
    id?: SortOrder
    externalUserId?: SortOrder
    roleId?: SortOrder
  }

  export type UserMaxOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    externalUserId?: SortOrder
    fullName?: SortOrder
    email?: SortOrder
    contactNumber?: SortOrder
    passwordHash?: SortOrder
    userType?: SortOrder
    isActive?: SortOrder
    hasSeenGuide?: SortOrder
    roleId?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type UserMinOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    externalUserId?: SortOrder
    fullName?: SortOrder
    email?: SortOrder
    contactNumber?: SortOrder
    passwordHash?: SortOrder
    userType?: SortOrder
    isActive?: SortOrder
    hasSeenGuide?: SortOrder
    roleId?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type UserSumOrderByAggregateInput = {
    id?: SortOrder
    externalUserId?: SortOrder
    roleId?: SortOrder
  }

  export type UserScalarRelationFilter = {
    is?: UserWhereInput
    isNot?: UserWhereInput
  }

  export type RefreshTokenOrderByRelevanceInput = {
    fields: RefreshTokenOrderByRelevanceFieldEnum | RefreshTokenOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type RefreshTokenCountOrderByAggregateInput = {
    id?: SortOrder
    token?: SortOrder
    userId?: SortOrder
    expiresAt?: SortOrder
    isRevoked?: SortOrder
    createdAt?: SortOrder
  }

  export type RefreshTokenAvgOrderByAggregateInput = {
    id?: SortOrder
    userId?: SortOrder
  }

  export type RefreshTokenMaxOrderByAggregateInput = {
    id?: SortOrder
    token?: SortOrder
    userId?: SortOrder
    expiresAt?: SortOrder
    isRevoked?: SortOrder
    createdAt?: SortOrder
  }

  export type RefreshTokenMinOrderByAggregateInput = {
    id?: SortOrder
    token?: SortOrder
    userId?: SortOrder
    expiresAt?: SortOrder
    isRevoked?: SortOrder
    createdAt?: SortOrder
  }

  export type RefreshTokenSumOrderByAggregateInput = {
    id?: SortOrder
    userId?: SortOrder
  }

  export type EmailVerificationOtpOrderByRelevanceInput = {
    fields: EmailVerificationOtpOrderByRelevanceFieldEnum | EmailVerificationOtpOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type EmailVerificationOtpCountOrderByAggregateInput = {
    id?: SortOrder
    otpHash?: SortOrder
    email?: SortOrder
    expiresAt?: SortOrder
    isUsed?: SortOrder
    createdAt?: SortOrder
  }

  export type EmailVerificationOtpAvgOrderByAggregateInput = {
    id?: SortOrder
  }

  export type EmailVerificationOtpMaxOrderByAggregateInput = {
    id?: SortOrder
    otpHash?: SortOrder
    email?: SortOrder
    expiresAt?: SortOrder
    isUsed?: SortOrder
    createdAt?: SortOrder
  }

  export type EmailVerificationOtpMinOrderByAggregateInput = {
    id?: SortOrder
    otpHash?: SortOrder
    email?: SortOrder
    expiresAt?: SortOrder
    isUsed?: SortOrder
    createdAt?: SortOrder
  }

  export type EmailVerificationOtpSumOrderByAggregateInput = {
    id?: SortOrder
  }

  export type PasswordResetTokenOrderByRelevanceInput = {
    fields: PasswordResetTokenOrderByRelevanceFieldEnum | PasswordResetTokenOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type PasswordResetTokenCountOrderByAggregateInput = {
    id?: SortOrder
    tokenHash?: SortOrder
    userId?: SortOrder
    expiresAt?: SortOrder
    isUsed?: SortOrder
    createdAt?: SortOrder
  }

  export type PasswordResetTokenAvgOrderByAggregateInput = {
    id?: SortOrder
    userId?: SortOrder
  }

  export type PasswordResetTokenMaxOrderByAggregateInput = {
    id?: SortOrder
    tokenHash?: SortOrder
    userId?: SortOrder
    expiresAt?: SortOrder
    isUsed?: SortOrder
    createdAt?: SortOrder
  }

  export type PasswordResetTokenMinOrderByAggregateInput = {
    id?: SortOrder
    tokenHash?: SortOrder
    userId?: SortOrder
    expiresAt?: SortOrder
    isUsed?: SortOrder
    createdAt?: SortOrder
  }

  export type PasswordResetTokenSumOrderByAggregateInput = {
    id?: SortOrder
    userId?: SortOrder
  }

  export type CompanyScalarRelationFilter = {
    is?: CompanyWhereInput
    isNot?: CompanyWhereInput
  }

  export type UserCompanyOrderByRelevanceInput = {
    fields: UserCompanyOrderByRelevanceFieldEnum | UserCompanyOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type UserCompanyUserIdCompanyIdCompoundUniqueInput = {
    userId: number
    companyId: number
  }

  export type UserCompanyCountOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    userId?: SortOrder
    companyId?: SortOrder
    createdAt?: SortOrder
  }

  export type UserCompanyAvgOrderByAggregateInput = {
    id?: SortOrder
    userId?: SortOrder
    companyId?: SortOrder
  }

  export type UserCompanyMaxOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    userId?: SortOrder
    companyId?: SortOrder
    createdAt?: SortOrder
  }

  export type UserCompanyMinOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    userId?: SortOrder
    companyId?: SortOrder
    createdAt?: SortOrder
  }

  export type UserCompanySumOrderByAggregateInput = {
    id?: SortOrder
    userId?: SortOrder
    companyId?: SortOrder
  }

  export type FloatFilter<$PrismaModel = never> = {
    equals?: number | FloatFieldRefInput<$PrismaModel>
    in?: number[]
    notIn?: number[]
    lt?: number | FloatFieldRefInput<$PrismaModel>
    lte?: number | FloatFieldRefInput<$PrismaModel>
    gt?: number | FloatFieldRefInput<$PrismaModel>
    gte?: number | FloatFieldRefInput<$PrismaModel>
    not?: NestedFloatFilter<$PrismaModel> | number
  }

  export type BillAccountScalarRelationFilter = {
    is?: BillAccountWhereInput
    isNot?: BillAccountWhereInput
  }

  export type SavedCardNullableScalarRelationFilter = {
    is?: SavedCardWhereInput | null
    isNot?: SavedCardWhereInput | null
  }

  export type BillPaymentOrderByRelevanceInput = {
    fields: BillPaymentOrderByRelevanceFieldEnum | BillPaymentOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type BillPaymentCountOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    billingAccountId?: SortOrder
    amount?: SortOrder
    paymentMethod?: SortOrder
    status?: SortOrder
    orderId?: SortOrder
    orderReference?: SortOrder
    errorCode?: SortOrder
    failureReason?: SortOrder
    paidUserId?: SortOrder
    savedCardId?: SortOrder
    createdAt?: SortOrder
  }

  export type BillPaymentAvgOrderByAggregateInput = {
    id?: SortOrder
    billingAccountId?: SortOrder
    amount?: SortOrder
    paidUserId?: SortOrder
    savedCardId?: SortOrder
  }

  export type BillPaymentMaxOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    billingAccountId?: SortOrder
    amount?: SortOrder
    paymentMethod?: SortOrder
    status?: SortOrder
    orderId?: SortOrder
    orderReference?: SortOrder
    errorCode?: SortOrder
    failureReason?: SortOrder
    paidUserId?: SortOrder
    savedCardId?: SortOrder
    createdAt?: SortOrder
  }

  export type BillPaymentMinOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    billingAccountId?: SortOrder
    amount?: SortOrder
    paymentMethod?: SortOrder
    status?: SortOrder
    orderId?: SortOrder
    orderReference?: SortOrder
    errorCode?: SortOrder
    failureReason?: SortOrder
    paidUserId?: SortOrder
    savedCardId?: SortOrder
    createdAt?: SortOrder
  }

  export type BillPaymentSumOrderByAggregateInput = {
    id?: SortOrder
    billingAccountId?: SortOrder
    amount?: SortOrder
    paidUserId?: SortOrder
    savedCardId?: SortOrder
  }

  export type FloatWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | FloatFieldRefInput<$PrismaModel>
    in?: number[]
    notIn?: number[]
    lt?: number | FloatFieldRefInput<$PrismaModel>
    lte?: number | FloatFieldRefInput<$PrismaModel>
    gt?: number | FloatFieldRefInput<$PrismaModel>
    gte?: number | FloatFieldRefInput<$PrismaModel>
    not?: NestedFloatWithAggregatesFilter<$PrismaModel> | number
    _count?: NestedIntFilter<$PrismaModel>
    _avg?: NestedFloatFilter<$PrismaModel>
    _sum?: NestedFloatFilter<$PrismaModel>
    _min?: NestedFloatFilter<$PrismaModel>
    _max?: NestedFloatFilter<$PrismaModel>
  }

  export type BillPaymentListRelationFilter = {
    every?: BillPaymentWhereInput
    some?: BillPaymentWhereInput
    none?: BillPaymentWhereInput
  }

  export type CampaignListRelationFilter = {
    every?: CampaignWhereInput
    some?: CampaignWhereInput
    none?: CampaignWhereInput
  }

  export type LowBalanceAlertListRelationFilter = {
    every?: LowBalanceAlertWhereInput
    some?: LowBalanceAlertWhereInput
    none?: LowBalanceAlertWhereInput
  }

  export type BillPaymentOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type CampaignOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type LowBalanceAlertOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type BillAccountOrderByRelevanceInput = {
    fields: BillAccountOrderByRelevanceFieldEnum | BillAccountOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type BillAccountCountOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    accountNumber?: SortOrder
    accountName?: SortOrder
    outstandingBalance?: SortOrder
    reservedBalance?: SortOrder
    accountStatus?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    companyId?: SortOrder
  }

  export type BillAccountAvgOrderByAggregateInput = {
    id?: SortOrder
    outstandingBalance?: SortOrder
    reservedBalance?: SortOrder
    companyId?: SortOrder
  }

  export type BillAccountMaxOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    accountNumber?: SortOrder
    accountName?: SortOrder
    outstandingBalance?: SortOrder
    reservedBalance?: SortOrder
    accountStatus?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    companyId?: SortOrder
  }

  export type BillAccountMinOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    accountNumber?: SortOrder
    accountName?: SortOrder
    outstandingBalance?: SortOrder
    reservedBalance?: SortOrder
    accountStatus?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    companyId?: SortOrder
  }

  export type BillAccountSumOrderByAggregateInput = {
    id?: SortOrder
    outstandingBalance?: SortOrder
    reservedBalance?: SortOrder
    companyId?: SortOrder
  }

  export type SavedCardOrderByRelevanceInput = {
    fields: SavedCardOrderByRelevanceFieldEnum | SavedCardOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type SavedCardCountOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    userId?: SortOrder
    cardToken?: SortOrder
    cardFirst6?: SortOrder
    cardLast4?: SortOrder
    cardHolderName?: SortOrder
    customerEmail?: SortOrder
    isActive?: SortOrder
    deletedAt?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type SavedCardAvgOrderByAggregateInput = {
    id?: SortOrder
    userId?: SortOrder
  }

  export type SavedCardMaxOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    userId?: SortOrder
    cardToken?: SortOrder
    cardFirst6?: SortOrder
    cardLast4?: SortOrder
    cardHolderName?: SortOrder
    customerEmail?: SortOrder
    isActive?: SortOrder
    deletedAt?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type SavedCardMinOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    userId?: SortOrder
    cardToken?: SortOrder
    cardFirst6?: SortOrder
    cardLast4?: SortOrder
    cardHolderName?: SortOrder
    customerEmail?: SortOrder
    isActive?: SortOrder
    deletedAt?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type SavedCardSumOrderByAggregateInput = {
    id?: SortOrder
    userId?: SortOrder
  }

  export type LowBalanceAlertOrderByRelevanceInput = {
    fields: LowBalanceAlertOrderByRelevanceFieldEnum | LowBalanceAlertOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type LowBalanceAlertCountOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    billingAccountId?: SortOrder
    userId?: SortOrder
    thresholdLevel?: SortOrder
    isActive?: SortOrder
    balanceAtAlert?: SortOrder
    chargedAmount?: SortOrder
    sentTo?: SortOrder
    maskUsed?: SortOrder
    serverRef?: SortOrder
    status?: SortOrder
    failureReason?: SortOrder
    createdAt?: SortOrder
  }

  export type LowBalanceAlertAvgOrderByAggregateInput = {
    id?: SortOrder
    billingAccountId?: SortOrder
    userId?: SortOrder
    thresholdLevel?: SortOrder
    balanceAtAlert?: SortOrder
    chargedAmount?: SortOrder
    serverRef?: SortOrder
  }

  export type LowBalanceAlertMaxOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    billingAccountId?: SortOrder
    userId?: SortOrder
    thresholdLevel?: SortOrder
    isActive?: SortOrder
    balanceAtAlert?: SortOrder
    chargedAmount?: SortOrder
    sentTo?: SortOrder
    maskUsed?: SortOrder
    serverRef?: SortOrder
    status?: SortOrder
    failureReason?: SortOrder
    createdAt?: SortOrder
  }

  export type LowBalanceAlertMinOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    billingAccountId?: SortOrder
    userId?: SortOrder
    thresholdLevel?: SortOrder
    isActive?: SortOrder
    balanceAtAlert?: SortOrder
    chargedAmount?: SortOrder
    sentTo?: SortOrder
    maskUsed?: SortOrder
    serverRef?: SortOrder
    status?: SortOrder
    failureReason?: SortOrder
    createdAt?: SortOrder
  }

  export type LowBalanceAlertSumOrderByAggregateInput = {
    id?: SortOrder
    billingAccountId?: SortOrder
    userId?: SortOrder
    thresholdLevel?: SortOrder
    balanceAtAlert?: SortOrder
    chargedAmount?: SortOrder
    serverRef?: SortOrder
  }

  export type SMS_TemplateListRelationFilter = {
    every?: SMS_TemplateWhereInput
    some?: SMS_TemplateWhereInput
    none?: SMS_TemplateWhereInput
  }

  export type DepartmentSenderMaskListRelationFilter = {
    every?: DepartmentSenderMaskWhereInput
    some?: DepartmentSenderMaskWhereInput
    none?: DepartmentSenderMaskWhereInput
  }

  export type SMS_TemplateOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type DepartmentSenderMaskOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type DepartmentOrderByRelevanceInput = {
    fields: DepartmentOrderByRelevanceFieldEnum | DepartmentOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type DepartmentCompanyIdExternalCompanyIdCompoundUniqueInput = {
    companyId: number
    externalCompanyId: number
  }

  export type DepartmentCountOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    companyId?: SortOrder
    name?: SortOrder
    externalCompanyId?: SortOrder
    smsCostTransactional?: SortOrder
    smsCostPromotional?: SortOrder
    is_enabled?: SortOrder
    callBackUrl?: SortOrder
    Signature?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrder
  }

  export type DepartmentAvgOrderByAggregateInput = {
    id?: SortOrder
    companyId?: SortOrder
    externalCompanyId?: SortOrder
    smsCostTransactional?: SortOrder
    smsCostPromotional?: SortOrder
  }

  export type DepartmentMaxOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    companyId?: SortOrder
    name?: SortOrder
    externalCompanyId?: SortOrder
    smsCostTransactional?: SortOrder
    smsCostPromotional?: SortOrder
    is_enabled?: SortOrder
    callBackUrl?: SortOrder
    Signature?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrder
  }

  export type DepartmentMinOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    companyId?: SortOrder
    name?: SortOrder
    externalCompanyId?: SortOrder
    smsCostTransactional?: SortOrder
    smsCostPromotional?: SortOrder
    is_enabled?: SortOrder
    callBackUrl?: SortOrder
    Signature?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrder
  }

  export type DepartmentSumOrderByAggregateInput = {
    id?: SortOrder
    companyId?: SortOrder
    externalCompanyId?: SortOrder
    smsCostTransactional?: SortOrder
    smsCostPromotional?: SortOrder
  }

  export type DepartmentScalarRelationFilter = {
    is?: DepartmentWhereInput
    isNot?: DepartmentWhereInput
  }

  export type SMS_TemplateOrderByRelevanceInput = {
    fields: SMS_TemplateOrderByRelevanceFieldEnum | SMS_TemplateOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type SMS_TemplateCountOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    deptId?: SortOrder
    name?: SortOrder
    text_content?: SortOrder
    smsType?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrder
  }

  export type SMS_TemplateAvgOrderByAggregateInput = {
    id?: SortOrder
    deptId?: SortOrder
  }

  export type SMS_TemplateMaxOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    deptId?: SortOrder
    name?: SortOrder
    text_content?: SortOrder
    smsType?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrder
  }

  export type SMS_TemplateMinOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    deptId?: SortOrder
    name?: SortOrder
    text_content?: SortOrder
    smsType?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrder
  }

  export type SMS_TemplateSumOrderByAggregateInput = {
    id?: SortOrder
    deptId?: SortOrder
  }

  export type CompanyNullableScalarRelationFilter = {
    is?: CompanyWhereInput | null
    isNot?: CompanyWhereInput | null
  }

  export type SenderMaskOrderByRelevanceInput = {
    fields: SenderMaskOrderByRelevanceFieldEnum | SenderMaskOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type SenderMaskCountOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    maskName?: SortOrder
    purpose?: SortOrder
    is_default?: SortOrder
    status?: SortOrder
    maskType?: SortOrder
    isExternal?: SortOrder
    emailSent?: SortOrder
    emailSentAt?: SortOrder
    approvalNotificationSent?: SortOrder
    approvalNotificationSentAt?: SortOrder
    reservedAmount?: SortOrder
    createdByUserId?: SortOrder
    companyId?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type SenderMaskAvgOrderByAggregateInput = {
    id?: SortOrder
    reservedAmount?: SortOrder
    createdByUserId?: SortOrder
    companyId?: SortOrder
  }

  export type SenderMaskMaxOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    maskName?: SortOrder
    purpose?: SortOrder
    is_default?: SortOrder
    status?: SortOrder
    maskType?: SortOrder
    isExternal?: SortOrder
    emailSent?: SortOrder
    emailSentAt?: SortOrder
    approvalNotificationSent?: SortOrder
    approvalNotificationSentAt?: SortOrder
    reservedAmount?: SortOrder
    createdByUserId?: SortOrder
    companyId?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type SenderMaskMinOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    maskName?: SortOrder
    purpose?: SortOrder
    is_default?: SortOrder
    status?: SortOrder
    maskType?: SortOrder
    isExternal?: SortOrder
    emailSent?: SortOrder
    emailSentAt?: SortOrder
    approvalNotificationSent?: SortOrder
    approvalNotificationSentAt?: SortOrder
    reservedAmount?: SortOrder
    createdByUserId?: SortOrder
    companyId?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type SenderMaskSumOrderByAggregateInput = {
    id?: SortOrder
    reservedAmount?: SortOrder
    createdByUserId?: SortOrder
    companyId?: SortOrder
  }

  export type SenderMaskScalarRelationFilter = {
    is?: SenderMaskWhereInput
    isNot?: SenderMaskWhereInput
  }

  export type DepartmentSenderMaskOrderByRelevanceInput = {
    fields: DepartmentSenderMaskOrderByRelevanceFieldEnum | DepartmentSenderMaskOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type DepartmentSenderMaskSenderMaskIdDeptIdCompoundUniqueInput = {
    senderMaskId: number
    deptId: number
  }

  export type DepartmentSenderMaskCountOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    senderMaskId?: SortOrder
    deptId?: SortOrder
    assignedAt?: SortOrder
    deletedAt?: SortOrder
  }

  export type DepartmentSenderMaskAvgOrderByAggregateInput = {
    id?: SortOrder
    senderMaskId?: SortOrder
    deptId?: SortOrder
  }

  export type DepartmentSenderMaskMaxOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    senderMaskId?: SortOrder
    deptId?: SortOrder
    assignedAt?: SortOrder
    deletedAt?: SortOrder
  }

  export type DepartmentSenderMaskMinOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    senderMaskId?: SortOrder
    deptId?: SortOrder
    assignedAt?: SortOrder
    deletedAt?: SortOrder
  }

  export type DepartmentSenderMaskSumOrderByAggregateInput = {
    id?: SortOrder
    senderMaskId?: SortOrder
    deptId?: SortOrder
  }

  export type ContactParamSettingsOrderByRelevanceInput = {
    fields: ContactParamSettingsOrderByRelevanceFieldEnum | ContactParamSettingsOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type ContactParamSettingsCountOrderByAggregateInput = {
    id?: SortOrder
    companyId?: SortOrder
    param1Label?: SortOrder
    param2Label?: SortOrder
    param3Label?: SortOrder
    param4Label?: SortOrder
    param5Label?: SortOrder
    param6Label?: SortOrder
    param7Label?: SortOrder
    param8Label?: SortOrder
    param9Label?: SortOrder
    param10Label?: SortOrder
    updatedAt?: SortOrder
  }

  export type ContactParamSettingsAvgOrderByAggregateInput = {
    id?: SortOrder
    companyId?: SortOrder
  }

  export type ContactParamSettingsMaxOrderByAggregateInput = {
    id?: SortOrder
    companyId?: SortOrder
    param1Label?: SortOrder
    param2Label?: SortOrder
    param3Label?: SortOrder
    param4Label?: SortOrder
    param5Label?: SortOrder
    param6Label?: SortOrder
    param7Label?: SortOrder
    param8Label?: SortOrder
    param9Label?: SortOrder
    param10Label?: SortOrder
    updatedAt?: SortOrder
  }

  export type ContactParamSettingsMinOrderByAggregateInput = {
    id?: SortOrder
    companyId?: SortOrder
    param1Label?: SortOrder
    param2Label?: SortOrder
    param3Label?: SortOrder
    param4Label?: SortOrder
    param5Label?: SortOrder
    param6Label?: SortOrder
    param7Label?: SortOrder
    param8Label?: SortOrder
    param9Label?: SortOrder
    param10Label?: SortOrder
    updatedAt?: SortOrder
  }

  export type ContactParamSettingsSumOrderByAggregateInput = {
    id?: SortOrder
    companyId?: SortOrder
  }

  export type BigIntNullableFilter<$PrismaModel = never> = {
    equals?: bigint | number | BigIntFieldRefInput<$PrismaModel> | null
    in?: bigint[] | number[] | null
    notIn?: bigint[] | number[] | null
    lt?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    lte?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    gt?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    gte?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    not?: NestedBigIntNullableFilter<$PrismaModel> | bigint | number | null
  }
  export type JsonNullableFilter<$PrismaModel = never> =
    | PatchUndefined<
        Either<Required<JsonNullableFilterBase<$PrismaModel>>, Exclude<keyof Required<JsonNullableFilterBase<$PrismaModel>>, 'path'>>,
        Required<JsonNullableFilterBase<$PrismaModel>>
      >
    | OptionalFlat<Omit<Required<JsonNullableFilterBase<$PrismaModel>>, 'path'>>

  export type JsonNullableFilterBase<$PrismaModel = never> = {
    equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
    path?: string
    mode?: QueryMode | EnumQueryModeFieldRefInput<$PrismaModel>
    string_contains?: string | StringFieldRefInput<$PrismaModel>
    string_starts_with?: string | StringFieldRefInput<$PrismaModel>
    string_ends_with?: string | StringFieldRefInput<$PrismaModel>
    array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    lt?: InputJsonValue
    lte?: InputJsonValue
    gt?: InputJsonValue
    gte?: InputJsonValue
    not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
  }

  export type MobileNumberListNullableScalarRelationFilter = {
    is?: MobileNumberListWhereInput | null
    isNot?: MobileNumberListWhereInput | null
  }

  export type SMS_TemplateNullableScalarRelationFilter = {
    is?: SMS_TemplateWhereInput | null
    isNot?: SMS_TemplateWhereInput | null
  }

  export type SMS_ReportListRelationFilter = {
    every?: SMS_ReportWhereInput
    some?: SMS_ReportWhereInput
    none?: SMS_ReportWhereInput
  }

  export type CampaignServerRefListRelationFilter = {
    every?: CampaignServerRefWhereInput
    some?: CampaignServerRefWhereInput
    none?: CampaignServerRefWhereInput
  }

  export type CampaignRecipientListRelationFilter = {
    every?: CampaignRecipientWhereInput
    some?: CampaignRecipientWhereInput
    none?: CampaignRecipientWhereInput
  }

  export type SMS_ReportOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type CampaignServerRefOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type CampaignRecipientOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type CampaignOrderByRelevanceInput = {
    fields: CampaignOrderByRelevanceFieldEnum | CampaignOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type CampaignCountOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    name?: SortOrder
    status?: SortOrder
    server_ref?: SortOrder
    serverRefs?: SortOrder
    isParameterized?: SortOrder
    smsValidityPeriod?: SortOrder
    customMessage?: SortOrder
    scheduledDate?: SortOrder
    notificationNumber?: SortOrder
    createdByUserId?: SortOrder
    billingAccountId?: SortOrder
    senderMaskId?: SortOrder
    mobileNumberListId?: SortOrder
    customBlacklist?: SortOrder
    templateId?: SortOrder
    smsType?: SortOrder
    source?: SortOrder
    reservedAmount?: SortOrder
    chargedAmount?: SortOrder
    smsCostPerSegment?: SortOrder
    batchUuid?: SortOrder
    failureReason?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrder
  }

  export type CampaignAvgOrderByAggregateInput = {
    id?: SortOrder
    server_ref?: SortOrder
    smsValidityPeriod?: SortOrder
    createdByUserId?: SortOrder
    billingAccountId?: SortOrder
    senderMaskId?: SortOrder
    mobileNumberListId?: SortOrder
    templateId?: SortOrder
    reservedAmount?: SortOrder
    chargedAmount?: SortOrder
    smsCostPerSegment?: SortOrder
  }

  export type CampaignMaxOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    name?: SortOrder
    status?: SortOrder
    server_ref?: SortOrder
    isParameterized?: SortOrder
    smsValidityPeriod?: SortOrder
    customMessage?: SortOrder
    scheduledDate?: SortOrder
    notificationNumber?: SortOrder
    createdByUserId?: SortOrder
    billingAccountId?: SortOrder
    senderMaskId?: SortOrder
    mobileNumberListId?: SortOrder
    templateId?: SortOrder
    smsType?: SortOrder
    source?: SortOrder
    reservedAmount?: SortOrder
    chargedAmount?: SortOrder
    smsCostPerSegment?: SortOrder
    batchUuid?: SortOrder
    failureReason?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrder
  }

  export type CampaignMinOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    name?: SortOrder
    status?: SortOrder
    server_ref?: SortOrder
    isParameterized?: SortOrder
    smsValidityPeriod?: SortOrder
    customMessage?: SortOrder
    scheduledDate?: SortOrder
    notificationNumber?: SortOrder
    createdByUserId?: SortOrder
    billingAccountId?: SortOrder
    senderMaskId?: SortOrder
    mobileNumberListId?: SortOrder
    templateId?: SortOrder
    smsType?: SortOrder
    source?: SortOrder
    reservedAmount?: SortOrder
    chargedAmount?: SortOrder
    smsCostPerSegment?: SortOrder
    batchUuid?: SortOrder
    failureReason?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrder
  }

  export type CampaignSumOrderByAggregateInput = {
    id?: SortOrder
    server_ref?: SortOrder
    smsValidityPeriod?: SortOrder
    createdByUserId?: SortOrder
    billingAccountId?: SortOrder
    senderMaskId?: SortOrder
    mobileNumberListId?: SortOrder
    templateId?: SortOrder
    reservedAmount?: SortOrder
    chargedAmount?: SortOrder
    smsCostPerSegment?: SortOrder
  }

  export type BigIntNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: bigint | number | BigIntFieldRefInput<$PrismaModel> | null
    in?: bigint[] | number[] | null
    notIn?: bigint[] | number[] | null
    lt?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    lte?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    gt?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    gte?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    not?: NestedBigIntNullableWithAggregatesFilter<$PrismaModel> | bigint | number | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _avg?: NestedFloatNullableFilter<$PrismaModel>
    _sum?: NestedBigIntNullableFilter<$PrismaModel>
    _min?: NestedBigIntNullableFilter<$PrismaModel>
    _max?: NestedBigIntNullableFilter<$PrismaModel>
  }
  export type JsonNullableWithAggregatesFilter<$PrismaModel = never> =
    | PatchUndefined<
        Either<Required<JsonNullableWithAggregatesFilterBase<$PrismaModel>>, Exclude<keyof Required<JsonNullableWithAggregatesFilterBase<$PrismaModel>>, 'path'>>,
        Required<JsonNullableWithAggregatesFilterBase<$PrismaModel>>
      >
    | OptionalFlat<Omit<Required<JsonNullableWithAggregatesFilterBase<$PrismaModel>>, 'path'>>

  export type JsonNullableWithAggregatesFilterBase<$PrismaModel = never> = {
    equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
    path?: string
    mode?: QueryMode | EnumQueryModeFieldRefInput<$PrismaModel>
    string_contains?: string | StringFieldRefInput<$PrismaModel>
    string_starts_with?: string | StringFieldRefInput<$PrismaModel>
    string_ends_with?: string | StringFieldRefInput<$PrismaModel>
    array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    lt?: InputJsonValue
    lte?: InputJsonValue
    gt?: InputJsonValue
    gte?: InputJsonValue
    not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedJsonNullableFilter<$PrismaModel>
    _max?: NestedJsonNullableFilter<$PrismaModel>
  }

  export type BigIntFilter<$PrismaModel = never> = {
    equals?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    in?: bigint[] | number[]
    notIn?: bigint[] | number[]
    lt?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    lte?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    gt?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    gte?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    not?: NestedBigIntFilter<$PrismaModel> | bigint | number
  }

  export type CampaignScalarRelationFilter = {
    is?: CampaignWhereInput
    isNot?: CampaignWhereInput
  }

  export type CampaignServerRefCountOrderByAggregateInput = {
    serverRef?: SortOrder
    campaignId?: SortOrder
  }

  export type CampaignServerRefAvgOrderByAggregateInput = {
    serverRef?: SortOrder
    campaignId?: SortOrder
  }

  export type CampaignServerRefMaxOrderByAggregateInput = {
    serverRef?: SortOrder
    campaignId?: SortOrder
  }

  export type CampaignServerRefMinOrderByAggregateInput = {
    serverRef?: SortOrder
    campaignId?: SortOrder
  }

  export type CampaignServerRefSumOrderByAggregateInput = {
    serverRef?: SortOrder
    campaignId?: SortOrder
  }

  export type BigIntWithAggregatesFilter<$PrismaModel = never> = {
    equals?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    in?: bigint[] | number[]
    notIn?: bigint[] | number[]
    lt?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    lte?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    gt?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    gte?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    not?: NestedBigIntWithAggregatesFilter<$PrismaModel> | bigint | number
    _count?: NestedIntFilter<$PrismaModel>
    _avg?: NestedFloatFilter<$PrismaModel>
    _sum?: NestedBigIntFilter<$PrismaModel>
    _min?: NestedBigIntFilter<$PrismaModel>
    _max?: NestedBigIntFilter<$PrismaModel>
  }

  export type CampaignRecipientOrderByRelevanceInput = {
    fields: CampaignRecipientOrderByRelevanceFieldEnum | CampaignRecipientOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type CampaignRecipientCountOrderByAggregateInput = {
    id?: SortOrder
    campaignId?: SortOrder
    phoneNumber?: SortOrder
    name?: SortOrder
    param1?: SortOrder
    param2?: SortOrder
    param3?: SortOrder
    param4?: SortOrder
    param5?: SortOrder
    param6?: SortOrder
    param7?: SortOrder
    param8?: SortOrder
    param9?: SortOrder
    param10?: SortOrder
  }

  export type CampaignRecipientAvgOrderByAggregateInput = {
    id?: SortOrder
    campaignId?: SortOrder
  }

  export type CampaignRecipientMaxOrderByAggregateInput = {
    id?: SortOrder
    campaignId?: SortOrder
    phoneNumber?: SortOrder
    name?: SortOrder
    param1?: SortOrder
    param2?: SortOrder
    param3?: SortOrder
    param4?: SortOrder
    param5?: SortOrder
    param6?: SortOrder
    param7?: SortOrder
    param8?: SortOrder
    param9?: SortOrder
    param10?: SortOrder
  }

  export type CampaignRecipientMinOrderByAggregateInput = {
    id?: SortOrder
    campaignId?: SortOrder
    phoneNumber?: SortOrder
    name?: SortOrder
    param1?: SortOrder
    param2?: SortOrder
    param3?: SortOrder
    param4?: SortOrder
    param5?: SortOrder
    param6?: SortOrder
    param7?: SortOrder
    param8?: SortOrder
    param9?: SortOrder
    param10?: SortOrder
  }

  export type CampaignRecipientSumOrderByAggregateInput = {
    id?: SortOrder
    campaignId?: SortOrder
  }

  export type MobileNumberListRelationFilter = {
    every?: MobileNumberWhereInput
    some?: MobileNumberWhereInput
    none?: MobileNumberWhereInput
  }

  export type MobileNumberOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type MobileNumberListOrderByRelevanceInput = {
    fields: MobileNumberListOrderByRelevanceFieldEnum | MobileNumberListOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type MobileNumberListCountOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    listName?: SortOrder
    listType?: SortOrder
    createdByUserId?: SortOrder
    companyId?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrder
  }

  export type MobileNumberListAvgOrderByAggregateInput = {
    id?: SortOrder
    createdByUserId?: SortOrder
    companyId?: SortOrder
  }

  export type MobileNumberListMaxOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    listName?: SortOrder
    listType?: SortOrder
    createdByUserId?: SortOrder
    companyId?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrder
  }

  export type MobileNumberListMinOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    listName?: SortOrder
    listType?: SortOrder
    createdByUserId?: SortOrder
    companyId?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deletedAt?: SortOrder
  }

  export type MobileNumberListSumOrderByAggregateInput = {
    id?: SortOrder
    createdByUserId?: SortOrder
    companyId?: SortOrder
  }

  export type MobileNumberOrderByRelevanceInput = {
    fields: MobileNumberOrderByRelevanceFieldEnum | MobileNumberOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type MobileNumberCountOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    phoneNumber?: SortOrder
    type?: SortOrder
    is_blocked?: SortOrder
    numberListId?: SortOrder
    deletedAt?: SortOrder
    name?: SortOrder
    param1?: SortOrder
    param2?: SortOrder
    param3?: SortOrder
    param4?: SortOrder
    param5?: SortOrder
    param6?: SortOrder
    param7?: SortOrder
    param8?: SortOrder
    param9?: SortOrder
    param10?: SortOrder
  }

  export type MobileNumberAvgOrderByAggregateInput = {
    id?: SortOrder
    numberListId?: SortOrder
  }

  export type MobileNumberMaxOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    phoneNumber?: SortOrder
    type?: SortOrder
    is_blocked?: SortOrder
    numberListId?: SortOrder
    deletedAt?: SortOrder
    name?: SortOrder
    param1?: SortOrder
    param2?: SortOrder
    param3?: SortOrder
    param4?: SortOrder
    param5?: SortOrder
    param6?: SortOrder
    param7?: SortOrder
    param8?: SortOrder
    param9?: SortOrder
    param10?: SortOrder
  }

  export type MobileNumberMinOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    phoneNumber?: SortOrder
    type?: SortOrder
    is_blocked?: SortOrder
    numberListId?: SortOrder
    deletedAt?: SortOrder
    name?: SortOrder
    param1?: SortOrder
    param2?: SortOrder
    param3?: SortOrder
    param4?: SortOrder
    param5?: SortOrder
    param6?: SortOrder
    param7?: SortOrder
    param8?: SortOrder
    param9?: SortOrder
    param10?: SortOrder
  }

  export type MobileNumberSumOrderByAggregateInput = {
    id?: SortOrder
    numberListId?: SortOrder
  }

  export type SMS_ReportOrderByRelevanceInput = {
    fields: SMS_ReportOrderByRelevanceFieldEnum | SMS_ReportOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type SMS_ReportServer_refNumberMessagePartCompoundUniqueInput = {
    server_ref: bigint | number
    number: string
    messagePart: number
  }

  export type SMS_ReportCountOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    server_ref?: SortOrder
    campaignId?: SortOrder
    deliveryType?: SortOrder
    number?: SortOrder
    maskName?: SortOrder
    messagePart?: SortOrder
    chargedAmount?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type SMS_ReportAvgOrderByAggregateInput = {
    id?: SortOrder
    server_ref?: SortOrder
    campaignId?: SortOrder
    deliveryType?: SortOrder
    messagePart?: SortOrder
    chargedAmount?: SortOrder
  }

  export type SMS_ReportMaxOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    server_ref?: SortOrder
    campaignId?: SortOrder
    deliveryType?: SortOrder
    number?: SortOrder
    maskName?: SortOrder
    messagePart?: SortOrder
    chargedAmount?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type SMS_ReportMinOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    server_ref?: SortOrder
    campaignId?: SortOrder
    deliveryType?: SortOrder
    number?: SortOrder
    maskName?: SortOrder
    messagePart?: SortOrder
    chargedAmount?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type SMS_ReportSumOrderByAggregateInput = {
    id?: SortOrder
    server_ref?: SortOrder
    campaignId?: SortOrder
    deliveryType?: SortOrder
    messagePart?: SortOrder
    chargedAmount?: SortOrder
  }

  export type ExternalApiClientOrderByRelevanceInput = {
    fields: ExternalApiClientOrderByRelevanceFieldEnum | ExternalApiClientOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type ExternalApiClientCountOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    systemLabel?: SortOrder
    apiKeyHash?: SortOrder
    isActive?: SortOrder
    webhookUrl?: SortOrder
    webhookSecret?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type ExternalApiClientAvgOrderByAggregateInput = {
    id?: SortOrder
  }

  export type ExternalApiClientMaxOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    systemLabel?: SortOrder
    apiKeyHash?: SortOrder
    isActive?: SortOrder
    webhookUrl?: SortOrder
    webhookSecret?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type ExternalApiClientMinOrderByAggregateInput = {
    id?: SortOrder
    uuid?: SortOrder
    systemLabel?: SortOrder
    apiKeyHash?: SortOrder
    isActive?: SortOrder
    webhookUrl?: SortOrder
    webhookSecret?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type ExternalApiClientSumOrderByAggregateInput = {
    id?: SortOrder
  }

  export type SystemConfigOrderByRelevanceInput = {
    fields: SystemConfigOrderByRelevanceFieldEnum | SystemConfigOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type SystemConfigCountOrderByAggregateInput = {
    key?: SortOrder
    value?: SortOrder
    updatedAt?: SortOrder
  }

  export type SystemConfigMaxOrderByAggregateInput = {
    key?: SortOrder
    value?: SortOrder
    updatedAt?: SortOrder
  }

  export type SystemConfigMinOrderByAggregateInput = {
    key?: SortOrder
    value?: SortOrder
    updatedAt?: SortOrder
  }

  export type AuditLogOrderByRelevanceInput = {
    fields: AuditLogOrderByRelevanceFieldEnum | AuditLogOrderByRelevanceFieldEnum[]
    sort: SortOrder
    search: string
  }

  export type AuditLogCountOrderByAggregateInput = {
    id?: SortOrder
    entityName?: SortOrder
    entityId?: SortOrder
    action?: SortOrder
    oldValue?: SortOrder
    newValue?: SortOrder
    changedFields?: SortOrder
    performedByUserId?: SortOrder
    performedByCompanyId?: SortOrder
    createdAt?: SortOrder
  }

  export type AuditLogAvgOrderByAggregateInput = {
    id?: SortOrder
    performedByUserId?: SortOrder
    performedByCompanyId?: SortOrder
  }

  export type AuditLogMaxOrderByAggregateInput = {
    id?: SortOrder
    entityName?: SortOrder
    entityId?: SortOrder
    action?: SortOrder
    performedByUserId?: SortOrder
    performedByCompanyId?: SortOrder
    createdAt?: SortOrder
  }

  export type AuditLogMinOrderByAggregateInput = {
    id?: SortOrder
    entityName?: SortOrder
    entityId?: SortOrder
    action?: SortOrder
    performedByUserId?: SortOrder
    performedByCompanyId?: SortOrder
    createdAt?: SortOrder
  }

  export type AuditLogSumOrderByAggregateInput = {
    id?: SortOrder
    performedByUserId?: SortOrder
    performedByCompanyId?: SortOrder
  }

  export type UserCompanyCreateNestedManyWithoutCompanyInput = {
    create?: XOR<UserCompanyCreateWithoutCompanyInput, UserCompanyUncheckedCreateWithoutCompanyInput> | UserCompanyCreateWithoutCompanyInput[] | UserCompanyUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: UserCompanyCreateOrConnectWithoutCompanyInput | UserCompanyCreateOrConnectWithoutCompanyInput[]
    createMany?: UserCompanyCreateManyCompanyInputEnvelope
    connect?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
  }

  export type BillAccountCreateNestedManyWithoutCompanyInput = {
    create?: XOR<BillAccountCreateWithoutCompanyInput, BillAccountUncheckedCreateWithoutCompanyInput> | BillAccountCreateWithoutCompanyInput[] | BillAccountUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: BillAccountCreateOrConnectWithoutCompanyInput | BillAccountCreateOrConnectWithoutCompanyInput[]
    createMany?: BillAccountCreateManyCompanyInputEnvelope
    connect?: BillAccountWhereUniqueInput | BillAccountWhereUniqueInput[]
  }

  export type DepartmentCreateNestedManyWithoutCompanyInput = {
    create?: XOR<DepartmentCreateWithoutCompanyInput, DepartmentUncheckedCreateWithoutCompanyInput> | DepartmentCreateWithoutCompanyInput[] | DepartmentUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: DepartmentCreateOrConnectWithoutCompanyInput | DepartmentCreateOrConnectWithoutCompanyInput[]
    createMany?: DepartmentCreateManyCompanyInputEnvelope
    connect?: DepartmentWhereUniqueInput | DepartmentWhereUniqueInput[]
  }

  export type MobileNumberListCreateNestedManyWithoutCompanyInput = {
    create?: XOR<MobileNumberListCreateWithoutCompanyInput, MobileNumberListUncheckedCreateWithoutCompanyInput> | MobileNumberListCreateWithoutCompanyInput[] | MobileNumberListUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: MobileNumberListCreateOrConnectWithoutCompanyInput | MobileNumberListCreateOrConnectWithoutCompanyInput[]
    createMany?: MobileNumberListCreateManyCompanyInputEnvelope
    connect?: MobileNumberListWhereUniqueInput | MobileNumberListWhereUniqueInput[]
  }

  export type SenderMaskCreateNestedManyWithoutCompanyInput = {
    create?: XOR<SenderMaskCreateWithoutCompanyInput, SenderMaskUncheckedCreateWithoutCompanyInput> | SenderMaskCreateWithoutCompanyInput[] | SenderMaskUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: SenderMaskCreateOrConnectWithoutCompanyInput | SenderMaskCreateOrConnectWithoutCompanyInput[]
    createMany?: SenderMaskCreateManyCompanyInputEnvelope
    connect?: SenderMaskWhereUniqueInput | SenderMaskWhereUniqueInput[]
  }

  export type ContactParamSettingsCreateNestedOneWithoutCompanyInput = {
    create?: XOR<ContactParamSettingsCreateWithoutCompanyInput, ContactParamSettingsUncheckedCreateWithoutCompanyInput>
    connectOrCreate?: ContactParamSettingsCreateOrConnectWithoutCompanyInput
    connect?: ContactParamSettingsWhereUniqueInput
  }

  export type UserCompanyUncheckedCreateNestedManyWithoutCompanyInput = {
    create?: XOR<UserCompanyCreateWithoutCompanyInput, UserCompanyUncheckedCreateWithoutCompanyInput> | UserCompanyCreateWithoutCompanyInput[] | UserCompanyUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: UserCompanyCreateOrConnectWithoutCompanyInput | UserCompanyCreateOrConnectWithoutCompanyInput[]
    createMany?: UserCompanyCreateManyCompanyInputEnvelope
    connect?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
  }

  export type BillAccountUncheckedCreateNestedManyWithoutCompanyInput = {
    create?: XOR<BillAccountCreateWithoutCompanyInput, BillAccountUncheckedCreateWithoutCompanyInput> | BillAccountCreateWithoutCompanyInput[] | BillAccountUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: BillAccountCreateOrConnectWithoutCompanyInput | BillAccountCreateOrConnectWithoutCompanyInput[]
    createMany?: BillAccountCreateManyCompanyInputEnvelope
    connect?: BillAccountWhereUniqueInput | BillAccountWhereUniqueInput[]
  }

  export type DepartmentUncheckedCreateNestedManyWithoutCompanyInput = {
    create?: XOR<DepartmentCreateWithoutCompanyInput, DepartmentUncheckedCreateWithoutCompanyInput> | DepartmentCreateWithoutCompanyInput[] | DepartmentUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: DepartmentCreateOrConnectWithoutCompanyInput | DepartmentCreateOrConnectWithoutCompanyInput[]
    createMany?: DepartmentCreateManyCompanyInputEnvelope
    connect?: DepartmentWhereUniqueInput | DepartmentWhereUniqueInput[]
  }

  export type MobileNumberListUncheckedCreateNestedManyWithoutCompanyInput = {
    create?: XOR<MobileNumberListCreateWithoutCompanyInput, MobileNumberListUncheckedCreateWithoutCompanyInput> | MobileNumberListCreateWithoutCompanyInput[] | MobileNumberListUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: MobileNumberListCreateOrConnectWithoutCompanyInput | MobileNumberListCreateOrConnectWithoutCompanyInput[]
    createMany?: MobileNumberListCreateManyCompanyInputEnvelope
    connect?: MobileNumberListWhereUniqueInput | MobileNumberListWhereUniqueInput[]
  }

  export type SenderMaskUncheckedCreateNestedManyWithoutCompanyInput = {
    create?: XOR<SenderMaskCreateWithoutCompanyInput, SenderMaskUncheckedCreateWithoutCompanyInput> | SenderMaskCreateWithoutCompanyInput[] | SenderMaskUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: SenderMaskCreateOrConnectWithoutCompanyInput | SenderMaskCreateOrConnectWithoutCompanyInput[]
    createMany?: SenderMaskCreateManyCompanyInputEnvelope
    connect?: SenderMaskWhereUniqueInput | SenderMaskWhereUniqueInput[]
  }

  export type ContactParamSettingsUncheckedCreateNestedOneWithoutCompanyInput = {
    create?: XOR<ContactParamSettingsCreateWithoutCompanyInput, ContactParamSettingsUncheckedCreateWithoutCompanyInput>
    connectOrCreate?: ContactParamSettingsCreateOrConnectWithoutCompanyInput
    connect?: ContactParamSettingsWhereUniqueInput
  }

  export type StringFieldUpdateOperationsInput = {
    set?: string
  }

  export type NullableIntFieldUpdateOperationsInput = {
    set?: number | null
    increment?: number
    decrement?: number
    multiply?: number
    divide?: number
  }

  export type NullableStringFieldUpdateOperationsInput = {
    set?: string | null
  }

  export type NullableFloatFieldUpdateOperationsInput = {
    set?: number | null
    increment?: number
    decrement?: number
    multiply?: number
    divide?: number
  }

  export type NullableDateTimeFieldUpdateOperationsInput = {
    set?: Date | string | null
  }

  export type DateTimeFieldUpdateOperationsInput = {
    set?: Date | string
  }

  export type UserCompanyUpdateManyWithoutCompanyNestedInput = {
    create?: XOR<UserCompanyCreateWithoutCompanyInput, UserCompanyUncheckedCreateWithoutCompanyInput> | UserCompanyCreateWithoutCompanyInput[] | UserCompanyUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: UserCompanyCreateOrConnectWithoutCompanyInput | UserCompanyCreateOrConnectWithoutCompanyInput[]
    upsert?: UserCompanyUpsertWithWhereUniqueWithoutCompanyInput | UserCompanyUpsertWithWhereUniqueWithoutCompanyInput[]
    createMany?: UserCompanyCreateManyCompanyInputEnvelope
    set?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
    disconnect?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
    delete?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
    connect?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
    update?: UserCompanyUpdateWithWhereUniqueWithoutCompanyInput | UserCompanyUpdateWithWhereUniqueWithoutCompanyInput[]
    updateMany?: UserCompanyUpdateManyWithWhereWithoutCompanyInput | UserCompanyUpdateManyWithWhereWithoutCompanyInput[]
    deleteMany?: UserCompanyScalarWhereInput | UserCompanyScalarWhereInput[]
  }

  export type BillAccountUpdateManyWithoutCompanyNestedInput = {
    create?: XOR<BillAccountCreateWithoutCompanyInput, BillAccountUncheckedCreateWithoutCompanyInput> | BillAccountCreateWithoutCompanyInput[] | BillAccountUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: BillAccountCreateOrConnectWithoutCompanyInput | BillAccountCreateOrConnectWithoutCompanyInput[]
    upsert?: BillAccountUpsertWithWhereUniqueWithoutCompanyInput | BillAccountUpsertWithWhereUniqueWithoutCompanyInput[]
    createMany?: BillAccountCreateManyCompanyInputEnvelope
    set?: BillAccountWhereUniqueInput | BillAccountWhereUniqueInput[]
    disconnect?: BillAccountWhereUniqueInput | BillAccountWhereUniqueInput[]
    delete?: BillAccountWhereUniqueInput | BillAccountWhereUniqueInput[]
    connect?: BillAccountWhereUniqueInput | BillAccountWhereUniqueInput[]
    update?: BillAccountUpdateWithWhereUniqueWithoutCompanyInput | BillAccountUpdateWithWhereUniqueWithoutCompanyInput[]
    updateMany?: BillAccountUpdateManyWithWhereWithoutCompanyInput | BillAccountUpdateManyWithWhereWithoutCompanyInput[]
    deleteMany?: BillAccountScalarWhereInput | BillAccountScalarWhereInput[]
  }

  export type DepartmentUpdateManyWithoutCompanyNestedInput = {
    create?: XOR<DepartmentCreateWithoutCompanyInput, DepartmentUncheckedCreateWithoutCompanyInput> | DepartmentCreateWithoutCompanyInput[] | DepartmentUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: DepartmentCreateOrConnectWithoutCompanyInput | DepartmentCreateOrConnectWithoutCompanyInput[]
    upsert?: DepartmentUpsertWithWhereUniqueWithoutCompanyInput | DepartmentUpsertWithWhereUniqueWithoutCompanyInput[]
    createMany?: DepartmentCreateManyCompanyInputEnvelope
    set?: DepartmentWhereUniqueInput | DepartmentWhereUniqueInput[]
    disconnect?: DepartmentWhereUniqueInput | DepartmentWhereUniqueInput[]
    delete?: DepartmentWhereUniqueInput | DepartmentWhereUniqueInput[]
    connect?: DepartmentWhereUniqueInput | DepartmentWhereUniqueInput[]
    update?: DepartmentUpdateWithWhereUniqueWithoutCompanyInput | DepartmentUpdateWithWhereUniqueWithoutCompanyInput[]
    updateMany?: DepartmentUpdateManyWithWhereWithoutCompanyInput | DepartmentUpdateManyWithWhereWithoutCompanyInput[]
    deleteMany?: DepartmentScalarWhereInput | DepartmentScalarWhereInput[]
  }

  export type MobileNumberListUpdateManyWithoutCompanyNestedInput = {
    create?: XOR<MobileNumberListCreateWithoutCompanyInput, MobileNumberListUncheckedCreateWithoutCompanyInput> | MobileNumberListCreateWithoutCompanyInput[] | MobileNumberListUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: MobileNumberListCreateOrConnectWithoutCompanyInput | MobileNumberListCreateOrConnectWithoutCompanyInput[]
    upsert?: MobileNumberListUpsertWithWhereUniqueWithoutCompanyInput | MobileNumberListUpsertWithWhereUniqueWithoutCompanyInput[]
    createMany?: MobileNumberListCreateManyCompanyInputEnvelope
    set?: MobileNumberListWhereUniqueInput | MobileNumberListWhereUniqueInput[]
    disconnect?: MobileNumberListWhereUniqueInput | MobileNumberListWhereUniqueInput[]
    delete?: MobileNumberListWhereUniqueInput | MobileNumberListWhereUniqueInput[]
    connect?: MobileNumberListWhereUniqueInput | MobileNumberListWhereUniqueInput[]
    update?: MobileNumberListUpdateWithWhereUniqueWithoutCompanyInput | MobileNumberListUpdateWithWhereUniqueWithoutCompanyInput[]
    updateMany?: MobileNumberListUpdateManyWithWhereWithoutCompanyInput | MobileNumberListUpdateManyWithWhereWithoutCompanyInput[]
    deleteMany?: MobileNumberListScalarWhereInput | MobileNumberListScalarWhereInput[]
  }

  export type SenderMaskUpdateManyWithoutCompanyNestedInput = {
    create?: XOR<SenderMaskCreateWithoutCompanyInput, SenderMaskUncheckedCreateWithoutCompanyInput> | SenderMaskCreateWithoutCompanyInput[] | SenderMaskUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: SenderMaskCreateOrConnectWithoutCompanyInput | SenderMaskCreateOrConnectWithoutCompanyInput[]
    upsert?: SenderMaskUpsertWithWhereUniqueWithoutCompanyInput | SenderMaskUpsertWithWhereUniqueWithoutCompanyInput[]
    createMany?: SenderMaskCreateManyCompanyInputEnvelope
    set?: SenderMaskWhereUniqueInput | SenderMaskWhereUniqueInput[]
    disconnect?: SenderMaskWhereUniqueInput | SenderMaskWhereUniqueInput[]
    delete?: SenderMaskWhereUniqueInput | SenderMaskWhereUniqueInput[]
    connect?: SenderMaskWhereUniqueInput | SenderMaskWhereUniqueInput[]
    update?: SenderMaskUpdateWithWhereUniqueWithoutCompanyInput | SenderMaskUpdateWithWhereUniqueWithoutCompanyInput[]
    updateMany?: SenderMaskUpdateManyWithWhereWithoutCompanyInput | SenderMaskUpdateManyWithWhereWithoutCompanyInput[]
    deleteMany?: SenderMaskScalarWhereInput | SenderMaskScalarWhereInput[]
  }

  export type ContactParamSettingsUpdateOneWithoutCompanyNestedInput = {
    create?: XOR<ContactParamSettingsCreateWithoutCompanyInput, ContactParamSettingsUncheckedCreateWithoutCompanyInput>
    connectOrCreate?: ContactParamSettingsCreateOrConnectWithoutCompanyInput
    upsert?: ContactParamSettingsUpsertWithoutCompanyInput
    disconnect?: ContactParamSettingsWhereInput | boolean
    delete?: ContactParamSettingsWhereInput | boolean
    connect?: ContactParamSettingsWhereUniqueInput
    update?: XOR<XOR<ContactParamSettingsUpdateToOneWithWhereWithoutCompanyInput, ContactParamSettingsUpdateWithoutCompanyInput>, ContactParamSettingsUncheckedUpdateWithoutCompanyInput>
  }

  export type IntFieldUpdateOperationsInput = {
    set?: number
    increment?: number
    decrement?: number
    multiply?: number
    divide?: number
  }

  export type UserCompanyUncheckedUpdateManyWithoutCompanyNestedInput = {
    create?: XOR<UserCompanyCreateWithoutCompanyInput, UserCompanyUncheckedCreateWithoutCompanyInput> | UserCompanyCreateWithoutCompanyInput[] | UserCompanyUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: UserCompanyCreateOrConnectWithoutCompanyInput | UserCompanyCreateOrConnectWithoutCompanyInput[]
    upsert?: UserCompanyUpsertWithWhereUniqueWithoutCompanyInput | UserCompanyUpsertWithWhereUniqueWithoutCompanyInput[]
    createMany?: UserCompanyCreateManyCompanyInputEnvelope
    set?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
    disconnect?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
    delete?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
    connect?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
    update?: UserCompanyUpdateWithWhereUniqueWithoutCompanyInput | UserCompanyUpdateWithWhereUniqueWithoutCompanyInput[]
    updateMany?: UserCompanyUpdateManyWithWhereWithoutCompanyInput | UserCompanyUpdateManyWithWhereWithoutCompanyInput[]
    deleteMany?: UserCompanyScalarWhereInput | UserCompanyScalarWhereInput[]
  }

  export type BillAccountUncheckedUpdateManyWithoutCompanyNestedInput = {
    create?: XOR<BillAccountCreateWithoutCompanyInput, BillAccountUncheckedCreateWithoutCompanyInput> | BillAccountCreateWithoutCompanyInput[] | BillAccountUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: BillAccountCreateOrConnectWithoutCompanyInput | BillAccountCreateOrConnectWithoutCompanyInput[]
    upsert?: BillAccountUpsertWithWhereUniqueWithoutCompanyInput | BillAccountUpsertWithWhereUniqueWithoutCompanyInput[]
    createMany?: BillAccountCreateManyCompanyInputEnvelope
    set?: BillAccountWhereUniqueInput | BillAccountWhereUniqueInput[]
    disconnect?: BillAccountWhereUniqueInput | BillAccountWhereUniqueInput[]
    delete?: BillAccountWhereUniqueInput | BillAccountWhereUniqueInput[]
    connect?: BillAccountWhereUniqueInput | BillAccountWhereUniqueInput[]
    update?: BillAccountUpdateWithWhereUniqueWithoutCompanyInput | BillAccountUpdateWithWhereUniqueWithoutCompanyInput[]
    updateMany?: BillAccountUpdateManyWithWhereWithoutCompanyInput | BillAccountUpdateManyWithWhereWithoutCompanyInput[]
    deleteMany?: BillAccountScalarWhereInput | BillAccountScalarWhereInput[]
  }

  export type DepartmentUncheckedUpdateManyWithoutCompanyNestedInput = {
    create?: XOR<DepartmentCreateWithoutCompanyInput, DepartmentUncheckedCreateWithoutCompanyInput> | DepartmentCreateWithoutCompanyInput[] | DepartmentUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: DepartmentCreateOrConnectWithoutCompanyInput | DepartmentCreateOrConnectWithoutCompanyInput[]
    upsert?: DepartmentUpsertWithWhereUniqueWithoutCompanyInput | DepartmentUpsertWithWhereUniqueWithoutCompanyInput[]
    createMany?: DepartmentCreateManyCompanyInputEnvelope
    set?: DepartmentWhereUniqueInput | DepartmentWhereUniqueInput[]
    disconnect?: DepartmentWhereUniqueInput | DepartmentWhereUniqueInput[]
    delete?: DepartmentWhereUniqueInput | DepartmentWhereUniqueInput[]
    connect?: DepartmentWhereUniqueInput | DepartmentWhereUniqueInput[]
    update?: DepartmentUpdateWithWhereUniqueWithoutCompanyInput | DepartmentUpdateWithWhereUniqueWithoutCompanyInput[]
    updateMany?: DepartmentUpdateManyWithWhereWithoutCompanyInput | DepartmentUpdateManyWithWhereWithoutCompanyInput[]
    deleteMany?: DepartmentScalarWhereInput | DepartmentScalarWhereInput[]
  }

  export type MobileNumberListUncheckedUpdateManyWithoutCompanyNestedInput = {
    create?: XOR<MobileNumberListCreateWithoutCompanyInput, MobileNumberListUncheckedCreateWithoutCompanyInput> | MobileNumberListCreateWithoutCompanyInput[] | MobileNumberListUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: MobileNumberListCreateOrConnectWithoutCompanyInput | MobileNumberListCreateOrConnectWithoutCompanyInput[]
    upsert?: MobileNumberListUpsertWithWhereUniqueWithoutCompanyInput | MobileNumberListUpsertWithWhereUniqueWithoutCompanyInput[]
    createMany?: MobileNumberListCreateManyCompanyInputEnvelope
    set?: MobileNumberListWhereUniqueInput | MobileNumberListWhereUniqueInput[]
    disconnect?: MobileNumberListWhereUniqueInput | MobileNumberListWhereUniqueInput[]
    delete?: MobileNumberListWhereUniqueInput | MobileNumberListWhereUniqueInput[]
    connect?: MobileNumberListWhereUniqueInput | MobileNumberListWhereUniqueInput[]
    update?: MobileNumberListUpdateWithWhereUniqueWithoutCompanyInput | MobileNumberListUpdateWithWhereUniqueWithoutCompanyInput[]
    updateMany?: MobileNumberListUpdateManyWithWhereWithoutCompanyInput | MobileNumberListUpdateManyWithWhereWithoutCompanyInput[]
    deleteMany?: MobileNumberListScalarWhereInput | MobileNumberListScalarWhereInput[]
  }

  export type SenderMaskUncheckedUpdateManyWithoutCompanyNestedInput = {
    create?: XOR<SenderMaskCreateWithoutCompanyInput, SenderMaskUncheckedCreateWithoutCompanyInput> | SenderMaskCreateWithoutCompanyInput[] | SenderMaskUncheckedCreateWithoutCompanyInput[]
    connectOrCreate?: SenderMaskCreateOrConnectWithoutCompanyInput | SenderMaskCreateOrConnectWithoutCompanyInput[]
    upsert?: SenderMaskUpsertWithWhereUniqueWithoutCompanyInput | SenderMaskUpsertWithWhereUniqueWithoutCompanyInput[]
    createMany?: SenderMaskCreateManyCompanyInputEnvelope
    set?: SenderMaskWhereUniqueInput | SenderMaskWhereUniqueInput[]
    disconnect?: SenderMaskWhereUniqueInput | SenderMaskWhereUniqueInput[]
    delete?: SenderMaskWhereUniqueInput | SenderMaskWhereUniqueInput[]
    connect?: SenderMaskWhereUniqueInput | SenderMaskWhereUniqueInput[]
    update?: SenderMaskUpdateWithWhereUniqueWithoutCompanyInput | SenderMaskUpdateWithWhereUniqueWithoutCompanyInput[]
    updateMany?: SenderMaskUpdateManyWithWhereWithoutCompanyInput | SenderMaskUpdateManyWithWhereWithoutCompanyInput[]
    deleteMany?: SenderMaskScalarWhereInput | SenderMaskScalarWhereInput[]
  }

  export type ContactParamSettingsUncheckedUpdateOneWithoutCompanyNestedInput = {
    create?: XOR<ContactParamSettingsCreateWithoutCompanyInput, ContactParamSettingsUncheckedCreateWithoutCompanyInput>
    connectOrCreate?: ContactParamSettingsCreateOrConnectWithoutCompanyInput
    upsert?: ContactParamSettingsUpsertWithoutCompanyInput
    disconnect?: ContactParamSettingsWhereInput | boolean
    delete?: ContactParamSettingsWhereInput | boolean
    connect?: ContactParamSettingsWhereUniqueInput
    update?: XOR<XOR<ContactParamSettingsUpdateToOneWithWhereWithoutCompanyInput, ContactParamSettingsUpdateWithoutCompanyInput>, ContactParamSettingsUncheckedUpdateWithoutCompanyInput>
  }

  export type UserCreateNestedManyWithoutRoleInput = {
    create?: XOR<UserCreateWithoutRoleInput, UserUncheckedCreateWithoutRoleInput> | UserCreateWithoutRoleInput[] | UserUncheckedCreateWithoutRoleInput[]
    connectOrCreate?: UserCreateOrConnectWithoutRoleInput | UserCreateOrConnectWithoutRoleInput[]
    createMany?: UserCreateManyRoleInputEnvelope
    connect?: UserWhereUniqueInput | UserWhereUniqueInput[]
  }

  export type UserUncheckedCreateNestedManyWithoutRoleInput = {
    create?: XOR<UserCreateWithoutRoleInput, UserUncheckedCreateWithoutRoleInput> | UserCreateWithoutRoleInput[] | UserUncheckedCreateWithoutRoleInput[]
    connectOrCreate?: UserCreateOrConnectWithoutRoleInput | UserCreateOrConnectWithoutRoleInput[]
    createMany?: UserCreateManyRoleInputEnvelope
    connect?: UserWhereUniqueInput | UserWhereUniqueInput[]
  }

  export type BoolFieldUpdateOperationsInput = {
    set?: boolean
  }

  export type UserUpdateManyWithoutRoleNestedInput = {
    create?: XOR<UserCreateWithoutRoleInput, UserUncheckedCreateWithoutRoleInput> | UserCreateWithoutRoleInput[] | UserUncheckedCreateWithoutRoleInput[]
    connectOrCreate?: UserCreateOrConnectWithoutRoleInput | UserCreateOrConnectWithoutRoleInput[]
    upsert?: UserUpsertWithWhereUniqueWithoutRoleInput | UserUpsertWithWhereUniqueWithoutRoleInput[]
    createMany?: UserCreateManyRoleInputEnvelope
    set?: UserWhereUniqueInput | UserWhereUniqueInput[]
    disconnect?: UserWhereUniqueInput | UserWhereUniqueInput[]
    delete?: UserWhereUniqueInput | UserWhereUniqueInput[]
    connect?: UserWhereUniqueInput | UserWhereUniqueInput[]
    update?: UserUpdateWithWhereUniqueWithoutRoleInput | UserUpdateWithWhereUniqueWithoutRoleInput[]
    updateMany?: UserUpdateManyWithWhereWithoutRoleInput | UserUpdateManyWithWhereWithoutRoleInput[]
    deleteMany?: UserScalarWhereInput | UserScalarWhereInput[]
  }

  export type UserUncheckedUpdateManyWithoutRoleNestedInput = {
    create?: XOR<UserCreateWithoutRoleInput, UserUncheckedCreateWithoutRoleInput> | UserCreateWithoutRoleInput[] | UserUncheckedCreateWithoutRoleInput[]
    connectOrCreate?: UserCreateOrConnectWithoutRoleInput | UserCreateOrConnectWithoutRoleInput[]
    upsert?: UserUpsertWithWhereUniqueWithoutRoleInput | UserUpsertWithWhereUniqueWithoutRoleInput[]
    createMany?: UserCreateManyRoleInputEnvelope
    set?: UserWhereUniqueInput | UserWhereUniqueInput[]
    disconnect?: UserWhereUniqueInput | UserWhereUniqueInput[]
    delete?: UserWhereUniqueInput | UserWhereUniqueInput[]
    connect?: UserWhereUniqueInput | UserWhereUniqueInput[]
    update?: UserUpdateWithWhereUniqueWithoutRoleInput | UserUpdateWithWhereUniqueWithoutRoleInput[]
    updateMany?: UserUpdateManyWithWhereWithoutRoleInput | UserUpdateManyWithWhereWithoutRoleInput[]
    deleteMany?: UserScalarWhereInput | UserScalarWhereInput[]
  }

  export type RoleCreateNestedOneWithoutUsersInput = {
    create?: XOR<RoleCreateWithoutUsersInput, RoleUncheckedCreateWithoutUsersInput>
    connectOrCreate?: RoleCreateOrConnectWithoutUsersInput
    connect?: RoleWhereUniqueInput
  }

  export type UserCompanyCreateNestedManyWithoutUserInput = {
    create?: XOR<UserCompanyCreateWithoutUserInput, UserCompanyUncheckedCreateWithoutUserInput> | UserCompanyCreateWithoutUserInput[] | UserCompanyUncheckedCreateWithoutUserInput[]
    connectOrCreate?: UserCompanyCreateOrConnectWithoutUserInput | UserCompanyCreateOrConnectWithoutUserInput[]
    createMany?: UserCompanyCreateManyUserInputEnvelope
    connect?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
  }

  export type RefreshTokenCreateNestedManyWithoutUserInput = {
    create?: XOR<RefreshTokenCreateWithoutUserInput, RefreshTokenUncheckedCreateWithoutUserInput> | RefreshTokenCreateWithoutUserInput[] | RefreshTokenUncheckedCreateWithoutUserInput[]
    connectOrCreate?: RefreshTokenCreateOrConnectWithoutUserInput | RefreshTokenCreateOrConnectWithoutUserInput[]
    createMany?: RefreshTokenCreateManyUserInputEnvelope
    connect?: RefreshTokenWhereUniqueInput | RefreshTokenWhereUniqueInput[]
  }

  export type SavedCardCreateNestedManyWithoutUserInput = {
    create?: XOR<SavedCardCreateWithoutUserInput, SavedCardUncheckedCreateWithoutUserInput> | SavedCardCreateWithoutUserInput[] | SavedCardUncheckedCreateWithoutUserInput[]
    connectOrCreate?: SavedCardCreateOrConnectWithoutUserInput | SavedCardCreateOrConnectWithoutUserInput[]
    createMany?: SavedCardCreateManyUserInputEnvelope
    connect?: SavedCardWhereUniqueInput | SavedCardWhereUniqueInput[]
  }

  export type PasswordResetTokenCreateNestedManyWithoutUserInput = {
    create?: XOR<PasswordResetTokenCreateWithoutUserInput, PasswordResetTokenUncheckedCreateWithoutUserInput> | PasswordResetTokenCreateWithoutUserInput[] | PasswordResetTokenUncheckedCreateWithoutUserInput[]
    connectOrCreate?: PasswordResetTokenCreateOrConnectWithoutUserInput | PasswordResetTokenCreateOrConnectWithoutUserInput[]
    createMany?: PasswordResetTokenCreateManyUserInputEnvelope
    connect?: PasswordResetTokenWhereUniqueInput | PasswordResetTokenWhereUniqueInput[]
  }

  export type UserCompanyUncheckedCreateNestedManyWithoutUserInput = {
    create?: XOR<UserCompanyCreateWithoutUserInput, UserCompanyUncheckedCreateWithoutUserInput> | UserCompanyCreateWithoutUserInput[] | UserCompanyUncheckedCreateWithoutUserInput[]
    connectOrCreate?: UserCompanyCreateOrConnectWithoutUserInput | UserCompanyCreateOrConnectWithoutUserInput[]
    createMany?: UserCompanyCreateManyUserInputEnvelope
    connect?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
  }

  export type RefreshTokenUncheckedCreateNestedManyWithoutUserInput = {
    create?: XOR<RefreshTokenCreateWithoutUserInput, RefreshTokenUncheckedCreateWithoutUserInput> | RefreshTokenCreateWithoutUserInput[] | RefreshTokenUncheckedCreateWithoutUserInput[]
    connectOrCreate?: RefreshTokenCreateOrConnectWithoutUserInput | RefreshTokenCreateOrConnectWithoutUserInput[]
    createMany?: RefreshTokenCreateManyUserInputEnvelope
    connect?: RefreshTokenWhereUniqueInput | RefreshTokenWhereUniqueInput[]
  }

  export type SavedCardUncheckedCreateNestedManyWithoutUserInput = {
    create?: XOR<SavedCardCreateWithoutUserInput, SavedCardUncheckedCreateWithoutUserInput> | SavedCardCreateWithoutUserInput[] | SavedCardUncheckedCreateWithoutUserInput[]
    connectOrCreate?: SavedCardCreateOrConnectWithoutUserInput | SavedCardCreateOrConnectWithoutUserInput[]
    createMany?: SavedCardCreateManyUserInputEnvelope
    connect?: SavedCardWhereUniqueInput | SavedCardWhereUniqueInput[]
  }

  export type PasswordResetTokenUncheckedCreateNestedManyWithoutUserInput = {
    create?: XOR<PasswordResetTokenCreateWithoutUserInput, PasswordResetTokenUncheckedCreateWithoutUserInput> | PasswordResetTokenCreateWithoutUserInput[] | PasswordResetTokenUncheckedCreateWithoutUserInput[]
    connectOrCreate?: PasswordResetTokenCreateOrConnectWithoutUserInput | PasswordResetTokenCreateOrConnectWithoutUserInput[]
    createMany?: PasswordResetTokenCreateManyUserInputEnvelope
    connect?: PasswordResetTokenWhereUniqueInput | PasswordResetTokenWhereUniqueInput[]
  }

  export type RoleUpdateOneWithoutUsersNestedInput = {
    create?: XOR<RoleCreateWithoutUsersInput, RoleUncheckedCreateWithoutUsersInput>
    connectOrCreate?: RoleCreateOrConnectWithoutUsersInput
    upsert?: RoleUpsertWithoutUsersInput
    disconnect?: RoleWhereInput | boolean
    delete?: RoleWhereInput | boolean
    connect?: RoleWhereUniqueInput
    update?: XOR<XOR<RoleUpdateToOneWithWhereWithoutUsersInput, RoleUpdateWithoutUsersInput>, RoleUncheckedUpdateWithoutUsersInput>
  }

  export type UserCompanyUpdateManyWithoutUserNestedInput = {
    create?: XOR<UserCompanyCreateWithoutUserInput, UserCompanyUncheckedCreateWithoutUserInput> | UserCompanyCreateWithoutUserInput[] | UserCompanyUncheckedCreateWithoutUserInput[]
    connectOrCreate?: UserCompanyCreateOrConnectWithoutUserInput | UserCompanyCreateOrConnectWithoutUserInput[]
    upsert?: UserCompanyUpsertWithWhereUniqueWithoutUserInput | UserCompanyUpsertWithWhereUniqueWithoutUserInput[]
    createMany?: UserCompanyCreateManyUserInputEnvelope
    set?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
    disconnect?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
    delete?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
    connect?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
    update?: UserCompanyUpdateWithWhereUniqueWithoutUserInput | UserCompanyUpdateWithWhereUniqueWithoutUserInput[]
    updateMany?: UserCompanyUpdateManyWithWhereWithoutUserInput | UserCompanyUpdateManyWithWhereWithoutUserInput[]
    deleteMany?: UserCompanyScalarWhereInput | UserCompanyScalarWhereInput[]
  }

  export type RefreshTokenUpdateManyWithoutUserNestedInput = {
    create?: XOR<RefreshTokenCreateWithoutUserInput, RefreshTokenUncheckedCreateWithoutUserInput> | RefreshTokenCreateWithoutUserInput[] | RefreshTokenUncheckedCreateWithoutUserInput[]
    connectOrCreate?: RefreshTokenCreateOrConnectWithoutUserInput | RefreshTokenCreateOrConnectWithoutUserInput[]
    upsert?: RefreshTokenUpsertWithWhereUniqueWithoutUserInput | RefreshTokenUpsertWithWhereUniqueWithoutUserInput[]
    createMany?: RefreshTokenCreateManyUserInputEnvelope
    set?: RefreshTokenWhereUniqueInput | RefreshTokenWhereUniqueInput[]
    disconnect?: RefreshTokenWhereUniqueInput | RefreshTokenWhereUniqueInput[]
    delete?: RefreshTokenWhereUniqueInput | RefreshTokenWhereUniqueInput[]
    connect?: RefreshTokenWhereUniqueInput | RefreshTokenWhereUniqueInput[]
    update?: RefreshTokenUpdateWithWhereUniqueWithoutUserInput | RefreshTokenUpdateWithWhereUniqueWithoutUserInput[]
    updateMany?: RefreshTokenUpdateManyWithWhereWithoutUserInput | RefreshTokenUpdateManyWithWhereWithoutUserInput[]
    deleteMany?: RefreshTokenScalarWhereInput | RefreshTokenScalarWhereInput[]
  }

  export type SavedCardUpdateManyWithoutUserNestedInput = {
    create?: XOR<SavedCardCreateWithoutUserInput, SavedCardUncheckedCreateWithoutUserInput> | SavedCardCreateWithoutUserInput[] | SavedCardUncheckedCreateWithoutUserInput[]
    connectOrCreate?: SavedCardCreateOrConnectWithoutUserInput | SavedCardCreateOrConnectWithoutUserInput[]
    upsert?: SavedCardUpsertWithWhereUniqueWithoutUserInput | SavedCardUpsertWithWhereUniqueWithoutUserInput[]
    createMany?: SavedCardCreateManyUserInputEnvelope
    set?: SavedCardWhereUniqueInput | SavedCardWhereUniqueInput[]
    disconnect?: SavedCardWhereUniqueInput | SavedCardWhereUniqueInput[]
    delete?: SavedCardWhereUniqueInput | SavedCardWhereUniqueInput[]
    connect?: SavedCardWhereUniqueInput | SavedCardWhereUniqueInput[]
    update?: SavedCardUpdateWithWhereUniqueWithoutUserInput | SavedCardUpdateWithWhereUniqueWithoutUserInput[]
    updateMany?: SavedCardUpdateManyWithWhereWithoutUserInput | SavedCardUpdateManyWithWhereWithoutUserInput[]
    deleteMany?: SavedCardScalarWhereInput | SavedCardScalarWhereInput[]
  }

  export type PasswordResetTokenUpdateManyWithoutUserNestedInput = {
    create?: XOR<PasswordResetTokenCreateWithoutUserInput, PasswordResetTokenUncheckedCreateWithoutUserInput> | PasswordResetTokenCreateWithoutUserInput[] | PasswordResetTokenUncheckedCreateWithoutUserInput[]
    connectOrCreate?: PasswordResetTokenCreateOrConnectWithoutUserInput | PasswordResetTokenCreateOrConnectWithoutUserInput[]
    upsert?: PasswordResetTokenUpsertWithWhereUniqueWithoutUserInput | PasswordResetTokenUpsertWithWhereUniqueWithoutUserInput[]
    createMany?: PasswordResetTokenCreateManyUserInputEnvelope
    set?: PasswordResetTokenWhereUniqueInput | PasswordResetTokenWhereUniqueInput[]
    disconnect?: PasswordResetTokenWhereUniqueInput | PasswordResetTokenWhereUniqueInput[]
    delete?: PasswordResetTokenWhereUniqueInput | PasswordResetTokenWhereUniqueInput[]
    connect?: PasswordResetTokenWhereUniqueInput | PasswordResetTokenWhereUniqueInput[]
    update?: PasswordResetTokenUpdateWithWhereUniqueWithoutUserInput | PasswordResetTokenUpdateWithWhereUniqueWithoutUserInput[]
    updateMany?: PasswordResetTokenUpdateManyWithWhereWithoutUserInput | PasswordResetTokenUpdateManyWithWhereWithoutUserInput[]
    deleteMany?: PasswordResetTokenScalarWhereInput | PasswordResetTokenScalarWhereInput[]
  }

  export type UserCompanyUncheckedUpdateManyWithoutUserNestedInput = {
    create?: XOR<UserCompanyCreateWithoutUserInput, UserCompanyUncheckedCreateWithoutUserInput> | UserCompanyCreateWithoutUserInput[] | UserCompanyUncheckedCreateWithoutUserInput[]
    connectOrCreate?: UserCompanyCreateOrConnectWithoutUserInput | UserCompanyCreateOrConnectWithoutUserInput[]
    upsert?: UserCompanyUpsertWithWhereUniqueWithoutUserInput | UserCompanyUpsertWithWhereUniqueWithoutUserInput[]
    createMany?: UserCompanyCreateManyUserInputEnvelope
    set?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
    disconnect?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
    delete?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
    connect?: UserCompanyWhereUniqueInput | UserCompanyWhereUniqueInput[]
    update?: UserCompanyUpdateWithWhereUniqueWithoutUserInput | UserCompanyUpdateWithWhereUniqueWithoutUserInput[]
    updateMany?: UserCompanyUpdateManyWithWhereWithoutUserInput | UserCompanyUpdateManyWithWhereWithoutUserInput[]
    deleteMany?: UserCompanyScalarWhereInput | UserCompanyScalarWhereInput[]
  }

  export type RefreshTokenUncheckedUpdateManyWithoutUserNestedInput = {
    create?: XOR<RefreshTokenCreateWithoutUserInput, RefreshTokenUncheckedCreateWithoutUserInput> | RefreshTokenCreateWithoutUserInput[] | RefreshTokenUncheckedCreateWithoutUserInput[]
    connectOrCreate?: RefreshTokenCreateOrConnectWithoutUserInput | RefreshTokenCreateOrConnectWithoutUserInput[]
    upsert?: RefreshTokenUpsertWithWhereUniqueWithoutUserInput | RefreshTokenUpsertWithWhereUniqueWithoutUserInput[]
    createMany?: RefreshTokenCreateManyUserInputEnvelope
    set?: RefreshTokenWhereUniqueInput | RefreshTokenWhereUniqueInput[]
    disconnect?: RefreshTokenWhereUniqueInput | RefreshTokenWhereUniqueInput[]
    delete?: RefreshTokenWhereUniqueInput | RefreshTokenWhereUniqueInput[]
    connect?: RefreshTokenWhereUniqueInput | RefreshTokenWhereUniqueInput[]
    update?: RefreshTokenUpdateWithWhereUniqueWithoutUserInput | RefreshTokenUpdateWithWhereUniqueWithoutUserInput[]
    updateMany?: RefreshTokenUpdateManyWithWhereWithoutUserInput | RefreshTokenUpdateManyWithWhereWithoutUserInput[]
    deleteMany?: RefreshTokenScalarWhereInput | RefreshTokenScalarWhereInput[]
  }

  export type SavedCardUncheckedUpdateManyWithoutUserNestedInput = {
    create?: XOR<SavedCardCreateWithoutUserInput, SavedCardUncheckedCreateWithoutUserInput> | SavedCardCreateWithoutUserInput[] | SavedCardUncheckedCreateWithoutUserInput[]
    connectOrCreate?: SavedCardCreateOrConnectWithoutUserInput | SavedCardCreateOrConnectWithoutUserInput[]
    upsert?: SavedCardUpsertWithWhereUniqueWithoutUserInput | SavedCardUpsertWithWhereUniqueWithoutUserInput[]
    createMany?: SavedCardCreateManyUserInputEnvelope
    set?: SavedCardWhereUniqueInput | SavedCardWhereUniqueInput[]
    disconnect?: SavedCardWhereUniqueInput | SavedCardWhereUniqueInput[]
    delete?: SavedCardWhereUniqueInput | SavedCardWhereUniqueInput[]
    connect?: SavedCardWhereUniqueInput | SavedCardWhereUniqueInput[]
    update?: SavedCardUpdateWithWhereUniqueWithoutUserInput | SavedCardUpdateWithWhereUniqueWithoutUserInput[]
    updateMany?: SavedCardUpdateManyWithWhereWithoutUserInput | SavedCardUpdateManyWithWhereWithoutUserInput[]
    deleteMany?: SavedCardScalarWhereInput | SavedCardScalarWhereInput[]
  }

  export type PasswordResetTokenUncheckedUpdateManyWithoutUserNestedInput = {
    create?: XOR<PasswordResetTokenCreateWithoutUserInput, PasswordResetTokenUncheckedCreateWithoutUserInput> | PasswordResetTokenCreateWithoutUserInput[] | PasswordResetTokenUncheckedCreateWithoutUserInput[]
    connectOrCreate?: PasswordResetTokenCreateOrConnectWithoutUserInput | PasswordResetTokenCreateOrConnectWithoutUserInput[]
    upsert?: PasswordResetTokenUpsertWithWhereUniqueWithoutUserInput | PasswordResetTokenUpsertWithWhereUniqueWithoutUserInput[]
    createMany?: PasswordResetTokenCreateManyUserInputEnvelope
    set?: PasswordResetTokenWhereUniqueInput | PasswordResetTokenWhereUniqueInput[]
    disconnect?: PasswordResetTokenWhereUniqueInput | PasswordResetTokenWhereUniqueInput[]
    delete?: PasswordResetTokenWhereUniqueInput | PasswordResetTokenWhereUniqueInput[]
    connect?: PasswordResetTokenWhereUniqueInput | PasswordResetTokenWhereUniqueInput[]
    update?: PasswordResetTokenUpdateWithWhereUniqueWithoutUserInput | PasswordResetTokenUpdateWithWhereUniqueWithoutUserInput[]
    updateMany?: PasswordResetTokenUpdateManyWithWhereWithoutUserInput | PasswordResetTokenUpdateManyWithWhereWithoutUserInput[]
    deleteMany?: PasswordResetTokenScalarWhereInput | PasswordResetTokenScalarWhereInput[]
  }

  export type UserCreateNestedOneWithoutRefreshTokensInput = {
    create?: XOR<UserCreateWithoutRefreshTokensInput, UserUncheckedCreateWithoutRefreshTokensInput>
    connectOrCreate?: UserCreateOrConnectWithoutRefreshTokensInput
    connect?: UserWhereUniqueInput
  }

  export type UserUpdateOneRequiredWithoutRefreshTokensNestedInput = {
    create?: XOR<UserCreateWithoutRefreshTokensInput, UserUncheckedCreateWithoutRefreshTokensInput>
    connectOrCreate?: UserCreateOrConnectWithoutRefreshTokensInput
    upsert?: UserUpsertWithoutRefreshTokensInput
    connect?: UserWhereUniqueInput
    update?: XOR<XOR<UserUpdateToOneWithWhereWithoutRefreshTokensInput, UserUpdateWithoutRefreshTokensInput>, UserUncheckedUpdateWithoutRefreshTokensInput>
  }

  export type UserCreateNestedOneWithoutPasswordResetTokensInput = {
    create?: XOR<UserCreateWithoutPasswordResetTokensInput, UserUncheckedCreateWithoutPasswordResetTokensInput>
    connectOrCreate?: UserCreateOrConnectWithoutPasswordResetTokensInput
    connect?: UserWhereUniqueInput
  }

  export type UserUpdateOneRequiredWithoutPasswordResetTokensNestedInput = {
    create?: XOR<UserCreateWithoutPasswordResetTokensInput, UserUncheckedCreateWithoutPasswordResetTokensInput>
    connectOrCreate?: UserCreateOrConnectWithoutPasswordResetTokensInput
    upsert?: UserUpsertWithoutPasswordResetTokensInput
    connect?: UserWhereUniqueInput
    update?: XOR<XOR<UserUpdateToOneWithWhereWithoutPasswordResetTokensInput, UserUpdateWithoutPasswordResetTokensInput>, UserUncheckedUpdateWithoutPasswordResetTokensInput>
  }

  export type UserCreateNestedOneWithoutCompaniesInput = {
    create?: XOR<UserCreateWithoutCompaniesInput, UserUncheckedCreateWithoutCompaniesInput>
    connectOrCreate?: UserCreateOrConnectWithoutCompaniesInput
    connect?: UserWhereUniqueInput
  }

  export type CompanyCreateNestedOneWithoutUserCompaniesInput = {
    create?: XOR<CompanyCreateWithoutUserCompaniesInput, CompanyUncheckedCreateWithoutUserCompaniesInput>
    connectOrCreate?: CompanyCreateOrConnectWithoutUserCompaniesInput
    connect?: CompanyWhereUniqueInput
  }

  export type UserUpdateOneRequiredWithoutCompaniesNestedInput = {
    create?: XOR<UserCreateWithoutCompaniesInput, UserUncheckedCreateWithoutCompaniesInput>
    connectOrCreate?: UserCreateOrConnectWithoutCompaniesInput
    upsert?: UserUpsertWithoutCompaniesInput
    connect?: UserWhereUniqueInput
    update?: XOR<XOR<UserUpdateToOneWithWhereWithoutCompaniesInput, UserUpdateWithoutCompaniesInput>, UserUncheckedUpdateWithoutCompaniesInput>
  }

  export type CompanyUpdateOneRequiredWithoutUserCompaniesNestedInput = {
    create?: XOR<CompanyCreateWithoutUserCompaniesInput, CompanyUncheckedCreateWithoutUserCompaniesInput>
    connectOrCreate?: CompanyCreateOrConnectWithoutUserCompaniesInput
    upsert?: CompanyUpsertWithoutUserCompaniesInput
    connect?: CompanyWhereUniqueInput
    update?: XOR<XOR<CompanyUpdateToOneWithWhereWithoutUserCompaniesInput, CompanyUpdateWithoutUserCompaniesInput>, CompanyUncheckedUpdateWithoutUserCompaniesInput>
  }

  export type BillAccountCreateNestedOneWithoutBillPaymentsInput = {
    create?: XOR<BillAccountCreateWithoutBillPaymentsInput, BillAccountUncheckedCreateWithoutBillPaymentsInput>
    connectOrCreate?: BillAccountCreateOrConnectWithoutBillPaymentsInput
    connect?: BillAccountWhereUniqueInput
  }

  export type SavedCardCreateNestedOneWithoutBillPaymentsInput = {
    create?: XOR<SavedCardCreateWithoutBillPaymentsInput, SavedCardUncheckedCreateWithoutBillPaymentsInput>
    connectOrCreate?: SavedCardCreateOrConnectWithoutBillPaymentsInput
    connect?: SavedCardWhereUniqueInput
  }

  export type FloatFieldUpdateOperationsInput = {
    set?: number
    increment?: number
    decrement?: number
    multiply?: number
    divide?: number
  }

  export type BillAccountUpdateOneRequiredWithoutBillPaymentsNestedInput = {
    create?: XOR<BillAccountCreateWithoutBillPaymentsInput, BillAccountUncheckedCreateWithoutBillPaymentsInput>
    connectOrCreate?: BillAccountCreateOrConnectWithoutBillPaymentsInput
    upsert?: BillAccountUpsertWithoutBillPaymentsInput
    connect?: BillAccountWhereUniqueInput
    update?: XOR<XOR<BillAccountUpdateToOneWithWhereWithoutBillPaymentsInput, BillAccountUpdateWithoutBillPaymentsInput>, BillAccountUncheckedUpdateWithoutBillPaymentsInput>
  }

  export type SavedCardUpdateOneWithoutBillPaymentsNestedInput = {
    create?: XOR<SavedCardCreateWithoutBillPaymentsInput, SavedCardUncheckedCreateWithoutBillPaymentsInput>
    connectOrCreate?: SavedCardCreateOrConnectWithoutBillPaymentsInput
    upsert?: SavedCardUpsertWithoutBillPaymentsInput
    disconnect?: SavedCardWhereInput | boolean
    delete?: SavedCardWhereInput | boolean
    connect?: SavedCardWhereUniqueInput
    update?: XOR<XOR<SavedCardUpdateToOneWithWhereWithoutBillPaymentsInput, SavedCardUpdateWithoutBillPaymentsInput>, SavedCardUncheckedUpdateWithoutBillPaymentsInput>
  }

  export type CompanyCreateNestedOneWithoutBillAccountsInput = {
    create?: XOR<CompanyCreateWithoutBillAccountsInput, CompanyUncheckedCreateWithoutBillAccountsInput>
    connectOrCreate?: CompanyCreateOrConnectWithoutBillAccountsInput
    connect?: CompanyWhereUniqueInput
  }

  export type BillPaymentCreateNestedManyWithoutBillAccountInput = {
    create?: XOR<BillPaymentCreateWithoutBillAccountInput, BillPaymentUncheckedCreateWithoutBillAccountInput> | BillPaymentCreateWithoutBillAccountInput[] | BillPaymentUncheckedCreateWithoutBillAccountInput[]
    connectOrCreate?: BillPaymentCreateOrConnectWithoutBillAccountInput | BillPaymentCreateOrConnectWithoutBillAccountInput[]
    createMany?: BillPaymentCreateManyBillAccountInputEnvelope
    connect?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
  }

  export type CampaignCreateNestedManyWithoutBillingAccountInput = {
    create?: XOR<CampaignCreateWithoutBillingAccountInput, CampaignUncheckedCreateWithoutBillingAccountInput> | CampaignCreateWithoutBillingAccountInput[] | CampaignUncheckedCreateWithoutBillingAccountInput[]
    connectOrCreate?: CampaignCreateOrConnectWithoutBillingAccountInput | CampaignCreateOrConnectWithoutBillingAccountInput[]
    createMany?: CampaignCreateManyBillingAccountInputEnvelope
    connect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
  }

  export type LowBalanceAlertCreateNestedManyWithoutBillAccountInput = {
    create?: XOR<LowBalanceAlertCreateWithoutBillAccountInput, LowBalanceAlertUncheckedCreateWithoutBillAccountInput> | LowBalanceAlertCreateWithoutBillAccountInput[] | LowBalanceAlertUncheckedCreateWithoutBillAccountInput[]
    connectOrCreate?: LowBalanceAlertCreateOrConnectWithoutBillAccountInput | LowBalanceAlertCreateOrConnectWithoutBillAccountInput[]
    createMany?: LowBalanceAlertCreateManyBillAccountInputEnvelope
    connect?: LowBalanceAlertWhereUniqueInput | LowBalanceAlertWhereUniqueInput[]
  }

  export type BillPaymentUncheckedCreateNestedManyWithoutBillAccountInput = {
    create?: XOR<BillPaymentCreateWithoutBillAccountInput, BillPaymentUncheckedCreateWithoutBillAccountInput> | BillPaymentCreateWithoutBillAccountInput[] | BillPaymentUncheckedCreateWithoutBillAccountInput[]
    connectOrCreate?: BillPaymentCreateOrConnectWithoutBillAccountInput | BillPaymentCreateOrConnectWithoutBillAccountInput[]
    createMany?: BillPaymentCreateManyBillAccountInputEnvelope
    connect?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
  }

  export type CampaignUncheckedCreateNestedManyWithoutBillingAccountInput = {
    create?: XOR<CampaignCreateWithoutBillingAccountInput, CampaignUncheckedCreateWithoutBillingAccountInput> | CampaignCreateWithoutBillingAccountInput[] | CampaignUncheckedCreateWithoutBillingAccountInput[]
    connectOrCreate?: CampaignCreateOrConnectWithoutBillingAccountInput | CampaignCreateOrConnectWithoutBillingAccountInput[]
    createMany?: CampaignCreateManyBillingAccountInputEnvelope
    connect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
  }

  export type LowBalanceAlertUncheckedCreateNestedManyWithoutBillAccountInput = {
    create?: XOR<LowBalanceAlertCreateWithoutBillAccountInput, LowBalanceAlertUncheckedCreateWithoutBillAccountInput> | LowBalanceAlertCreateWithoutBillAccountInput[] | LowBalanceAlertUncheckedCreateWithoutBillAccountInput[]
    connectOrCreate?: LowBalanceAlertCreateOrConnectWithoutBillAccountInput | LowBalanceAlertCreateOrConnectWithoutBillAccountInput[]
    createMany?: LowBalanceAlertCreateManyBillAccountInputEnvelope
    connect?: LowBalanceAlertWhereUniqueInput | LowBalanceAlertWhereUniqueInput[]
  }

  export type CompanyUpdateOneRequiredWithoutBillAccountsNestedInput = {
    create?: XOR<CompanyCreateWithoutBillAccountsInput, CompanyUncheckedCreateWithoutBillAccountsInput>
    connectOrCreate?: CompanyCreateOrConnectWithoutBillAccountsInput
    upsert?: CompanyUpsertWithoutBillAccountsInput
    connect?: CompanyWhereUniqueInput
    update?: XOR<XOR<CompanyUpdateToOneWithWhereWithoutBillAccountsInput, CompanyUpdateWithoutBillAccountsInput>, CompanyUncheckedUpdateWithoutBillAccountsInput>
  }

  export type BillPaymentUpdateManyWithoutBillAccountNestedInput = {
    create?: XOR<BillPaymentCreateWithoutBillAccountInput, BillPaymentUncheckedCreateWithoutBillAccountInput> | BillPaymentCreateWithoutBillAccountInput[] | BillPaymentUncheckedCreateWithoutBillAccountInput[]
    connectOrCreate?: BillPaymentCreateOrConnectWithoutBillAccountInput | BillPaymentCreateOrConnectWithoutBillAccountInput[]
    upsert?: BillPaymentUpsertWithWhereUniqueWithoutBillAccountInput | BillPaymentUpsertWithWhereUniqueWithoutBillAccountInput[]
    createMany?: BillPaymentCreateManyBillAccountInputEnvelope
    set?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
    disconnect?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
    delete?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
    connect?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
    update?: BillPaymentUpdateWithWhereUniqueWithoutBillAccountInput | BillPaymentUpdateWithWhereUniqueWithoutBillAccountInput[]
    updateMany?: BillPaymentUpdateManyWithWhereWithoutBillAccountInput | BillPaymentUpdateManyWithWhereWithoutBillAccountInput[]
    deleteMany?: BillPaymentScalarWhereInput | BillPaymentScalarWhereInput[]
  }

  export type CampaignUpdateManyWithoutBillingAccountNestedInput = {
    create?: XOR<CampaignCreateWithoutBillingAccountInput, CampaignUncheckedCreateWithoutBillingAccountInput> | CampaignCreateWithoutBillingAccountInput[] | CampaignUncheckedCreateWithoutBillingAccountInput[]
    connectOrCreate?: CampaignCreateOrConnectWithoutBillingAccountInput | CampaignCreateOrConnectWithoutBillingAccountInput[]
    upsert?: CampaignUpsertWithWhereUniqueWithoutBillingAccountInput | CampaignUpsertWithWhereUniqueWithoutBillingAccountInput[]
    createMany?: CampaignCreateManyBillingAccountInputEnvelope
    set?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    disconnect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    delete?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    connect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    update?: CampaignUpdateWithWhereUniqueWithoutBillingAccountInput | CampaignUpdateWithWhereUniqueWithoutBillingAccountInput[]
    updateMany?: CampaignUpdateManyWithWhereWithoutBillingAccountInput | CampaignUpdateManyWithWhereWithoutBillingAccountInput[]
    deleteMany?: CampaignScalarWhereInput | CampaignScalarWhereInput[]
  }

  export type LowBalanceAlertUpdateManyWithoutBillAccountNestedInput = {
    create?: XOR<LowBalanceAlertCreateWithoutBillAccountInput, LowBalanceAlertUncheckedCreateWithoutBillAccountInput> | LowBalanceAlertCreateWithoutBillAccountInput[] | LowBalanceAlertUncheckedCreateWithoutBillAccountInput[]
    connectOrCreate?: LowBalanceAlertCreateOrConnectWithoutBillAccountInput | LowBalanceAlertCreateOrConnectWithoutBillAccountInput[]
    upsert?: LowBalanceAlertUpsertWithWhereUniqueWithoutBillAccountInput | LowBalanceAlertUpsertWithWhereUniqueWithoutBillAccountInput[]
    createMany?: LowBalanceAlertCreateManyBillAccountInputEnvelope
    set?: LowBalanceAlertWhereUniqueInput | LowBalanceAlertWhereUniqueInput[]
    disconnect?: LowBalanceAlertWhereUniqueInput | LowBalanceAlertWhereUniqueInput[]
    delete?: LowBalanceAlertWhereUniqueInput | LowBalanceAlertWhereUniqueInput[]
    connect?: LowBalanceAlertWhereUniqueInput | LowBalanceAlertWhereUniqueInput[]
    update?: LowBalanceAlertUpdateWithWhereUniqueWithoutBillAccountInput | LowBalanceAlertUpdateWithWhereUniqueWithoutBillAccountInput[]
    updateMany?: LowBalanceAlertUpdateManyWithWhereWithoutBillAccountInput | LowBalanceAlertUpdateManyWithWhereWithoutBillAccountInput[]
    deleteMany?: LowBalanceAlertScalarWhereInput | LowBalanceAlertScalarWhereInput[]
  }

  export type BillPaymentUncheckedUpdateManyWithoutBillAccountNestedInput = {
    create?: XOR<BillPaymentCreateWithoutBillAccountInput, BillPaymentUncheckedCreateWithoutBillAccountInput> | BillPaymentCreateWithoutBillAccountInput[] | BillPaymentUncheckedCreateWithoutBillAccountInput[]
    connectOrCreate?: BillPaymentCreateOrConnectWithoutBillAccountInput | BillPaymentCreateOrConnectWithoutBillAccountInput[]
    upsert?: BillPaymentUpsertWithWhereUniqueWithoutBillAccountInput | BillPaymentUpsertWithWhereUniqueWithoutBillAccountInput[]
    createMany?: BillPaymentCreateManyBillAccountInputEnvelope
    set?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
    disconnect?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
    delete?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
    connect?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
    update?: BillPaymentUpdateWithWhereUniqueWithoutBillAccountInput | BillPaymentUpdateWithWhereUniqueWithoutBillAccountInput[]
    updateMany?: BillPaymentUpdateManyWithWhereWithoutBillAccountInput | BillPaymentUpdateManyWithWhereWithoutBillAccountInput[]
    deleteMany?: BillPaymentScalarWhereInput | BillPaymentScalarWhereInput[]
  }

  export type CampaignUncheckedUpdateManyWithoutBillingAccountNestedInput = {
    create?: XOR<CampaignCreateWithoutBillingAccountInput, CampaignUncheckedCreateWithoutBillingAccountInput> | CampaignCreateWithoutBillingAccountInput[] | CampaignUncheckedCreateWithoutBillingAccountInput[]
    connectOrCreate?: CampaignCreateOrConnectWithoutBillingAccountInput | CampaignCreateOrConnectWithoutBillingAccountInput[]
    upsert?: CampaignUpsertWithWhereUniqueWithoutBillingAccountInput | CampaignUpsertWithWhereUniqueWithoutBillingAccountInput[]
    createMany?: CampaignCreateManyBillingAccountInputEnvelope
    set?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    disconnect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    delete?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    connect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    update?: CampaignUpdateWithWhereUniqueWithoutBillingAccountInput | CampaignUpdateWithWhereUniqueWithoutBillingAccountInput[]
    updateMany?: CampaignUpdateManyWithWhereWithoutBillingAccountInput | CampaignUpdateManyWithWhereWithoutBillingAccountInput[]
    deleteMany?: CampaignScalarWhereInput | CampaignScalarWhereInput[]
  }

  export type LowBalanceAlertUncheckedUpdateManyWithoutBillAccountNestedInput = {
    create?: XOR<LowBalanceAlertCreateWithoutBillAccountInput, LowBalanceAlertUncheckedCreateWithoutBillAccountInput> | LowBalanceAlertCreateWithoutBillAccountInput[] | LowBalanceAlertUncheckedCreateWithoutBillAccountInput[]
    connectOrCreate?: LowBalanceAlertCreateOrConnectWithoutBillAccountInput | LowBalanceAlertCreateOrConnectWithoutBillAccountInput[]
    upsert?: LowBalanceAlertUpsertWithWhereUniqueWithoutBillAccountInput | LowBalanceAlertUpsertWithWhereUniqueWithoutBillAccountInput[]
    createMany?: LowBalanceAlertCreateManyBillAccountInputEnvelope
    set?: LowBalanceAlertWhereUniqueInput | LowBalanceAlertWhereUniqueInput[]
    disconnect?: LowBalanceAlertWhereUniqueInput | LowBalanceAlertWhereUniqueInput[]
    delete?: LowBalanceAlertWhereUniqueInput | LowBalanceAlertWhereUniqueInput[]
    connect?: LowBalanceAlertWhereUniqueInput | LowBalanceAlertWhereUniqueInput[]
    update?: LowBalanceAlertUpdateWithWhereUniqueWithoutBillAccountInput | LowBalanceAlertUpdateWithWhereUniqueWithoutBillAccountInput[]
    updateMany?: LowBalanceAlertUpdateManyWithWhereWithoutBillAccountInput | LowBalanceAlertUpdateManyWithWhereWithoutBillAccountInput[]
    deleteMany?: LowBalanceAlertScalarWhereInput | LowBalanceAlertScalarWhereInput[]
  }

  export type UserCreateNestedOneWithoutSavedCardsInput = {
    create?: XOR<UserCreateWithoutSavedCardsInput, UserUncheckedCreateWithoutSavedCardsInput>
    connectOrCreate?: UserCreateOrConnectWithoutSavedCardsInput
    connect?: UserWhereUniqueInput
  }

  export type BillPaymentCreateNestedManyWithoutSavedCardInput = {
    create?: XOR<BillPaymentCreateWithoutSavedCardInput, BillPaymentUncheckedCreateWithoutSavedCardInput> | BillPaymentCreateWithoutSavedCardInput[] | BillPaymentUncheckedCreateWithoutSavedCardInput[]
    connectOrCreate?: BillPaymentCreateOrConnectWithoutSavedCardInput | BillPaymentCreateOrConnectWithoutSavedCardInput[]
    createMany?: BillPaymentCreateManySavedCardInputEnvelope
    connect?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
  }

  export type BillPaymentUncheckedCreateNestedManyWithoutSavedCardInput = {
    create?: XOR<BillPaymentCreateWithoutSavedCardInput, BillPaymentUncheckedCreateWithoutSavedCardInput> | BillPaymentCreateWithoutSavedCardInput[] | BillPaymentUncheckedCreateWithoutSavedCardInput[]
    connectOrCreate?: BillPaymentCreateOrConnectWithoutSavedCardInput | BillPaymentCreateOrConnectWithoutSavedCardInput[]
    createMany?: BillPaymentCreateManySavedCardInputEnvelope
    connect?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
  }

  export type UserUpdateOneRequiredWithoutSavedCardsNestedInput = {
    create?: XOR<UserCreateWithoutSavedCardsInput, UserUncheckedCreateWithoutSavedCardsInput>
    connectOrCreate?: UserCreateOrConnectWithoutSavedCardsInput
    upsert?: UserUpsertWithoutSavedCardsInput
    connect?: UserWhereUniqueInput
    update?: XOR<XOR<UserUpdateToOneWithWhereWithoutSavedCardsInput, UserUpdateWithoutSavedCardsInput>, UserUncheckedUpdateWithoutSavedCardsInput>
  }

  export type BillPaymentUpdateManyWithoutSavedCardNestedInput = {
    create?: XOR<BillPaymentCreateWithoutSavedCardInput, BillPaymentUncheckedCreateWithoutSavedCardInput> | BillPaymentCreateWithoutSavedCardInput[] | BillPaymentUncheckedCreateWithoutSavedCardInput[]
    connectOrCreate?: BillPaymentCreateOrConnectWithoutSavedCardInput | BillPaymentCreateOrConnectWithoutSavedCardInput[]
    upsert?: BillPaymentUpsertWithWhereUniqueWithoutSavedCardInput | BillPaymentUpsertWithWhereUniqueWithoutSavedCardInput[]
    createMany?: BillPaymentCreateManySavedCardInputEnvelope
    set?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
    disconnect?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
    delete?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
    connect?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
    update?: BillPaymentUpdateWithWhereUniqueWithoutSavedCardInput | BillPaymentUpdateWithWhereUniqueWithoutSavedCardInput[]
    updateMany?: BillPaymentUpdateManyWithWhereWithoutSavedCardInput | BillPaymentUpdateManyWithWhereWithoutSavedCardInput[]
    deleteMany?: BillPaymentScalarWhereInput | BillPaymentScalarWhereInput[]
  }

  export type BillPaymentUncheckedUpdateManyWithoutSavedCardNestedInput = {
    create?: XOR<BillPaymentCreateWithoutSavedCardInput, BillPaymentUncheckedCreateWithoutSavedCardInput> | BillPaymentCreateWithoutSavedCardInput[] | BillPaymentUncheckedCreateWithoutSavedCardInput[]
    connectOrCreate?: BillPaymentCreateOrConnectWithoutSavedCardInput | BillPaymentCreateOrConnectWithoutSavedCardInput[]
    upsert?: BillPaymentUpsertWithWhereUniqueWithoutSavedCardInput | BillPaymentUpsertWithWhereUniqueWithoutSavedCardInput[]
    createMany?: BillPaymentCreateManySavedCardInputEnvelope
    set?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
    disconnect?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
    delete?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
    connect?: BillPaymentWhereUniqueInput | BillPaymentWhereUniqueInput[]
    update?: BillPaymentUpdateWithWhereUniqueWithoutSavedCardInput | BillPaymentUpdateWithWhereUniqueWithoutSavedCardInput[]
    updateMany?: BillPaymentUpdateManyWithWhereWithoutSavedCardInput | BillPaymentUpdateManyWithWhereWithoutSavedCardInput[]
    deleteMany?: BillPaymentScalarWhereInput | BillPaymentScalarWhereInput[]
  }

  export type BillAccountCreateNestedOneWithoutLowBalanceAlertsInput = {
    create?: XOR<BillAccountCreateWithoutLowBalanceAlertsInput, BillAccountUncheckedCreateWithoutLowBalanceAlertsInput>
    connectOrCreate?: BillAccountCreateOrConnectWithoutLowBalanceAlertsInput
    connect?: BillAccountWhereUniqueInput
  }

  export type BillAccountUpdateOneRequiredWithoutLowBalanceAlertsNestedInput = {
    create?: XOR<BillAccountCreateWithoutLowBalanceAlertsInput, BillAccountUncheckedCreateWithoutLowBalanceAlertsInput>
    connectOrCreate?: BillAccountCreateOrConnectWithoutLowBalanceAlertsInput
    upsert?: BillAccountUpsertWithoutLowBalanceAlertsInput
    connect?: BillAccountWhereUniqueInput
    update?: XOR<XOR<BillAccountUpdateToOneWithWhereWithoutLowBalanceAlertsInput, BillAccountUpdateWithoutLowBalanceAlertsInput>, BillAccountUncheckedUpdateWithoutLowBalanceAlertsInput>
  }

  export type CompanyCreateNestedOneWithoutDepartmentsInput = {
    create?: XOR<CompanyCreateWithoutDepartmentsInput, CompanyUncheckedCreateWithoutDepartmentsInput>
    connectOrCreate?: CompanyCreateOrConnectWithoutDepartmentsInput
    connect?: CompanyWhereUniqueInput
  }

  export type SMS_TemplateCreateNestedManyWithoutDepartmentInput = {
    create?: XOR<SMS_TemplateCreateWithoutDepartmentInput, SMS_TemplateUncheckedCreateWithoutDepartmentInput> | SMS_TemplateCreateWithoutDepartmentInput[] | SMS_TemplateUncheckedCreateWithoutDepartmentInput[]
    connectOrCreate?: SMS_TemplateCreateOrConnectWithoutDepartmentInput | SMS_TemplateCreateOrConnectWithoutDepartmentInput[]
    createMany?: SMS_TemplateCreateManyDepartmentInputEnvelope
    connect?: SMS_TemplateWhereUniqueInput | SMS_TemplateWhereUniqueInput[]
  }

  export type DepartmentSenderMaskCreateNestedManyWithoutDepartmentInput = {
    create?: XOR<DepartmentSenderMaskCreateWithoutDepartmentInput, DepartmentSenderMaskUncheckedCreateWithoutDepartmentInput> | DepartmentSenderMaskCreateWithoutDepartmentInput[] | DepartmentSenderMaskUncheckedCreateWithoutDepartmentInput[]
    connectOrCreate?: DepartmentSenderMaskCreateOrConnectWithoutDepartmentInput | DepartmentSenderMaskCreateOrConnectWithoutDepartmentInput[]
    createMany?: DepartmentSenderMaskCreateManyDepartmentInputEnvelope
    connect?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
  }

  export type SMS_TemplateUncheckedCreateNestedManyWithoutDepartmentInput = {
    create?: XOR<SMS_TemplateCreateWithoutDepartmentInput, SMS_TemplateUncheckedCreateWithoutDepartmentInput> | SMS_TemplateCreateWithoutDepartmentInput[] | SMS_TemplateUncheckedCreateWithoutDepartmentInput[]
    connectOrCreate?: SMS_TemplateCreateOrConnectWithoutDepartmentInput | SMS_TemplateCreateOrConnectWithoutDepartmentInput[]
    createMany?: SMS_TemplateCreateManyDepartmentInputEnvelope
    connect?: SMS_TemplateWhereUniqueInput | SMS_TemplateWhereUniqueInput[]
  }

  export type DepartmentSenderMaskUncheckedCreateNestedManyWithoutDepartmentInput = {
    create?: XOR<DepartmentSenderMaskCreateWithoutDepartmentInput, DepartmentSenderMaskUncheckedCreateWithoutDepartmentInput> | DepartmentSenderMaskCreateWithoutDepartmentInput[] | DepartmentSenderMaskUncheckedCreateWithoutDepartmentInput[]
    connectOrCreate?: DepartmentSenderMaskCreateOrConnectWithoutDepartmentInput | DepartmentSenderMaskCreateOrConnectWithoutDepartmentInput[]
    createMany?: DepartmentSenderMaskCreateManyDepartmentInputEnvelope
    connect?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
  }

  export type CompanyUpdateOneRequiredWithoutDepartmentsNestedInput = {
    create?: XOR<CompanyCreateWithoutDepartmentsInput, CompanyUncheckedCreateWithoutDepartmentsInput>
    connectOrCreate?: CompanyCreateOrConnectWithoutDepartmentsInput
    upsert?: CompanyUpsertWithoutDepartmentsInput
    connect?: CompanyWhereUniqueInput
    update?: XOR<XOR<CompanyUpdateToOneWithWhereWithoutDepartmentsInput, CompanyUpdateWithoutDepartmentsInput>, CompanyUncheckedUpdateWithoutDepartmentsInput>
  }

  export type SMS_TemplateUpdateManyWithoutDepartmentNestedInput = {
    create?: XOR<SMS_TemplateCreateWithoutDepartmentInput, SMS_TemplateUncheckedCreateWithoutDepartmentInput> | SMS_TemplateCreateWithoutDepartmentInput[] | SMS_TemplateUncheckedCreateWithoutDepartmentInput[]
    connectOrCreate?: SMS_TemplateCreateOrConnectWithoutDepartmentInput | SMS_TemplateCreateOrConnectWithoutDepartmentInput[]
    upsert?: SMS_TemplateUpsertWithWhereUniqueWithoutDepartmentInput | SMS_TemplateUpsertWithWhereUniqueWithoutDepartmentInput[]
    createMany?: SMS_TemplateCreateManyDepartmentInputEnvelope
    set?: SMS_TemplateWhereUniqueInput | SMS_TemplateWhereUniqueInput[]
    disconnect?: SMS_TemplateWhereUniqueInput | SMS_TemplateWhereUniqueInput[]
    delete?: SMS_TemplateWhereUniqueInput | SMS_TemplateWhereUniqueInput[]
    connect?: SMS_TemplateWhereUniqueInput | SMS_TemplateWhereUniqueInput[]
    update?: SMS_TemplateUpdateWithWhereUniqueWithoutDepartmentInput | SMS_TemplateUpdateWithWhereUniqueWithoutDepartmentInput[]
    updateMany?: SMS_TemplateUpdateManyWithWhereWithoutDepartmentInput | SMS_TemplateUpdateManyWithWhereWithoutDepartmentInput[]
    deleteMany?: SMS_TemplateScalarWhereInput | SMS_TemplateScalarWhereInput[]
  }

  export type DepartmentSenderMaskUpdateManyWithoutDepartmentNestedInput = {
    create?: XOR<DepartmentSenderMaskCreateWithoutDepartmentInput, DepartmentSenderMaskUncheckedCreateWithoutDepartmentInput> | DepartmentSenderMaskCreateWithoutDepartmentInput[] | DepartmentSenderMaskUncheckedCreateWithoutDepartmentInput[]
    connectOrCreate?: DepartmentSenderMaskCreateOrConnectWithoutDepartmentInput | DepartmentSenderMaskCreateOrConnectWithoutDepartmentInput[]
    upsert?: DepartmentSenderMaskUpsertWithWhereUniqueWithoutDepartmentInput | DepartmentSenderMaskUpsertWithWhereUniqueWithoutDepartmentInput[]
    createMany?: DepartmentSenderMaskCreateManyDepartmentInputEnvelope
    set?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
    disconnect?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
    delete?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
    connect?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
    update?: DepartmentSenderMaskUpdateWithWhereUniqueWithoutDepartmentInput | DepartmentSenderMaskUpdateWithWhereUniqueWithoutDepartmentInput[]
    updateMany?: DepartmentSenderMaskUpdateManyWithWhereWithoutDepartmentInput | DepartmentSenderMaskUpdateManyWithWhereWithoutDepartmentInput[]
    deleteMany?: DepartmentSenderMaskScalarWhereInput | DepartmentSenderMaskScalarWhereInput[]
  }

  export type SMS_TemplateUncheckedUpdateManyWithoutDepartmentNestedInput = {
    create?: XOR<SMS_TemplateCreateWithoutDepartmentInput, SMS_TemplateUncheckedCreateWithoutDepartmentInput> | SMS_TemplateCreateWithoutDepartmentInput[] | SMS_TemplateUncheckedCreateWithoutDepartmentInput[]
    connectOrCreate?: SMS_TemplateCreateOrConnectWithoutDepartmentInput | SMS_TemplateCreateOrConnectWithoutDepartmentInput[]
    upsert?: SMS_TemplateUpsertWithWhereUniqueWithoutDepartmentInput | SMS_TemplateUpsertWithWhereUniqueWithoutDepartmentInput[]
    createMany?: SMS_TemplateCreateManyDepartmentInputEnvelope
    set?: SMS_TemplateWhereUniqueInput | SMS_TemplateWhereUniqueInput[]
    disconnect?: SMS_TemplateWhereUniqueInput | SMS_TemplateWhereUniqueInput[]
    delete?: SMS_TemplateWhereUniqueInput | SMS_TemplateWhereUniqueInput[]
    connect?: SMS_TemplateWhereUniqueInput | SMS_TemplateWhereUniqueInput[]
    update?: SMS_TemplateUpdateWithWhereUniqueWithoutDepartmentInput | SMS_TemplateUpdateWithWhereUniqueWithoutDepartmentInput[]
    updateMany?: SMS_TemplateUpdateManyWithWhereWithoutDepartmentInput | SMS_TemplateUpdateManyWithWhereWithoutDepartmentInput[]
    deleteMany?: SMS_TemplateScalarWhereInput | SMS_TemplateScalarWhereInput[]
  }

  export type DepartmentSenderMaskUncheckedUpdateManyWithoutDepartmentNestedInput = {
    create?: XOR<DepartmentSenderMaskCreateWithoutDepartmentInput, DepartmentSenderMaskUncheckedCreateWithoutDepartmentInput> | DepartmentSenderMaskCreateWithoutDepartmentInput[] | DepartmentSenderMaskUncheckedCreateWithoutDepartmentInput[]
    connectOrCreate?: DepartmentSenderMaskCreateOrConnectWithoutDepartmentInput | DepartmentSenderMaskCreateOrConnectWithoutDepartmentInput[]
    upsert?: DepartmentSenderMaskUpsertWithWhereUniqueWithoutDepartmentInput | DepartmentSenderMaskUpsertWithWhereUniqueWithoutDepartmentInput[]
    createMany?: DepartmentSenderMaskCreateManyDepartmentInputEnvelope
    set?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
    disconnect?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
    delete?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
    connect?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
    update?: DepartmentSenderMaskUpdateWithWhereUniqueWithoutDepartmentInput | DepartmentSenderMaskUpdateWithWhereUniqueWithoutDepartmentInput[]
    updateMany?: DepartmentSenderMaskUpdateManyWithWhereWithoutDepartmentInput | DepartmentSenderMaskUpdateManyWithWhereWithoutDepartmentInput[]
    deleteMany?: DepartmentSenderMaskScalarWhereInput | DepartmentSenderMaskScalarWhereInput[]
  }

  export type DepartmentCreateNestedOneWithoutSmsTemplatesInput = {
    create?: XOR<DepartmentCreateWithoutSmsTemplatesInput, DepartmentUncheckedCreateWithoutSmsTemplatesInput>
    connectOrCreate?: DepartmentCreateOrConnectWithoutSmsTemplatesInput
    connect?: DepartmentWhereUniqueInput
  }

  export type CampaignCreateNestedManyWithoutTemplateInput = {
    create?: XOR<CampaignCreateWithoutTemplateInput, CampaignUncheckedCreateWithoutTemplateInput> | CampaignCreateWithoutTemplateInput[] | CampaignUncheckedCreateWithoutTemplateInput[]
    connectOrCreate?: CampaignCreateOrConnectWithoutTemplateInput | CampaignCreateOrConnectWithoutTemplateInput[]
    createMany?: CampaignCreateManyTemplateInputEnvelope
    connect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
  }

  export type CampaignUncheckedCreateNestedManyWithoutTemplateInput = {
    create?: XOR<CampaignCreateWithoutTemplateInput, CampaignUncheckedCreateWithoutTemplateInput> | CampaignCreateWithoutTemplateInput[] | CampaignUncheckedCreateWithoutTemplateInput[]
    connectOrCreate?: CampaignCreateOrConnectWithoutTemplateInput | CampaignCreateOrConnectWithoutTemplateInput[]
    createMany?: CampaignCreateManyTemplateInputEnvelope
    connect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
  }

  export type DepartmentUpdateOneRequiredWithoutSmsTemplatesNestedInput = {
    create?: XOR<DepartmentCreateWithoutSmsTemplatesInput, DepartmentUncheckedCreateWithoutSmsTemplatesInput>
    connectOrCreate?: DepartmentCreateOrConnectWithoutSmsTemplatesInput
    upsert?: DepartmentUpsertWithoutSmsTemplatesInput
    connect?: DepartmentWhereUniqueInput
    update?: XOR<XOR<DepartmentUpdateToOneWithWhereWithoutSmsTemplatesInput, DepartmentUpdateWithoutSmsTemplatesInput>, DepartmentUncheckedUpdateWithoutSmsTemplatesInput>
  }

  export type CampaignUpdateManyWithoutTemplateNestedInput = {
    create?: XOR<CampaignCreateWithoutTemplateInput, CampaignUncheckedCreateWithoutTemplateInput> | CampaignCreateWithoutTemplateInput[] | CampaignUncheckedCreateWithoutTemplateInput[]
    connectOrCreate?: CampaignCreateOrConnectWithoutTemplateInput | CampaignCreateOrConnectWithoutTemplateInput[]
    upsert?: CampaignUpsertWithWhereUniqueWithoutTemplateInput | CampaignUpsertWithWhereUniqueWithoutTemplateInput[]
    createMany?: CampaignCreateManyTemplateInputEnvelope
    set?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    disconnect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    delete?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    connect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    update?: CampaignUpdateWithWhereUniqueWithoutTemplateInput | CampaignUpdateWithWhereUniqueWithoutTemplateInput[]
    updateMany?: CampaignUpdateManyWithWhereWithoutTemplateInput | CampaignUpdateManyWithWhereWithoutTemplateInput[]
    deleteMany?: CampaignScalarWhereInput | CampaignScalarWhereInput[]
  }

  export type CampaignUncheckedUpdateManyWithoutTemplateNestedInput = {
    create?: XOR<CampaignCreateWithoutTemplateInput, CampaignUncheckedCreateWithoutTemplateInput> | CampaignCreateWithoutTemplateInput[] | CampaignUncheckedCreateWithoutTemplateInput[]
    connectOrCreate?: CampaignCreateOrConnectWithoutTemplateInput | CampaignCreateOrConnectWithoutTemplateInput[]
    upsert?: CampaignUpsertWithWhereUniqueWithoutTemplateInput | CampaignUpsertWithWhereUniqueWithoutTemplateInput[]
    createMany?: CampaignCreateManyTemplateInputEnvelope
    set?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    disconnect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    delete?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    connect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    update?: CampaignUpdateWithWhereUniqueWithoutTemplateInput | CampaignUpdateWithWhereUniqueWithoutTemplateInput[]
    updateMany?: CampaignUpdateManyWithWhereWithoutTemplateInput | CampaignUpdateManyWithWhereWithoutTemplateInput[]
    deleteMany?: CampaignScalarWhereInput | CampaignScalarWhereInput[]
  }

  export type CompanyCreateNestedOneWithoutSenderMasksInput = {
    create?: XOR<CompanyCreateWithoutSenderMasksInput, CompanyUncheckedCreateWithoutSenderMasksInput>
    connectOrCreate?: CompanyCreateOrConnectWithoutSenderMasksInput
    connect?: CompanyWhereUniqueInput
  }

  export type CampaignCreateNestedManyWithoutSenderMaskInput = {
    create?: XOR<CampaignCreateWithoutSenderMaskInput, CampaignUncheckedCreateWithoutSenderMaskInput> | CampaignCreateWithoutSenderMaskInput[] | CampaignUncheckedCreateWithoutSenderMaskInput[]
    connectOrCreate?: CampaignCreateOrConnectWithoutSenderMaskInput | CampaignCreateOrConnectWithoutSenderMaskInput[]
    createMany?: CampaignCreateManySenderMaskInputEnvelope
    connect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
  }

  export type DepartmentSenderMaskCreateNestedManyWithoutSenderMaskInput = {
    create?: XOR<DepartmentSenderMaskCreateWithoutSenderMaskInput, DepartmentSenderMaskUncheckedCreateWithoutSenderMaskInput> | DepartmentSenderMaskCreateWithoutSenderMaskInput[] | DepartmentSenderMaskUncheckedCreateWithoutSenderMaskInput[]
    connectOrCreate?: DepartmentSenderMaskCreateOrConnectWithoutSenderMaskInput | DepartmentSenderMaskCreateOrConnectWithoutSenderMaskInput[]
    createMany?: DepartmentSenderMaskCreateManySenderMaskInputEnvelope
    connect?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
  }

  export type CampaignUncheckedCreateNestedManyWithoutSenderMaskInput = {
    create?: XOR<CampaignCreateWithoutSenderMaskInput, CampaignUncheckedCreateWithoutSenderMaskInput> | CampaignCreateWithoutSenderMaskInput[] | CampaignUncheckedCreateWithoutSenderMaskInput[]
    connectOrCreate?: CampaignCreateOrConnectWithoutSenderMaskInput | CampaignCreateOrConnectWithoutSenderMaskInput[]
    createMany?: CampaignCreateManySenderMaskInputEnvelope
    connect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
  }

  export type DepartmentSenderMaskUncheckedCreateNestedManyWithoutSenderMaskInput = {
    create?: XOR<DepartmentSenderMaskCreateWithoutSenderMaskInput, DepartmentSenderMaskUncheckedCreateWithoutSenderMaskInput> | DepartmentSenderMaskCreateWithoutSenderMaskInput[] | DepartmentSenderMaskUncheckedCreateWithoutSenderMaskInput[]
    connectOrCreate?: DepartmentSenderMaskCreateOrConnectWithoutSenderMaskInput | DepartmentSenderMaskCreateOrConnectWithoutSenderMaskInput[]
    createMany?: DepartmentSenderMaskCreateManySenderMaskInputEnvelope
    connect?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
  }

  export type CompanyUpdateOneWithoutSenderMasksNestedInput = {
    create?: XOR<CompanyCreateWithoutSenderMasksInput, CompanyUncheckedCreateWithoutSenderMasksInput>
    connectOrCreate?: CompanyCreateOrConnectWithoutSenderMasksInput
    upsert?: CompanyUpsertWithoutSenderMasksInput
    disconnect?: CompanyWhereInput | boolean
    delete?: CompanyWhereInput | boolean
    connect?: CompanyWhereUniqueInput
    update?: XOR<XOR<CompanyUpdateToOneWithWhereWithoutSenderMasksInput, CompanyUpdateWithoutSenderMasksInput>, CompanyUncheckedUpdateWithoutSenderMasksInput>
  }

  export type CampaignUpdateManyWithoutSenderMaskNestedInput = {
    create?: XOR<CampaignCreateWithoutSenderMaskInput, CampaignUncheckedCreateWithoutSenderMaskInput> | CampaignCreateWithoutSenderMaskInput[] | CampaignUncheckedCreateWithoutSenderMaskInput[]
    connectOrCreate?: CampaignCreateOrConnectWithoutSenderMaskInput | CampaignCreateOrConnectWithoutSenderMaskInput[]
    upsert?: CampaignUpsertWithWhereUniqueWithoutSenderMaskInput | CampaignUpsertWithWhereUniqueWithoutSenderMaskInput[]
    createMany?: CampaignCreateManySenderMaskInputEnvelope
    set?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    disconnect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    delete?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    connect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    update?: CampaignUpdateWithWhereUniqueWithoutSenderMaskInput | CampaignUpdateWithWhereUniqueWithoutSenderMaskInput[]
    updateMany?: CampaignUpdateManyWithWhereWithoutSenderMaskInput | CampaignUpdateManyWithWhereWithoutSenderMaskInput[]
    deleteMany?: CampaignScalarWhereInput | CampaignScalarWhereInput[]
  }

  export type DepartmentSenderMaskUpdateManyWithoutSenderMaskNestedInput = {
    create?: XOR<DepartmentSenderMaskCreateWithoutSenderMaskInput, DepartmentSenderMaskUncheckedCreateWithoutSenderMaskInput> | DepartmentSenderMaskCreateWithoutSenderMaskInput[] | DepartmentSenderMaskUncheckedCreateWithoutSenderMaskInput[]
    connectOrCreate?: DepartmentSenderMaskCreateOrConnectWithoutSenderMaskInput | DepartmentSenderMaskCreateOrConnectWithoutSenderMaskInput[]
    upsert?: DepartmentSenderMaskUpsertWithWhereUniqueWithoutSenderMaskInput | DepartmentSenderMaskUpsertWithWhereUniqueWithoutSenderMaskInput[]
    createMany?: DepartmentSenderMaskCreateManySenderMaskInputEnvelope
    set?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
    disconnect?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
    delete?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
    connect?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
    update?: DepartmentSenderMaskUpdateWithWhereUniqueWithoutSenderMaskInput | DepartmentSenderMaskUpdateWithWhereUniqueWithoutSenderMaskInput[]
    updateMany?: DepartmentSenderMaskUpdateManyWithWhereWithoutSenderMaskInput | DepartmentSenderMaskUpdateManyWithWhereWithoutSenderMaskInput[]
    deleteMany?: DepartmentSenderMaskScalarWhereInput | DepartmentSenderMaskScalarWhereInput[]
  }

  export type CampaignUncheckedUpdateManyWithoutSenderMaskNestedInput = {
    create?: XOR<CampaignCreateWithoutSenderMaskInput, CampaignUncheckedCreateWithoutSenderMaskInput> | CampaignCreateWithoutSenderMaskInput[] | CampaignUncheckedCreateWithoutSenderMaskInput[]
    connectOrCreate?: CampaignCreateOrConnectWithoutSenderMaskInput | CampaignCreateOrConnectWithoutSenderMaskInput[]
    upsert?: CampaignUpsertWithWhereUniqueWithoutSenderMaskInput | CampaignUpsertWithWhereUniqueWithoutSenderMaskInput[]
    createMany?: CampaignCreateManySenderMaskInputEnvelope
    set?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    disconnect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    delete?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    connect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    update?: CampaignUpdateWithWhereUniqueWithoutSenderMaskInput | CampaignUpdateWithWhereUniqueWithoutSenderMaskInput[]
    updateMany?: CampaignUpdateManyWithWhereWithoutSenderMaskInput | CampaignUpdateManyWithWhereWithoutSenderMaskInput[]
    deleteMany?: CampaignScalarWhereInput | CampaignScalarWhereInput[]
  }

  export type DepartmentSenderMaskUncheckedUpdateManyWithoutSenderMaskNestedInput = {
    create?: XOR<DepartmentSenderMaskCreateWithoutSenderMaskInput, DepartmentSenderMaskUncheckedCreateWithoutSenderMaskInput> | DepartmentSenderMaskCreateWithoutSenderMaskInput[] | DepartmentSenderMaskUncheckedCreateWithoutSenderMaskInput[]
    connectOrCreate?: DepartmentSenderMaskCreateOrConnectWithoutSenderMaskInput | DepartmentSenderMaskCreateOrConnectWithoutSenderMaskInput[]
    upsert?: DepartmentSenderMaskUpsertWithWhereUniqueWithoutSenderMaskInput | DepartmentSenderMaskUpsertWithWhereUniqueWithoutSenderMaskInput[]
    createMany?: DepartmentSenderMaskCreateManySenderMaskInputEnvelope
    set?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
    disconnect?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
    delete?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
    connect?: DepartmentSenderMaskWhereUniqueInput | DepartmentSenderMaskWhereUniqueInput[]
    update?: DepartmentSenderMaskUpdateWithWhereUniqueWithoutSenderMaskInput | DepartmentSenderMaskUpdateWithWhereUniqueWithoutSenderMaskInput[]
    updateMany?: DepartmentSenderMaskUpdateManyWithWhereWithoutSenderMaskInput | DepartmentSenderMaskUpdateManyWithWhereWithoutSenderMaskInput[]
    deleteMany?: DepartmentSenderMaskScalarWhereInput | DepartmentSenderMaskScalarWhereInput[]
  }

  export type SenderMaskCreateNestedOneWithoutDepartmentsInput = {
    create?: XOR<SenderMaskCreateWithoutDepartmentsInput, SenderMaskUncheckedCreateWithoutDepartmentsInput>
    connectOrCreate?: SenderMaskCreateOrConnectWithoutDepartmentsInput
    connect?: SenderMaskWhereUniqueInput
  }

  export type DepartmentCreateNestedOneWithoutSenderMasksInput = {
    create?: XOR<DepartmentCreateWithoutSenderMasksInput, DepartmentUncheckedCreateWithoutSenderMasksInput>
    connectOrCreate?: DepartmentCreateOrConnectWithoutSenderMasksInput
    connect?: DepartmentWhereUniqueInput
  }

  export type SenderMaskUpdateOneRequiredWithoutDepartmentsNestedInput = {
    create?: XOR<SenderMaskCreateWithoutDepartmentsInput, SenderMaskUncheckedCreateWithoutDepartmentsInput>
    connectOrCreate?: SenderMaskCreateOrConnectWithoutDepartmentsInput
    upsert?: SenderMaskUpsertWithoutDepartmentsInput
    connect?: SenderMaskWhereUniqueInput
    update?: XOR<XOR<SenderMaskUpdateToOneWithWhereWithoutDepartmentsInput, SenderMaskUpdateWithoutDepartmentsInput>, SenderMaskUncheckedUpdateWithoutDepartmentsInput>
  }

  export type DepartmentUpdateOneRequiredWithoutSenderMasksNestedInput = {
    create?: XOR<DepartmentCreateWithoutSenderMasksInput, DepartmentUncheckedCreateWithoutSenderMasksInput>
    connectOrCreate?: DepartmentCreateOrConnectWithoutSenderMasksInput
    upsert?: DepartmentUpsertWithoutSenderMasksInput
    connect?: DepartmentWhereUniqueInput
    update?: XOR<XOR<DepartmentUpdateToOneWithWhereWithoutSenderMasksInput, DepartmentUpdateWithoutSenderMasksInput>, DepartmentUncheckedUpdateWithoutSenderMasksInput>
  }

  export type CompanyCreateNestedOneWithoutContactParamSettingsInput = {
    create?: XOR<CompanyCreateWithoutContactParamSettingsInput, CompanyUncheckedCreateWithoutContactParamSettingsInput>
    connectOrCreate?: CompanyCreateOrConnectWithoutContactParamSettingsInput
    connect?: CompanyWhereUniqueInput
  }

  export type CompanyUpdateOneRequiredWithoutContactParamSettingsNestedInput = {
    create?: XOR<CompanyCreateWithoutContactParamSettingsInput, CompanyUncheckedCreateWithoutContactParamSettingsInput>
    connectOrCreate?: CompanyCreateOrConnectWithoutContactParamSettingsInput
    upsert?: CompanyUpsertWithoutContactParamSettingsInput
    connect?: CompanyWhereUniqueInput
    update?: XOR<XOR<CompanyUpdateToOneWithWhereWithoutContactParamSettingsInput, CompanyUpdateWithoutContactParamSettingsInput>, CompanyUncheckedUpdateWithoutContactParamSettingsInput>
  }

  export type BillAccountCreateNestedOneWithoutCampaignsInput = {
    create?: XOR<BillAccountCreateWithoutCampaignsInput, BillAccountUncheckedCreateWithoutCampaignsInput>
    connectOrCreate?: BillAccountCreateOrConnectWithoutCampaignsInput
    connect?: BillAccountWhereUniqueInput
  }

  export type SenderMaskCreateNestedOneWithoutCampaignsInput = {
    create?: XOR<SenderMaskCreateWithoutCampaignsInput, SenderMaskUncheckedCreateWithoutCampaignsInput>
    connectOrCreate?: SenderMaskCreateOrConnectWithoutCampaignsInput
    connect?: SenderMaskWhereUniqueInput
  }

  export type MobileNumberListCreateNestedOneWithoutCampaignsInput = {
    create?: XOR<MobileNumberListCreateWithoutCampaignsInput, MobileNumberListUncheckedCreateWithoutCampaignsInput>
    connectOrCreate?: MobileNumberListCreateOrConnectWithoutCampaignsInput
    connect?: MobileNumberListWhereUniqueInput
  }

  export type SMS_TemplateCreateNestedOneWithoutCampaignsInput = {
    create?: XOR<SMS_TemplateCreateWithoutCampaignsInput, SMS_TemplateUncheckedCreateWithoutCampaignsInput>
    connectOrCreate?: SMS_TemplateCreateOrConnectWithoutCampaignsInput
    connect?: SMS_TemplateWhereUniqueInput
  }

  export type SMS_ReportCreateNestedManyWithoutCampaignInput = {
    create?: XOR<SMS_ReportCreateWithoutCampaignInput, SMS_ReportUncheckedCreateWithoutCampaignInput> | SMS_ReportCreateWithoutCampaignInput[] | SMS_ReportUncheckedCreateWithoutCampaignInput[]
    connectOrCreate?: SMS_ReportCreateOrConnectWithoutCampaignInput | SMS_ReportCreateOrConnectWithoutCampaignInput[]
    createMany?: SMS_ReportCreateManyCampaignInputEnvelope
    connect?: SMS_ReportWhereUniqueInput | SMS_ReportWhereUniqueInput[]
  }

  export type CampaignServerRefCreateNestedManyWithoutCampaignInput = {
    create?: XOR<CampaignServerRefCreateWithoutCampaignInput, CampaignServerRefUncheckedCreateWithoutCampaignInput> | CampaignServerRefCreateWithoutCampaignInput[] | CampaignServerRefUncheckedCreateWithoutCampaignInput[]
    connectOrCreate?: CampaignServerRefCreateOrConnectWithoutCampaignInput | CampaignServerRefCreateOrConnectWithoutCampaignInput[]
    createMany?: CampaignServerRefCreateManyCampaignInputEnvelope
    connect?: CampaignServerRefWhereUniqueInput | CampaignServerRefWhereUniqueInput[]
  }

  export type CampaignRecipientCreateNestedManyWithoutCampaignInput = {
    create?: XOR<CampaignRecipientCreateWithoutCampaignInput, CampaignRecipientUncheckedCreateWithoutCampaignInput> | CampaignRecipientCreateWithoutCampaignInput[] | CampaignRecipientUncheckedCreateWithoutCampaignInput[]
    connectOrCreate?: CampaignRecipientCreateOrConnectWithoutCampaignInput | CampaignRecipientCreateOrConnectWithoutCampaignInput[]
    createMany?: CampaignRecipientCreateManyCampaignInputEnvelope
    connect?: CampaignRecipientWhereUniqueInput | CampaignRecipientWhereUniqueInput[]
  }

  export type SMS_ReportUncheckedCreateNestedManyWithoutCampaignInput = {
    create?: XOR<SMS_ReportCreateWithoutCampaignInput, SMS_ReportUncheckedCreateWithoutCampaignInput> | SMS_ReportCreateWithoutCampaignInput[] | SMS_ReportUncheckedCreateWithoutCampaignInput[]
    connectOrCreate?: SMS_ReportCreateOrConnectWithoutCampaignInput | SMS_ReportCreateOrConnectWithoutCampaignInput[]
    createMany?: SMS_ReportCreateManyCampaignInputEnvelope
    connect?: SMS_ReportWhereUniqueInput | SMS_ReportWhereUniqueInput[]
  }

  export type CampaignServerRefUncheckedCreateNestedManyWithoutCampaignInput = {
    create?: XOR<CampaignServerRefCreateWithoutCampaignInput, CampaignServerRefUncheckedCreateWithoutCampaignInput> | CampaignServerRefCreateWithoutCampaignInput[] | CampaignServerRefUncheckedCreateWithoutCampaignInput[]
    connectOrCreate?: CampaignServerRefCreateOrConnectWithoutCampaignInput | CampaignServerRefCreateOrConnectWithoutCampaignInput[]
    createMany?: CampaignServerRefCreateManyCampaignInputEnvelope
    connect?: CampaignServerRefWhereUniqueInput | CampaignServerRefWhereUniqueInput[]
  }

  export type CampaignRecipientUncheckedCreateNestedManyWithoutCampaignInput = {
    create?: XOR<CampaignRecipientCreateWithoutCampaignInput, CampaignRecipientUncheckedCreateWithoutCampaignInput> | CampaignRecipientCreateWithoutCampaignInput[] | CampaignRecipientUncheckedCreateWithoutCampaignInput[]
    connectOrCreate?: CampaignRecipientCreateOrConnectWithoutCampaignInput | CampaignRecipientCreateOrConnectWithoutCampaignInput[]
    createMany?: CampaignRecipientCreateManyCampaignInputEnvelope
    connect?: CampaignRecipientWhereUniqueInput | CampaignRecipientWhereUniqueInput[]
  }

  export type NullableBigIntFieldUpdateOperationsInput = {
    set?: bigint | number | null
    increment?: bigint | number
    decrement?: bigint | number
    multiply?: bigint | number
    divide?: bigint | number
  }

  export type BillAccountUpdateOneRequiredWithoutCampaignsNestedInput = {
    create?: XOR<BillAccountCreateWithoutCampaignsInput, BillAccountUncheckedCreateWithoutCampaignsInput>
    connectOrCreate?: BillAccountCreateOrConnectWithoutCampaignsInput
    upsert?: BillAccountUpsertWithoutCampaignsInput
    connect?: BillAccountWhereUniqueInput
    update?: XOR<XOR<BillAccountUpdateToOneWithWhereWithoutCampaignsInput, BillAccountUpdateWithoutCampaignsInput>, BillAccountUncheckedUpdateWithoutCampaignsInput>
  }

  export type SenderMaskUpdateOneRequiredWithoutCampaignsNestedInput = {
    create?: XOR<SenderMaskCreateWithoutCampaignsInput, SenderMaskUncheckedCreateWithoutCampaignsInput>
    connectOrCreate?: SenderMaskCreateOrConnectWithoutCampaignsInput
    upsert?: SenderMaskUpsertWithoutCampaignsInput
    connect?: SenderMaskWhereUniqueInput
    update?: XOR<XOR<SenderMaskUpdateToOneWithWhereWithoutCampaignsInput, SenderMaskUpdateWithoutCampaignsInput>, SenderMaskUncheckedUpdateWithoutCampaignsInput>
  }

  export type MobileNumberListUpdateOneWithoutCampaignsNestedInput = {
    create?: XOR<MobileNumberListCreateWithoutCampaignsInput, MobileNumberListUncheckedCreateWithoutCampaignsInput>
    connectOrCreate?: MobileNumberListCreateOrConnectWithoutCampaignsInput
    upsert?: MobileNumberListUpsertWithoutCampaignsInput
    disconnect?: MobileNumberListWhereInput | boolean
    delete?: MobileNumberListWhereInput | boolean
    connect?: MobileNumberListWhereUniqueInput
    update?: XOR<XOR<MobileNumberListUpdateToOneWithWhereWithoutCampaignsInput, MobileNumberListUpdateWithoutCampaignsInput>, MobileNumberListUncheckedUpdateWithoutCampaignsInput>
  }

  export type SMS_TemplateUpdateOneWithoutCampaignsNestedInput = {
    create?: XOR<SMS_TemplateCreateWithoutCampaignsInput, SMS_TemplateUncheckedCreateWithoutCampaignsInput>
    connectOrCreate?: SMS_TemplateCreateOrConnectWithoutCampaignsInput
    upsert?: SMS_TemplateUpsertWithoutCampaignsInput
    disconnect?: SMS_TemplateWhereInput | boolean
    delete?: SMS_TemplateWhereInput | boolean
    connect?: SMS_TemplateWhereUniqueInput
    update?: XOR<XOR<SMS_TemplateUpdateToOneWithWhereWithoutCampaignsInput, SMS_TemplateUpdateWithoutCampaignsInput>, SMS_TemplateUncheckedUpdateWithoutCampaignsInput>
  }

  export type SMS_ReportUpdateManyWithoutCampaignNestedInput = {
    create?: XOR<SMS_ReportCreateWithoutCampaignInput, SMS_ReportUncheckedCreateWithoutCampaignInput> | SMS_ReportCreateWithoutCampaignInput[] | SMS_ReportUncheckedCreateWithoutCampaignInput[]
    connectOrCreate?: SMS_ReportCreateOrConnectWithoutCampaignInput | SMS_ReportCreateOrConnectWithoutCampaignInput[]
    upsert?: SMS_ReportUpsertWithWhereUniqueWithoutCampaignInput | SMS_ReportUpsertWithWhereUniqueWithoutCampaignInput[]
    createMany?: SMS_ReportCreateManyCampaignInputEnvelope
    set?: SMS_ReportWhereUniqueInput | SMS_ReportWhereUniqueInput[]
    disconnect?: SMS_ReportWhereUniqueInput | SMS_ReportWhereUniqueInput[]
    delete?: SMS_ReportWhereUniqueInput | SMS_ReportWhereUniqueInput[]
    connect?: SMS_ReportWhereUniqueInput | SMS_ReportWhereUniqueInput[]
    update?: SMS_ReportUpdateWithWhereUniqueWithoutCampaignInput | SMS_ReportUpdateWithWhereUniqueWithoutCampaignInput[]
    updateMany?: SMS_ReportUpdateManyWithWhereWithoutCampaignInput | SMS_ReportUpdateManyWithWhereWithoutCampaignInput[]
    deleteMany?: SMS_ReportScalarWhereInput | SMS_ReportScalarWhereInput[]
  }

  export type CampaignServerRefUpdateManyWithoutCampaignNestedInput = {
    create?: XOR<CampaignServerRefCreateWithoutCampaignInput, CampaignServerRefUncheckedCreateWithoutCampaignInput> | CampaignServerRefCreateWithoutCampaignInput[] | CampaignServerRefUncheckedCreateWithoutCampaignInput[]
    connectOrCreate?: CampaignServerRefCreateOrConnectWithoutCampaignInput | CampaignServerRefCreateOrConnectWithoutCampaignInput[]
    upsert?: CampaignServerRefUpsertWithWhereUniqueWithoutCampaignInput | CampaignServerRefUpsertWithWhereUniqueWithoutCampaignInput[]
    createMany?: CampaignServerRefCreateManyCampaignInputEnvelope
    set?: CampaignServerRefWhereUniqueInput | CampaignServerRefWhereUniqueInput[]
    disconnect?: CampaignServerRefWhereUniqueInput | CampaignServerRefWhereUniqueInput[]
    delete?: CampaignServerRefWhereUniqueInput | CampaignServerRefWhereUniqueInput[]
    connect?: CampaignServerRefWhereUniqueInput | CampaignServerRefWhereUniqueInput[]
    update?: CampaignServerRefUpdateWithWhereUniqueWithoutCampaignInput | CampaignServerRefUpdateWithWhereUniqueWithoutCampaignInput[]
    updateMany?: CampaignServerRefUpdateManyWithWhereWithoutCampaignInput | CampaignServerRefUpdateManyWithWhereWithoutCampaignInput[]
    deleteMany?: CampaignServerRefScalarWhereInput | CampaignServerRefScalarWhereInput[]
  }

  export type CampaignRecipientUpdateManyWithoutCampaignNestedInput = {
    create?: XOR<CampaignRecipientCreateWithoutCampaignInput, CampaignRecipientUncheckedCreateWithoutCampaignInput> | CampaignRecipientCreateWithoutCampaignInput[] | CampaignRecipientUncheckedCreateWithoutCampaignInput[]
    connectOrCreate?: CampaignRecipientCreateOrConnectWithoutCampaignInput | CampaignRecipientCreateOrConnectWithoutCampaignInput[]
    upsert?: CampaignRecipientUpsertWithWhereUniqueWithoutCampaignInput | CampaignRecipientUpsertWithWhereUniqueWithoutCampaignInput[]
    createMany?: CampaignRecipientCreateManyCampaignInputEnvelope
    set?: CampaignRecipientWhereUniqueInput | CampaignRecipientWhereUniqueInput[]
    disconnect?: CampaignRecipientWhereUniqueInput | CampaignRecipientWhereUniqueInput[]
    delete?: CampaignRecipientWhereUniqueInput | CampaignRecipientWhereUniqueInput[]
    connect?: CampaignRecipientWhereUniqueInput | CampaignRecipientWhereUniqueInput[]
    update?: CampaignRecipientUpdateWithWhereUniqueWithoutCampaignInput | CampaignRecipientUpdateWithWhereUniqueWithoutCampaignInput[]
    updateMany?: CampaignRecipientUpdateManyWithWhereWithoutCampaignInput | CampaignRecipientUpdateManyWithWhereWithoutCampaignInput[]
    deleteMany?: CampaignRecipientScalarWhereInput | CampaignRecipientScalarWhereInput[]
  }

  export type SMS_ReportUncheckedUpdateManyWithoutCampaignNestedInput = {
    create?: XOR<SMS_ReportCreateWithoutCampaignInput, SMS_ReportUncheckedCreateWithoutCampaignInput> | SMS_ReportCreateWithoutCampaignInput[] | SMS_ReportUncheckedCreateWithoutCampaignInput[]
    connectOrCreate?: SMS_ReportCreateOrConnectWithoutCampaignInput | SMS_ReportCreateOrConnectWithoutCampaignInput[]
    upsert?: SMS_ReportUpsertWithWhereUniqueWithoutCampaignInput | SMS_ReportUpsertWithWhereUniqueWithoutCampaignInput[]
    createMany?: SMS_ReportCreateManyCampaignInputEnvelope
    set?: SMS_ReportWhereUniqueInput | SMS_ReportWhereUniqueInput[]
    disconnect?: SMS_ReportWhereUniqueInput | SMS_ReportWhereUniqueInput[]
    delete?: SMS_ReportWhereUniqueInput | SMS_ReportWhereUniqueInput[]
    connect?: SMS_ReportWhereUniqueInput | SMS_ReportWhereUniqueInput[]
    update?: SMS_ReportUpdateWithWhereUniqueWithoutCampaignInput | SMS_ReportUpdateWithWhereUniqueWithoutCampaignInput[]
    updateMany?: SMS_ReportUpdateManyWithWhereWithoutCampaignInput | SMS_ReportUpdateManyWithWhereWithoutCampaignInput[]
    deleteMany?: SMS_ReportScalarWhereInput | SMS_ReportScalarWhereInput[]
  }

  export type CampaignServerRefUncheckedUpdateManyWithoutCampaignNestedInput = {
    create?: XOR<CampaignServerRefCreateWithoutCampaignInput, CampaignServerRefUncheckedCreateWithoutCampaignInput> | CampaignServerRefCreateWithoutCampaignInput[] | CampaignServerRefUncheckedCreateWithoutCampaignInput[]
    connectOrCreate?: CampaignServerRefCreateOrConnectWithoutCampaignInput | CampaignServerRefCreateOrConnectWithoutCampaignInput[]
    upsert?: CampaignServerRefUpsertWithWhereUniqueWithoutCampaignInput | CampaignServerRefUpsertWithWhereUniqueWithoutCampaignInput[]
    createMany?: CampaignServerRefCreateManyCampaignInputEnvelope
    set?: CampaignServerRefWhereUniqueInput | CampaignServerRefWhereUniqueInput[]
    disconnect?: CampaignServerRefWhereUniqueInput | CampaignServerRefWhereUniqueInput[]
    delete?: CampaignServerRefWhereUniqueInput | CampaignServerRefWhereUniqueInput[]
    connect?: CampaignServerRefWhereUniqueInput | CampaignServerRefWhereUniqueInput[]
    update?: CampaignServerRefUpdateWithWhereUniqueWithoutCampaignInput | CampaignServerRefUpdateWithWhereUniqueWithoutCampaignInput[]
    updateMany?: CampaignServerRefUpdateManyWithWhereWithoutCampaignInput | CampaignServerRefUpdateManyWithWhereWithoutCampaignInput[]
    deleteMany?: CampaignServerRefScalarWhereInput | CampaignServerRefScalarWhereInput[]
  }

  export type CampaignRecipientUncheckedUpdateManyWithoutCampaignNestedInput = {
    create?: XOR<CampaignRecipientCreateWithoutCampaignInput, CampaignRecipientUncheckedCreateWithoutCampaignInput> | CampaignRecipientCreateWithoutCampaignInput[] | CampaignRecipientUncheckedCreateWithoutCampaignInput[]
    connectOrCreate?: CampaignRecipientCreateOrConnectWithoutCampaignInput | CampaignRecipientCreateOrConnectWithoutCampaignInput[]
    upsert?: CampaignRecipientUpsertWithWhereUniqueWithoutCampaignInput | CampaignRecipientUpsertWithWhereUniqueWithoutCampaignInput[]
    createMany?: CampaignRecipientCreateManyCampaignInputEnvelope
    set?: CampaignRecipientWhereUniqueInput | CampaignRecipientWhereUniqueInput[]
    disconnect?: CampaignRecipientWhereUniqueInput | CampaignRecipientWhereUniqueInput[]
    delete?: CampaignRecipientWhereUniqueInput | CampaignRecipientWhereUniqueInput[]
    connect?: CampaignRecipientWhereUniqueInput | CampaignRecipientWhereUniqueInput[]
    update?: CampaignRecipientUpdateWithWhereUniqueWithoutCampaignInput | CampaignRecipientUpdateWithWhereUniqueWithoutCampaignInput[]
    updateMany?: CampaignRecipientUpdateManyWithWhereWithoutCampaignInput | CampaignRecipientUpdateManyWithWhereWithoutCampaignInput[]
    deleteMany?: CampaignRecipientScalarWhereInput | CampaignRecipientScalarWhereInput[]
  }

  export type CampaignCreateNestedOneWithoutBulkServerRefsInput = {
    create?: XOR<CampaignCreateWithoutBulkServerRefsInput, CampaignUncheckedCreateWithoutBulkServerRefsInput>
    connectOrCreate?: CampaignCreateOrConnectWithoutBulkServerRefsInput
    connect?: CampaignWhereUniqueInput
  }

  export type BigIntFieldUpdateOperationsInput = {
    set?: bigint | number
    increment?: bigint | number
    decrement?: bigint | number
    multiply?: bigint | number
    divide?: bigint | number
  }

  export type CampaignUpdateOneRequiredWithoutBulkServerRefsNestedInput = {
    create?: XOR<CampaignCreateWithoutBulkServerRefsInput, CampaignUncheckedCreateWithoutBulkServerRefsInput>
    connectOrCreate?: CampaignCreateOrConnectWithoutBulkServerRefsInput
    upsert?: CampaignUpsertWithoutBulkServerRefsInput
    connect?: CampaignWhereUniqueInput
    update?: XOR<XOR<CampaignUpdateToOneWithWhereWithoutBulkServerRefsInput, CampaignUpdateWithoutBulkServerRefsInput>, CampaignUncheckedUpdateWithoutBulkServerRefsInput>
  }

  export type CampaignCreateNestedOneWithoutRecipientsInput = {
    create?: XOR<CampaignCreateWithoutRecipientsInput, CampaignUncheckedCreateWithoutRecipientsInput>
    connectOrCreate?: CampaignCreateOrConnectWithoutRecipientsInput
    connect?: CampaignWhereUniqueInput
  }

  export type CampaignUpdateOneRequiredWithoutRecipientsNestedInput = {
    create?: XOR<CampaignCreateWithoutRecipientsInput, CampaignUncheckedCreateWithoutRecipientsInput>
    connectOrCreate?: CampaignCreateOrConnectWithoutRecipientsInput
    upsert?: CampaignUpsertWithoutRecipientsInput
    connect?: CampaignWhereUniqueInput
    update?: XOR<XOR<CampaignUpdateToOneWithWhereWithoutRecipientsInput, CampaignUpdateWithoutRecipientsInput>, CampaignUncheckedUpdateWithoutRecipientsInput>
  }

  export type CompanyCreateNestedOneWithoutMobileNumberListsInput = {
    create?: XOR<CompanyCreateWithoutMobileNumberListsInput, CompanyUncheckedCreateWithoutMobileNumberListsInput>
    connectOrCreate?: CompanyCreateOrConnectWithoutMobileNumberListsInput
    connect?: CompanyWhereUniqueInput
  }

  export type CampaignCreateNestedManyWithoutMobileNumberListInput = {
    create?: XOR<CampaignCreateWithoutMobileNumberListInput, CampaignUncheckedCreateWithoutMobileNumberListInput> | CampaignCreateWithoutMobileNumberListInput[] | CampaignUncheckedCreateWithoutMobileNumberListInput[]
    connectOrCreate?: CampaignCreateOrConnectWithoutMobileNumberListInput | CampaignCreateOrConnectWithoutMobileNumberListInput[]
    createMany?: CampaignCreateManyMobileNumberListInputEnvelope
    connect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
  }

  export type MobileNumberCreateNestedManyWithoutListInput = {
    create?: XOR<MobileNumberCreateWithoutListInput, MobileNumberUncheckedCreateWithoutListInput> | MobileNumberCreateWithoutListInput[] | MobileNumberUncheckedCreateWithoutListInput[]
    connectOrCreate?: MobileNumberCreateOrConnectWithoutListInput | MobileNumberCreateOrConnectWithoutListInput[]
    createMany?: MobileNumberCreateManyListInputEnvelope
    connect?: MobileNumberWhereUniqueInput | MobileNumberWhereUniqueInput[]
  }

  export type CampaignUncheckedCreateNestedManyWithoutMobileNumberListInput = {
    create?: XOR<CampaignCreateWithoutMobileNumberListInput, CampaignUncheckedCreateWithoutMobileNumberListInput> | CampaignCreateWithoutMobileNumberListInput[] | CampaignUncheckedCreateWithoutMobileNumberListInput[]
    connectOrCreate?: CampaignCreateOrConnectWithoutMobileNumberListInput | CampaignCreateOrConnectWithoutMobileNumberListInput[]
    createMany?: CampaignCreateManyMobileNumberListInputEnvelope
    connect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
  }

  export type MobileNumberUncheckedCreateNestedManyWithoutListInput = {
    create?: XOR<MobileNumberCreateWithoutListInput, MobileNumberUncheckedCreateWithoutListInput> | MobileNumberCreateWithoutListInput[] | MobileNumberUncheckedCreateWithoutListInput[]
    connectOrCreate?: MobileNumberCreateOrConnectWithoutListInput | MobileNumberCreateOrConnectWithoutListInput[]
    createMany?: MobileNumberCreateManyListInputEnvelope
    connect?: MobileNumberWhereUniqueInput | MobileNumberWhereUniqueInput[]
  }

  export type CompanyUpdateOneWithoutMobileNumberListsNestedInput = {
    create?: XOR<CompanyCreateWithoutMobileNumberListsInput, CompanyUncheckedCreateWithoutMobileNumberListsInput>
    connectOrCreate?: CompanyCreateOrConnectWithoutMobileNumberListsInput
    upsert?: CompanyUpsertWithoutMobileNumberListsInput
    disconnect?: CompanyWhereInput | boolean
    delete?: CompanyWhereInput | boolean
    connect?: CompanyWhereUniqueInput
    update?: XOR<XOR<CompanyUpdateToOneWithWhereWithoutMobileNumberListsInput, CompanyUpdateWithoutMobileNumberListsInput>, CompanyUncheckedUpdateWithoutMobileNumberListsInput>
  }

  export type CampaignUpdateManyWithoutMobileNumberListNestedInput = {
    create?: XOR<CampaignCreateWithoutMobileNumberListInput, CampaignUncheckedCreateWithoutMobileNumberListInput> | CampaignCreateWithoutMobileNumberListInput[] | CampaignUncheckedCreateWithoutMobileNumberListInput[]
    connectOrCreate?: CampaignCreateOrConnectWithoutMobileNumberListInput | CampaignCreateOrConnectWithoutMobileNumberListInput[]
    upsert?: CampaignUpsertWithWhereUniqueWithoutMobileNumberListInput | CampaignUpsertWithWhereUniqueWithoutMobileNumberListInput[]
    createMany?: CampaignCreateManyMobileNumberListInputEnvelope
    set?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    disconnect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    delete?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    connect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    update?: CampaignUpdateWithWhereUniqueWithoutMobileNumberListInput | CampaignUpdateWithWhereUniqueWithoutMobileNumberListInput[]
    updateMany?: CampaignUpdateManyWithWhereWithoutMobileNumberListInput | CampaignUpdateManyWithWhereWithoutMobileNumberListInput[]
    deleteMany?: CampaignScalarWhereInput | CampaignScalarWhereInput[]
  }

  export type MobileNumberUpdateManyWithoutListNestedInput = {
    create?: XOR<MobileNumberCreateWithoutListInput, MobileNumberUncheckedCreateWithoutListInput> | MobileNumberCreateWithoutListInput[] | MobileNumberUncheckedCreateWithoutListInput[]
    connectOrCreate?: MobileNumberCreateOrConnectWithoutListInput | MobileNumberCreateOrConnectWithoutListInput[]
    upsert?: MobileNumberUpsertWithWhereUniqueWithoutListInput | MobileNumberUpsertWithWhereUniqueWithoutListInput[]
    createMany?: MobileNumberCreateManyListInputEnvelope
    set?: MobileNumberWhereUniqueInput | MobileNumberWhereUniqueInput[]
    disconnect?: MobileNumberWhereUniqueInput | MobileNumberWhereUniqueInput[]
    delete?: MobileNumberWhereUniqueInput | MobileNumberWhereUniqueInput[]
    connect?: MobileNumberWhereUniqueInput | MobileNumberWhereUniqueInput[]
    update?: MobileNumberUpdateWithWhereUniqueWithoutListInput | MobileNumberUpdateWithWhereUniqueWithoutListInput[]
    updateMany?: MobileNumberUpdateManyWithWhereWithoutListInput | MobileNumberUpdateManyWithWhereWithoutListInput[]
    deleteMany?: MobileNumberScalarWhereInput | MobileNumberScalarWhereInput[]
  }

  export type CampaignUncheckedUpdateManyWithoutMobileNumberListNestedInput = {
    create?: XOR<CampaignCreateWithoutMobileNumberListInput, CampaignUncheckedCreateWithoutMobileNumberListInput> | CampaignCreateWithoutMobileNumberListInput[] | CampaignUncheckedCreateWithoutMobileNumberListInput[]
    connectOrCreate?: CampaignCreateOrConnectWithoutMobileNumberListInput | CampaignCreateOrConnectWithoutMobileNumberListInput[]
    upsert?: CampaignUpsertWithWhereUniqueWithoutMobileNumberListInput | CampaignUpsertWithWhereUniqueWithoutMobileNumberListInput[]
    createMany?: CampaignCreateManyMobileNumberListInputEnvelope
    set?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    disconnect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    delete?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    connect?: CampaignWhereUniqueInput | CampaignWhereUniqueInput[]
    update?: CampaignUpdateWithWhereUniqueWithoutMobileNumberListInput | CampaignUpdateWithWhereUniqueWithoutMobileNumberListInput[]
    updateMany?: CampaignUpdateManyWithWhereWithoutMobileNumberListInput | CampaignUpdateManyWithWhereWithoutMobileNumberListInput[]
    deleteMany?: CampaignScalarWhereInput | CampaignScalarWhereInput[]
  }

  export type MobileNumberUncheckedUpdateManyWithoutListNestedInput = {
    create?: XOR<MobileNumberCreateWithoutListInput, MobileNumberUncheckedCreateWithoutListInput> | MobileNumberCreateWithoutListInput[] | MobileNumberUncheckedCreateWithoutListInput[]
    connectOrCreate?: MobileNumberCreateOrConnectWithoutListInput | MobileNumberCreateOrConnectWithoutListInput[]
    upsert?: MobileNumberUpsertWithWhereUniqueWithoutListInput | MobileNumberUpsertWithWhereUniqueWithoutListInput[]
    createMany?: MobileNumberCreateManyListInputEnvelope
    set?: MobileNumberWhereUniqueInput | MobileNumberWhereUniqueInput[]
    disconnect?: MobileNumberWhereUniqueInput | MobileNumberWhereUniqueInput[]
    delete?: MobileNumberWhereUniqueInput | MobileNumberWhereUniqueInput[]
    connect?: MobileNumberWhereUniqueInput | MobileNumberWhereUniqueInput[]
    update?: MobileNumberUpdateWithWhereUniqueWithoutListInput | MobileNumberUpdateWithWhereUniqueWithoutListInput[]
    updateMany?: MobileNumberUpdateManyWithWhereWithoutListInput | MobileNumberUpdateManyWithWhereWithoutListInput[]
    deleteMany?: MobileNumberScalarWhereInput | MobileNumberScalarWhereInput[]
  }

  export type MobileNumberListCreateNestedOneWithoutMobileNumbersInput = {
    create?: XOR<MobileNumberListCreateWithoutMobileNumbersInput, MobileNumberListUncheckedCreateWithoutMobileNumbersInput>
    connectOrCreate?: MobileNumberListCreateOrConnectWithoutMobileNumbersInput
    connect?: MobileNumberListWhereUniqueInput
  }

  export type MobileNumberListUpdateOneWithoutMobileNumbersNestedInput = {
    create?: XOR<MobileNumberListCreateWithoutMobileNumbersInput, MobileNumberListUncheckedCreateWithoutMobileNumbersInput>
    connectOrCreate?: MobileNumberListCreateOrConnectWithoutMobileNumbersInput
    upsert?: MobileNumberListUpsertWithoutMobileNumbersInput
    disconnect?: MobileNumberListWhereInput | boolean
    delete?: MobileNumberListWhereInput | boolean
    connect?: MobileNumberListWhereUniqueInput
    update?: XOR<XOR<MobileNumberListUpdateToOneWithWhereWithoutMobileNumbersInput, MobileNumberListUpdateWithoutMobileNumbersInput>, MobileNumberListUncheckedUpdateWithoutMobileNumbersInput>
  }

  export type CampaignCreateNestedOneWithoutSmsReportsInput = {
    create?: XOR<CampaignCreateWithoutSmsReportsInput, CampaignUncheckedCreateWithoutSmsReportsInput>
    connectOrCreate?: CampaignCreateOrConnectWithoutSmsReportsInput
    connect?: CampaignWhereUniqueInput
  }

  export type CampaignUpdateOneRequiredWithoutSmsReportsNestedInput = {
    create?: XOR<CampaignCreateWithoutSmsReportsInput, CampaignUncheckedCreateWithoutSmsReportsInput>
    connectOrCreate?: CampaignCreateOrConnectWithoutSmsReportsInput
    upsert?: CampaignUpsertWithoutSmsReportsInput
    connect?: CampaignWhereUniqueInput
    update?: XOR<XOR<CampaignUpdateToOneWithWhereWithoutSmsReportsInput, CampaignUpdateWithoutSmsReportsInput>, CampaignUncheckedUpdateWithoutSmsReportsInput>
  }

  export type NestedIntFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel>
    in?: number[]
    notIn?: number[]
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntFilter<$PrismaModel> | number
  }

  export type NestedStringFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[]
    notIn?: string[]
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    search?: string
    not?: NestedStringFilter<$PrismaModel> | string
  }

  export type NestedIntNullableFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel> | null
    in?: number[] | null
    notIn?: number[] | null
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntNullableFilter<$PrismaModel> | number | null
  }

  export type NestedStringNullableFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | null
    notIn?: string[] | null
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    search?: string
    not?: NestedStringNullableFilter<$PrismaModel> | string | null
  }

  export type NestedFloatNullableFilter<$PrismaModel = never> = {
    equals?: number | FloatFieldRefInput<$PrismaModel> | null
    in?: number[] | null
    notIn?: number[] | null
    lt?: number | FloatFieldRefInput<$PrismaModel>
    lte?: number | FloatFieldRefInput<$PrismaModel>
    gt?: number | FloatFieldRefInput<$PrismaModel>
    gte?: number | FloatFieldRefInput<$PrismaModel>
    not?: NestedFloatNullableFilter<$PrismaModel> | number | null
  }

  export type NestedDateTimeNullableFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null
    in?: Date[] | string[] | null
    notIn?: Date[] | string[] | null
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null
  }

  export type NestedDateTimeFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    in?: Date[] | string[]
    notIn?: Date[] | string[]
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeFilter<$PrismaModel> | Date | string
  }

  export type NestedIntWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel>
    in?: number[]
    notIn?: number[]
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntWithAggregatesFilter<$PrismaModel> | number
    _count?: NestedIntFilter<$PrismaModel>
    _avg?: NestedFloatFilter<$PrismaModel>
    _sum?: NestedIntFilter<$PrismaModel>
    _min?: NestedIntFilter<$PrismaModel>
    _max?: NestedIntFilter<$PrismaModel>
  }

  export type NestedFloatFilter<$PrismaModel = never> = {
    equals?: number | FloatFieldRefInput<$PrismaModel>
    in?: number[]
    notIn?: number[]
    lt?: number | FloatFieldRefInput<$PrismaModel>
    lte?: number | FloatFieldRefInput<$PrismaModel>
    gt?: number | FloatFieldRefInput<$PrismaModel>
    gte?: number | FloatFieldRefInput<$PrismaModel>
    not?: NestedFloatFilter<$PrismaModel> | number
  }

  export type NestedStringWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[]
    notIn?: string[]
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    search?: string
    not?: NestedStringWithAggregatesFilter<$PrismaModel> | string
    _count?: NestedIntFilter<$PrismaModel>
    _min?: NestedStringFilter<$PrismaModel>
    _max?: NestedStringFilter<$PrismaModel>
  }

  export type NestedIntNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel> | null
    in?: number[] | null
    notIn?: number[] | null
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _avg?: NestedFloatNullableFilter<$PrismaModel>
    _sum?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedIntNullableFilter<$PrismaModel>
    _max?: NestedIntNullableFilter<$PrismaModel>
  }

  export type NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | null
    notIn?: string[] | null
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    search?: string
    not?: NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedStringNullableFilter<$PrismaModel>
    _max?: NestedStringNullableFilter<$PrismaModel>
  }

  export type NestedFloatNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | FloatFieldRefInput<$PrismaModel> | null
    in?: number[] | null
    notIn?: number[] | null
    lt?: number | FloatFieldRefInput<$PrismaModel>
    lte?: number | FloatFieldRefInput<$PrismaModel>
    gt?: number | FloatFieldRefInput<$PrismaModel>
    gte?: number | FloatFieldRefInput<$PrismaModel>
    not?: NestedFloatNullableWithAggregatesFilter<$PrismaModel> | number | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _avg?: NestedFloatNullableFilter<$PrismaModel>
    _sum?: NestedFloatNullableFilter<$PrismaModel>
    _min?: NestedFloatNullableFilter<$PrismaModel>
    _max?: NestedFloatNullableFilter<$PrismaModel>
  }

  export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null
    in?: Date[] | string[] | null
    notIn?: Date[] | string[] | null
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedDateTimeNullableFilter<$PrismaModel>
    _max?: NestedDateTimeNullableFilter<$PrismaModel>
  }

  export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    in?: Date[] | string[]
    notIn?: Date[] | string[]
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string
    _count?: NestedIntFilter<$PrismaModel>
    _min?: NestedDateTimeFilter<$PrismaModel>
    _max?: NestedDateTimeFilter<$PrismaModel>
  }

  export type NestedBoolFilter<$PrismaModel = never> = {
    equals?: boolean | BooleanFieldRefInput<$PrismaModel>
    not?: NestedBoolFilter<$PrismaModel> | boolean
  }

  export type NestedBoolWithAggregatesFilter<$PrismaModel = never> = {
    equals?: boolean | BooleanFieldRefInput<$PrismaModel>
    not?: NestedBoolWithAggregatesFilter<$PrismaModel> | boolean
    _count?: NestedIntFilter<$PrismaModel>
    _min?: NestedBoolFilter<$PrismaModel>
    _max?: NestedBoolFilter<$PrismaModel>
  }

  export type NestedFloatWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | FloatFieldRefInput<$PrismaModel>
    in?: number[]
    notIn?: number[]
    lt?: number | FloatFieldRefInput<$PrismaModel>
    lte?: number | FloatFieldRefInput<$PrismaModel>
    gt?: number | FloatFieldRefInput<$PrismaModel>
    gte?: number | FloatFieldRefInput<$PrismaModel>
    not?: NestedFloatWithAggregatesFilter<$PrismaModel> | number
    _count?: NestedIntFilter<$PrismaModel>
    _avg?: NestedFloatFilter<$PrismaModel>
    _sum?: NestedFloatFilter<$PrismaModel>
    _min?: NestedFloatFilter<$PrismaModel>
    _max?: NestedFloatFilter<$PrismaModel>
  }

  export type NestedBigIntNullableFilter<$PrismaModel = never> = {
    equals?: bigint | number | BigIntFieldRefInput<$PrismaModel> | null
    in?: bigint[] | number[] | null
    notIn?: bigint[] | number[] | null
    lt?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    lte?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    gt?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    gte?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    not?: NestedBigIntNullableFilter<$PrismaModel> | bigint | number | null
  }

  export type NestedBigIntNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: bigint | number | BigIntFieldRefInput<$PrismaModel> | null
    in?: bigint[] | number[] | null
    notIn?: bigint[] | number[] | null
    lt?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    lte?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    gt?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    gte?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    not?: NestedBigIntNullableWithAggregatesFilter<$PrismaModel> | bigint | number | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _avg?: NestedFloatNullableFilter<$PrismaModel>
    _sum?: NestedBigIntNullableFilter<$PrismaModel>
    _min?: NestedBigIntNullableFilter<$PrismaModel>
    _max?: NestedBigIntNullableFilter<$PrismaModel>
  }
  export type NestedJsonNullableFilter<$PrismaModel = never> =
    | PatchUndefined<
        Either<Required<NestedJsonNullableFilterBase<$PrismaModel>>, Exclude<keyof Required<NestedJsonNullableFilterBase<$PrismaModel>>, 'path'>>,
        Required<NestedJsonNullableFilterBase<$PrismaModel>>
      >
    | OptionalFlat<Omit<Required<NestedJsonNullableFilterBase<$PrismaModel>>, 'path'>>

  export type NestedJsonNullableFilterBase<$PrismaModel = never> = {
    equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
    path?: string
    mode?: QueryMode | EnumQueryModeFieldRefInput<$PrismaModel>
    string_contains?: string | StringFieldRefInput<$PrismaModel>
    string_starts_with?: string | StringFieldRefInput<$PrismaModel>
    string_ends_with?: string | StringFieldRefInput<$PrismaModel>
    array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    lt?: InputJsonValue
    lte?: InputJsonValue
    gt?: InputJsonValue
    gte?: InputJsonValue
    not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
  }

  export type NestedBigIntFilter<$PrismaModel = never> = {
    equals?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    in?: bigint[] | number[]
    notIn?: bigint[] | number[]
    lt?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    lte?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    gt?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    gte?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    not?: NestedBigIntFilter<$PrismaModel> | bigint | number
  }

  export type NestedBigIntWithAggregatesFilter<$PrismaModel = never> = {
    equals?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    in?: bigint[] | number[]
    notIn?: bigint[] | number[]
    lt?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    lte?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    gt?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    gte?: bigint | number | BigIntFieldRefInput<$PrismaModel>
    not?: NestedBigIntWithAggregatesFilter<$PrismaModel> | bigint | number
    _count?: NestedIntFilter<$PrismaModel>
    _avg?: NestedFloatFilter<$PrismaModel>
    _sum?: NestedBigIntFilter<$PrismaModel>
    _min?: NestedBigIntFilter<$PrismaModel>
    _max?: NestedBigIntFilter<$PrismaModel>
  }

  export type UserCompanyCreateWithoutCompanyInput = {
    uuid?: string
    createdAt?: Date | string
    user: UserCreateNestedOneWithoutCompaniesInput
  }

  export type UserCompanyUncheckedCreateWithoutCompanyInput = {
    id?: number
    uuid?: string
    userId: number
    createdAt?: Date | string
  }

  export type UserCompanyCreateOrConnectWithoutCompanyInput = {
    where: UserCompanyWhereUniqueInput
    create: XOR<UserCompanyCreateWithoutCompanyInput, UserCompanyUncheckedCreateWithoutCompanyInput>
  }

  export type UserCompanyCreateManyCompanyInputEnvelope = {
    data: UserCompanyCreateManyCompanyInput | UserCompanyCreateManyCompanyInput[]
    skipDuplicates?: boolean
  }

  export type BillAccountCreateWithoutCompanyInput = {
    uuid?: string
    accountNumber: string
    accountName: string
    outstandingBalance: number
    reservedBalance?: number
    accountStatus?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    billPayments?: BillPaymentCreateNestedManyWithoutBillAccountInput
    campaigns?: CampaignCreateNestedManyWithoutBillingAccountInput
    lowBalanceAlerts?: LowBalanceAlertCreateNestedManyWithoutBillAccountInput
  }

  export type BillAccountUncheckedCreateWithoutCompanyInput = {
    id?: number
    uuid?: string
    accountNumber: string
    accountName: string
    outstandingBalance: number
    reservedBalance?: number
    accountStatus?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    billPayments?: BillPaymentUncheckedCreateNestedManyWithoutBillAccountInput
    campaigns?: CampaignUncheckedCreateNestedManyWithoutBillingAccountInput
    lowBalanceAlerts?: LowBalanceAlertUncheckedCreateNestedManyWithoutBillAccountInput
  }

  export type BillAccountCreateOrConnectWithoutCompanyInput = {
    where: BillAccountWhereUniqueInput
    create: XOR<BillAccountCreateWithoutCompanyInput, BillAccountUncheckedCreateWithoutCompanyInput>
  }

  export type BillAccountCreateManyCompanyInputEnvelope = {
    data: BillAccountCreateManyCompanyInput | BillAccountCreateManyCompanyInput[]
    skipDuplicates?: boolean
  }

  export type DepartmentCreateWithoutCompanyInput = {
    uuid?: string
    name: string
    externalCompanyId?: number | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    is_enabled?: boolean
    callBackUrl?: string | null
    Signature?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    smsTemplates?: SMS_TemplateCreateNestedManyWithoutDepartmentInput
    senderMasks?: DepartmentSenderMaskCreateNestedManyWithoutDepartmentInput
  }

  export type DepartmentUncheckedCreateWithoutCompanyInput = {
    id?: number
    uuid?: string
    name: string
    externalCompanyId?: number | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    is_enabled?: boolean
    callBackUrl?: string | null
    Signature?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    smsTemplates?: SMS_TemplateUncheckedCreateNestedManyWithoutDepartmentInput
    senderMasks?: DepartmentSenderMaskUncheckedCreateNestedManyWithoutDepartmentInput
  }

  export type DepartmentCreateOrConnectWithoutCompanyInput = {
    where: DepartmentWhereUniqueInput
    create: XOR<DepartmentCreateWithoutCompanyInput, DepartmentUncheckedCreateWithoutCompanyInput>
  }

  export type DepartmentCreateManyCompanyInputEnvelope = {
    data: DepartmentCreateManyCompanyInput | DepartmentCreateManyCompanyInput[]
    skipDuplicates?: boolean
  }

  export type MobileNumberListCreateWithoutCompanyInput = {
    id?: bigint | number
    uuid?: string
    listName: string
    listType?: string
    createdByUserId: number
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    campaigns?: CampaignCreateNestedManyWithoutMobileNumberListInput
    mobileNumbers?: MobileNumberCreateNestedManyWithoutListInput
  }

  export type MobileNumberListUncheckedCreateWithoutCompanyInput = {
    id?: bigint | number
    uuid?: string
    listName: string
    listType?: string
    createdByUserId: number
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    campaigns?: CampaignUncheckedCreateNestedManyWithoutMobileNumberListInput
    mobileNumbers?: MobileNumberUncheckedCreateNestedManyWithoutListInput
  }

  export type MobileNumberListCreateOrConnectWithoutCompanyInput = {
    where: MobileNumberListWhereUniqueInput
    create: XOR<MobileNumberListCreateWithoutCompanyInput, MobileNumberListUncheckedCreateWithoutCompanyInput>
  }

  export type MobileNumberListCreateManyCompanyInputEnvelope = {
    data: MobileNumberListCreateManyCompanyInput | MobileNumberListCreateManyCompanyInput[]
    skipDuplicates?: boolean
  }

  export type SenderMaskCreateWithoutCompanyInput = {
    uuid?: string
    maskName: string
    purpose: string
    is_default?: boolean
    status?: string
    maskType?: string | null
    isExternal?: boolean
    emailSent?: boolean
    emailSentAt?: Date | string | null
    approvalNotificationSent?: boolean
    approvalNotificationSentAt?: Date | string | null
    reservedAmount?: number
    createdByUserId: number
    createdAt?: Date | string
    updatedAt?: Date | string
    campaigns?: CampaignCreateNestedManyWithoutSenderMaskInput
    departments?: DepartmentSenderMaskCreateNestedManyWithoutSenderMaskInput
  }

  export type SenderMaskUncheckedCreateWithoutCompanyInput = {
    id?: number
    uuid?: string
    maskName: string
    purpose: string
    is_default?: boolean
    status?: string
    maskType?: string | null
    isExternal?: boolean
    emailSent?: boolean
    emailSentAt?: Date | string | null
    approvalNotificationSent?: boolean
    approvalNotificationSentAt?: Date | string | null
    reservedAmount?: number
    createdByUserId: number
    createdAt?: Date | string
    updatedAt?: Date | string
    campaigns?: CampaignUncheckedCreateNestedManyWithoutSenderMaskInput
    departments?: DepartmentSenderMaskUncheckedCreateNestedManyWithoutSenderMaskInput
  }

  export type SenderMaskCreateOrConnectWithoutCompanyInput = {
    where: SenderMaskWhereUniqueInput
    create: XOR<SenderMaskCreateWithoutCompanyInput, SenderMaskUncheckedCreateWithoutCompanyInput>
  }

  export type SenderMaskCreateManyCompanyInputEnvelope = {
    data: SenderMaskCreateManyCompanyInput | SenderMaskCreateManyCompanyInput[]
    skipDuplicates?: boolean
  }

  export type ContactParamSettingsCreateWithoutCompanyInput = {
    param1Label?: string | null
    param2Label?: string | null
    param3Label?: string | null
    param4Label?: string | null
    param5Label?: string | null
    param6Label?: string | null
    param7Label?: string | null
    param8Label?: string | null
    param9Label?: string | null
    param10Label?: string | null
    updatedAt?: Date | string
  }

  export type ContactParamSettingsUncheckedCreateWithoutCompanyInput = {
    id?: number
    param1Label?: string | null
    param2Label?: string | null
    param3Label?: string | null
    param4Label?: string | null
    param5Label?: string | null
    param6Label?: string | null
    param7Label?: string | null
    param8Label?: string | null
    param9Label?: string | null
    param10Label?: string | null
    updatedAt?: Date | string
  }

  export type ContactParamSettingsCreateOrConnectWithoutCompanyInput = {
    where: ContactParamSettingsWhereUniqueInput
    create: XOR<ContactParamSettingsCreateWithoutCompanyInput, ContactParamSettingsUncheckedCreateWithoutCompanyInput>
  }

  export type UserCompanyUpsertWithWhereUniqueWithoutCompanyInput = {
    where: UserCompanyWhereUniqueInput
    update: XOR<UserCompanyUpdateWithoutCompanyInput, UserCompanyUncheckedUpdateWithoutCompanyInput>
    create: XOR<UserCompanyCreateWithoutCompanyInput, UserCompanyUncheckedCreateWithoutCompanyInput>
  }

  export type UserCompanyUpdateWithWhereUniqueWithoutCompanyInput = {
    where: UserCompanyWhereUniqueInput
    data: XOR<UserCompanyUpdateWithoutCompanyInput, UserCompanyUncheckedUpdateWithoutCompanyInput>
  }

  export type UserCompanyUpdateManyWithWhereWithoutCompanyInput = {
    where: UserCompanyScalarWhereInput
    data: XOR<UserCompanyUpdateManyMutationInput, UserCompanyUncheckedUpdateManyWithoutCompanyInput>
  }

  export type UserCompanyScalarWhereInput = {
    AND?: UserCompanyScalarWhereInput | UserCompanyScalarWhereInput[]
    OR?: UserCompanyScalarWhereInput[]
    NOT?: UserCompanyScalarWhereInput | UserCompanyScalarWhereInput[]
    id?: IntFilter<"UserCompany"> | number
    uuid?: StringFilter<"UserCompany"> | string
    userId?: IntFilter<"UserCompany"> | number
    companyId?: IntFilter<"UserCompany"> | number
    createdAt?: DateTimeFilter<"UserCompany"> | Date | string
  }

  export type BillAccountUpsertWithWhereUniqueWithoutCompanyInput = {
    where: BillAccountWhereUniqueInput
    update: XOR<BillAccountUpdateWithoutCompanyInput, BillAccountUncheckedUpdateWithoutCompanyInput>
    create: XOR<BillAccountCreateWithoutCompanyInput, BillAccountUncheckedCreateWithoutCompanyInput>
  }

  export type BillAccountUpdateWithWhereUniqueWithoutCompanyInput = {
    where: BillAccountWhereUniqueInput
    data: XOR<BillAccountUpdateWithoutCompanyInput, BillAccountUncheckedUpdateWithoutCompanyInput>
  }

  export type BillAccountUpdateManyWithWhereWithoutCompanyInput = {
    where: BillAccountScalarWhereInput
    data: XOR<BillAccountUpdateManyMutationInput, BillAccountUncheckedUpdateManyWithoutCompanyInput>
  }

  export type BillAccountScalarWhereInput = {
    AND?: BillAccountScalarWhereInput | BillAccountScalarWhereInput[]
    OR?: BillAccountScalarWhereInput[]
    NOT?: BillAccountScalarWhereInput | BillAccountScalarWhereInput[]
    id?: IntFilter<"BillAccount"> | number
    uuid?: StringFilter<"BillAccount"> | string
    accountNumber?: StringFilter<"BillAccount"> | string
    accountName?: StringFilter<"BillAccount"> | string
    outstandingBalance?: FloatFilter<"BillAccount"> | number
    reservedBalance?: FloatFilter<"BillAccount"> | number
    accountStatus?: StringFilter<"BillAccount"> | string
    createdAt?: DateTimeFilter<"BillAccount"> | Date | string
    updatedAt?: DateTimeFilter<"BillAccount"> | Date | string
    companyId?: IntFilter<"BillAccount"> | number
  }

  export type DepartmentUpsertWithWhereUniqueWithoutCompanyInput = {
    where: DepartmentWhereUniqueInput
    update: XOR<DepartmentUpdateWithoutCompanyInput, DepartmentUncheckedUpdateWithoutCompanyInput>
    create: XOR<DepartmentCreateWithoutCompanyInput, DepartmentUncheckedCreateWithoutCompanyInput>
  }

  export type DepartmentUpdateWithWhereUniqueWithoutCompanyInput = {
    where: DepartmentWhereUniqueInput
    data: XOR<DepartmentUpdateWithoutCompanyInput, DepartmentUncheckedUpdateWithoutCompanyInput>
  }

  export type DepartmentUpdateManyWithWhereWithoutCompanyInput = {
    where: DepartmentScalarWhereInput
    data: XOR<DepartmentUpdateManyMutationInput, DepartmentUncheckedUpdateManyWithoutCompanyInput>
  }

  export type DepartmentScalarWhereInput = {
    AND?: DepartmentScalarWhereInput | DepartmentScalarWhereInput[]
    OR?: DepartmentScalarWhereInput[]
    NOT?: DepartmentScalarWhereInput | DepartmentScalarWhereInput[]
    id?: IntFilter<"Department"> | number
    uuid?: StringFilter<"Department"> | string
    companyId?: IntFilter<"Department"> | number
    name?: StringFilter<"Department"> | string
    externalCompanyId?: IntNullableFilter<"Department"> | number | null
    smsCostTransactional?: FloatNullableFilter<"Department"> | number | null
    smsCostPromotional?: FloatNullableFilter<"Department"> | number | null
    is_enabled?: BoolFilter<"Department"> | boolean
    callBackUrl?: StringNullableFilter<"Department"> | string | null
    Signature?: StringNullableFilter<"Department"> | string | null
    createdAt?: DateTimeFilter<"Department"> | Date | string
    updatedAt?: DateTimeFilter<"Department"> | Date | string
    deletedAt?: DateTimeNullableFilter<"Department"> | Date | string | null
  }

  export type MobileNumberListUpsertWithWhereUniqueWithoutCompanyInput = {
    where: MobileNumberListWhereUniqueInput
    update: XOR<MobileNumberListUpdateWithoutCompanyInput, MobileNumberListUncheckedUpdateWithoutCompanyInput>
    create: XOR<MobileNumberListCreateWithoutCompanyInput, MobileNumberListUncheckedCreateWithoutCompanyInput>
  }

  export type MobileNumberListUpdateWithWhereUniqueWithoutCompanyInput = {
    where: MobileNumberListWhereUniqueInput
    data: XOR<MobileNumberListUpdateWithoutCompanyInput, MobileNumberListUncheckedUpdateWithoutCompanyInput>
  }

  export type MobileNumberListUpdateManyWithWhereWithoutCompanyInput = {
    where: MobileNumberListScalarWhereInput
    data: XOR<MobileNumberListUpdateManyMutationInput, MobileNumberListUncheckedUpdateManyWithoutCompanyInput>
  }

  export type MobileNumberListScalarWhereInput = {
    AND?: MobileNumberListScalarWhereInput | MobileNumberListScalarWhereInput[]
    OR?: MobileNumberListScalarWhereInput[]
    NOT?: MobileNumberListScalarWhereInput | MobileNumberListScalarWhereInput[]
    id?: BigIntFilter<"MobileNumberList"> | bigint | number
    uuid?: StringFilter<"MobileNumberList"> | string
    listName?: StringFilter<"MobileNumberList"> | string
    listType?: StringFilter<"MobileNumberList"> | string
    createdByUserId?: IntFilter<"MobileNumberList"> | number
    companyId?: IntNullableFilter<"MobileNumberList"> | number | null
    createdAt?: DateTimeFilter<"MobileNumberList"> | Date | string
    updatedAt?: DateTimeFilter<"MobileNumberList"> | Date | string
    deletedAt?: DateTimeNullableFilter<"MobileNumberList"> | Date | string | null
  }

  export type SenderMaskUpsertWithWhereUniqueWithoutCompanyInput = {
    where: SenderMaskWhereUniqueInput
    update: XOR<SenderMaskUpdateWithoutCompanyInput, SenderMaskUncheckedUpdateWithoutCompanyInput>
    create: XOR<SenderMaskCreateWithoutCompanyInput, SenderMaskUncheckedCreateWithoutCompanyInput>
  }

  export type SenderMaskUpdateWithWhereUniqueWithoutCompanyInput = {
    where: SenderMaskWhereUniqueInput
    data: XOR<SenderMaskUpdateWithoutCompanyInput, SenderMaskUncheckedUpdateWithoutCompanyInput>
  }

  export type SenderMaskUpdateManyWithWhereWithoutCompanyInput = {
    where: SenderMaskScalarWhereInput
    data: XOR<SenderMaskUpdateManyMutationInput, SenderMaskUncheckedUpdateManyWithoutCompanyInput>
  }

  export type SenderMaskScalarWhereInput = {
    AND?: SenderMaskScalarWhereInput | SenderMaskScalarWhereInput[]
    OR?: SenderMaskScalarWhereInput[]
    NOT?: SenderMaskScalarWhereInput | SenderMaskScalarWhereInput[]
    id?: IntFilter<"SenderMask"> | number
    uuid?: StringFilter<"SenderMask"> | string
    maskName?: StringFilter<"SenderMask"> | string
    purpose?: StringFilter<"SenderMask"> | string
    is_default?: BoolFilter<"SenderMask"> | boolean
    status?: StringFilter<"SenderMask"> | string
    maskType?: StringNullableFilter<"SenderMask"> | string | null
    isExternal?: BoolFilter<"SenderMask"> | boolean
    emailSent?: BoolFilter<"SenderMask"> | boolean
    emailSentAt?: DateTimeNullableFilter<"SenderMask"> | Date | string | null
    approvalNotificationSent?: BoolFilter<"SenderMask"> | boolean
    approvalNotificationSentAt?: DateTimeNullableFilter<"SenderMask"> | Date | string | null
    reservedAmount?: FloatFilter<"SenderMask"> | number
    createdByUserId?: IntFilter<"SenderMask"> | number
    companyId?: IntNullableFilter<"SenderMask"> | number | null
    createdAt?: DateTimeFilter<"SenderMask"> | Date | string
    updatedAt?: DateTimeFilter<"SenderMask"> | Date | string
  }

  export type ContactParamSettingsUpsertWithoutCompanyInput = {
    update: XOR<ContactParamSettingsUpdateWithoutCompanyInput, ContactParamSettingsUncheckedUpdateWithoutCompanyInput>
    create: XOR<ContactParamSettingsCreateWithoutCompanyInput, ContactParamSettingsUncheckedCreateWithoutCompanyInput>
    where?: ContactParamSettingsWhereInput
  }

  export type ContactParamSettingsUpdateToOneWithWhereWithoutCompanyInput = {
    where?: ContactParamSettingsWhereInput
    data: XOR<ContactParamSettingsUpdateWithoutCompanyInput, ContactParamSettingsUncheckedUpdateWithoutCompanyInput>
  }

  export type ContactParamSettingsUpdateWithoutCompanyInput = {
    param1Label?: NullableStringFieldUpdateOperationsInput | string | null
    param2Label?: NullableStringFieldUpdateOperationsInput | string | null
    param3Label?: NullableStringFieldUpdateOperationsInput | string | null
    param4Label?: NullableStringFieldUpdateOperationsInput | string | null
    param5Label?: NullableStringFieldUpdateOperationsInput | string | null
    param6Label?: NullableStringFieldUpdateOperationsInput | string | null
    param7Label?: NullableStringFieldUpdateOperationsInput | string | null
    param8Label?: NullableStringFieldUpdateOperationsInput | string | null
    param9Label?: NullableStringFieldUpdateOperationsInput | string | null
    param10Label?: NullableStringFieldUpdateOperationsInput | string | null
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type ContactParamSettingsUncheckedUpdateWithoutCompanyInput = {
    id?: IntFieldUpdateOperationsInput | number
    param1Label?: NullableStringFieldUpdateOperationsInput | string | null
    param2Label?: NullableStringFieldUpdateOperationsInput | string | null
    param3Label?: NullableStringFieldUpdateOperationsInput | string | null
    param4Label?: NullableStringFieldUpdateOperationsInput | string | null
    param5Label?: NullableStringFieldUpdateOperationsInput | string | null
    param6Label?: NullableStringFieldUpdateOperationsInput | string | null
    param7Label?: NullableStringFieldUpdateOperationsInput | string | null
    param8Label?: NullableStringFieldUpdateOperationsInput | string | null
    param9Label?: NullableStringFieldUpdateOperationsInput | string | null
    param10Label?: NullableStringFieldUpdateOperationsInput | string | null
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type UserCreateWithoutRoleInput = {
    uuid?: string
    externalUserId?: number | null
    fullName: string
    email: string
    contactNumber?: string | null
    passwordHash?: string | null
    userType?: string
    isActive?: boolean
    hasSeenGuide?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
    companies?: UserCompanyCreateNestedManyWithoutUserInput
    refreshTokens?: RefreshTokenCreateNestedManyWithoutUserInput
    savedCards?: SavedCardCreateNestedManyWithoutUserInput
    passwordResetTokens?: PasswordResetTokenCreateNestedManyWithoutUserInput
  }

  export type UserUncheckedCreateWithoutRoleInput = {
    id?: number
    uuid?: string
    externalUserId?: number | null
    fullName: string
    email: string
    contactNumber?: string | null
    passwordHash?: string | null
    userType?: string
    isActive?: boolean
    hasSeenGuide?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
    companies?: UserCompanyUncheckedCreateNestedManyWithoutUserInput
    refreshTokens?: RefreshTokenUncheckedCreateNestedManyWithoutUserInput
    savedCards?: SavedCardUncheckedCreateNestedManyWithoutUserInput
    passwordResetTokens?: PasswordResetTokenUncheckedCreateNestedManyWithoutUserInput
  }

  export type UserCreateOrConnectWithoutRoleInput = {
    where: UserWhereUniqueInput
    create: XOR<UserCreateWithoutRoleInput, UserUncheckedCreateWithoutRoleInput>
  }

  export type UserCreateManyRoleInputEnvelope = {
    data: UserCreateManyRoleInput | UserCreateManyRoleInput[]
    skipDuplicates?: boolean
  }

  export type UserUpsertWithWhereUniqueWithoutRoleInput = {
    where: UserWhereUniqueInput
    update: XOR<UserUpdateWithoutRoleInput, UserUncheckedUpdateWithoutRoleInput>
    create: XOR<UserCreateWithoutRoleInput, UserUncheckedCreateWithoutRoleInput>
  }

  export type UserUpdateWithWhereUniqueWithoutRoleInput = {
    where: UserWhereUniqueInput
    data: XOR<UserUpdateWithoutRoleInput, UserUncheckedUpdateWithoutRoleInput>
  }

  export type UserUpdateManyWithWhereWithoutRoleInput = {
    where: UserScalarWhereInput
    data: XOR<UserUpdateManyMutationInput, UserUncheckedUpdateManyWithoutRoleInput>
  }

  export type UserScalarWhereInput = {
    AND?: UserScalarWhereInput | UserScalarWhereInput[]
    OR?: UserScalarWhereInput[]
    NOT?: UserScalarWhereInput | UserScalarWhereInput[]
    id?: IntFilter<"User"> | number
    uuid?: StringFilter<"User"> | string
    externalUserId?: IntNullableFilter<"User"> | number | null
    fullName?: StringFilter<"User"> | string
    email?: StringFilter<"User"> | string
    contactNumber?: StringNullableFilter<"User"> | string | null
    passwordHash?: StringNullableFilter<"User"> | string | null
    userType?: StringFilter<"User"> | string
    isActive?: BoolFilter<"User"> | boolean
    hasSeenGuide?: BoolFilter<"User"> | boolean
    roleId?: IntNullableFilter<"User"> | number | null
    createdAt?: DateTimeFilter<"User"> | Date | string
    updatedAt?: DateTimeFilter<"User"> | Date | string
  }

  export type RoleCreateWithoutUsersInput = {
    uuid?: string
    name: string
    displayName: string
    isSystem?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type RoleUncheckedCreateWithoutUsersInput = {
    id?: number
    uuid?: string
    name: string
    displayName: string
    isSystem?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type RoleCreateOrConnectWithoutUsersInput = {
    where: RoleWhereUniqueInput
    create: XOR<RoleCreateWithoutUsersInput, RoleUncheckedCreateWithoutUsersInput>
  }

  export type UserCompanyCreateWithoutUserInput = {
    uuid?: string
    createdAt?: Date | string
    company: CompanyCreateNestedOneWithoutUserCompaniesInput
  }

  export type UserCompanyUncheckedCreateWithoutUserInput = {
    id?: number
    uuid?: string
    companyId: number
    createdAt?: Date | string
  }

  export type UserCompanyCreateOrConnectWithoutUserInput = {
    where: UserCompanyWhereUniqueInput
    create: XOR<UserCompanyCreateWithoutUserInput, UserCompanyUncheckedCreateWithoutUserInput>
  }

  export type UserCompanyCreateManyUserInputEnvelope = {
    data: UserCompanyCreateManyUserInput | UserCompanyCreateManyUserInput[]
    skipDuplicates?: boolean
  }

  export type RefreshTokenCreateWithoutUserInput = {
    token: string
    expiresAt: Date | string
    isRevoked?: boolean
    createdAt?: Date | string
  }

  export type RefreshTokenUncheckedCreateWithoutUserInput = {
    id?: number
    token: string
    expiresAt: Date | string
    isRevoked?: boolean
    createdAt?: Date | string
  }

  export type RefreshTokenCreateOrConnectWithoutUserInput = {
    where: RefreshTokenWhereUniqueInput
    create: XOR<RefreshTokenCreateWithoutUserInput, RefreshTokenUncheckedCreateWithoutUserInput>
  }

  export type RefreshTokenCreateManyUserInputEnvelope = {
    data: RefreshTokenCreateManyUserInput | RefreshTokenCreateManyUserInput[]
    skipDuplicates?: boolean
  }

  export type SavedCardCreateWithoutUserInput = {
    uuid?: string
    cardToken: string
    cardFirst6: string
    cardLast4: string
    cardHolderName: string
    customerEmail: string
    isActive?: boolean
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    billPayments?: BillPaymentCreateNestedManyWithoutSavedCardInput
  }

  export type SavedCardUncheckedCreateWithoutUserInput = {
    id?: number
    uuid?: string
    cardToken: string
    cardFirst6: string
    cardLast4: string
    cardHolderName: string
    customerEmail: string
    isActive?: boolean
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    billPayments?: BillPaymentUncheckedCreateNestedManyWithoutSavedCardInput
  }

  export type SavedCardCreateOrConnectWithoutUserInput = {
    where: SavedCardWhereUniqueInput
    create: XOR<SavedCardCreateWithoutUserInput, SavedCardUncheckedCreateWithoutUserInput>
  }

  export type SavedCardCreateManyUserInputEnvelope = {
    data: SavedCardCreateManyUserInput | SavedCardCreateManyUserInput[]
    skipDuplicates?: boolean
  }

  export type PasswordResetTokenCreateWithoutUserInput = {
    tokenHash: string
    expiresAt: Date | string
    isUsed?: boolean
    createdAt?: Date | string
  }

  export type PasswordResetTokenUncheckedCreateWithoutUserInput = {
    id?: number
    tokenHash: string
    expiresAt: Date | string
    isUsed?: boolean
    createdAt?: Date | string
  }

  export type PasswordResetTokenCreateOrConnectWithoutUserInput = {
    where: PasswordResetTokenWhereUniqueInput
    create: XOR<PasswordResetTokenCreateWithoutUserInput, PasswordResetTokenUncheckedCreateWithoutUserInput>
  }

  export type PasswordResetTokenCreateManyUserInputEnvelope = {
    data: PasswordResetTokenCreateManyUserInput | PasswordResetTokenCreateManyUserInput[]
    skipDuplicates?: boolean
  }

  export type RoleUpsertWithoutUsersInput = {
    update: XOR<RoleUpdateWithoutUsersInput, RoleUncheckedUpdateWithoutUsersInput>
    create: XOR<RoleCreateWithoutUsersInput, RoleUncheckedCreateWithoutUsersInput>
    where?: RoleWhereInput
  }

  export type RoleUpdateToOneWithWhereWithoutUsersInput = {
    where?: RoleWhereInput
    data: XOR<RoleUpdateWithoutUsersInput, RoleUncheckedUpdateWithoutUsersInput>
  }

  export type RoleUpdateWithoutUsersInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    displayName?: StringFieldUpdateOperationsInput | string
    isSystem?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type RoleUncheckedUpdateWithoutUsersInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    displayName?: StringFieldUpdateOperationsInput | string
    isSystem?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type UserCompanyUpsertWithWhereUniqueWithoutUserInput = {
    where: UserCompanyWhereUniqueInput
    update: XOR<UserCompanyUpdateWithoutUserInput, UserCompanyUncheckedUpdateWithoutUserInput>
    create: XOR<UserCompanyCreateWithoutUserInput, UserCompanyUncheckedCreateWithoutUserInput>
  }

  export type UserCompanyUpdateWithWhereUniqueWithoutUserInput = {
    where: UserCompanyWhereUniqueInput
    data: XOR<UserCompanyUpdateWithoutUserInput, UserCompanyUncheckedUpdateWithoutUserInput>
  }

  export type UserCompanyUpdateManyWithWhereWithoutUserInput = {
    where: UserCompanyScalarWhereInput
    data: XOR<UserCompanyUpdateManyMutationInput, UserCompanyUncheckedUpdateManyWithoutUserInput>
  }

  export type RefreshTokenUpsertWithWhereUniqueWithoutUserInput = {
    where: RefreshTokenWhereUniqueInput
    update: XOR<RefreshTokenUpdateWithoutUserInput, RefreshTokenUncheckedUpdateWithoutUserInput>
    create: XOR<RefreshTokenCreateWithoutUserInput, RefreshTokenUncheckedCreateWithoutUserInput>
  }

  export type RefreshTokenUpdateWithWhereUniqueWithoutUserInput = {
    where: RefreshTokenWhereUniqueInput
    data: XOR<RefreshTokenUpdateWithoutUserInput, RefreshTokenUncheckedUpdateWithoutUserInput>
  }

  export type RefreshTokenUpdateManyWithWhereWithoutUserInput = {
    where: RefreshTokenScalarWhereInput
    data: XOR<RefreshTokenUpdateManyMutationInput, RefreshTokenUncheckedUpdateManyWithoutUserInput>
  }

  export type RefreshTokenScalarWhereInput = {
    AND?: RefreshTokenScalarWhereInput | RefreshTokenScalarWhereInput[]
    OR?: RefreshTokenScalarWhereInput[]
    NOT?: RefreshTokenScalarWhereInput | RefreshTokenScalarWhereInput[]
    id?: IntFilter<"RefreshToken"> | number
    token?: StringFilter<"RefreshToken"> | string
    userId?: IntFilter<"RefreshToken"> | number
    expiresAt?: DateTimeFilter<"RefreshToken"> | Date | string
    isRevoked?: BoolFilter<"RefreshToken"> | boolean
    createdAt?: DateTimeFilter<"RefreshToken"> | Date | string
  }

  export type SavedCardUpsertWithWhereUniqueWithoutUserInput = {
    where: SavedCardWhereUniqueInput
    update: XOR<SavedCardUpdateWithoutUserInput, SavedCardUncheckedUpdateWithoutUserInput>
    create: XOR<SavedCardCreateWithoutUserInput, SavedCardUncheckedCreateWithoutUserInput>
  }

  export type SavedCardUpdateWithWhereUniqueWithoutUserInput = {
    where: SavedCardWhereUniqueInput
    data: XOR<SavedCardUpdateWithoutUserInput, SavedCardUncheckedUpdateWithoutUserInput>
  }

  export type SavedCardUpdateManyWithWhereWithoutUserInput = {
    where: SavedCardScalarWhereInput
    data: XOR<SavedCardUpdateManyMutationInput, SavedCardUncheckedUpdateManyWithoutUserInput>
  }

  export type SavedCardScalarWhereInput = {
    AND?: SavedCardScalarWhereInput | SavedCardScalarWhereInput[]
    OR?: SavedCardScalarWhereInput[]
    NOT?: SavedCardScalarWhereInput | SavedCardScalarWhereInput[]
    id?: IntFilter<"SavedCard"> | number
    uuid?: StringFilter<"SavedCard"> | string
    userId?: IntFilter<"SavedCard"> | number
    cardToken?: StringFilter<"SavedCard"> | string
    cardFirst6?: StringFilter<"SavedCard"> | string
    cardLast4?: StringFilter<"SavedCard"> | string
    cardHolderName?: StringFilter<"SavedCard"> | string
    customerEmail?: StringFilter<"SavedCard"> | string
    isActive?: BoolFilter<"SavedCard"> | boolean
    deletedAt?: DateTimeNullableFilter<"SavedCard"> | Date | string | null
    createdAt?: DateTimeFilter<"SavedCard"> | Date | string
    updatedAt?: DateTimeFilter<"SavedCard"> | Date | string
  }

  export type PasswordResetTokenUpsertWithWhereUniqueWithoutUserInput = {
    where: PasswordResetTokenWhereUniqueInput
    update: XOR<PasswordResetTokenUpdateWithoutUserInput, PasswordResetTokenUncheckedUpdateWithoutUserInput>
    create: XOR<PasswordResetTokenCreateWithoutUserInput, PasswordResetTokenUncheckedCreateWithoutUserInput>
  }

  export type PasswordResetTokenUpdateWithWhereUniqueWithoutUserInput = {
    where: PasswordResetTokenWhereUniqueInput
    data: XOR<PasswordResetTokenUpdateWithoutUserInput, PasswordResetTokenUncheckedUpdateWithoutUserInput>
  }

  export type PasswordResetTokenUpdateManyWithWhereWithoutUserInput = {
    where: PasswordResetTokenScalarWhereInput
    data: XOR<PasswordResetTokenUpdateManyMutationInput, PasswordResetTokenUncheckedUpdateManyWithoutUserInput>
  }

  export type PasswordResetTokenScalarWhereInput = {
    AND?: PasswordResetTokenScalarWhereInput | PasswordResetTokenScalarWhereInput[]
    OR?: PasswordResetTokenScalarWhereInput[]
    NOT?: PasswordResetTokenScalarWhereInput | PasswordResetTokenScalarWhereInput[]
    id?: IntFilter<"PasswordResetToken"> | number
    tokenHash?: StringFilter<"PasswordResetToken"> | string
    userId?: IntFilter<"PasswordResetToken"> | number
    expiresAt?: DateTimeFilter<"PasswordResetToken"> | Date | string
    isUsed?: BoolFilter<"PasswordResetToken"> | boolean
    createdAt?: DateTimeFilter<"PasswordResetToken"> | Date | string
  }

  export type UserCreateWithoutRefreshTokensInput = {
    uuid?: string
    externalUserId?: number | null
    fullName: string
    email: string
    contactNumber?: string | null
    passwordHash?: string | null
    userType?: string
    isActive?: boolean
    hasSeenGuide?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
    role?: RoleCreateNestedOneWithoutUsersInput
    companies?: UserCompanyCreateNestedManyWithoutUserInput
    savedCards?: SavedCardCreateNestedManyWithoutUserInput
    passwordResetTokens?: PasswordResetTokenCreateNestedManyWithoutUserInput
  }

  export type UserUncheckedCreateWithoutRefreshTokensInput = {
    id?: number
    uuid?: string
    externalUserId?: number | null
    fullName: string
    email: string
    contactNumber?: string | null
    passwordHash?: string | null
    userType?: string
    isActive?: boolean
    hasSeenGuide?: boolean
    roleId?: number | null
    createdAt?: Date | string
    updatedAt?: Date | string
    companies?: UserCompanyUncheckedCreateNestedManyWithoutUserInput
    savedCards?: SavedCardUncheckedCreateNestedManyWithoutUserInput
    passwordResetTokens?: PasswordResetTokenUncheckedCreateNestedManyWithoutUserInput
  }

  export type UserCreateOrConnectWithoutRefreshTokensInput = {
    where: UserWhereUniqueInput
    create: XOR<UserCreateWithoutRefreshTokensInput, UserUncheckedCreateWithoutRefreshTokensInput>
  }

  export type UserUpsertWithoutRefreshTokensInput = {
    update: XOR<UserUpdateWithoutRefreshTokensInput, UserUncheckedUpdateWithoutRefreshTokensInput>
    create: XOR<UserCreateWithoutRefreshTokensInput, UserUncheckedCreateWithoutRefreshTokensInput>
    where?: UserWhereInput
  }

  export type UserUpdateToOneWithWhereWithoutRefreshTokensInput = {
    where?: UserWhereInput
    data: XOR<UserUpdateWithoutRefreshTokensInput, UserUncheckedUpdateWithoutRefreshTokensInput>
  }

  export type UserUpdateWithoutRefreshTokensInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    externalUserId?: NullableIntFieldUpdateOperationsInput | number | null
    fullName?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    passwordHash?: NullableStringFieldUpdateOperationsInput | string | null
    userType?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    hasSeenGuide?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    role?: RoleUpdateOneWithoutUsersNestedInput
    companies?: UserCompanyUpdateManyWithoutUserNestedInput
    savedCards?: SavedCardUpdateManyWithoutUserNestedInput
    passwordResetTokens?: PasswordResetTokenUpdateManyWithoutUserNestedInput
  }

  export type UserUncheckedUpdateWithoutRefreshTokensInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    externalUserId?: NullableIntFieldUpdateOperationsInput | number | null
    fullName?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    passwordHash?: NullableStringFieldUpdateOperationsInput | string | null
    userType?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    hasSeenGuide?: BoolFieldUpdateOperationsInput | boolean
    roleId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    companies?: UserCompanyUncheckedUpdateManyWithoutUserNestedInput
    savedCards?: SavedCardUncheckedUpdateManyWithoutUserNestedInput
    passwordResetTokens?: PasswordResetTokenUncheckedUpdateManyWithoutUserNestedInput
  }

  export type UserCreateWithoutPasswordResetTokensInput = {
    uuid?: string
    externalUserId?: number | null
    fullName: string
    email: string
    contactNumber?: string | null
    passwordHash?: string | null
    userType?: string
    isActive?: boolean
    hasSeenGuide?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
    role?: RoleCreateNestedOneWithoutUsersInput
    companies?: UserCompanyCreateNestedManyWithoutUserInput
    refreshTokens?: RefreshTokenCreateNestedManyWithoutUserInput
    savedCards?: SavedCardCreateNestedManyWithoutUserInput
  }

  export type UserUncheckedCreateWithoutPasswordResetTokensInput = {
    id?: number
    uuid?: string
    externalUserId?: number | null
    fullName: string
    email: string
    contactNumber?: string | null
    passwordHash?: string | null
    userType?: string
    isActive?: boolean
    hasSeenGuide?: boolean
    roleId?: number | null
    createdAt?: Date | string
    updatedAt?: Date | string
    companies?: UserCompanyUncheckedCreateNestedManyWithoutUserInput
    refreshTokens?: RefreshTokenUncheckedCreateNestedManyWithoutUserInput
    savedCards?: SavedCardUncheckedCreateNestedManyWithoutUserInput
  }

  export type UserCreateOrConnectWithoutPasswordResetTokensInput = {
    where: UserWhereUniqueInput
    create: XOR<UserCreateWithoutPasswordResetTokensInput, UserUncheckedCreateWithoutPasswordResetTokensInput>
  }

  export type UserUpsertWithoutPasswordResetTokensInput = {
    update: XOR<UserUpdateWithoutPasswordResetTokensInput, UserUncheckedUpdateWithoutPasswordResetTokensInput>
    create: XOR<UserCreateWithoutPasswordResetTokensInput, UserUncheckedCreateWithoutPasswordResetTokensInput>
    where?: UserWhereInput
  }

  export type UserUpdateToOneWithWhereWithoutPasswordResetTokensInput = {
    where?: UserWhereInput
    data: XOR<UserUpdateWithoutPasswordResetTokensInput, UserUncheckedUpdateWithoutPasswordResetTokensInput>
  }

  export type UserUpdateWithoutPasswordResetTokensInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    externalUserId?: NullableIntFieldUpdateOperationsInput | number | null
    fullName?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    passwordHash?: NullableStringFieldUpdateOperationsInput | string | null
    userType?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    hasSeenGuide?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    role?: RoleUpdateOneWithoutUsersNestedInput
    companies?: UserCompanyUpdateManyWithoutUserNestedInput
    refreshTokens?: RefreshTokenUpdateManyWithoutUserNestedInput
    savedCards?: SavedCardUpdateManyWithoutUserNestedInput
  }

  export type UserUncheckedUpdateWithoutPasswordResetTokensInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    externalUserId?: NullableIntFieldUpdateOperationsInput | number | null
    fullName?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    passwordHash?: NullableStringFieldUpdateOperationsInput | string | null
    userType?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    hasSeenGuide?: BoolFieldUpdateOperationsInput | boolean
    roleId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    companies?: UserCompanyUncheckedUpdateManyWithoutUserNestedInput
    refreshTokens?: RefreshTokenUncheckedUpdateManyWithoutUserNestedInput
    savedCards?: SavedCardUncheckedUpdateManyWithoutUserNestedInput
  }

  export type UserCreateWithoutCompaniesInput = {
    uuid?: string
    externalUserId?: number | null
    fullName: string
    email: string
    contactNumber?: string | null
    passwordHash?: string | null
    userType?: string
    isActive?: boolean
    hasSeenGuide?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
    role?: RoleCreateNestedOneWithoutUsersInput
    refreshTokens?: RefreshTokenCreateNestedManyWithoutUserInput
    savedCards?: SavedCardCreateNestedManyWithoutUserInput
    passwordResetTokens?: PasswordResetTokenCreateNestedManyWithoutUserInput
  }

  export type UserUncheckedCreateWithoutCompaniesInput = {
    id?: number
    uuid?: string
    externalUserId?: number | null
    fullName: string
    email: string
    contactNumber?: string | null
    passwordHash?: string | null
    userType?: string
    isActive?: boolean
    hasSeenGuide?: boolean
    roleId?: number | null
    createdAt?: Date | string
    updatedAt?: Date | string
    refreshTokens?: RefreshTokenUncheckedCreateNestedManyWithoutUserInput
    savedCards?: SavedCardUncheckedCreateNestedManyWithoutUserInput
    passwordResetTokens?: PasswordResetTokenUncheckedCreateNestedManyWithoutUserInput
  }

  export type UserCreateOrConnectWithoutCompaniesInput = {
    where: UserWhereUniqueInput
    create: XOR<UserCreateWithoutCompaniesInput, UserUncheckedCreateWithoutCompaniesInput>
  }

  export type CompanyCreateWithoutUserCompaniesInput = {
    uuid?: string
    externalCompanyId?: number | null
    source?: string | null
    brNumber?: string | null
    companyName: string
    contactNumber?: string | null
    address?: string | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    smsCostIndividual?: number | null
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    billAccounts?: BillAccountCreateNestedManyWithoutCompanyInput
    departments?: DepartmentCreateNestedManyWithoutCompanyInput
    mobileNumberLists?: MobileNumberListCreateNestedManyWithoutCompanyInput
    senderMasks?: SenderMaskCreateNestedManyWithoutCompanyInput
    contactParamSettings?: ContactParamSettingsCreateNestedOneWithoutCompanyInput
  }

  export type CompanyUncheckedCreateWithoutUserCompaniesInput = {
    id?: number
    uuid?: string
    externalCompanyId?: number | null
    source?: string | null
    brNumber?: string | null
    companyName: string
    contactNumber?: string | null
    address?: string | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    smsCostIndividual?: number | null
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    billAccounts?: BillAccountUncheckedCreateNestedManyWithoutCompanyInput
    departments?: DepartmentUncheckedCreateNestedManyWithoutCompanyInput
    mobileNumberLists?: MobileNumberListUncheckedCreateNestedManyWithoutCompanyInput
    senderMasks?: SenderMaskUncheckedCreateNestedManyWithoutCompanyInput
    contactParamSettings?: ContactParamSettingsUncheckedCreateNestedOneWithoutCompanyInput
  }

  export type CompanyCreateOrConnectWithoutUserCompaniesInput = {
    where: CompanyWhereUniqueInput
    create: XOR<CompanyCreateWithoutUserCompaniesInput, CompanyUncheckedCreateWithoutUserCompaniesInput>
  }

  export type UserUpsertWithoutCompaniesInput = {
    update: XOR<UserUpdateWithoutCompaniesInput, UserUncheckedUpdateWithoutCompaniesInput>
    create: XOR<UserCreateWithoutCompaniesInput, UserUncheckedCreateWithoutCompaniesInput>
    where?: UserWhereInput
  }

  export type UserUpdateToOneWithWhereWithoutCompaniesInput = {
    where?: UserWhereInput
    data: XOR<UserUpdateWithoutCompaniesInput, UserUncheckedUpdateWithoutCompaniesInput>
  }

  export type UserUpdateWithoutCompaniesInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    externalUserId?: NullableIntFieldUpdateOperationsInput | number | null
    fullName?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    passwordHash?: NullableStringFieldUpdateOperationsInput | string | null
    userType?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    hasSeenGuide?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    role?: RoleUpdateOneWithoutUsersNestedInput
    refreshTokens?: RefreshTokenUpdateManyWithoutUserNestedInput
    savedCards?: SavedCardUpdateManyWithoutUserNestedInput
    passwordResetTokens?: PasswordResetTokenUpdateManyWithoutUserNestedInput
  }

  export type UserUncheckedUpdateWithoutCompaniesInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    externalUserId?: NullableIntFieldUpdateOperationsInput | number | null
    fullName?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    passwordHash?: NullableStringFieldUpdateOperationsInput | string | null
    userType?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    hasSeenGuide?: BoolFieldUpdateOperationsInput | boolean
    roleId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    refreshTokens?: RefreshTokenUncheckedUpdateManyWithoutUserNestedInput
    savedCards?: SavedCardUncheckedUpdateManyWithoutUserNestedInput
    passwordResetTokens?: PasswordResetTokenUncheckedUpdateManyWithoutUserNestedInput
  }

  export type CompanyUpsertWithoutUserCompaniesInput = {
    update: XOR<CompanyUpdateWithoutUserCompaniesInput, CompanyUncheckedUpdateWithoutUserCompaniesInput>
    create: XOR<CompanyCreateWithoutUserCompaniesInput, CompanyUncheckedCreateWithoutUserCompaniesInput>
    where?: CompanyWhereInput
  }

  export type CompanyUpdateToOneWithWhereWithoutUserCompaniesInput = {
    where?: CompanyWhereInput
    data: XOR<CompanyUpdateWithoutUserCompaniesInput, CompanyUncheckedUpdateWithoutUserCompaniesInput>
  }

  export type CompanyUpdateWithoutUserCompaniesInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    source?: NullableStringFieldUpdateOperationsInput | string | null
    brNumber?: NullableStringFieldUpdateOperationsInput | string | null
    companyName?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    address?: NullableStringFieldUpdateOperationsInput | string | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostIndividual?: NullableFloatFieldUpdateOperationsInput | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    billAccounts?: BillAccountUpdateManyWithoutCompanyNestedInput
    departments?: DepartmentUpdateManyWithoutCompanyNestedInput
    mobileNumberLists?: MobileNumberListUpdateManyWithoutCompanyNestedInput
    senderMasks?: SenderMaskUpdateManyWithoutCompanyNestedInput
    contactParamSettings?: ContactParamSettingsUpdateOneWithoutCompanyNestedInput
  }

  export type CompanyUncheckedUpdateWithoutUserCompaniesInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    source?: NullableStringFieldUpdateOperationsInput | string | null
    brNumber?: NullableStringFieldUpdateOperationsInput | string | null
    companyName?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    address?: NullableStringFieldUpdateOperationsInput | string | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostIndividual?: NullableFloatFieldUpdateOperationsInput | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    billAccounts?: BillAccountUncheckedUpdateManyWithoutCompanyNestedInput
    departments?: DepartmentUncheckedUpdateManyWithoutCompanyNestedInput
    mobileNumberLists?: MobileNumberListUncheckedUpdateManyWithoutCompanyNestedInput
    senderMasks?: SenderMaskUncheckedUpdateManyWithoutCompanyNestedInput
    contactParamSettings?: ContactParamSettingsUncheckedUpdateOneWithoutCompanyNestedInput
  }

  export type BillAccountCreateWithoutBillPaymentsInput = {
    uuid?: string
    accountNumber: string
    accountName: string
    outstandingBalance: number
    reservedBalance?: number
    accountStatus?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    company: CompanyCreateNestedOneWithoutBillAccountsInput
    campaigns?: CampaignCreateNestedManyWithoutBillingAccountInput
    lowBalanceAlerts?: LowBalanceAlertCreateNestedManyWithoutBillAccountInput
  }

  export type BillAccountUncheckedCreateWithoutBillPaymentsInput = {
    id?: number
    uuid?: string
    accountNumber: string
    accountName: string
    outstandingBalance: number
    reservedBalance?: number
    accountStatus?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    companyId: number
    campaigns?: CampaignUncheckedCreateNestedManyWithoutBillingAccountInput
    lowBalanceAlerts?: LowBalanceAlertUncheckedCreateNestedManyWithoutBillAccountInput
  }

  export type BillAccountCreateOrConnectWithoutBillPaymentsInput = {
    where: BillAccountWhereUniqueInput
    create: XOR<BillAccountCreateWithoutBillPaymentsInput, BillAccountUncheckedCreateWithoutBillPaymentsInput>
  }

  export type SavedCardCreateWithoutBillPaymentsInput = {
    uuid?: string
    cardToken: string
    cardFirst6: string
    cardLast4: string
    cardHolderName: string
    customerEmail: string
    isActive?: boolean
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    user: UserCreateNestedOneWithoutSavedCardsInput
  }

  export type SavedCardUncheckedCreateWithoutBillPaymentsInput = {
    id?: number
    uuid?: string
    userId: number
    cardToken: string
    cardFirst6: string
    cardLast4: string
    cardHolderName: string
    customerEmail: string
    isActive?: boolean
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type SavedCardCreateOrConnectWithoutBillPaymentsInput = {
    where: SavedCardWhereUniqueInput
    create: XOR<SavedCardCreateWithoutBillPaymentsInput, SavedCardUncheckedCreateWithoutBillPaymentsInput>
  }

  export type BillAccountUpsertWithoutBillPaymentsInput = {
    update: XOR<BillAccountUpdateWithoutBillPaymentsInput, BillAccountUncheckedUpdateWithoutBillPaymentsInput>
    create: XOR<BillAccountCreateWithoutBillPaymentsInput, BillAccountUncheckedCreateWithoutBillPaymentsInput>
    where?: BillAccountWhereInput
  }

  export type BillAccountUpdateToOneWithWhereWithoutBillPaymentsInput = {
    where?: BillAccountWhereInput
    data: XOR<BillAccountUpdateWithoutBillPaymentsInput, BillAccountUncheckedUpdateWithoutBillPaymentsInput>
  }

  export type BillAccountUpdateWithoutBillPaymentsInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    accountNumber?: StringFieldUpdateOperationsInput | string
    accountName?: StringFieldUpdateOperationsInput | string
    outstandingBalance?: FloatFieldUpdateOperationsInput | number
    reservedBalance?: FloatFieldUpdateOperationsInput | number
    accountStatus?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    company?: CompanyUpdateOneRequiredWithoutBillAccountsNestedInput
    campaigns?: CampaignUpdateManyWithoutBillingAccountNestedInput
    lowBalanceAlerts?: LowBalanceAlertUpdateManyWithoutBillAccountNestedInput
  }

  export type BillAccountUncheckedUpdateWithoutBillPaymentsInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    accountNumber?: StringFieldUpdateOperationsInput | string
    accountName?: StringFieldUpdateOperationsInput | string
    outstandingBalance?: FloatFieldUpdateOperationsInput | number
    reservedBalance?: FloatFieldUpdateOperationsInput | number
    accountStatus?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    companyId?: IntFieldUpdateOperationsInput | number
    campaigns?: CampaignUncheckedUpdateManyWithoutBillingAccountNestedInput
    lowBalanceAlerts?: LowBalanceAlertUncheckedUpdateManyWithoutBillAccountNestedInput
  }

  export type SavedCardUpsertWithoutBillPaymentsInput = {
    update: XOR<SavedCardUpdateWithoutBillPaymentsInput, SavedCardUncheckedUpdateWithoutBillPaymentsInput>
    create: XOR<SavedCardCreateWithoutBillPaymentsInput, SavedCardUncheckedCreateWithoutBillPaymentsInput>
    where?: SavedCardWhereInput
  }

  export type SavedCardUpdateToOneWithWhereWithoutBillPaymentsInput = {
    where?: SavedCardWhereInput
    data: XOR<SavedCardUpdateWithoutBillPaymentsInput, SavedCardUncheckedUpdateWithoutBillPaymentsInput>
  }

  export type SavedCardUpdateWithoutBillPaymentsInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    cardToken?: StringFieldUpdateOperationsInput | string
    cardFirst6?: StringFieldUpdateOperationsInput | string
    cardLast4?: StringFieldUpdateOperationsInput | string
    cardHolderName?: StringFieldUpdateOperationsInput | string
    customerEmail?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    user?: UserUpdateOneRequiredWithoutSavedCardsNestedInput
  }

  export type SavedCardUncheckedUpdateWithoutBillPaymentsInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    userId?: IntFieldUpdateOperationsInput | number
    cardToken?: StringFieldUpdateOperationsInput | string
    cardFirst6?: StringFieldUpdateOperationsInput | string
    cardLast4?: StringFieldUpdateOperationsInput | string
    cardHolderName?: StringFieldUpdateOperationsInput | string
    customerEmail?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type CompanyCreateWithoutBillAccountsInput = {
    uuid?: string
    externalCompanyId?: number | null
    source?: string | null
    brNumber?: string | null
    companyName: string
    contactNumber?: string | null
    address?: string | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    smsCostIndividual?: number | null
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    userCompanies?: UserCompanyCreateNestedManyWithoutCompanyInput
    departments?: DepartmentCreateNestedManyWithoutCompanyInput
    mobileNumberLists?: MobileNumberListCreateNestedManyWithoutCompanyInput
    senderMasks?: SenderMaskCreateNestedManyWithoutCompanyInput
    contactParamSettings?: ContactParamSettingsCreateNestedOneWithoutCompanyInput
  }

  export type CompanyUncheckedCreateWithoutBillAccountsInput = {
    id?: number
    uuid?: string
    externalCompanyId?: number | null
    source?: string | null
    brNumber?: string | null
    companyName: string
    contactNumber?: string | null
    address?: string | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    smsCostIndividual?: number | null
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    userCompanies?: UserCompanyUncheckedCreateNestedManyWithoutCompanyInput
    departments?: DepartmentUncheckedCreateNestedManyWithoutCompanyInput
    mobileNumberLists?: MobileNumberListUncheckedCreateNestedManyWithoutCompanyInput
    senderMasks?: SenderMaskUncheckedCreateNestedManyWithoutCompanyInput
    contactParamSettings?: ContactParamSettingsUncheckedCreateNestedOneWithoutCompanyInput
  }

  export type CompanyCreateOrConnectWithoutBillAccountsInput = {
    where: CompanyWhereUniqueInput
    create: XOR<CompanyCreateWithoutBillAccountsInput, CompanyUncheckedCreateWithoutBillAccountsInput>
  }

  export type BillPaymentCreateWithoutBillAccountInput = {
    uuid?: string
    amount: number
    paymentMethod: string
    status?: string
    orderId: string
    orderReference?: string | null
    errorCode?: string | null
    failureReason?: string | null
    paidUserId: number
    createdAt?: Date | string
    savedCard?: SavedCardCreateNestedOneWithoutBillPaymentsInput
  }

  export type BillPaymentUncheckedCreateWithoutBillAccountInput = {
    id?: number
    uuid?: string
    amount: number
    paymentMethod: string
    status?: string
    orderId: string
    orderReference?: string | null
    errorCode?: string | null
    failureReason?: string | null
    paidUserId: number
    savedCardId?: number | null
    createdAt?: Date | string
  }

  export type BillPaymentCreateOrConnectWithoutBillAccountInput = {
    where: BillPaymentWhereUniqueInput
    create: XOR<BillPaymentCreateWithoutBillAccountInput, BillPaymentUncheckedCreateWithoutBillAccountInput>
  }

  export type BillPaymentCreateManyBillAccountInputEnvelope = {
    data: BillPaymentCreateManyBillAccountInput | BillPaymentCreateManyBillAccountInput[]
    skipDuplicates?: boolean
  }

  export type CampaignCreateWithoutBillingAccountInput = {
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    senderMask: SenderMaskCreateNestedOneWithoutCampaignsInput
    mobileNumberList?: MobileNumberListCreateNestedOneWithoutCampaignsInput
    template?: SMS_TemplateCreateNestedOneWithoutCampaignsInput
    smsReports?: SMS_ReportCreateNestedManyWithoutCampaignInput
    bulkServerRefs?: CampaignServerRefCreateNestedManyWithoutCampaignInput
    recipients?: CampaignRecipientCreateNestedManyWithoutCampaignInput
  }

  export type CampaignUncheckedCreateWithoutBillingAccountInput = {
    id?: number
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    senderMaskId: number
    mobileNumberListId?: bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: number | null
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    smsReports?: SMS_ReportUncheckedCreateNestedManyWithoutCampaignInput
    bulkServerRefs?: CampaignServerRefUncheckedCreateNestedManyWithoutCampaignInput
    recipients?: CampaignRecipientUncheckedCreateNestedManyWithoutCampaignInput
  }

  export type CampaignCreateOrConnectWithoutBillingAccountInput = {
    where: CampaignWhereUniqueInput
    create: XOR<CampaignCreateWithoutBillingAccountInput, CampaignUncheckedCreateWithoutBillingAccountInput>
  }

  export type CampaignCreateManyBillingAccountInputEnvelope = {
    data: CampaignCreateManyBillingAccountInput | CampaignCreateManyBillingAccountInput[]
    skipDuplicates?: boolean
  }

  export type LowBalanceAlertCreateWithoutBillAccountInput = {
    uuid?: string
    userId: number
    thresholdLevel?: number
    isActive?: boolean
    balanceAtAlert: number
    chargedAmount?: number
    sentTo: string
    maskUsed: string
    serverRef?: number | null
    status?: string
    failureReason?: string | null
    createdAt?: Date | string
  }

  export type LowBalanceAlertUncheckedCreateWithoutBillAccountInput = {
    id?: number
    uuid?: string
    userId: number
    thresholdLevel?: number
    isActive?: boolean
    balanceAtAlert: number
    chargedAmount?: number
    sentTo: string
    maskUsed: string
    serverRef?: number | null
    status?: string
    failureReason?: string | null
    createdAt?: Date | string
  }

  export type LowBalanceAlertCreateOrConnectWithoutBillAccountInput = {
    where: LowBalanceAlertWhereUniqueInput
    create: XOR<LowBalanceAlertCreateWithoutBillAccountInput, LowBalanceAlertUncheckedCreateWithoutBillAccountInput>
  }

  export type LowBalanceAlertCreateManyBillAccountInputEnvelope = {
    data: LowBalanceAlertCreateManyBillAccountInput | LowBalanceAlertCreateManyBillAccountInput[]
    skipDuplicates?: boolean
  }

  export type CompanyUpsertWithoutBillAccountsInput = {
    update: XOR<CompanyUpdateWithoutBillAccountsInput, CompanyUncheckedUpdateWithoutBillAccountsInput>
    create: XOR<CompanyCreateWithoutBillAccountsInput, CompanyUncheckedCreateWithoutBillAccountsInput>
    where?: CompanyWhereInput
  }

  export type CompanyUpdateToOneWithWhereWithoutBillAccountsInput = {
    where?: CompanyWhereInput
    data: XOR<CompanyUpdateWithoutBillAccountsInput, CompanyUncheckedUpdateWithoutBillAccountsInput>
  }

  export type CompanyUpdateWithoutBillAccountsInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    source?: NullableStringFieldUpdateOperationsInput | string | null
    brNumber?: NullableStringFieldUpdateOperationsInput | string | null
    companyName?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    address?: NullableStringFieldUpdateOperationsInput | string | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostIndividual?: NullableFloatFieldUpdateOperationsInput | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    userCompanies?: UserCompanyUpdateManyWithoutCompanyNestedInput
    departments?: DepartmentUpdateManyWithoutCompanyNestedInput
    mobileNumberLists?: MobileNumberListUpdateManyWithoutCompanyNestedInput
    senderMasks?: SenderMaskUpdateManyWithoutCompanyNestedInput
    contactParamSettings?: ContactParamSettingsUpdateOneWithoutCompanyNestedInput
  }

  export type CompanyUncheckedUpdateWithoutBillAccountsInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    source?: NullableStringFieldUpdateOperationsInput | string | null
    brNumber?: NullableStringFieldUpdateOperationsInput | string | null
    companyName?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    address?: NullableStringFieldUpdateOperationsInput | string | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostIndividual?: NullableFloatFieldUpdateOperationsInput | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    userCompanies?: UserCompanyUncheckedUpdateManyWithoutCompanyNestedInput
    departments?: DepartmentUncheckedUpdateManyWithoutCompanyNestedInput
    mobileNumberLists?: MobileNumberListUncheckedUpdateManyWithoutCompanyNestedInput
    senderMasks?: SenderMaskUncheckedUpdateManyWithoutCompanyNestedInput
    contactParamSettings?: ContactParamSettingsUncheckedUpdateOneWithoutCompanyNestedInput
  }

  export type BillPaymentUpsertWithWhereUniqueWithoutBillAccountInput = {
    where: BillPaymentWhereUniqueInput
    update: XOR<BillPaymentUpdateWithoutBillAccountInput, BillPaymentUncheckedUpdateWithoutBillAccountInput>
    create: XOR<BillPaymentCreateWithoutBillAccountInput, BillPaymentUncheckedCreateWithoutBillAccountInput>
  }

  export type BillPaymentUpdateWithWhereUniqueWithoutBillAccountInput = {
    where: BillPaymentWhereUniqueInput
    data: XOR<BillPaymentUpdateWithoutBillAccountInput, BillPaymentUncheckedUpdateWithoutBillAccountInput>
  }

  export type BillPaymentUpdateManyWithWhereWithoutBillAccountInput = {
    where: BillPaymentScalarWhereInput
    data: XOR<BillPaymentUpdateManyMutationInput, BillPaymentUncheckedUpdateManyWithoutBillAccountInput>
  }

  export type BillPaymentScalarWhereInput = {
    AND?: BillPaymentScalarWhereInput | BillPaymentScalarWhereInput[]
    OR?: BillPaymentScalarWhereInput[]
    NOT?: BillPaymentScalarWhereInput | BillPaymentScalarWhereInput[]
    id?: IntFilter<"BillPayment"> | number
    uuid?: StringFilter<"BillPayment"> | string
    billingAccountId?: IntFilter<"BillPayment"> | number
    amount?: FloatFilter<"BillPayment"> | number
    paymentMethod?: StringFilter<"BillPayment"> | string
    status?: StringFilter<"BillPayment"> | string
    orderId?: StringFilter<"BillPayment"> | string
    orderReference?: StringNullableFilter<"BillPayment"> | string | null
    errorCode?: StringNullableFilter<"BillPayment"> | string | null
    failureReason?: StringNullableFilter<"BillPayment"> | string | null
    paidUserId?: IntFilter<"BillPayment"> | number
    savedCardId?: IntNullableFilter<"BillPayment"> | number | null
    createdAt?: DateTimeFilter<"BillPayment"> | Date | string
  }

  export type CampaignUpsertWithWhereUniqueWithoutBillingAccountInput = {
    where: CampaignWhereUniqueInput
    update: XOR<CampaignUpdateWithoutBillingAccountInput, CampaignUncheckedUpdateWithoutBillingAccountInput>
    create: XOR<CampaignCreateWithoutBillingAccountInput, CampaignUncheckedCreateWithoutBillingAccountInput>
  }

  export type CampaignUpdateWithWhereUniqueWithoutBillingAccountInput = {
    where: CampaignWhereUniqueInput
    data: XOR<CampaignUpdateWithoutBillingAccountInput, CampaignUncheckedUpdateWithoutBillingAccountInput>
  }

  export type CampaignUpdateManyWithWhereWithoutBillingAccountInput = {
    where: CampaignScalarWhereInput
    data: XOR<CampaignUpdateManyMutationInput, CampaignUncheckedUpdateManyWithoutBillingAccountInput>
  }

  export type CampaignScalarWhereInput = {
    AND?: CampaignScalarWhereInput | CampaignScalarWhereInput[]
    OR?: CampaignScalarWhereInput[]
    NOT?: CampaignScalarWhereInput | CampaignScalarWhereInput[]
    id?: IntFilter<"Campaign"> | number
    uuid?: StringFilter<"Campaign"> | string
    name?: StringFilter<"Campaign"> | string
    status?: StringFilter<"Campaign"> | string
    server_ref?: BigIntNullableFilter<"Campaign"> | bigint | number | null
    serverRefs?: JsonNullableFilter<"Campaign">
    isParameterized?: BoolFilter<"Campaign"> | boolean
    smsValidityPeriod?: IntNullableFilter<"Campaign"> | number | null
    customMessage?: StringNullableFilter<"Campaign"> | string | null
    scheduledDate?: DateTimeFilter<"Campaign"> | Date | string
    notificationNumber?: StringNullableFilter<"Campaign"> | string | null
    createdByUserId?: IntNullableFilter<"Campaign"> | number | null
    billingAccountId?: IntFilter<"Campaign"> | number
    senderMaskId?: IntFilter<"Campaign"> | number
    mobileNumberListId?: BigIntNullableFilter<"Campaign"> | bigint | number | null
    customBlacklist?: JsonNullableFilter<"Campaign">
    templateId?: IntNullableFilter<"Campaign"> | number | null
    smsType?: StringFilter<"Campaign"> | string
    source?: StringFilter<"Campaign"> | string
    reservedAmount?: FloatFilter<"Campaign"> | number
    chargedAmount?: FloatFilter<"Campaign"> | number
    smsCostPerSegment?: FloatNullableFilter<"Campaign"> | number | null
    batchUuid?: StringNullableFilter<"Campaign"> | string | null
    failureReason?: StringNullableFilter<"Campaign"> | string | null
    createdAt?: DateTimeFilter<"Campaign"> | Date | string
    updatedAt?: DateTimeFilter<"Campaign"> | Date | string
    deletedAt?: DateTimeNullableFilter<"Campaign"> | Date | string | null
  }

  export type LowBalanceAlertUpsertWithWhereUniqueWithoutBillAccountInput = {
    where: LowBalanceAlertWhereUniqueInput
    update: XOR<LowBalanceAlertUpdateWithoutBillAccountInput, LowBalanceAlertUncheckedUpdateWithoutBillAccountInput>
    create: XOR<LowBalanceAlertCreateWithoutBillAccountInput, LowBalanceAlertUncheckedCreateWithoutBillAccountInput>
  }

  export type LowBalanceAlertUpdateWithWhereUniqueWithoutBillAccountInput = {
    where: LowBalanceAlertWhereUniqueInput
    data: XOR<LowBalanceAlertUpdateWithoutBillAccountInput, LowBalanceAlertUncheckedUpdateWithoutBillAccountInput>
  }

  export type LowBalanceAlertUpdateManyWithWhereWithoutBillAccountInput = {
    where: LowBalanceAlertScalarWhereInput
    data: XOR<LowBalanceAlertUpdateManyMutationInput, LowBalanceAlertUncheckedUpdateManyWithoutBillAccountInput>
  }

  export type LowBalanceAlertScalarWhereInput = {
    AND?: LowBalanceAlertScalarWhereInput | LowBalanceAlertScalarWhereInput[]
    OR?: LowBalanceAlertScalarWhereInput[]
    NOT?: LowBalanceAlertScalarWhereInput | LowBalanceAlertScalarWhereInput[]
    id?: IntFilter<"LowBalanceAlert"> | number
    uuid?: StringFilter<"LowBalanceAlert"> | string
    billingAccountId?: IntFilter<"LowBalanceAlert"> | number
    userId?: IntFilter<"LowBalanceAlert"> | number
    thresholdLevel?: IntFilter<"LowBalanceAlert"> | number
    isActive?: BoolFilter<"LowBalanceAlert"> | boolean
    balanceAtAlert?: FloatFilter<"LowBalanceAlert"> | number
    chargedAmount?: FloatFilter<"LowBalanceAlert"> | number
    sentTo?: StringFilter<"LowBalanceAlert"> | string
    maskUsed?: StringFilter<"LowBalanceAlert"> | string
    serverRef?: IntNullableFilter<"LowBalanceAlert"> | number | null
    status?: StringFilter<"LowBalanceAlert"> | string
    failureReason?: StringNullableFilter<"LowBalanceAlert"> | string | null
    createdAt?: DateTimeFilter<"LowBalanceAlert"> | Date | string
  }

  export type UserCreateWithoutSavedCardsInput = {
    uuid?: string
    externalUserId?: number | null
    fullName: string
    email: string
    contactNumber?: string | null
    passwordHash?: string | null
    userType?: string
    isActive?: boolean
    hasSeenGuide?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
    role?: RoleCreateNestedOneWithoutUsersInput
    companies?: UserCompanyCreateNestedManyWithoutUserInput
    refreshTokens?: RefreshTokenCreateNestedManyWithoutUserInput
    passwordResetTokens?: PasswordResetTokenCreateNestedManyWithoutUserInput
  }

  export type UserUncheckedCreateWithoutSavedCardsInput = {
    id?: number
    uuid?: string
    externalUserId?: number | null
    fullName: string
    email: string
    contactNumber?: string | null
    passwordHash?: string | null
    userType?: string
    isActive?: boolean
    hasSeenGuide?: boolean
    roleId?: number | null
    createdAt?: Date | string
    updatedAt?: Date | string
    companies?: UserCompanyUncheckedCreateNestedManyWithoutUserInput
    refreshTokens?: RefreshTokenUncheckedCreateNestedManyWithoutUserInput
    passwordResetTokens?: PasswordResetTokenUncheckedCreateNestedManyWithoutUserInput
  }

  export type UserCreateOrConnectWithoutSavedCardsInput = {
    where: UserWhereUniqueInput
    create: XOR<UserCreateWithoutSavedCardsInput, UserUncheckedCreateWithoutSavedCardsInput>
  }

  export type BillPaymentCreateWithoutSavedCardInput = {
    uuid?: string
    amount: number
    paymentMethod: string
    status?: string
    orderId: string
    orderReference?: string | null
    errorCode?: string | null
    failureReason?: string | null
    paidUserId: number
    createdAt?: Date | string
    billAccount: BillAccountCreateNestedOneWithoutBillPaymentsInput
  }

  export type BillPaymentUncheckedCreateWithoutSavedCardInput = {
    id?: number
    uuid?: string
    billingAccountId: number
    amount: number
    paymentMethod: string
    status?: string
    orderId: string
    orderReference?: string | null
    errorCode?: string | null
    failureReason?: string | null
    paidUserId: number
    createdAt?: Date | string
  }

  export type BillPaymentCreateOrConnectWithoutSavedCardInput = {
    where: BillPaymentWhereUniqueInput
    create: XOR<BillPaymentCreateWithoutSavedCardInput, BillPaymentUncheckedCreateWithoutSavedCardInput>
  }

  export type BillPaymentCreateManySavedCardInputEnvelope = {
    data: BillPaymentCreateManySavedCardInput | BillPaymentCreateManySavedCardInput[]
    skipDuplicates?: boolean
  }

  export type UserUpsertWithoutSavedCardsInput = {
    update: XOR<UserUpdateWithoutSavedCardsInput, UserUncheckedUpdateWithoutSavedCardsInput>
    create: XOR<UserCreateWithoutSavedCardsInput, UserUncheckedCreateWithoutSavedCardsInput>
    where?: UserWhereInput
  }

  export type UserUpdateToOneWithWhereWithoutSavedCardsInput = {
    where?: UserWhereInput
    data: XOR<UserUpdateWithoutSavedCardsInput, UserUncheckedUpdateWithoutSavedCardsInput>
  }

  export type UserUpdateWithoutSavedCardsInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    externalUserId?: NullableIntFieldUpdateOperationsInput | number | null
    fullName?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    passwordHash?: NullableStringFieldUpdateOperationsInput | string | null
    userType?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    hasSeenGuide?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    role?: RoleUpdateOneWithoutUsersNestedInput
    companies?: UserCompanyUpdateManyWithoutUserNestedInput
    refreshTokens?: RefreshTokenUpdateManyWithoutUserNestedInput
    passwordResetTokens?: PasswordResetTokenUpdateManyWithoutUserNestedInput
  }

  export type UserUncheckedUpdateWithoutSavedCardsInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    externalUserId?: NullableIntFieldUpdateOperationsInput | number | null
    fullName?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    passwordHash?: NullableStringFieldUpdateOperationsInput | string | null
    userType?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    hasSeenGuide?: BoolFieldUpdateOperationsInput | boolean
    roleId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    companies?: UserCompanyUncheckedUpdateManyWithoutUserNestedInput
    refreshTokens?: RefreshTokenUncheckedUpdateManyWithoutUserNestedInput
    passwordResetTokens?: PasswordResetTokenUncheckedUpdateManyWithoutUserNestedInput
  }

  export type BillPaymentUpsertWithWhereUniqueWithoutSavedCardInput = {
    where: BillPaymentWhereUniqueInput
    update: XOR<BillPaymentUpdateWithoutSavedCardInput, BillPaymentUncheckedUpdateWithoutSavedCardInput>
    create: XOR<BillPaymentCreateWithoutSavedCardInput, BillPaymentUncheckedCreateWithoutSavedCardInput>
  }

  export type BillPaymentUpdateWithWhereUniqueWithoutSavedCardInput = {
    where: BillPaymentWhereUniqueInput
    data: XOR<BillPaymentUpdateWithoutSavedCardInput, BillPaymentUncheckedUpdateWithoutSavedCardInput>
  }

  export type BillPaymentUpdateManyWithWhereWithoutSavedCardInput = {
    where: BillPaymentScalarWhereInput
    data: XOR<BillPaymentUpdateManyMutationInput, BillPaymentUncheckedUpdateManyWithoutSavedCardInput>
  }

  export type BillAccountCreateWithoutLowBalanceAlertsInput = {
    uuid?: string
    accountNumber: string
    accountName: string
    outstandingBalance: number
    reservedBalance?: number
    accountStatus?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    company: CompanyCreateNestedOneWithoutBillAccountsInput
    billPayments?: BillPaymentCreateNestedManyWithoutBillAccountInput
    campaigns?: CampaignCreateNestedManyWithoutBillingAccountInput
  }

  export type BillAccountUncheckedCreateWithoutLowBalanceAlertsInput = {
    id?: number
    uuid?: string
    accountNumber: string
    accountName: string
    outstandingBalance: number
    reservedBalance?: number
    accountStatus?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    companyId: number
    billPayments?: BillPaymentUncheckedCreateNestedManyWithoutBillAccountInput
    campaigns?: CampaignUncheckedCreateNestedManyWithoutBillingAccountInput
  }

  export type BillAccountCreateOrConnectWithoutLowBalanceAlertsInput = {
    where: BillAccountWhereUniqueInput
    create: XOR<BillAccountCreateWithoutLowBalanceAlertsInput, BillAccountUncheckedCreateWithoutLowBalanceAlertsInput>
  }

  export type BillAccountUpsertWithoutLowBalanceAlertsInput = {
    update: XOR<BillAccountUpdateWithoutLowBalanceAlertsInput, BillAccountUncheckedUpdateWithoutLowBalanceAlertsInput>
    create: XOR<BillAccountCreateWithoutLowBalanceAlertsInput, BillAccountUncheckedCreateWithoutLowBalanceAlertsInput>
    where?: BillAccountWhereInput
  }

  export type BillAccountUpdateToOneWithWhereWithoutLowBalanceAlertsInput = {
    where?: BillAccountWhereInput
    data: XOR<BillAccountUpdateWithoutLowBalanceAlertsInput, BillAccountUncheckedUpdateWithoutLowBalanceAlertsInput>
  }

  export type BillAccountUpdateWithoutLowBalanceAlertsInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    accountNumber?: StringFieldUpdateOperationsInput | string
    accountName?: StringFieldUpdateOperationsInput | string
    outstandingBalance?: FloatFieldUpdateOperationsInput | number
    reservedBalance?: FloatFieldUpdateOperationsInput | number
    accountStatus?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    company?: CompanyUpdateOneRequiredWithoutBillAccountsNestedInput
    billPayments?: BillPaymentUpdateManyWithoutBillAccountNestedInput
    campaigns?: CampaignUpdateManyWithoutBillingAccountNestedInput
  }

  export type BillAccountUncheckedUpdateWithoutLowBalanceAlertsInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    accountNumber?: StringFieldUpdateOperationsInput | string
    accountName?: StringFieldUpdateOperationsInput | string
    outstandingBalance?: FloatFieldUpdateOperationsInput | number
    reservedBalance?: FloatFieldUpdateOperationsInput | number
    accountStatus?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    companyId?: IntFieldUpdateOperationsInput | number
    billPayments?: BillPaymentUncheckedUpdateManyWithoutBillAccountNestedInput
    campaigns?: CampaignUncheckedUpdateManyWithoutBillingAccountNestedInput
  }

  export type CompanyCreateWithoutDepartmentsInput = {
    uuid?: string
    externalCompanyId?: number | null
    source?: string | null
    brNumber?: string | null
    companyName: string
    contactNumber?: string | null
    address?: string | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    smsCostIndividual?: number | null
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    userCompanies?: UserCompanyCreateNestedManyWithoutCompanyInput
    billAccounts?: BillAccountCreateNestedManyWithoutCompanyInput
    mobileNumberLists?: MobileNumberListCreateNestedManyWithoutCompanyInput
    senderMasks?: SenderMaskCreateNestedManyWithoutCompanyInput
    contactParamSettings?: ContactParamSettingsCreateNestedOneWithoutCompanyInput
  }

  export type CompanyUncheckedCreateWithoutDepartmentsInput = {
    id?: number
    uuid?: string
    externalCompanyId?: number | null
    source?: string | null
    brNumber?: string | null
    companyName: string
    contactNumber?: string | null
    address?: string | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    smsCostIndividual?: number | null
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    userCompanies?: UserCompanyUncheckedCreateNestedManyWithoutCompanyInput
    billAccounts?: BillAccountUncheckedCreateNestedManyWithoutCompanyInput
    mobileNumberLists?: MobileNumberListUncheckedCreateNestedManyWithoutCompanyInput
    senderMasks?: SenderMaskUncheckedCreateNestedManyWithoutCompanyInput
    contactParamSettings?: ContactParamSettingsUncheckedCreateNestedOneWithoutCompanyInput
  }

  export type CompanyCreateOrConnectWithoutDepartmentsInput = {
    where: CompanyWhereUniqueInput
    create: XOR<CompanyCreateWithoutDepartmentsInput, CompanyUncheckedCreateWithoutDepartmentsInput>
  }

  export type SMS_TemplateCreateWithoutDepartmentInput = {
    uuid?: string
    name: string
    text_content: string
    smsType?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    campaigns?: CampaignCreateNestedManyWithoutTemplateInput
  }

  export type SMS_TemplateUncheckedCreateWithoutDepartmentInput = {
    id?: number
    uuid?: string
    name: string
    text_content: string
    smsType?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    campaigns?: CampaignUncheckedCreateNestedManyWithoutTemplateInput
  }

  export type SMS_TemplateCreateOrConnectWithoutDepartmentInput = {
    where: SMS_TemplateWhereUniqueInput
    create: XOR<SMS_TemplateCreateWithoutDepartmentInput, SMS_TemplateUncheckedCreateWithoutDepartmentInput>
  }

  export type SMS_TemplateCreateManyDepartmentInputEnvelope = {
    data: SMS_TemplateCreateManyDepartmentInput | SMS_TemplateCreateManyDepartmentInput[]
    skipDuplicates?: boolean
  }

  export type DepartmentSenderMaskCreateWithoutDepartmentInput = {
    uuid?: string
    assignedAt?: Date | string
    deletedAt?: Date | string | null
    senderMask: SenderMaskCreateNestedOneWithoutDepartmentsInput
  }

  export type DepartmentSenderMaskUncheckedCreateWithoutDepartmentInput = {
    id?: number
    uuid?: string
    senderMaskId: number
    assignedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type DepartmentSenderMaskCreateOrConnectWithoutDepartmentInput = {
    where: DepartmentSenderMaskWhereUniqueInput
    create: XOR<DepartmentSenderMaskCreateWithoutDepartmentInput, DepartmentSenderMaskUncheckedCreateWithoutDepartmentInput>
  }

  export type DepartmentSenderMaskCreateManyDepartmentInputEnvelope = {
    data: DepartmentSenderMaskCreateManyDepartmentInput | DepartmentSenderMaskCreateManyDepartmentInput[]
    skipDuplicates?: boolean
  }

  export type CompanyUpsertWithoutDepartmentsInput = {
    update: XOR<CompanyUpdateWithoutDepartmentsInput, CompanyUncheckedUpdateWithoutDepartmentsInput>
    create: XOR<CompanyCreateWithoutDepartmentsInput, CompanyUncheckedCreateWithoutDepartmentsInput>
    where?: CompanyWhereInput
  }

  export type CompanyUpdateToOneWithWhereWithoutDepartmentsInput = {
    where?: CompanyWhereInput
    data: XOR<CompanyUpdateWithoutDepartmentsInput, CompanyUncheckedUpdateWithoutDepartmentsInput>
  }

  export type CompanyUpdateWithoutDepartmentsInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    source?: NullableStringFieldUpdateOperationsInput | string | null
    brNumber?: NullableStringFieldUpdateOperationsInput | string | null
    companyName?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    address?: NullableStringFieldUpdateOperationsInput | string | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostIndividual?: NullableFloatFieldUpdateOperationsInput | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    userCompanies?: UserCompanyUpdateManyWithoutCompanyNestedInput
    billAccounts?: BillAccountUpdateManyWithoutCompanyNestedInput
    mobileNumberLists?: MobileNumberListUpdateManyWithoutCompanyNestedInput
    senderMasks?: SenderMaskUpdateManyWithoutCompanyNestedInput
    contactParamSettings?: ContactParamSettingsUpdateOneWithoutCompanyNestedInput
  }

  export type CompanyUncheckedUpdateWithoutDepartmentsInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    source?: NullableStringFieldUpdateOperationsInput | string | null
    brNumber?: NullableStringFieldUpdateOperationsInput | string | null
    companyName?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    address?: NullableStringFieldUpdateOperationsInput | string | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostIndividual?: NullableFloatFieldUpdateOperationsInput | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    userCompanies?: UserCompanyUncheckedUpdateManyWithoutCompanyNestedInput
    billAccounts?: BillAccountUncheckedUpdateManyWithoutCompanyNestedInput
    mobileNumberLists?: MobileNumberListUncheckedUpdateManyWithoutCompanyNestedInput
    senderMasks?: SenderMaskUncheckedUpdateManyWithoutCompanyNestedInput
    contactParamSettings?: ContactParamSettingsUncheckedUpdateOneWithoutCompanyNestedInput
  }

  export type SMS_TemplateUpsertWithWhereUniqueWithoutDepartmentInput = {
    where: SMS_TemplateWhereUniqueInput
    update: XOR<SMS_TemplateUpdateWithoutDepartmentInput, SMS_TemplateUncheckedUpdateWithoutDepartmentInput>
    create: XOR<SMS_TemplateCreateWithoutDepartmentInput, SMS_TemplateUncheckedCreateWithoutDepartmentInput>
  }

  export type SMS_TemplateUpdateWithWhereUniqueWithoutDepartmentInput = {
    where: SMS_TemplateWhereUniqueInput
    data: XOR<SMS_TemplateUpdateWithoutDepartmentInput, SMS_TemplateUncheckedUpdateWithoutDepartmentInput>
  }

  export type SMS_TemplateUpdateManyWithWhereWithoutDepartmentInput = {
    where: SMS_TemplateScalarWhereInput
    data: XOR<SMS_TemplateUpdateManyMutationInput, SMS_TemplateUncheckedUpdateManyWithoutDepartmentInput>
  }

  export type SMS_TemplateScalarWhereInput = {
    AND?: SMS_TemplateScalarWhereInput | SMS_TemplateScalarWhereInput[]
    OR?: SMS_TemplateScalarWhereInput[]
    NOT?: SMS_TemplateScalarWhereInput | SMS_TemplateScalarWhereInput[]
    id?: IntFilter<"SMS_Template"> | number
    uuid?: StringFilter<"SMS_Template"> | string
    deptId?: IntFilter<"SMS_Template"> | number
    name?: StringFilter<"SMS_Template"> | string
    text_content?: StringFilter<"SMS_Template"> | string
    smsType?: StringFilter<"SMS_Template"> | string
    createdAt?: DateTimeFilter<"SMS_Template"> | Date | string
    updatedAt?: DateTimeFilter<"SMS_Template"> | Date | string
    deletedAt?: DateTimeNullableFilter<"SMS_Template"> | Date | string | null
  }

  export type DepartmentSenderMaskUpsertWithWhereUniqueWithoutDepartmentInput = {
    where: DepartmentSenderMaskWhereUniqueInput
    update: XOR<DepartmentSenderMaskUpdateWithoutDepartmentInput, DepartmentSenderMaskUncheckedUpdateWithoutDepartmentInput>
    create: XOR<DepartmentSenderMaskCreateWithoutDepartmentInput, DepartmentSenderMaskUncheckedCreateWithoutDepartmentInput>
  }

  export type DepartmentSenderMaskUpdateWithWhereUniqueWithoutDepartmentInput = {
    where: DepartmentSenderMaskWhereUniqueInput
    data: XOR<DepartmentSenderMaskUpdateWithoutDepartmentInput, DepartmentSenderMaskUncheckedUpdateWithoutDepartmentInput>
  }

  export type DepartmentSenderMaskUpdateManyWithWhereWithoutDepartmentInput = {
    where: DepartmentSenderMaskScalarWhereInput
    data: XOR<DepartmentSenderMaskUpdateManyMutationInput, DepartmentSenderMaskUncheckedUpdateManyWithoutDepartmentInput>
  }

  export type DepartmentSenderMaskScalarWhereInput = {
    AND?: DepartmentSenderMaskScalarWhereInput | DepartmentSenderMaskScalarWhereInput[]
    OR?: DepartmentSenderMaskScalarWhereInput[]
    NOT?: DepartmentSenderMaskScalarWhereInput | DepartmentSenderMaskScalarWhereInput[]
    id?: IntFilter<"DepartmentSenderMask"> | number
    uuid?: StringFilter<"DepartmentSenderMask"> | string
    senderMaskId?: IntFilter<"DepartmentSenderMask"> | number
    deptId?: IntFilter<"DepartmentSenderMask"> | number
    assignedAt?: DateTimeFilter<"DepartmentSenderMask"> | Date | string
    deletedAt?: DateTimeNullableFilter<"DepartmentSenderMask"> | Date | string | null
  }

  export type DepartmentCreateWithoutSmsTemplatesInput = {
    uuid?: string
    name: string
    externalCompanyId?: number | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    is_enabled?: boolean
    callBackUrl?: string | null
    Signature?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    company: CompanyCreateNestedOneWithoutDepartmentsInput
    senderMasks?: DepartmentSenderMaskCreateNestedManyWithoutDepartmentInput
  }

  export type DepartmentUncheckedCreateWithoutSmsTemplatesInput = {
    id?: number
    uuid?: string
    companyId: number
    name: string
    externalCompanyId?: number | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    is_enabled?: boolean
    callBackUrl?: string | null
    Signature?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    senderMasks?: DepartmentSenderMaskUncheckedCreateNestedManyWithoutDepartmentInput
  }

  export type DepartmentCreateOrConnectWithoutSmsTemplatesInput = {
    where: DepartmentWhereUniqueInput
    create: XOR<DepartmentCreateWithoutSmsTemplatesInput, DepartmentUncheckedCreateWithoutSmsTemplatesInput>
  }

  export type CampaignCreateWithoutTemplateInput = {
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    billingAccount: BillAccountCreateNestedOneWithoutCampaignsInput
    senderMask: SenderMaskCreateNestedOneWithoutCampaignsInput
    mobileNumberList?: MobileNumberListCreateNestedOneWithoutCampaignsInput
    smsReports?: SMS_ReportCreateNestedManyWithoutCampaignInput
    bulkServerRefs?: CampaignServerRefCreateNestedManyWithoutCampaignInput
    recipients?: CampaignRecipientCreateNestedManyWithoutCampaignInput
  }

  export type CampaignUncheckedCreateWithoutTemplateInput = {
    id?: number
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    billingAccountId: number
    senderMaskId: number
    mobileNumberListId?: bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    smsReports?: SMS_ReportUncheckedCreateNestedManyWithoutCampaignInput
    bulkServerRefs?: CampaignServerRefUncheckedCreateNestedManyWithoutCampaignInput
    recipients?: CampaignRecipientUncheckedCreateNestedManyWithoutCampaignInput
  }

  export type CampaignCreateOrConnectWithoutTemplateInput = {
    where: CampaignWhereUniqueInput
    create: XOR<CampaignCreateWithoutTemplateInput, CampaignUncheckedCreateWithoutTemplateInput>
  }

  export type CampaignCreateManyTemplateInputEnvelope = {
    data: CampaignCreateManyTemplateInput | CampaignCreateManyTemplateInput[]
    skipDuplicates?: boolean
  }

  export type DepartmentUpsertWithoutSmsTemplatesInput = {
    update: XOR<DepartmentUpdateWithoutSmsTemplatesInput, DepartmentUncheckedUpdateWithoutSmsTemplatesInput>
    create: XOR<DepartmentCreateWithoutSmsTemplatesInput, DepartmentUncheckedCreateWithoutSmsTemplatesInput>
    where?: DepartmentWhereInput
  }

  export type DepartmentUpdateToOneWithWhereWithoutSmsTemplatesInput = {
    where?: DepartmentWhereInput
    data: XOR<DepartmentUpdateWithoutSmsTemplatesInput, DepartmentUncheckedUpdateWithoutSmsTemplatesInput>
  }

  export type DepartmentUpdateWithoutSmsTemplatesInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    is_enabled?: BoolFieldUpdateOperationsInput | boolean
    callBackUrl?: NullableStringFieldUpdateOperationsInput | string | null
    Signature?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    company?: CompanyUpdateOneRequiredWithoutDepartmentsNestedInput
    senderMasks?: DepartmentSenderMaskUpdateManyWithoutDepartmentNestedInput
  }

  export type DepartmentUncheckedUpdateWithoutSmsTemplatesInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    companyId?: IntFieldUpdateOperationsInput | number
    name?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    is_enabled?: BoolFieldUpdateOperationsInput | boolean
    callBackUrl?: NullableStringFieldUpdateOperationsInput | string | null
    Signature?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    senderMasks?: DepartmentSenderMaskUncheckedUpdateManyWithoutDepartmentNestedInput
  }

  export type CampaignUpsertWithWhereUniqueWithoutTemplateInput = {
    where: CampaignWhereUniqueInput
    update: XOR<CampaignUpdateWithoutTemplateInput, CampaignUncheckedUpdateWithoutTemplateInput>
    create: XOR<CampaignCreateWithoutTemplateInput, CampaignUncheckedCreateWithoutTemplateInput>
  }

  export type CampaignUpdateWithWhereUniqueWithoutTemplateInput = {
    where: CampaignWhereUniqueInput
    data: XOR<CampaignUpdateWithoutTemplateInput, CampaignUncheckedUpdateWithoutTemplateInput>
  }

  export type CampaignUpdateManyWithWhereWithoutTemplateInput = {
    where: CampaignScalarWhereInput
    data: XOR<CampaignUpdateManyMutationInput, CampaignUncheckedUpdateManyWithoutTemplateInput>
  }

  export type CompanyCreateWithoutSenderMasksInput = {
    uuid?: string
    externalCompanyId?: number | null
    source?: string | null
    brNumber?: string | null
    companyName: string
    contactNumber?: string | null
    address?: string | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    smsCostIndividual?: number | null
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    userCompanies?: UserCompanyCreateNestedManyWithoutCompanyInput
    billAccounts?: BillAccountCreateNestedManyWithoutCompanyInput
    departments?: DepartmentCreateNestedManyWithoutCompanyInput
    mobileNumberLists?: MobileNumberListCreateNestedManyWithoutCompanyInput
    contactParamSettings?: ContactParamSettingsCreateNestedOneWithoutCompanyInput
  }

  export type CompanyUncheckedCreateWithoutSenderMasksInput = {
    id?: number
    uuid?: string
    externalCompanyId?: number | null
    source?: string | null
    brNumber?: string | null
    companyName: string
    contactNumber?: string | null
    address?: string | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    smsCostIndividual?: number | null
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    userCompanies?: UserCompanyUncheckedCreateNestedManyWithoutCompanyInput
    billAccounts?: BillAccountUncheckedCreateNestedManyWithoutCompanyInput
    departments?: DepartmentUncheckedCreateNestedManyWithoutCompanyInput
    mobileNumberLists?: MobileNumberListUncheckedCreateNestedManyWithoutCompanyInput
    contactParamSettings?: ContactParamSettingsUncheckedCreateNestedOneWithoutCompanyInput
  }

  export type CompanyCreateOrConnectWithoutSenderMasksInput = {
    where: CompanyWhereUniqueInput
    create: XOR<CompanyCreateWithoutSenderMasksInput, CompanyUncheckedCreateWithoutSenderMasksInput>
  }

  export type CampaignCreateWithoutSenderMaskInput = {
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    billingAccount: BillAccountCreateNestedOneWithoutCampaignsInput
    mobileNumberList?: MobileNumberListCreateNestedOneWithoutCampaignsInput
    template?: SMS_TemplateCreateNestedOneWithoutCampaignsInput
    smsReports?: SMS_ReportCreateNestedManyWithoutCampaignInput
    bulkServerRefs?: CampaignServerRefCreateNestedManyWithoutCampaignInput
    recipients?: CampaignRecipientCreateNestedManyWithoutCampaignInput
  }

  export type CampaignUncheckedCreateWithoutSenderMaskInput = {
    id?: number
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    billingAccountId: number
    mobileNumberListId?: bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: number | null
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    smsReports?: SMS_ReportUncheckedCreateNestedManyWithoutCampaignInput
    bulkServerRefs?: CampaignServerRefUncheckedCreateNestedManyWithoutCampaignInput
    recipients?: CampaignRecipientUncheckedCreateNestedManyWithoutCampaignInput
  }

  export type CampaignCreateOrConnectWithoutSenderMaskInput = {
    where: CampaignWhereUniqueInput
    create: XOR<CampaignCreateWithoutSenderMaskInput, CampaignUncheckedCreateWithoutSenderMaskInput>
  }

  export type CampaignCreateManySenderMaskInputEnvelope = {
    data: CampaignCreateManySenderMaskInput | CampaignCreateManySenderMaskInput[]
    skipDuplicates?: boolean
  }

  export type DepartmentSenderMaskCreateWithoutSenderMaskInput = {
    uuid?: string
    assignedAt?: Date | string
    deletedAt?: Date | string | null
    department: DepartmentCreateNestedOneWithoutSenderMasksInput
  }

  export type DepartmentSenderMaskUncheckedCreateWithoutSenderMaskInput = {
    id?: number
    uuid?: string
    deptId: number
    assignedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type DepartmentSenderMaskCreateOrConnectWithoutSenderMaskInput = {
    where: DepartmentSenderMaskWhereUniqueInput
    create: XOR<DepartmentSenderMaskCreateWithoutSenderMaskInput, DepartmentSenderMaskUncheckedCreateWithoutSenderMaskInput>
  }

  export type DepartmentSenderMaskCreateManySenderMaskInputEnvelope = {
    data: DepartmentSenderMaskCreateManySenderMaskInput | DepartmentSenderMaskCreateManySenderMaskInput[]
    skipDuplicates?: boolean
  }

  export type CompanyUpsertWithoutSenderMasksInput = {
    update: XOR<CompanyUpdateWithoutSenderMasksInput, CompanyUncheckedUpdateWithoutSenderMasksInput>
    create: XOR<CompanyCreateWithoutSenderMasksInput, CompanyUncheckedCreateWithoutSenderMasksInput>
    where?: CompanyWhereInput
  }

  export type CompanyUpdateToOneWithWhereWithoutSenderMasksInput = {
    where?: CompanyWhereInput
    data: XOR<CompanyUpdateWithoutSenderMasksInput, CompanyUncheckedUpdateWithoutSenderMasksInput>
  }

  export type CompanyUpdateWithoutSenderMasksInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    source?: NullableStringFieldUpdateOperationsInput | string | null
    brNumber?: NullableStringFieldUpdateOperationsInput | string | null
    companyName?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    address?: NullableStringFieldUpdateOperationsInput | string | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostIndividual?: NullableFloatFieldUpdateOperationsInput | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    userCompanies?: UserCompanyUpdateManyWithoutCompanyNestedInput
    billAccounts?: BillAccountUpdateManyWithoutCompanyNestedInput
    departments?: DepartmentUpdateManyWithoutCompanyNestedInput
    mobileNumberLists?: MobileNumberListUpdateManyWithoutCompanyNestedInput
    contactParamSettings?: ContactParamSettingsUpdateOneWithoutCompanyNestedInput
  }

  export type CompanyUncheckedUpdateWithoutSenderMasksInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    source?: NullableStringFieldUpdateOperationsInput | string | null
    brNumber?: NullableStringFieldUpdateOperationsInput | string | null
    companyName?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    address?: NullableStringFieldUpdateOperationsInput | string | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostIndividual?: NullableFloatFieldUpdateOperationsInput | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    userCompanies?: UserCompanyUncheckedUpdateManyWithoutCompanyNestedInput
    billAccounts?: BillAccountUncheckedUpdateManyWithoutCompanyNestedInput
    departments?: DepartmentUncheckedUpdateManyWithoutCompanyNestedInput
    mobileNumberLists?: MobileNumberListUncheckedUpdateManyWithoutCompanyNestedInput
    contactParamSettings?: ContactParamSettingsUncheckedUpdateOneWithoutCompanyNestedInput
  }

  export type CampaignUpsertWithWhereUniqueWithoutSenderMaskInput = {
    where: CampaignWhereUniqueInput
    update: XOR<CampaignUpdateWithoutSenderMaskInput, CampaignUncheckedUpdateWithoutSenderMaskInput>
    create: XOR<CampaignCreateWithoutSenderMaskInput, CampaignUncheckedCreateWithoutSenderMaskInput>
  }

  export type CampaignUpdateWithWhereUniqueWithoutSenderMaskInput = {
    where: CampaignWhereUniqueInput
    data: XOR<CampaignUpdateWithoutSenderMaskInput, CampaignUncheckedUpdateWithoutSenderMaskInput>
  }

  export type CampaignUpdateManyWithWhereWithoutSenderMaskInput = {
    where: CampaignScalarWhereInput
    data: XOR<CampaignUpdateManyMutationInput, CampaignUncheckedUpdateManyWithoutSenderMaskInput>
  }

  export type DepartmentSenderMaskUpsertWithWhereUniqueWithoutSenderMaskInput = {
    where: DepartmentSenderMaskWhereUniqueInput
    update: XOR<DepartmentSenderMaskUpdateWithoutSenderMaskInput, DepartmentSenderMaskUncheckedUpdateWithoutSenderMaskInput>
    create: XOR<DepartmentSenderMaskCreateWithoutSenderMaskInput, DepartmentSenderMaskUncheckedCreateWithoutSenderMaskInput>
  }

  export type DepartmentSenderMaskUpdateWithWhereUniqueWithoutSenderMaskInput = {
    where: DepartmentSenderMaskWhereUniqueInput
    data: XOR<DepartmentSenderMaskUpdateWithoutSenderMaskInput, DepartmentSenderMaskUncheckedUpdateWithoutSenderMaskInput>
  }

  export type DepartmentSenderMaskUpdateManyWithWhereWithoutSenderMaskInput = {
    where: DepartmentSenderMaskScalarWhereInput
    data: XOR<DepartmentSenderMaskUpdateManyMutationInput, DepartmentSenderMaskUncheckedUpdateManyWithoutSenderMaskInput>
  }

  export type SenderMaskCreateWithoutDepartmentsInput = {
    uuid?: string
    maskName: string
    purpose: string
    is_default?: boolean
    status?: string
    maskType?: string | null
    isExternal?: boolean
    emailSent?: boolean
    emailSentAt?: Date | string | null
    approvalNotificationSent?: boolean
    approvalNotificationSentAt?: Date | string | null
    reservedAmount?: number
    createdByUserId: number
    createdAt?: Date | string
    updatedAt?: Date | string
    company?: CompanyCreateNestedOneWithoutSenderMasksInput
    campaigns?: CampaignCreateNestedManyWithoutSenderMaskInput
  }

  export type SenderMaskUncheckedCreateWithoutDepartmentsInput = {
    id?: number
    uuid?: string
    maskName: string
    purpose: string
    is_default?: boolean
    status?: string
    maskType?: string | null
    isExternal?: boolean
    emailSent?: boolean
    emailSentAt?: Date | string | null
    approvalNotificationSent?: boolean
    approvalNotificationSentAt?: Date | string | null
    reservedAmount?: number
    createdByUserId: number
    companyId?: number | null
    createdAt?: Date | string
    updatedAt?: Date | string
    campaigns?: CampaignUncheckedCreateNestedManyWithoutSenderMaskInput
  }

  export type SenderMaskCreateOrConnectWithoutDepartmentsInput = {
    where: SenderMaskWhereUniqueInput
    create: XOR<SenderMaskCreateWithoutDepartmentsInput, SenderMaskUncheckedCreateWithoutDepartmentsInput>
  }

  export type DepartmentCreateWithoutSenderMasksInput = {
    uuid?: string
    name: string
    externalCompanyId?: number | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    is_enabled?: boolean
    callBackUrl?: string | null
    Signature?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    company: CompanyCreateNestedOneWithoutDepartmentsInput
    smsTemplates?: SMS_TemplateCreateNestedManyWithoutDepartmentInput
  }

  export type DepartmentUncheckedCreateWithoutSenderMasksInput = {
    id?: number
    uuid?: string
    companyId: number
    name: string
    externalCompanyId?: number | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    is_enabled?: boolean
    callBackUrl?: string | null
    Signature?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    smsTemplates?: SMS_TemplateUncheckedCreateNestedManyWithoutDepartmentInput
  }

  export type DepartmentCreateOrConnectWithoutSenderMasksInput = {
    where: DepartmentWhereUniqueInput
    create: XOR<DepartmentCreateWithoutSenderMasksInput, DepartmentUncheckedCreateWithoutSenderMasksInput>
  }

  export type SenderMaskUpsertWithoutDepartmentsInput = {
    update: XOR<SenderMaskUpdateWithoutDepartmentsInput, SenderMaskUncheckedUpdateWithoutDepartmentsInput>
    create: XOR<SenderMaskCreateWithoutDepartmentsInput, SenderMaskUncheckedCreateWithoutDepartmentsInput>
    where?: SenderMaskWhereInput
  }

  export type SenderMaskUpdateToOneWithWhereWithoutDepartmentsInput = {
    where?: SenderMaskWhereInput
    data: XOR<SenderMaskUpdateWithoutDepartmentsInput, SenderMaskUncheckedUpdateWithoutDepartmentsInput>
  }

  export type SenderMaskUpdateWithoutDepartmentsInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    purpose?: StringFieldUpdateOperationsInput | string
    is_default?: BoolFieldUpdateOperationsInput | boolean
    status?: StringFieldUpdateOperationsInput | string
    maskType?: NullableStringFieldUpdateOperationsInput | string | null
    isExternal?: BoolFieldUpdateOperationsInput | boolean
    emailSent?: BoolFieldUpdateOperationsInput | boolean
    emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    approvalNotificationSent?: BoolFieldUpdateOperationsInput | boolean
    approvalNotificationSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    createdByUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    company?: CompanyUpdateOneWithoutSenderMasksNestedInput
    campaigns?: CampaignUpdateManyWithoutSenderMaskNestedInput
  }

  export type SenderMaskUncheckedUpdateWithoutDepartmentsInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    purpose?: StringFieldUpdateOperationsInput | string
    is_default?: BoolFieldUpdateOperationsInput | boolean
    status?: StringFieldUpdateOperationsInput | string
    maskType?: NullableStringFieldUpdateOperationsInput | string | null
    isExternal?: BoolFieldUpdateOperationsInput | boolean
    emailSent?: BoolFieldUpdateOperationsInput | boolean
    emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    approvalNotificationSent?: BoolFieldUpdateOperationsInput | boolean
    approvalNotificationSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    createdByUserId?: IntFieldUpdateOperationsInput | number
    companyId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    campaigns?: CampaignUncheckedUpdateManyWithoutSenderMaskNestedInput
  }

  export type DepartmentUpsertWithoutSenderMasksInput = {
    update: XOR<DepartmentUpdateWithoutSenderMasksInput, DepartmentUncheckedUpdateWithoutSenderMasksInput>
    create: XOR<DepartmentCreateWithoutSenderMasksInput, DepartmentUncheckedCreateWithoutSenderMasksInput>
    where?: DepartmentWhereInput
  }

  export type DepartmentUpdateToOneWithWhereWithoutSenderMasksInput = {
    where?: DepartmentWhereInput
    data: XOR<DepartmentUpdateWithoutSenderMasksInput, DepartmentUncheckedUpdateWithoutSenderMasksInput>
  }

  export type DepartmentUpdateWithoutSenderMasksInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    is_enabled?: BoolFieldUpdateOperationsInput | boolean
    callBackUrl?: NullableStringFieldUpdateOperationsInput | string | null
    Signature?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    company?: CompanyUpdateOneRequiredWithoutDepartmentsNestedInput
    smsTemplates?: SMS_TemplateUpdateManyWithoutDepartmentNestedInput
  }

  export type DepartmentUncheckedUpdateWithoutSenderMasksInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    companyId?: IntFieldUpdateOperationsInput | number
    name?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    is_enabled?: BoolFieldUpdateOperationsInput | boolean
    callBackUrl?: NullableStringFieldUpdateOperationsInput | string | null
    Signature?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    smsTemplates?: SMS_TemplateUncheckedUpdateManyWithoutDepartmentNestedInput
  }

  export type CompanyCreateWithoutContactParamSettingsInput = {
    uuid?: string
    externalCompanyId?: number | null
    source?: string | null
    brNumber?: string | null
    companyName: string
    contactNumber?: string | null
    address?: string | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    smsCostIndividual?: number | null
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    userCompanies?: UserCompanyCreateNestedManyWithoutCompanyInput
    billAccounts?: BillAccountCreateNestedManyWithoutCompanyInput
    departments?: DepartmentCreateNestedManyWithoutCompanyInput
    mobileNumberLists?: MobileNumberListCreateNestedManyWithoutCompanyInput
    senderMasks?: SenderMaskCreateNestedManyWithoutCompanyInput
  }

  export type CompanyUncheckedCreateWithoutContactParamSettingsInput = {
    id?: number
    uuid?: string
    externalCompanyId?: number | null
    source?: string | null
    brNumber?: string | null
    companyName: string
    contactNumber?: string | null
    address?: string | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    smsCostIndividual?: number | null
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    userCompanies?: UserCompanyUncheckedCreateNestedManyWithoutCompanyInput
    billAccounts?: BillAccountUncheckedCreateNestedManyWithoutCompanyInput
    departments?: DepartmentUncheckedCreateNestedManyWithoutCompanyInput
    mobileNumberLists?: MobileNumberListUncheckedCreateNestedManyWithoutCompanyInput
    senderMasks?: SenderMaskUncheckedCreateNestedManyWithoutCompanyInput
  }

  export type CompanyCreateOrConnectWithoutContactParamSettingsInput = {
    where: CompanyWhereUniqueInput
    create: XOR<CompanyCreateWithoutContactParamSettingsInput, CompanyUncheckedCreateWithoutContactParamSettingsInput>
  }

  export type CompanyUpsertWithoutContactParamSettingsInput = {
    update: XOR<CompanyUpdateWithoutContactParamSettingsInput, CompanyUncheckedUpdateWithoutContactParamSettingsInput>
    create: XOR<CompanyCreateWithoutContactParamSettingsInput, CompanyUncheckedCreateWithoutContactParamSettingsInput>
    where?: CompanyWhereInput
  }

  export type CompanyUpdateToOneWithWhereWithoutContactParamSettingsInput = {
    where?: CompanyWhereInput
    data: XOR<CompanyUpdateWithoutContactParamSettingsInput, CompanyUncheckedUpdateWithoutContactParamSettingsInput>
  }

  export type CompanyUpdateWithoutContactParamSettingsInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    source?: NullableStringFieldUpdateOperationsInput | string | null
    brNumber?: NullableStringFieldUpdateOperationsInput | string | null
    companyName?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    address?: NullableStringFieldUpdateOperationsInput | string | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostIndividual?: NullableFloatFieldUpdateOperationsInput | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    userCompanies?: UserCompanyUpdateManyWithoutCompanyNestedInput
    billAccounts?: BillAccountUpdateManyWithoutCompanyNestedInput
    departments?: DepartmentUpdateManyWithoutCompanyNestedInput
    mobileNumberLists?: MobileNumberListUpdateManyWithoutCompanyNestedInput
    senderMasks?: SenderMaskUpdateManyWithoutCompanyNestedInput
  }

  export type CompanyUncheckedUpdateWithoutContactParamSettingsInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    source?: NullableStringFieldUpdateOperationsInput | string | null
    brNumber?: NullableStringFieldUpdateOperationsInput | string | null
    companyName?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    address?: NullableStringFieldUpdateOperationsInput | string | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostIndividual?: NullableFloatFieldUpdateOperationsInput | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    userCompanies?: UserCompanyUncheckedUpdateManyWithoutCompanyNestedInput
    billAccounts?: BillAccountUncheckedUpdateManyWithoutCompanyNestedInput
    departments?: DepartmentUncheckedUpdateManyWithoutCompanyNestedInput
    mobileNumberLists?: MobileNumberListUncheckedUpdateManyWithoutCompanyNestedInput
    senderMasks?: SenderMaskUncheckedUpdateManyWithoutCompanyNestedInput
  }

  export type BillAccountCreateWithoutCampaignsInput = {
    uuid?: string
    accountNumber: string
    accountName: string
    outstandingBalance: number
    reservedBalance?: number
    accountStatus?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    company: CompanyCreateNestedOneWithoutBillAccountsInput
    billPayments?: BillPaymentCreateNestedManyWithoutBillAccountInput
    lowBalanceAlerts?: LowBalanceAlertCreateNestedManyWithoutBillAccountInput
  }

  export type BillAccountUncheckedCreateWithoutCampaignsInput = {
    id?: number
    uuid?: string
    accountNumber: string
    accountName: string
    outstandingBalance: number
    reservedBalance?: number
    accountStatus?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    companyId: number
    billPayments?: BillPaymentUncheckedCreateNestedManyWithoutBillAccountInput
    lowBalanceAlerts?: LowBalanceAlertUncheckedCreateNestedManyWithoutBillAccountInput
  }

  export type BillAccountCreateOrConnectWithoutCampaignsInput = {
    where: BillAccountWhereUniqueInput
    create: XOR<BillAccountCreateWithoutCampaignsInput, BillAccountUncheckedCreateWithoutCampaignsInput>
  }

  export type SenderMaskCreateWithoutCampaignsInput = {
    uuid?: string
    maskName: string
    purpose: string
    is_default?: boolean
    status?: string
    maskType?: string | null
    isExternal?: boolean
    emailSent?: boolean
    emailSentAt?: Date | string | null
    approvalNotificationSent?: boolean
    approvalNotificationSentAt?: Date | string | null
    reservedAmount?: number
    createdByUserId: number
    createdAt?: Date | string
    updatedAt?: Date | string
    company?: CompanyCreateNestedOneWithoutSenderMasksInput
    departments?: DepartmentSenderMaskCreateNestedManyWithoutSenderMaskInput
  }

  export type SenderMaskUncheckedCreateWithoutCampaignsInput = {
    id?: number
    uuid?: string
    maskName: string
    purpose: string
    is_default?: boolean
    status?: string
    maskType?: string | null
    isExternal?: boolean
    emailSent?: boolean
    emailSentAt?: Date | string | null
    approvalNotificationSent?: boolean
    approvalNotificationSentAt?: Date | string | null
    reservedAmount?: number
    createdByUserId: number
    companyId?: number | null
    createdAt?: Date | string
    updatedAt?: Date | string
    departments?: DepartmentSenderMaskUncheckedCreateNestedManyWithoutSenderMaskInput
  }

  export type SenderMaskCreateOrConnectWithoutCampaignsInput = {
    where: SenderMaskWhereUniqueInput
    create: XOR<SenderMaskCreateWithoutCampaignsInput, SenderMaskUncheckedCreateWithoutCampaignsInput>
  }

  export type MobileNumberListCreateWithoutCampaignsInput = {
    id?: bigint | number
    uuid?: string
    listName: string
    listType?: string
    createdByUserId: number
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    company?: CompanyCreateNestedOneWithoutMobileNumberListsInput
    mobileNumbers?: MobileNumberCreateNestedManyWithoutListInput
  }

  export type MobileNumberListUncheckedCreateWithoutCampaignsInput = {
    id?: bigint | number
    uuid?: string
    listName: string
    listType?: string
    createdByUserId: number
    companyId?: number | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    mobileNumbers?: MobileNumberUncheckedCreateNestedManyWithoutListInput
  }

  export type MobileNumberListCreateOrConnectWithoutCampaignsInput = {
    where: MobileNumberListWhereUniqueInput
    create: XOR<MobileNumberListCreateWithoutCampaignsInput, MobileNumberListUncheckedCreateWithoutCampaignsInput>
  }

  export type SMS_TemplateCreateWithoutCampaignsInput = {
    uuid?: string
    name: string
    text_content: string
    smsType?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    department: DepartmentCreateNestedOneWithoutSmsTemplatesInput
  }

  export type SMS_TemplateUncheckedCreateWithoutCampaignsInput = {
    id?: number
    uuid?: string
    deptId: number
    name: string
    text_content: string
    smsType?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type SMS_TemplateCreateOrConnectWithoutCampaignsInput = {
    where: SMS_TemplateWhereUniqueInput
    create: XOR<SMS_TemplateCreateWithoutCampaignsInput, SMS_TemplateUncheckedCreateWithoutCampaignsInput>
  }

  export type SMS_ReportCreateWithoutCampaignInput = {
    uuid?: string
    server_ref: bigint | number
    deliveryType: number
    number: string
    maskName: string
    messagePart: number
    chargedAmount?: number
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type SMS_ReportUncheckedCreateWithoutCampaignInput = {
    id?: number
    uuid?: string
    server_ref: bigint | number
    deliveryType: number
    number: string
    maskName: string
    messagePart: number
    chargedAmount?: number
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type SMS_ReportCreateOrConnectWithoutCampaignInput = {
    where: SMS_ReportWhereUniqueInput
    create: XOR<SMS_ReportCreateWithoutCampaignInput, SMS_ReportUncheckedCreateWithoutCampaignInput>
  }

  export type SMS_ReportCreateManyCampaignInputEnvelope = {
    data: SMS_ReportCreateManyCampaignInput | SMS_ReportCreateManyCampaignInput[]
    skipDuplicates?: boolean
  }

  export type CampaignServerRefCreateWithoutCampaignInput = {
    serverRef: bigint | number
  }

  export type CampaignServerRefUncheckedCreateWithoutCampaignInput = {
    serverRef: bigint | number
  }

  export type CampaignServerRefCreateOrConnectWithoutCampaignInput = {
    where: CampaignServerRefWhereUniqueInput
    create: XOR<CampaignServerRefCreateWithoutCampaignInput, CampaignServerRefUncheckedCreateWithoutCampaignInput>
  }

  export type CampaignServerRefCreateManyCampaignInputEnvelope = {
    data: CampaignServerRefCreateManyCampaignInput | CampaignServerRefCreateManyCampaignInput[]
    skipDuplicates?: boolean
  }

  export type CampaignRecipientCreateWithoutCampaignInput = {
    id?: bigint | number
    phoneNumber: string
    name?: string | null
    param1?: string | null
    param2?: string | null
    param3?: string | null
    param4?: string | null
    param5?: string | null
    param6?: string | null
    param7?: string | null
    param8?: string | null
    param9?: string | null
    param10?: string | null
  }

  export type CampaignRecipientUncheckedCreateWithoutCampaignInput = {
    id?: bigint | number
    phoneNumber: string
    name?: string | null
    param1?: string | null
    param2?: string | null
    param3?: string | null
    param4?: string | null
    param5?: string | null
    param6?: string | null
    param7?: string | null
    param8?: string | null
    param9?: string | null
    param10?: string | null
  }

  export type CampaignRecipientCreateOrConnectWithoutCampaignInput = {
    where: CampaignRecipientWhereUniqueInput
    create: XOR<CampaignRecipientCreateWithoutCampaignInput, CampaignRecipientUncheckedCreateWithoutCampaignInput>
  }

  export type CampaignRecipientCreateManyCampaignInputEnvelope = {
    data: CampaignRecipientCreateManyCampaignInput | CampaignRecipientCreateManyCampaignInput[]
    skipDuplicates?: boolean
  }

  export type BillAccountUpsertWithoutCampaignsInput = {
    update: XOR<BillAccountUpdateWithoutCampaignsInput, BillAccountUncheckedUpdateWithoutCampaignsInput>
    create: XOR<BillAccountCreateWithoutCampaignsInput, BillAccountUncheckedCreateWithoutCampaignsInput>
    where?: BillAccountWhereInput
  }

  export type BillAccountUpdateToOneWithWhereWithoutCampaignsInput = {
    where?: BillAccountWhereInput
    data: XOR<BillAccountUpdateWithoutCampaignsInput, BillAccountUncheckedUpdateWithoutCampaignsInput>
  }

  export type BillAccountUpdateWithoutCampaignsInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    accountNumber?: StringFieldUpdateOperationsInput | string
    accountName?: StringFieldUpdateOperationsInput | string
    outstandingBalance?: FloatFieldUpdateOperationsInput | number
    reservedBalance?: FloatFieldUpdateOperationsInput | number
    accountStatus?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    company?: CompanyUpdateOneRequiredWithoutBillAccountsNestedInput
    billPayments?: BillPaymentUpdateManyWithoutBillAccountNestedInput
    lowBalanceAlerts?: LowBalanceAlertUpdateManyWithoutBillAccountNestedInput
  }

  export type BillAccountUncheckedUpdateWithoutCampaignsInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    accountNumber?: StringFieldUpdateOperationsInput | string
    accountName?: StringFieldUpdateOperationsInput | string
    outstandingBalance?: FloatFieldUpdateOperationsInput | number
    reservedBalance?: FloatFieldUpdateOperationsInput | number
    accountStatus?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    companyId?: IntFieldUpdateOperationsInput | number
    billPayments?: BillPaymentUncheckedUpdateManyWithoutBillAccountNestedInput
    lowBalanceAlerts?: LowBalanceAlertUncheckedUpdateManyWithoutBillAccountNestedInput
  }

  export type SenderMaskUpsertWithoutCampaignsInput = {
    update: XOR<SenderMaskUpdateWithoutCampaignsInput, SenderMaskUncheckedUpdateWithoutCampaignsInput>
    create: XOR<SenderMaskCreateWithoutCampaignsInput, SenderMaskUncheckedCreateWithoutCampaignsInput>
    where?: SenderMaskWhereInput
  }

  export type SenderMaskUpdateToOneWithWhereWithoutCampaignsInput = {
    where?: SenderMaskWhereInput
    data: XOR<SenderMaskUpdateWithoutCampaignsInput, SenderMaskUncheckedUpdateWithoutCampaignsInput>
  }

  export type SenderMaskUpdateWithoutCampaignsInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    purpose?: StringFieldUpdateOperationsInput | string
    is_default?: BoolFieldUpdateOperationsInput | boolean
    status?: StringFieldUpdateOperationsInput | string
    maskType?: NullableStringFieldUpdateOperationsInput | string | null
    isExternal?: BoolFieldUpdateOperationsInput | boolean
    emailSent?: BoolFieldUpdateOperationsInput | boolean
    emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    approvalNotificationSent?: BoolFieldUpdateOperationsInput | boolean
    approvalNotificationSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    createdByUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    company?: CompanyUpdateOneWithoutSenderMasksNestedInput
    departments?: DepartmentSenderMaskUpdateManyWithoutSenderMaskNestedInput
  }

  export type SenderMaskUncheckedUpdateWithoutCampaignsInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    purpose?: StringFieldUpdateOperationsInput | string
    is_default?: BoolFieldUpdateOperationsInput | boolean
    status?: StringFieldUpdateOperationsInput | string
    maskType?: NullableStringFieldUpdateOperationsInput | string | null
    isExternal?: BoolFieldUpdateOperationsInput | boolean
    emailSent?: BoolFieldUpdateOperationsInput | boolean
    emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    approvalNotificationSent?: BoolFieldUpdateOperationsInput | boolean
    approvalNotificationSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    createdByUserId?: IntFieldUpdateOperationsInput | number
    companyId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    departments?: DepartmentSenderMaskUncheckedUpdateManyWithoutSenderMaskNestedInput
  }

  export type MobileNumberListUpsertWithoutCampaignsInput = {
    update: XOR<MobileNumberListUpdateWithoutCampaignsInput, MobileNumberListUncheckedUpdateWithoutCampaignsInput>
    create: XOR<MobileNumberListCreateWithoutCampaignsInput, MobileNumberListUncheckedCreateWithoutCampaignsInput>
    where?: MobileNumberListWhereInput
  }

  export type MobileNumberListUpdateToOneWithWhereWithoutCampaignsInput = {
    where?: MobileNumberListWhereInput
    data: XOR<MobileNumberListUpdateWithoutCampaignsInput, MobileNumberListUncheckedUpdateWithoutCampaignsInput>
  }

  export type MobileNumberListUpdateWithoutCampaignsInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    listName?: StringFieldUpdateOperationsInput | string
    listType?: StringFieldUpdateOperationsInput | string
    createdByUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    company?: CompanyUpdateOneWithoutMobileNumberListsNestedInput
    mobileNumbers?: MobileNumberUpdateManyWithoutListNestedInput
  }

  export type MobileNumberListUncheckedUpdateWithoutCampaignsInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    listName?: StringFieldUpdateOperationsInput | string
    listType?: StringFieldUpdateOperationsInput | string
    createdByUserId?: IntFieldUpdateOperationsInput | number
    companyId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    mobileNumbers?: MobileNumberUncheckedUpdateManyWithoutListNestedInput
  }

  export type SMS_TemplateUpsertWithoutCampaignsInput = {
    update: XOR<SMS_TemplateUpdateWithoutCampaignsInput, SMS_TemplateUncheckedUpdateWithoutCampaignsInput>
    create: XOR<SMS_TemplateCreateWithoutCampaignsInput, SMS_TemplateUncheckedCreateWithoutCampaignsInput>
    where?: SMS_TemplateWhereInput
  }

  export type SMS_TemplateUpdateToOneWithWhereWithoutCampaignsInput = {
    where?: SMS_TemplateWhereInput
    data: XOR<SMS_TemplateUpdateWithoutCampaignsInput, SMS_TemplateUncheckedUpdateWithoutCampaignsInput>
  }

  export type SMS_TemplateUpdateWithoutCampaignsInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    text_content?: StringFieldUpdateOperationsInput | string
    smsType?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    department?: DepartmentUpdateOneRequiredWithoutSmsTemplatesNestedInput
  }

  export type SMS_TemplateUncheckedUpdateWithoutCampaignsInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    deptId?: IntFieldUpdateOperationsInput | number
    name?: StringFieldUpdateOperationsInput | string
    text_content?: StringFieldUpdateOperationsInput | string
    smsType?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type SMS_ReportUpsertWithWhereUniqueWithoutCampaignInput = {
    where: SMS_ReportWhereUniqueInput
    update: XOR<SMS_ReportUpdateWithoutCampaignInput, SMS_ReportUncheckedUpdateWithoutCampaignInput>
    create: XOR<SMS_ReportCreateWithoutCampaignInput, SMS_ReportUncheckedCreateWithoutCampaignInput>
  }

  export type SMS_ReportUpdateWithWhereUniqueWithoutCampaignInput = {
    where: SMS_ReportWhereUniqueInput
    data: XOR<SMS_ReportUpdateWithoutCampaignInput, SMS_ReportUncheckedUpdateWithoutCampaignInput>
  }

  export type SMS_ReportUpdateManyWithWhereWithoutCampaignInput = {
    where: SMS_ReportScalarWhereInput
    data: XOR<SMS_ReportUpdateManyMutationInput, SMS_ReportUncheckedUpdateManyWithoutCampaignInput>
  }

  export type SMS_ReportScalarWhereInput = {
    AND?: SMS_ReportScalarWhereInput | SMS_ReportScalarWhereInput[]
    OR?: SMS_ReportScalarWhereInput[]
    NOT?: SMS_ReportScalarWhereInput | SMS_ReportScalarWhereInput[]
    id?: IntFilter<"SMS_Report"> | number
    uuid?: StringFilter<"SMS_Report"> | string
    server_ref?: BigIntFilter<"SMS_Report"> | bigint | number
    campaignId?: IntFilter<"SMS_Report"> | number
    deliveryType?: IntFilter<"SMS_Report"> | number
    number?: StringFilter<"SMS_Report"> | string
    maskName?: StringFilter<"SMS_Report"> | string
    messagePart?: IntFilter<"SMS_Report"> | number
    chargedAmount?: FloatFilter<"SMS_Report"> | number
    createdAt?: DateTimeFilter<"SMS_Report"> | Date | string
    updatedAt?: DateTimeFilter<"SMS_Report"> | Date | string
  }

  export type CampaignServerRefUpsertWithWhereUniqueWithoutCampaignInput = {
    where: CampaignServerRefWhereUniqueInput
    update: XOR<CampaignServerRefUpdateWithoutCampaignInput, CampaignServerRefUncheckedUpdateWithoutCampaignInput>
    create: XOR<CampaignServerRefCreateWithoutCampaignInput, CampaignServerRefUncheckedCreateWithoutCampaignInput>
  }

  export type CampaignServerRefUpdateWithWhereUniqueWithoutCampaignInput = {
    where: CampaignServerRefWhereUniqueInput
    data: XOR<CampaignServerRefUpdateWithoutCampaignInput, CampaignServerRefUncheckedUpdateWithoutCampaignInput>
  }

  export type CampaignServerRefUpdateManyWithWhereWithoutCampaignInput = {
    where: CampaignServerRefScalarWhereInput
    data: XOR<CampaignServerRefUpdateManyMutationInput, CampaignServerRefUncheckedUpdateManyWithoutCampaignInput>
  }

  export type CampaignServerRefScalarWhereInput = {
    AND?: CampaignServerRefScalarWhereInput | CampaignServerRefScalarWhereInput[]
    OR?: CampaignServerRefScalarWhereInput[]
    NOT?: CampaignServerRefScalarWhereInput | CampaignServerRefScalarWhereInput[]
    serverRef?: BigIntFilter<"CampaignServerRef"> | bigint | number
    campaignId?: IntFilter<"CampaignServerRef"> | number
  }

  export type CampaignRecipientUpsertWithWhereUniqueWithoutCampaignInput = {
    where: CampaignRecipientWhereUniqueInput
    update: XOR<CampaignRecipientUpdateWithoutCampaignInput, CampaignRecipientUncheckedUpdateWithoutCampaignInput>
    create: XOR<CampaignRecipientCreateWithoutCampaignInput, CampaignRecipientUncheckedCreateWithoutCampaignInput>
  }

  export type CampaignRecipientUpdateWithWhereUniqueWithoutCampaignInput = {
    where: CampaignRecipientWhereUniqueInput
    data: XOR<CampaignRecipientUpdateWithoutCampaignInput, CampaignRecipientUncheckedUpdateWithoutCampaignInput>
  }

  export type CampaignRecipientUpdateManyWithWhereWithoutCampaignInput = {
    where: CampaignRecipientScalarWhereInput
    data: XOR<CampaignRecipientUpdateManyMutationInput, CampaignRecipientUncheckedUpdateManyWithoutCampaignInput>
  }

  export type CampaignRecipientScalarWhereInput = {
    AND?: CampaignRecipientScalarWhereInput | CampaignRecipientScalarWhereInput[]
    OR?: CampaignRecipientScalarWhereInput[]
    NOT?: CampaignRecipientScalarWhereInput | CampaignRecipientScalarWhereInput[]
    id?: BigIntFilter<"CampaignRecipient"> | bigint | number
    campaignId?: IntFilter<"CampaignRecipient"> | number
    phoneNumber?: StringFilter<"CampaignRecipient"> | string
    name?: StringNullableFilter<"CampaignRecipient"> | string | null
    param1?: StringNullableFilter<"CampaignRecipient"> | string | null
    param2?: StringNullableFilter<"CampaignRecipient"> | string | null
    param3?: StringNullableFilter<"CampaignRecipient"> | string | null
    param4?: StringNullableFilter<"CampaignRecipient"> | string | null
    param5?: StringNullableFilter<"CampaignRecipient"> | string | null
    param6?: StringNullableFilter<"CampaignRecipient"> | string | null
    param7?: StringNullableFilter<"CampaignRecipient"> | string | null
    param8?: StringNullableFilter<"CampaignRecipient"> | string | null
    param9?: StringNullableFilter<"CampaignRecipient"> | string | null
    param10?: StringNullableFilter<"CampaignRecipient"> | string | null
  }

  export type CampaignCreateWithoutBulkServerRefsInput = {
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    billingAccount: BillAccountCreateNestedOneWithoutCampaignsInput
    senderMask: SenderMaskCreateNestedOneWithoutCampaignsInput
    mobileNumberList?: MobileNumberListCreateNestedOneWithoutCampaignsInput
    template?: SMS_TemplateCreateNestedOneWithoutCampaignsInput
    smsReports?: SMS_ReportCreateNestedManyWithoutCampaignInput
    recipients?: CampaignRecipientCreateNestedManyWithoutCampaignInput
  }

  export type CampaignUncheckedCreateWithoutBulkServerRefsInput = {
    id?: number
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    billingAccountId: number
    senderMaskId: number
    mobileNumberListId?: bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: number | null
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    smsReports?: SMS_ReportUncheckedCreateNestedManyWithoutCampaignInput
    recipients?: CampaignRecipientUncheckedCreateNestedManyWithoutCampaignInput
  }

  export type CampaignCreateOrConnectWithoutBulkServerRefsInput = {
    where: CampaignWhereUniqueInput
    create: XOR<CampaignCreateWithoutBulkServerRefsInput, CampaignUncheckedCreateWithoutBulkServerRefsInput>
  }

  export type CampaignUpsertWithoutBulkServerRefsInput = {
    update: XOR<CampaignUpdateWithoutBulkServerRefsInput, CampaignUncheckedUpdateWithoutBulkServerRefsInput>
    create: XOR<CampaignCreateWithoutBulkServerRefsInput, CampaignUncheckedCreateWithoutBulkServerRefsInput>
    where?: CampaignWhereInput
  }

  export type CampaignUpdateToOneWithWhereWithoutBulkServerRefsInput = {
    where?: CampaignWhereInput
    data: XOR<CampaignUpdateWithoutBulkServerRefsInput, CampaignUncheckedUpdateWithoutBulkServerRefsInput>
  }

  export type CampaignUpdateWithoutBulkServerRefsInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    billingAccount?: BillAccountUpdateOneRequiredWithoutCampaignsNestedInput
    senderMask?: SenderMaskUpdateOneRequiredWithoutCampaignsNestedInput
    mobileNumberList?: MobileNumberListUpdateOneWithoutCampaignsNestedInput
    template?: SMS_TemplateUpdateOneWithoutCampaignsNestedInput
    smsReports?: SMS_ReportUpdateManyWithoutCampaignNestedInput
    recipients?: CampaignRecipientUpdateManyWithoutCampaignNestedInput
  }

  export type CampaignUncheckedUpdateWithoutBulkServerRefsInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    billingAccountId?: IntFieldUpdateOperationsInput | number
    senderMaskId?: IntFieldUpdateOperationsInput | number
    mobileNumberListId?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: NullableIntFieldUpdateOperationsInput | number | null
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    smsReports?: SMS_ReportUncheckedUpdateManyWithoutCampaignNestedInput
    recipients?: CampaignRecipientUncheckedUpdateManyWithoutCampaignNestedInput
  }

  export type CampaignCreateWithoutRecipientsInput = {
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    billingAccount: BillAccountCreateNestedOneWithoutCampaignsInput
    senderMask: SenderMaskCreateNestedOneWithoutCampaignsInput
    mobileNumberList?: MobileNumberListCreateNestedOneWithoutCampaignsInput
    template?: SMS_TemplateCreateNestedOneWithoutCampaignsInput
    smsReports?: SMS_ReportCreateNestedManyWithoutCampaignInput
    bulkServerRefs?: CampaignServerRefCreateNestedManyWithoutCampaignInput
  }

  export type CampaignUncheckedCreateWithoutRecipientsInput = {
    id?: number
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    billingAccountId: number
    senderMaskId: number
    mobileNumberListId?: bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: number | null
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    smsReports?: SMS_ReportUncheckedCreateNestedManyWithoutCampaignInput
    bulkServerRefs?: CampaignServerRefUncheckedCreateNestedManyWithoutCampaignInput
  }

  export type CampaignCreateOrConnectWithoutRecipientsInput = {
    where: CampaignWhereUniqueInput
    create: XOR<CampaignCreateWithoutRecipientsInput, CampaignUncheckedCreateWithoutRecipientsInput>
  }

  export type CampaignUpsertWithoutRecipientsInput = {
    update: XOR<CampaignUpdateWithoutRecipientsInput, CampaignUncheckedUpdateWithoutRecipientsInput>
    create: XOR<CampaignCreateWithoutRecipientsInput, CampaignUncheckedCreateWithoutRecipientsInput>
    where?: CampaignWhereInput
  }

  export type CampaignUpdateToOneWithWhereWithoutRecipientsInput = {
    where?: CampaignWhereInput
    data: XOR<CampaignUpdateWithoutRecipientsInput, CampaignUncheckedUpdateWithoutRecipientsInput>
  }

  export type CampaignUpdateWithoutRecipientsInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    billingAccount?: BillAccountUpdateOneRequiredWithoutCampaignsNestedInput
    senderMask?: SenderMaskUpdateOneRequiredWithoutCampaignsNestedInput
    mobileNumberList?: MobileNumberListUpdateOneWithoutCampaignsNestedInput
    template?: SMS_TemplateUpdateOneWithoutCampaignsNestedInput
    smsReports?: SMS_ReportUpdateManyWithoutCampaignNestedInput
    bulkServerRefs?: CampaignServerRefUpdateManyWithoutCampaignNestedInput
  }

  export type CampaignUncheckedUpdateWithoutRecipientsInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    billingAccountId?: IntFieldUpdateOperationsInput | number
    senderMaskId?: IntFieldUpdateOperationsInput | number
    mobileNumberListId?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: NullableIntFieldUpdateOperationsInput | number | null
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    smsReports?: SMS_ReportUncheckedUpdateManyWithoutCampaignNestedInput
    bulkServerRefs?: CampaignServerRefUncheckedUpdateManyWithoutCampaignNestedInput
  }

  export type CompanyCreateWithoutMobileNumberListsInput = {
    uuid?: string
    externalCompanyId?: number | null
    source?: string | null
    brNumber?: string | null
    companyName: string
    contactNumber?: string | null
    address?: string | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    smsCostIndividual?: number | null
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    userCompanies?: UserCompanyCreateNestedManyWithoutCompanyInput
    billAccounts?: BillAccountCreateNestedManyWithoutCompanyInput
    departments?: DepartmentCreateNestedManyWithoutCompanyInput
    senderMasks?: SenderMaskCreateNestedManyWithoutCompanyInput
    contactParamSettings?: ContactParamSettingsCreateNestedOneWithoutCompanyInput
  }

  export type CompanyUncheckedCreateWithoutMobileNumberListsInput = {
    id?: number
    uuid?: string
    externalCompanyId?: number | null
    source?: string | null
    brNumber?: string | null
    companyName: string
    contactNumber?: string | null
    address?: string | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    smsCostIndividual?: number | null
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    userCompanies?: UserCompanyUncheckedCreateNestedManyWithoutCompanyInput
    billAccounts?: BillAccountUncheckedCreateNestedManyWithoutCompanyInput
    departments?: DepartmentUncheckedCreateNestedManyWithoutCompanyInput
    senderMasks?: SenderMaskUncheckedCreateNestedManyWithoutCompanyInput
    contactParamSettings?: ContactParamSettingsUncheckedCreateNestedOneWithoutCompanyInput
  }

  export type CompanyCreateOrConnectWithoutMobileNumberListsInput = {
    where: CompanyWhereUniqueInput
    create: XOR<CompanyCreateWithoutMobileNumberListsInput, CompanyUncheckedCreateWithoutMobileNumberListsInput>
  }

  export type CampaignCreateWithoutMobileNumberListInput = {
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    billingAccount: BillAccountCreateNestedOneWithoutCampaignsInput
    senderMask: SenderMaskCreateNestedOneWithoutCampaignsInput
    template?: SMS_TemplateCreateNestedOneWithoutCampaignsInput
    smsReports?: SMS_ReportCreateNestedManyWithoutCampaignInput
    bulkServerRefs?: CampaignServerRefCreateNestedManyWithoutCampaignInput
    recipients?: CampaignRecipientCreateNestedManyWithoutCampaignInput
  }

  export type CampaignUncheckedCreateWithoutMobileNumberListInput = {
    id?: number
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    billingAccountId: number
    senderMaskId: number
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: number | null
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    smsReports?: SMS_ReportUncheckedCreateNestedManyWithoutCampaignInput
    bulkServerRefs?: CampaignServerRefUncheckedCreateNestedManyWithoutCampaignInput
    recipients?: CampaignRecipientUncheckedCreateNestedManyWithoutCampaignInput
  }

  export type CampaignCreateOrConnectWithoutMobileNumberListInput = {
    where: CampaignWhereUniqueInput
    create: XOR<CampaignCreateWithoutMobileNumberListInput, CampaignUncheckedCreateWithoutMobileNumberListInput>
  }

  export type CampaignCreateManyMobileNumberListInputEnvelope = {
    data: CampaignCreateManyMobileNumberListInput | CampaignCreateManyMobileNumberListInput[]
    skipDuplicates?: boolean
  }

  export type MobileNumberCreateWithoutListInput = {
    id?: bigint | number
    uuid?: string
    phoneNumber: string
    type: string
    is_blocked?: boolean
    deletedAt?: Date | string | null
    name?: string | null
    param1?: string | null
    param2?: string | null
    param3?: string | null
    param4?: string | null
    param5?: string | null
    param6?: string | null
    param7?: string | null
    param8?: string | null
    param9?: string | null
    param10?: string | null
  }

  export type MobileNumberUncheckedCreateWithoutListInput = {
    id?: bigint | number
    uuid?: string
    phoneNumber: string
    type: string
    is_blocked?: boolean
    deletedAt?: Date | string | null
    name?: string | null
    param1?: string | null
    param2?: string | null
    param3?: string | null
    param4?: string | null
    param5?: string | null
    param6?: string | null
    param7?: string | null
    param8?: string | null
    param9?: string | null
    param10?: string | null
  }

  export type MobileNumberCreateOrConnectWithoutListInput = {
    where: MobileNumberWhereUniqueInput
    create: XOR<MobileNumberCreateWithoutListInput, MobileNumberUncheckedCreateWithoutListInput>
  }

  export type MobileNumberCreateManyListInputEnvelope = {
    data: MobileNumberCreateManyListInput | MobileNumberCreateManyListInput[]
    skipDuplicates?: boolean
  }

  export type CompanyUpsertWithoutMobileNumberListsInput = {
    update: XOR<CompanyUpdateWithoutMobileNumberListsInput, CompanyUncheckedUpdateWithoutMobileNumberListsInput>
    create: XOR<CompanyCreateWithoutMobileNumberListsInput, CompanyUncheckedCreateWithoutMobileNumberListsInput>
    where?: CompanyWhereInput
  }

  export type CompanyUpdateToOneWithWhereWithoutMobileNumberListsInput = {
    where?: CompanyWhereInput
    data: XOR<CompanyUpdateWithoutMobileNumberListsInput, CompanyUncheckedUpdateWithoutMobileNumberListsInput>
  }

  export type CompanyUpdateWithoutMobileNumberListsInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    source?: NullableStringFieldUpdateOperationsInput | string | null
    brNumber?: NullableStringFieldUpdateOperationsInput | string | null
    companyName?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    address?: NullableStringFieldUpdateOperationsInput | string | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostIndividual?: NullableFloatFieldUpdateOperationsInput | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    userCompanies?: UserCompanyUpdateManyWithoutCompanyNestedInput
    billAccounts?: BillAccountUpdateManyWithoutCompanyNestedInput
    departments?: DepartmentUpdateManyWithoutCompanyNestedInput
    senderMasks?: SenderMaskUpdateManyWithoutCompanyNestedInput
    contactParamSettings?: ContactParamSettingsUpdateOneWithoutCompanyNestedInput
  }

  export type CompanyUncheckedUpdateWithoutMobileNumberListsInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    source?: NullableStringFieldUpdateOperationsInput | string | null
    brNumber?: NullableStringFieldUpdateOperationsInput | string | null
    companyName?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    address?: NullableStringFieldUpdateOperationsInput | string | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostIndividual?: NullableFloatFieldUpdateOperationsInput | number | null
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    userCompanies?: UserCompanyUncheckedUpdateManyWithoutCompanyNestedInput
    billAccounts?: BillAccountUncheckedUpdateManyWithoutCompanyNestedInput
    departments?: DepartmentUncheckedUpdateManyWithoutCompanyNestedInput
    senderMasks?: SenderMaskUncheckedUpdateManyWithoutCompanyNestedInput
    contactParamSettings?: ContactParamSettingsUncheckedUpdateOneWithoutCompanyNestedInput
  }

  export type CampaignUpsertWithWhereUniqueWithoutMobileNumberListInput = {
    where: CampaignWhereUniqueInput
    update: XOR<CampaignUpdateWithoutMobileNumberListInput, CampaignUncheckedUpdateWithoutMobileNumberListInput>
    create: XOR<CampaignCreateWithoutMobileNumberListInput, CampaignUncheckedCreateWithoutMobileNumberListInput>
  }

  export type CampaignUpdateWithWhereUniqueWithoutMobileNumberListInput = {
    where: CampaignWhereUniqueInput
    data: XOR<CampaignUpdateWithoutMobileNumberListInput, CampaignUncheckedUpdateWithoutMobileNumberListInput>
  }

  export type CampaignUpdateManyWithWhereWithoutMobileNumberListInput = {
    where: CampaignScalarWhereInput
    data: XOR<CampaignUpdateManyMutationInput, CampaignUncheckedUpdateManyWithoutMobileNumberListInput>
  }

  export type MobileNumberUpsertWithWhereUniqueWithoutListInput = {
    where: MobileNumberWhereUniqueInput
    update: XOR<MobileNumberUpdateWithoutListInput, MobileNumberUncheckedUpdateWithoutListInput>
    create: XOR<MobileNumberCreateWithoutListInput, MobileNumberUncheckedCreateWithoutListInput>
  }

  export type MobileNumberUpdateWithWhereUniqueWithoutListInput = {
    where: MobileNumberWhereUniqueInput
    data: XOR<MobileNumberUpdateWithoutListInput, MobileNumberUncheckedUpdateWithoutListInput>
  }

  export type MobileNumberUpdateManyWithWhereWithoutListInput = {
    where: MobileNumberScalarWhereInput
    data: XOR<MobileNumberUpdateManyMutationInput, MobileNumberUncheckedUpdateManyWithoutListInput>
  }

  export type MobileNumberScalarWhereInput = {
    AND?: MobileNumberScalarWhereInput | MobileNumberScalarWhereInput[]
    OR?: MobileNumberScalarWhereInput[]
    NOT?: MobileNumberScalarWhereInput | MobileNumberScalarWhereInput[]
    id?: BigIntFilter<"MobileNumber"> | bigint | number
    uuid?: StringFilter<"MobileNumber"> | string
    phoneNumber?: StringFilter<"MobileNumber"> | string
    type?: StringFilter<"MobileNumber"> | string
    is_blocked?: BoolFilter<"MobileNumber"> | boolean
    numberListId?: BigIntNullableFilter<"MobileNumber"> | bigint | number | null
    deletedAt?: DateTimeNullableFilter<"MobileNumber"> | Date | string | null
    name?: StringNullableFilter<"MobileNumber"> | string | null
    param1?: StringNullableFilter<"MobileNumber"> | string | null
    param2?: StringNullableFilter<"MobileNumber"> | string | null
    param3?: StringNullableFilter<"MobileNumber"> | string | null
    param4?: StringNullableFilter<"MobileNumber"> | string | null
    param5?: StringNullableFilter<"MobileNumber"> | string | null
    param6?: StringNullableFilter<"MobileNumber"> | string | null
    param7?: StringNullableFilter<"MobileNumber"> | string | null
    param8?: StringNullableFilter<"MobileNumber"> | string | null
    param9?: StringNullableFilter<"MobileNumber"> | string | null
    param10?: StringNullableFilter<"MobileNumber"> | string | null
  }

  export type MobileNumberListCreateWithoutMobileNumbersInput = {
    id?: bigint | number
    uuid?: string
    listName: string
    listType?: string
    createdByUserId: number
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    company?: CompanyCreateNestedOneWithoutMobileNumberListsInput
    campaigns?: CampaignCreateNestedManyWithoutMobileNumberListInput
  }

  export type MobileNumberListUncheckedCreateWithoutMobileNumbersInput = {
    id?: bigint | number
    uuid?: string
    listName: string
    listType?: string
    createdByUserId: number
    companyId?: number | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    campaigns?: CampaignUncheckedCreateNestedManyWithoutMobileNumberListInput
  }

  export type MobileNumberListCreateOrConnectWithoutMobileNumbersInput = {
    where: MobileNumberListWhereUniqueInput
    create: XOR<MobileNumberListCreateWithoutMobileNumbersInput, MobileNumberListUncheckedCreateWithoutMobileNumbersInput>
  }

  export type MobileNumberListUpsertWithoutMobileNumbersInput = {
    update: XOR<MobileNumberListUpdateWithoutMobileNumbersInput, MobileNumberListUncheckedUpdateWithoutMobileNumbersInput>
    create: XOR<MobileNumberListCreateWithoutMobileNumbersInput, MobileNumberListUncheckedCreateWithoutMobileNumbersInput>
    where?: MobileNumberListWhereInput
  }

  export type MobileNumberListUpdateToOneWithWhereWithoutMobileNumbersInput = {
    where?: MobileNumberListWhereInput
    data: XOR<MobileNumberListUpdateWithoutMobileNumbersInput, MobileNumberListUncheckedUpdateWithoutMobileNumbersInput>
  }

  export type MobileNumberListUpdateWithoutMobileNumbersInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    listName?: StringFieldUpdateOperationsInput | string
    listType?: StringFieldUpdateOperationsInput | string
    createdByUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    company?: CompanyUpdateOneWithoutMobileNumberListsNestedInput
    campaigns?: CampaignUpdateManyWithoutMobileNumberListNestedInput
  }

  export type MobileNumberListUncheckedUpdateWithoutMobileNumbersInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    listName?: StringFieldUpdateOperationsInput | string
    listType?: StringFieldUpdateOperationsInput | string
    createdByUserId?: IntFieldUpdateOperationsInput | number
    companyId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    campaigns?: CampaignUncheckedUpdateManyWithoutMobileNumberListNestedInput
  }

  export type CampaignCreateWithoutSmsReportsInput = {
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    billingAccount: BillAccountCreateNestedOneWithoutCampaignsInput
    senderMask: SenderMaskCreateNestedOneWithoutCampaignsInput
    mobileNumberList?: MobileNumberListCreateNestedOneWithoutCampaignsInput
    template?: SMS_TemplateCreateNestedOneWithoutCampaignsInput
    bulkServerRefs?: CampaignServerRefCreateNestedManyWithoutCampaignInput
    recipients?: CampaignRecipientCreateNestedManyWithoutCampaignInput
  }

  export type CampaignUncheckedCreateWithoutSmsReportsInput = {
    id?: number
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    billingAccountId: number
    senderMaskId: number
    mobileNumberListId?: bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: number | null
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
    bulkServerRefs?: CampaignServerRefUncheckedCreateNestedManyWithoutCampaignInput
    recipients?: CampaignRecipientUncheckedCreateNestedManyWithoutCampaignInput
  }

  export type CampaignCreateOrConnectWithoutSmsReportsInput = {
    where: CampaignWhereUniqueInput
    create: XOR<CampaignCreateWithoutSmsReportsInput, CampaignUncheckedCreateWithoutSmsReportsInput>
  }

  export type CampaignUpsertWithoutSmsReportsInput = {
    update: XOR<CampaignUpdateWithoutSmsReportsInput, CampaignUncheckedUpdateWithoutSmsReportsInput>
    create: XOR<CampaignCreateWithoutSmsReportsInput, CampaignUncheckedCreateWithoutSmsReportsInput>
    where?: CampaignWhereInput
  }

  export type CampaignUpdateToOneWithWhereWithoutSmsReportsInput = {
    where?: CampaignWhereInput
    data: XOR<CampaignUpdateWithoutSmsReportsInput, CampaignUncheckedUpdateWithoutSmsReportsInput>
  }

  export type CampaignUpdateWithoutSmsReportsInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    billingAccount?: BillAccountUpdateOneRequiredWithoutCampaignsNestedInput
    senderMask?: SenderMaskUpdateOneRequiredWithoutCampaignsNestedInput
    mobileNumberList?: MobileNumberListUpdateOneWithoutCampaignsNestedInput
    template?: SMS_TemplateUpdateOneWithoutCampaignsNestedInput
    bulkServerRefs?: CampaignServerRefUpdateManyWithoutCampaignNestedInput
    recipients?: CampaignRecipientUpdateManyWithoutCampaignNestedInput
  }

  export type CampaignUncheckedUpdateWithoutSmsReportsInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    billingAccountId?: IntFieldUpdateOperationsInput | number
    senderMaskId?: IntFieldUpdateOperationsInput | number
    mobileNumberListId?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: NullableIntFieldUpdateOperationsInput | number | null
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    bulkServerRefs?: CampaignServerRefUncheckedUpdateManyWithoutCampaignNestedInput
    recipients?: CampaignRecipientUncheckedUpdateManyWithoutCampaignNestedInput
  }

  export type UserCompanyCreateManyCompanyInput = {
    id?: number
    uuid?: string
    userId: number
    createdAt?: Date | string
  }

  export type BillAccountCreateManyCompanyInput = {
    id?: number
    uuid?: string
    accountNumber: string
    accountName: string
    outstandingBalance: number
    reservedBalance?: number
    accountStatus?: string
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type DepartmentCreateManyCompanyInput = {
    id?: number
    uuid?: string
    name: string
    externalCompanyId?: number | null
    smsCostTransactional?: number | null
    smsCostPromotional?: number | null
    is_enabled?: boolean
    callBackUrl?: string | null
    Signature?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type MobileNumberListCreateManyCompanyInput = {
    id?: bigint | number
    uuid?: string
    listName: string
    listType?: string
    createdByUserId: number
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type SenderMaskCreateManyCompanyInput = {
    id?: number
    uuid?: string
    maskName: string
    purpose: string
    is_default?: boolean
    status?: string
    maskType?: string | null
    isExternal?: boolean
    emailSent?: boolean
    emailSentAt?: Date | string | null
    approvalNotificationSent?: boolean
    approvalNotificationSentAt?: Date | string | null
    reservedAmount?: number
    createdByUserId: number
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type UserCompanyUpdateWithoutCompanyInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    user?: UserUpdateOneRequiredWithoutCompaniesNestedInput
  }

  export type UserCompanyUncheckedUpdateWithoutCompanyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    userId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type UserCompanyUncheckedUpdateManyWithoutCompanyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    userId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type BillAccountUpdateWithoutCompanyInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    accountNumber?: StringFieldUpdateOperationsInput | string
    accountName?: StringFieldUpdateOperationsInput | string
    outstandingBalance?: FloatFieldUpdateOperationsInput | number
    reservedBalance?: FloatFieldUpdateOperationsInput | number
    accountStatus?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    billPayments?: BillPaymentUpdateManyWithoutBillAccountNestedInput
    campaigns?: CampaignUpdateManyWithoutBillingAccountNestedInput
    lowBalanceAlerts?: LowBalanceAlertUpdateManyWithoutBillAccountNestedInput
  }

  export type BillAccountUncheckedUpdateWithoutCompanyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    accountNumber?: StringFieldUpdateOperationsInput | string
    accountName?: StringFieldUpdateOperationsInput | string
    outstandingBalance?: FloatFieldUpdateOperationsInput | number
    reservedBalance?: FloatFieldUpdateOperationsInput | number
    accountStatus?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    billPayments?: BillPaymentUncheckedUpdateManyWithoutBillAccountNestedInput
    campaigns?: CampaignUncheckedUpdateManyWithoutBillingAccountNestedInput
    lowBalanceAlerts?: LowBalanceAlertUncheckedUpdateManyWithoutBillAccountNestedInput
  }

  export type BillAccountUncheckedUpdateManyWithoutCompanyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    accountNumber?: StringFieldUpdateOperationsInput | string
    accountName?: StringFieldUpdateOperationsInput | string
    outstandingBalance?: FloatFieldUpdateOperationsInput | number
    reservedBalance?: FloatFieldUpdateOperationsInput | number
    accountStatus?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type DepartmentUpdateWithoutCompanyInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    is_enabled?: BoolFieldUpdateOperationsInput | boolean
    callBackUrl?: NullableStringFieldUpdateOperationsInput | string | null
    Signature?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    smsTemplates?: SMS_TemplateUpdateManyWithoutDepartmentNestedInput
    senderMasks?: DepartmentSenderMaskUpdateManyWithoutDepartmentNestedInput
  }

  export type DepartmentUncheckedUpdateWithoutCompanyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    is_enabled?: BoolFieldUpdateOperationsInput | boolean
    callBackUrl?: NullableStringFieldUpdateOperationsInput | string | null
    Signature?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    smsTemplates?: SMS_TemplateUncheckedUpdateManyWithoutDepartmentNestedInput
    senderMasks?: DepartmentSenderMaskUncheckedUpdateManyWithoutDepartmentNestedInput
  }

  export type DepartmentUncheckedUpdateManyWithoutCompanyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    externalCompanyId?: NullableIntFieldUpdateOperationsInput | number | null
    smsCostTransactional?: NullableFloatFieldUpdateOperationsInput | number | null
    smsCostPromotional?: NullableFloatFieldUpdateOperationsInput | number | null
    is_enabled?: BoolFieldUpdateOperationsInput | boolean
    callBackUrl?: NullableStringFieldUpdateOperationsInput | string | null
    Signature?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type MobileNumberListUpdateWithoutCompanyInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    listName?: StringFieldUpdateOperationsInput | string
    listType?: StringFieldUpdateOperationsInput | string
    createdByUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    campaigns?: CampaignUpdateManyWithoutMobileNumberListNestedInput
    mobileNumbers?: MobileNumberUpdateManyWithoutListNestedInput
  }

  export type MobileNumberListUncheckedUpdateWithoutCompanyInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    listName?: StringFieldUpdateOperationsInput | string
    listType?: StringFieldUpdateOperationsInput | string
    createdByUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    campaigns?: CampaignUncheckedUpdateManyWithoutMobileNumberListNestedInput
    mobileNumbers?: MobileNumberUncheckedUpdateManyWithoutListNestedInput
  }

  export type MobileNumberListUncheckedUpdateManyWithoutCompanyInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    listName?: StringFieldUpdateOperationsInput | string
    listType?: StringFieldUpdateOperationsInput | string
    createdByUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type SenderMaskUpdateWithoutCompanyInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    purpose?: StringFieldUpdateOperationsInput | string
    is_default?: BoolFieldUpdateOperationsInput | boolean
    status?: StringFieldUpdateOperationsInput | string
    maskType?: NullableStringFieldUpdateOperationsInput | string | null
    isExternal?: BoolFieldUpdateOperationsInput | boolean
    emailSent?: BoolFieldUpdateOperationsInput | boolean
    emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    approvalNotificationSent?: BoolFieldUpdateOperationsInput | boolean
    approvalNotificationSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    createdByUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    campaigns?: CampaignUpdateManyWithoutSenderMaskNestedInput
    departments?: DepartmentSenderMaskUpdateManyWithoutSenderMaskNestedInput
  }

  export type SenderMaskUncheckedUpdateWithoutCompanyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    purpose?: StringFieldUpdateOperationsInput | string
    is_default?: BoolFieldUpdateOperationsInput | boolean
    status?: StringFieldUpdateOperationsInput | string
    maskType?: NullableStringFieldUpdateOperationsInput | string | null
    isExternal?: BoolFieldUpdateOperationsInput | boolean
    emailSent?: BoolFieldUpdateOperationsInput | boolean
    emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    approvalNotificationSent?: BoolFieldUpdateOperationsInput | boolean
    approvalNotificationSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    createdByUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    campaigns?: CampaignUncheckedUpdateManyWithoutSenderMaskNestedInput
    departments?: DepartmentSenderMaskUncheckedUpdateManyWithoutSenderMaskNestedInput
  }

  export type SenderMaskUncheckedUpdateManyWithoutCompanyInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    purpose?: StringFieldUpdateOperationsInput | string
    is_default?: BoolFieldUpdateOperationsInput | boolean
    status?: StringFieldUpdateOperationsInput | string
    maskType?: NullableStringFieldUpdateOperationsInput | string | null
    isExternal?: BoolFieldUpdateOperationsInput | boolean
    emailSent?: BoolFieldUpdateOperationsInput | boolean
    emailSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    approvalNotificationSent?: BoolFieldUpdateOperationsInput | boolean
    approvalNotificationSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    createdByUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type UserCreateManyRoleInput = {
    id?: number
    uuid?: string
    externalUserId?: number | null
    fullName: string
    email: string
    contactNumber?: string | null
    passwordHash?: string | null
    userType?: string
    isActive?: boolean
    hasSeenGuide?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type UserUpdateWithoutRoleInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    externalUserId?: NullableIntFieldUpdateOperationsInput | number | null
    fullName?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    passwordHash?: NullableStringFieldUpdateOperationsInput | string | null
    userType?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    hasSeenGuide?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    companies?: UserCompanyUpdateManyWithoutUserNestedInput
    refreshTokens?: RefreshTokenUpdateManyWithoutUserNestedInput
    savedCards?: SavedCardUpdateManyWithoutUserNestedInput
    passwordResetTokens?: PasswordResetTokenUpdateManyWithoutUserNestedInput
  }

  export type UserUncheckedUpdateWithoutRoleInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    externalUserId?: NullableIntFieldUpdateOperationsInput | number | null
    fullName?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    passwordHash?: NullableStringFieldUpdateOperationsInput | string | null
    userType?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    hasSeenGuide?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    companies?: UserCompanyUncheckedUpdateManyWithoutUserNestedInput
    refreshTokens?: RefreshTokenUncheckedUpdateManyWithoutUserNestedInput
    savedCards?: SavedCardUncheckedUpdateManyWithoutUserNestedInput
    passwordResetTokens?: PasswordResetTokenUncheckedUpdateManyWithoutUserNestedInput
  }

  export type UserUncheckedUpdateManyWithoutRoleInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    externalUserId?: NullableIntFieldUpdateOperationsInput | number | null
    fullName?: StringFieldUpdateOperationsInput | string
    email?: StringFieldUpdateOperationsInput | string
    contactNumber?: NullableStringFieldUpdateOperationsInput | string | null
    passwordHash?: NullableStringFieldUpdateOperationsInput | string | null
    userType?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    hasSeenGuide?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type UserCompanyCreateManyUserInput = {
    id?: number
    uuid?: string
    companyId: number
    createdAt?: Date | string
  }

  export type RefreshTokenCreateManyUserInput = {
    id?: number
    token: string
    expiresAt: Date | string
    isRevoked?: boolean
    createdAt?: Date | string
  }

  export type SavedCardCreateManyUserInput = {
    id?: number
    uuid?: string
    cardToken: string
    cardFirst6: string
    cardLast4: string
    cardHolderName: string
    customerEmail: string
    isActive?: boolean
    deletedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type PasswordResetTokenCreateManyUserInput = {
    id?: number
    tokenHash: string
    expiresAt: Date | string
    isUsed?: boolean
    createdAt?: Date | string
  }

  export type UserCompanyUpdateWithoutUserInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    company?: CompanyUpdateOneRequiredWithoutUserCompaniesNestedInput
  }

  export type UserCompanyUncheckedUpdateWithoutUserInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    companyId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type UserCompanyUncheckedUpdateManyWithoutUserInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    companyId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type RefreshTokenUpdateWithoutUserInput = {
    token?: StringFieldUpdateOperationsInput | string
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isRevoked?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type RefreshTokenUncheckedUpdateWithoutUserInput = {
    id?: IntFieldUpdateOperationsInput | number
    token?: StringFieldUpdateOperationsInput | string
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isRevoked?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type RefreshTokenUncheckedUpdateManyWithoutUserInput = {
    id?: IntFieldUpdateOperationsInput | number
    token?: StringFieldUpdateOperationsInput | string
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isRevoked?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type SavedCardUpdateWithoutUserInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    cardToken?: StringFieldUpdateOperationsInput | string
    cardFirst6?: StringFieldUpdateOperationsInput | string
    cardLast4?: StringFieldUpdateOperationsInput | string
    cardHolderName?: StringFieldUpdateOperationsInput | string
    customerEmail?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    billPayments?: BillPaymentUpdateManyWithoutSavedCardNestedInput
  }

  export type SavedCardUncheckedUpdateWithoutUserInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    cardToken?: StringFieldUpdateOperationsInput | string
    cardFirst6?: StringFieldUpdateOperationsInput | string
    cardLast4?: StringFieldUpdateOperationsInput | string
    cardHolderName?: StringFieldUpdateOperationsInput | string
    customerEmail?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    billPayments?: BillPaymentUncheckedUpdateManyWithoutSavedCardNestedInput
  }

  export type SavedCardUncheckedUpdateManyWithoutUserInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    cardToken?: StringFieldUpdateOperationsInput | string
    cardFirst6?: StringFieldUpdateOperationsInput | string
    cardLast4?: StringFieldUpdateOperationsInput | string
    cardHolderName?: StringFieldUpdateOperationsInput | string
    customerEmail?: StringFieldUpdateOperationsInput | string
    isActive?: BoolFieldUpdateOperationsInput | boolean
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type PasswordResetTokenUpdateWithoutUserInput = {
    tokenHash?: StringFieldUpdateOperationsInput | string
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isUsed?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type PasswordResetTokenUncheckedUpdateWithoutUserInput = {
    id?: IntFieldUpdateOperationsInput | number
    tokenHash?: StringFieldUpdateOperationsInput | string
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isUsed?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type PasswordResetTokenUncheckedUpdateManyWithoutUserInput = {
    id?: IntFieldUpdateOperationsInput | number
    tokenHash?: StringFieldUpdateOperationsInput | string
    expiresAt?: DateTimeFieldUpdateOperationsInput | Date | string
    isUsed?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type BillPaymentCreateManyBillAccountInput = {
    id?: number
    uuid?: string
    amount: number
    paymentMethod: string
    status?: string
    orderId: string
    orderReference?: string | null
    errorCode?: string | null
    failureReason?: string | null
    paidUserId: number
    savedCardId?: number | null
    createdAt?: Date | string
  }

  export type CampaignCreateManyBillingAccountInput = {
    id?: number
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    senderMaskId: number
    mobileNumberListId?: bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: number | null
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type LowBalanceAlertCreateManyBillAccountInput = {
    id?: number
    uuid?: string
    userId: number
    thresholdLevel?: number
    isActive?: boolean
    balanceAtAlert: number
    chargedAmount?: number
    sentTo: string
    maskUsed: string
    serverRef?: number | null
    status?: string
    failureReason?: string | null
    createdAt?: Date | string
  }

  export type BillPaymentUpdateWithoutBillAccountInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    amount?: FloatFieldUpdateOperationsInput | number
    paymentMethod?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    orderId?: StringFieldUpdateOperationsInput | string
    orderReference?: NullableStringFieldUpdateOperationsInput | string | null
    errorCode?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    paidUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    savedCard?: SavedCardUpdateOneWithoutBillPaymentsNestedInput
  }

  export type BillPaymentUncheckedUpdateWithoutBillAccountInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    amount?: FloatFieldUpdateOperationsInput | number
    paymentMethod?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    orderId?: StringFieldUpdateOperationsInput | string
    orderReference?: NullableStringFieldUpdateOperationsInput | string | null
    errorCode?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    paidUserId?: IntFieldUpdateOperationsInput | number
    savedCardId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type BillPaymentUncheckedUpdateManyWithoutBillAccountInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    amount?: FloatFieldUpdateOperationsInput | number
    paymentMethod?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    orderId?: StringFieldUpdateOperationsInput | string
    orderReference?: NullableStringFieldUpdateOperationsInput | string | null
    errorCode?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    paidUserId?: IntFieldUpdateOperationsInput | number
    savedCardId?: NullableIntFieldUpdateOperationsInput | number | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type CampaignUpdateWithoutBillingAccountInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    senderMask?: SenderMaskUpdateOneRequiredWithoutCampaignsNestedInput
    mobileNumberList?: MobileNumberListUpdateOneWithoutCampaignsNestedInput
    template?: SMS_TemplateUpdateOneWithoutCampaignsNestedInput
    smsReports?: SMS_ReportUpdateManyWithoutCampaignNestedInput
    bulkServerRefs?: CampaignServerRefUpdateManyWithoutCampaignNestedInput
    recipients?: CampaignRecipientUpdateManyWithoutCampaignNestedInput
  }

  export type CampaignUncheckedUpdateWithoutBillingAccountInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    senderMaskId?: IntFieldUpdateOperationsInput | number
    mobileNumberListId?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: NullableIntFieldUpdateOperationsInput | number | null
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    smsReports?: SMS_ReportUncheckedUpdateManyWithoutCampaignNestedInput
    bulkServerRefs?: CampaignServerRefUncheckedUpdateManyWithoutCampaignNestedInput
    recipients?: CampaignRecipientUncheckedUpdateManyWithoutCampaignNestedInput
  }

  export type CampaignUncheckedUpdateManyWithoutBillingAccountInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    senderMaskId?: IntFieldUpdateOperationsInput | number
    mobileNumberListId?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: NullableIntFieldUpdateOperationsInput | number | null
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type LowBalanceAlertUpdateWithoutBillAccountInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    userId?: IntFieldUpdateOperationsInput | number
    thresholdLevel?: IntFieldUpdateOperationsInput | number
    isActive?: BoolFieldUpdateOperationsInput | boolean
    balanceAtAlert?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    sentTo?: StringFieldUpdateOperationsInput | string
    maskUsed?: StringFieldUpdateOperationsInput | string
    serverRef?: NullableIntFieldUpdateOperationsInput | number | null
    status?: StringFieldUpdateOperationsInput | string
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type LowBalanceAlertUncheckedUpdateWithoutBillAccountInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    userId?: IntFieldUpdateOperationsInput | number
    thresholdLevel?: IntFieldUpdateOperationsInput | number
    isActive?: BoolFieldUpdateOperationsInput | boolean
    balanceAtAlert?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    sentTo?: StringFieldUpdateOperationsInput | string
    maskUsed?: StringFieldUpdateOperationsInput | string
    serverRef?: NullableIntFieldUpdateOperationsInput | number | null
    status?: StringFieldUpdateOperationsInput | string
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type LowBalanceAlertUncheckedUpdateManyWithoutBillAccountInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    userId?: IntFieldUpdateOperationsInput | number
    thresholdLevel?: IntFieldUpdateOperationsInput | number
    isActive?: BoolFieldUpdateOperationsInput | boolean
    balanceAtAlert?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    sentTo?: StringFieldUpdateOperationsInput | string
    maskUsed?: StringFieldUpdateOperationsInput | string
    serverRef?: NullableIntFieldUpdateOperationsInput | number | null
    status?: StringFieldUpdateOperationsInput | string
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type BillPaymentCreateManySavedCardInput = {
    id?: number
    uuid?: string
    billingAccountId: number
    amount: number
    paymentMethod: string
    status?: string
    orderId: string
    orderReference?: string | null
    errorCode?: string | null
    failureReason?: string | null
    paidUserId: number
    createdAt?: Date | string
  }

  export type BillPaymentUpdateWithoutSavedCardInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    amount?: FloatFieldUpdateOperationsInput | number
    paymentMethod?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    orderId?: StringFieldUpdateOperationsInput | string
    orderReference?: NullableStringFieldUpdateOperationsInput | string | null
    errorCode?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    paidUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    billAccount?: BillAccountUpdateOneRequiredWithoutBillPaymentsNestedInput
  }

  export type BillPaymentUncheckedUpdateWithoutSavedCardInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    billingAccountId?: IntFieldUpdateOperationsInput | number
    amount?: FloatFieldUpdateOperationsInput | number
    paymentMethod?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    orderId?: StringFieldUpdateOperationsInput | string
    orderReference?: NullableStringFieldUpdateOperationsInput | string | null
    errorCode?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    paidUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type BillPaymentUncheckedUpdateManyWithoutSavedCardInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    billingAccountId?: IntFieldUpdateOperationsInput | number
    amount?: FloatFieldUpdateOperationsInput | number
    paymentMethod?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    orderId?: StringFieldUpdateOperationsInput | string
    orderReference?: NullableStringFieldUpdateOperationsInput | string | null
    errorCode?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    paidUserId?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type SMS_TemplateCreateManyDepartmentInput = {
    id?: number
    uuid?: string
    name: string
    text_content: string
    smsType?: string
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type DepartmentSenderMaskCreateManyDepartmentInput = {
    id?: number
    uuid?: string
    senderMaskId: number
    assignedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type SMS_TemplateUpdateWithoutDepartmentInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    text_content?: StringFieldUpdateOperationsInput | string
    smsType?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    campaigns?: CampaignUpdateManyWithoutTemplateNestedInput
  }

  export type SMS_TemplateUncheckedUpdateWithoutDepartmentInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    text_content?: StringFieldUpdateOperationsInput | string
    smsType?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    campaigns?: CampaignUncheckedUpdateManyWithoutTemplateNestedInput
  }

  export type SMS_TemplateUncheckedUpdateManyWithoutDepartmentInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    text_content?: StringFieldUpdateOperationsInput | string
    smsType?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type DepartmentSenderMaskUpdateWithoutDepartmentInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    assignedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    senderMask?: SenderMaskUpdateOneRequiredWithoutDepartmentsNestedInput
  }

  export type DepartmentSenderMaskUncheckedUpdateWithoutDepartmentInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    senderMaskId?: IntFieldUpdateOperationsInput | number
    assignedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type DepartmentSenderMaskUncheckedUpdateManyWithoutDepartmentInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    senderMaskId?: IntFieldUpdateOperationsInput | number
    assignedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type CampaignCreateManyTemplateInput = {
    id?: number
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    billingAccountId: number
    senderMaskId: number
    mobileNumberListId?: bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type CampaignUpdateWithoutTemplateInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    billingAccount?: BillAccountUpdateOneRequiredWithoutCampaignsNestedInput
    senderMask?: SenderMaskUpdateOneRequiredWithoutCampaignsNestedInput
    mobileNumberList?: MobileNumberListUpdateOneWithoutCampaignsNestedInput
    smsReports?: SMS_ReportUpdateManyWithoutCampaignNestedInput
    bulkServerRefs?: CampaignServerRefUpdateManyWithoutCampaignNestedInput
    recipients?: CampaignRecipientUpdateManyWithoutCampaignNestedInput
  }

  export type CampaignUncheckedUpdateWithoutTemplateInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    billingAccountId?: IntFieldUpdateOperationsInput | number
    senderMaskId?: IntFieldUpdateOperationsInput | number
    mobileNumberListId?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    smsReports?: SMS_ReportUncheckedUpdateManyWithoutCampaignNestedInput
    bulkServerRefs?: CampaignServerRefUncheckedUpdateManyWithoutCampaignNestedInput
    recipients?: CampaignRecipientUncheckedUpdateManyWithoutCampaignNestedInput
  }

  export type CampaignUncheckedUpdateManyWithoutTemplateInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    billingAccountId?: IntFieldUpdateOperationsInput | number
    senderMaskId?: IntFieldUpdateOperationsInput | number
    mobileNumberListId?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type CampaignCreateManySenderMaskInput = {
    id?: number
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    billingAccountId: number
    mobileNumberListId?: bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: number | null
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type DepartmentSenderMaskCreateManySenderMaskInput = {
    id?: number
    uuid?: string
    deptId: number
    assignedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type CampaignUpdateWithoutSenderMaskInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    billingAccount?: BillAccountUpdateOneRequiredWithoutCampaignsNestedInput
    mobileNumberList?: MobileNumberListUpdateOneWithoutCampaignsNestedInput
    template?: SMS_TemplateUpdateOneWithoutCampaignsNestedInput
    smsReports?: SMS_ReportUpdateManyWithoutCampaignNestedInput
    bulkServerRefs?: CampaignServerRefUpdateManyWithoutCampaignNestedInput
    recipients?: CampaignRecipientUpdateManyWithoutCampaignNestedInput
  }

  export type CampaignUncheckedUpdateWithoutSenderMaskInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    billingAccountId?: IntFieldUpdateOperationsInput | number
    mobileNumberListId?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: NullableIntFieldUpdateOperationsInput | number | null
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    smsReports?: SMS_ReportUncheckedUpdateManyWithoutCampaignNestedInput
    bulkServerRefs?: CampaignServerRefUncheckedUpdateManyWithoutCampaignNestedInput
    recipients?: CampaignRecipientUncheckedUpdateManyWithoutCampaignNestedInput
  }

  export type CampaignUncheckedUpdateManyWithoutSenderMaskInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    billingAccountId?: IntFieldUpdateOperationsInput | number
    mobileNumberListId?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: NullableIntFieldUpdateOperationsInput | number | null
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type DepartmentSenderMaskUpdateWithoutSenderMaskInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    assignedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    department?: DepartmentUpdateOneRequiredWithoutSenderMasksNestedInput
  }

  export type DepartmentSenderMaskUncheckedUpdateWithoutSenderMaskInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    deptId?: IntFieldUpdateOperationsInput | number
    assignedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type DepartmentSenderMaskUncheckedUpdateManyWithoutSenderMaskInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    deptId?: IntFieldUpdateOperationsInput | number
    assignedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type SMS_ReportCreateManyCampaignInput = {
    id?: number
    uuid?: string
    server_ref: bigint | number
    deliveryType: number
    number: string
    maskName: string
    messagePart: number
    chargedAmount?: number
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type CampaignServerRefCreateManyCampaignInput = {
    serverRef: bigint | number
  }

  export type CampaignRecipientCreateManyCampaignInput = {
    id?: bigint | number
    phoneNumber: string
    name?: string | null
    param1?: string | null
    param2?: string | null
    param3?: string | null
    param4?: string | null
    param5?: string | null
    param6?: string | null
    param7?: string | null
    param8?: string | null
    param9?: string | null
    param10?: string | null
  }

  export type SMS_ReportUpdateWithoutCampaignInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    server_ref?: BigIntFieldUpdateOperationsInput | bigint | number
    deliveryType?: IntFieldUpdateOperationsInput | number
    number?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    messagePart?: IntFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type SMS_ReportUncheckedUpdateWithoutCampaignInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    server_ref?: BigIntFieldUpdateOperationsInput | bigint | number
    deliveryType?: IntFieldUpdateOperationsInput | number
    number?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    messagePart?: IntFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type SMS_ReportUncheckedUpdateManyWithoutCampaignInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    server_ref?: BigIntFieldUpdateOperationsInput | bigint | number
    deliveryType?: IntFieldUpdateOperationsInput | number
    number?: StringFieldUpdateOperationsInput | string
    maskName?: StringFieldUpdateOperationsInput | string
    messagePart?: IntFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type CampaignServerRefUpdateWithoutCampaignInput = {
    serverRef?: BigIntFieldUpdateOperationsInput | bigint | number
  }

  export type CampaignServerRefUncheckedUpdateWithoutCampaignInput = {
    serverRef?: BigIntFieldUpdateOperationsInput | bigint | number
  }

  export type CampaignServerRefUncheckedUpdateManyWithoutCampaignInput = {
    serverRef?: BigIntFieldUpdateOperationsInput | bigint | number
  }

  export type CampaignRecipientUpdateWithoutCampaignInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    phoneNumber?: StringFieldUpdateOperationsInput | string
    name?: NullableStringFieldUpdateOperationsInput | string | null
    param1?: NullableStringFieldUpdateOperationsInput | string | null
    param2?: NullableStringFieldUpdateOperationsInput | string | null
    param3?: NullableStringFieldUpdateOperationsInput | string | null
    param4?: NullableStringFieldUpdateOperationsInput | string | null
    param5?: NullableStringFieldUpdateOperationsInput | string | null
    param6?: NullableStringFieldUpdateOperationsInput | string | null
    param7?: NullableStringFieldUpdateOperationsInput | string | null
    param8?: NullableStringFieldUpdateOperationsInput | string | null
    param9?: NullableStringFieldUpdateOperationsInput | string | null
    param10?: NullableStringFieldUpdateOperationsInput | string | null
  }

  export type CampaignRecipientUncheckedUpdateWithoutCampaignInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    phoneNumber?: StringFieldUpdateOperationsInput | string
    name?: NullableStringFieldUpdateOperationsInput | string | null
    param1?: NullableStringFieldUpdateOperationsInput | string | null
    param2?: NullableStringFieldUpdateOperationsInput | string | null
    param3?: NullableStringFieldUpdateOperationsInput | string | null
    param4?: NullableStringFieldUpdateOperationsInput | string | null
    param5?: NullableStringFieldUpdateOperationsInput | string | null
    param6?: NullableStringFieldUpdateOperationsInput | string | null
    param7?: NullableStringFieldUpdateOperationsInput | string | null
    param8?: NullableStringFieldUpdateOperationsInput | string | null
    param9?: NullableStringFieldUpdateOperationsInput | string | null
    param10?: NullableStringFieldUpdateOperationsInput | string | null
  }

  export type CampaignRecipientUncheckedUpdateManyWithoutCampaignInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    phoneNumber?: StringFieldUpdateOperationsInput | string
    name?: NullableStringFieldUpdateOperationsInput | string | null
    param1?: NullableStringFieldUpdateOperationsInput | string | null
    param2?: NullableStringFieldUpdateOperationsInput | string | null
    param3?: NullableStringFieldUpdateOperationsInput | string | null
    param4?: NullableStringFieldUpdateOperationsInput | string | null
    param5?: NullableStringFieldUpdateOperationsInput | string | null
    param6?: NullableStringFieldUpdateOperationsInput | string | null
    param7?: NullableStringFieldUpdateOperationsInput | string | null
    param8?: NullableStringFieldUpdateOperationsInput | string | null
    param9?: NullableStringFieldUpdateOperationsInput | string | null
    param10?: NullableStringFieldUpdateOperationsInput | string | null
  }

  export type CampaignCreateManyMobileNumberListInput = {
    id?: number
    uuid?: string
    name: string
    status?: string
    server_ref?: bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: boolean
    smsValidityPeriod?: number | null
    customMessage?: string | null
    scheduledDate: Date | string
    notificationNumber?: string | null
    createdByUserId?: number | null
    billingAccountId: number
    senderMaskId: number
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: number | null
    smsType?: string
    source?: string
    reservedAmount?: number
    chargedAmount?: number
    smsCostPerSegment?: number | null
    batchUuid?: string | null
    failureReason?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deletedAt?: Date | string | null
  }

  export type MobileNumberCreateManyListInput = {
    id?: bigint | number
    uuid?: string
    phoneNumber: string
    type: string
    is_blocked?: boolean
    deletedAt?: Date | string | null
    name?: string | null
    param1?: string | null
    param2?: string | null
    param3?: string | null
    param4?: string | null
    param5?: string | null
    param6?: string | null
    param7?: string | null
    param8?: string | null
    param9?: string | null
    param10?: string | null
  }

  export type CampaignUpdateWithoutMobileNumberListInput = {
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    billingAccount?: BillAccountUpdateOneRequiredWithoutCampaignsNestedInput
    senderMask?: SenderMaskUpdateOneRequiredWithoutCampaignsNestedInput
    template?: SMS_TemplateUpdateOneWithoutCampaignsNestedInput
    smsReports?: SMS_ReportUpdateManyWithoutCampaignNestedInput
    bulkServerRefs?: CampaignServerRefUpdateManyWithoutCampaignNestedInput
    recipients?: CampaignRecipientUpdateManyWithoutCampaignNestedInput
  }

  export type CampaignUncheckedUpdateWithoutMobileNumberListInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    billingAccountId?: IntFieldUpdateOperationsInput | number
    senderMaskId?: IntFieldUpdateOperationsInput | number
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: NullableIntFieldUpdateOperationsInput | number | null
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    smsReports?: SMS_ReportUncheckedUpdateManyWithoutCampaignNestedInput
    bulkServerRefs?: CampaignServerRefUncheckedUpdateManyWithoutCampaignNestedInput
    recipients?: CampaignRecipientUncheckedUpdateManyWithoutCampaignNestedInput
  }

  export type CampaignUncheckedUpdateManyWithoutMobileNumberListInput = {
    id?: IntFieldUpdateOperationsInput | number
    uuid?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    server_ref?: NullableBigIntFieldUpdateOperationsInput | bigint | number | null
    serverRefs?: NullableJsonNullValueInput | InputJsonValue
    isParameterized?: BoolFieldUpdateOperationsInput | boolean
    smsValidityPeriod?: NullableIntFieldUpdateOperationsInput | number | null
    customMessage?: NullableStringFieldUpdateOperationsInput | string | null
    scheduledDate?: DateTimeFieldUpdateOperationsInput | Date | string
    notificationNumber?: NullableStringFieldUpdateOperationsInput | string | null
    createdByUserId?: NullableIntFieldUpdateOperationsInput | number | null
    billingAccountId?: IntFieldUpdateOperationsInput | number
    senderMaskId?: IntFieldUpdateOperationsInput | number
    customBlacklist?: NullableJsonNullValueInput | InputJsonValue
    templateId?: NullableIntFieldUpdateOperationsInput | number | null
    smsType?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    reservedAmount?: FloatFieldUpdateOperationsInput | number
    chargedAmount?: FloatFieldUpdateOperationsInput | number
    smsCostPerSegment?: NullableFloatFieldUpdateOperationsInput | number | null
    batchUuid?: NullableStringFieldUpdateOperationsInput | string | null
    failureReason?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type MobileNumberUpdateWithoutListInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    phoneNumber?: StringFieldUpdateOperationsInput | string
    type?: StringFieldUpdateOperationsInput | string
    is_blocked?: BoolFieldUpdateOperationsInput | boolean
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    name?: NullableStringFieldUpdateOperationsInput | string | null
    param1?: NullableStringFieldUpdateOperationsInput | string | null
    param2?: NullableStringFieldUpdateOperationsInput | string | null
    param3?: NullableStringFieldUpdateOperationsInput | string | null
    param4?: NullableStringFieldUpdateOperationsInput | string | null
    param5?: NullableStringFieldUpdateOperationsInput | string | null
    param6?: NullableStringFieldUpdateOperationsInput | string | null
    param7?: NullableStringFieldUpdateOperationsInput | string | null
    param8?: NullableStringFieldUpdateOperationsInput | string | null
    param9?: NullableStringFieldUpdateOperationsInput | string | null
    param10?: NullableStringFieldUpdateOperationsInput | string | null
  }

  export type MobileNumberUncheckedUpdateWithoutListInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    phoneNumber?: StringFieldUpdateOperationsInput | string
    type?: StringFieldUpdateOperationsInput | string
    is_blocked?: BoolFieldUpdateOperationsInput | boolean
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    name?: NullableStringFieldUpdateOperationsInput | string | null
    param1?: NullableStringFieldUpdateOperationsInput | string | null
    param2?: NullableStringFieldUpdateOperationsInput | string | null
    param3?: NullableStringFieldUpdateOperationsInput | string | null
    param4?: NullableStringFieldUpdateOperationsInput | string | null
    param5?: NullableStringFieldUpdateOperationsInput | string | null
    param6?: NullableStringFieldUpdateOperationsInput | string | null
    param7?: NullableStringFieldUpdateOperationsInput | string | null
    param8?: NullableStringFieldUpdateOperationsInput | string | null
    param9?: NullableStringFieldUpdateOperationsInput | string | null
    param10?: NullableStringFieldUpdateOperationsInput | string | null
  }

  export type MobileNumberUncheckedUpdateManyWithoutListInput = {
    id?: BigIntFieldUpdateOperationsInput | bigint | number
    uuid?: StringFieldUpdateOperationsInput | string
    phoneNumber?: StringFieldUpdateOperationsInput | string
    type?: StringFieldUpdateOperationsInput | string
    is_blocked?: BoolFieldUpdateOperationsInput | boolean
    deletedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    name?: NullableStringFieldUpdateOperationsInput | string | null
    param1?: NullableStringFieldUpdateOperationsInput | string | null
    param2?: NullableStringFieldUpdateOperationsInput | string | null
    param3?: NullableStringFieldUpdateOperationsInput | string | null
    param4?: NullableStringFieldUpdateOperationsInput | string | null
    param5?: NullableStringFieldUpdateOperationsInput | string | null
    param6?: NullableStringFieldUpdateOperationsInput | string | null
    param7?: NullableStringFieldUpdateOperationsInput | string | null
    param8?: NullableStringFieldUpdateOperationsInput | string | null
    param9?: NullableStringFieldUpdateOperationsInput | string | null
    param10?: NullableStringFieldUpdateOperationsInput | string | null
  }



  /**
   * Batch Payload for updateMany & deleteMany & createMany
   */

  export type BatchPayload = {
    count: number
  }

  /**
   * DMMF
   */
  export const dmmf: runtime.BaseDMMF
}