
/* !!! This is code generated by Prisma. Do not edit directly. !!! */
/* eslint-disable */
// biome-ignore-all lint: generated file
// @ts-nocheck 
/*
 * This file exports the `OutboundCall` model and its related types.
 *
 * 🟢 You can import this file directly.
 */
import type * as runtime from "@prisma/client/runtime/client"
import type * as $Enums from "../enums.js"
import type * as Prisma from "../internal/prismaNamespace.js"

/**
 * Model OutboundCall
 * 
 */
export type OutboundCallModel = runtime.Types.Result.DefaultSelection<Prisma.$OutboundCallPayload>

export type AggregateOutboundCall = {
  _count: OutboundCallCountAggregateOutputType | null
  _min: OutboundCallMinAggregateOutputType | null
  _max: OutboundCallMaxAggregateOutputType | null
}

export type OutboundCallMinAggregateOutputType = {
  outboundId: string | null
  organizationId: string | null
  agentId: string | null
  userId: string | null
  campaignId: string | null
  scheduledAt: Date | null
  callLogId: string | null
  phoneNumber: string | null
  fromNumber: string | null
  firstMessage: string | null
  systemPrompt: string | null
  mode: $Enums.OutboundCallMode | null
  status: $Enums.CallStatus | null
  createdAt: Date | null
  updatedAt: Date | null
}

export type OutboundCallMaxAggregateOutputType = {
  outboundId: string | null
  organizationId: string | null
  agentId: string | null
  userId: string | null
  campaignId: string | null
  scheduledAt: Date | null
  callLogId: string | null
  phoneNumber: string | null
  fromNumber: string | null
  firstMessage: string | null
  systemPrompt: string | null
  mode: $Enums.OutboundCallMode | null
  status: $Enums.CallStatus | null
  createdAt: Date | null
  updatedAt: Date | null
}

export type OutboundCallCountAggregateOutputType = {
  outboundId: number
  organizationId: number
  agentId: number
  userId: number
  campaignId: number
  scheduledAt: number
  callLogId: number
  phoneNumber: number
  fromNumber: number
  firstMessage: number
  systemPrompt: number
  optionalData: number
  mode: number
  status: number
  createdAt: number
  updatedAt: number
  _all: number
}


export type OutboundCallMinAggregateInputType = {
  outboundId?: true
  organizationId?: true
  agentId?: true
  userId?: true
  campaignId?: true
  scheduledAt?: true
  callLogId?: true
  phoneNumber?: true
  fromNumber?: true
  firstMessage?: true
  systemPrompt?: true
  mode?: true
  status?: true
  createdAt?: true
  updatedAt?: true
}

export type OutboundCallMaxAggregateInputType = {
  outboundId?: true
  organizationId?: true
  agentId?: true
  userId?: true
  campaignId?: true
  scheduledAt?: true
  callLogId?: true
  phoneNumber?: true
  fromNumber?: true
  firstMessage?: true
  systemPrompt?: true
  mode?: true
  status?: true
  createdAt?: true
  updatedAt?: true
}

export type OutboundCallCountAggregateInputType = {
  outboundId?: true
  organizationId?: true
  agentId?: true
  userId?: true
  campaignId?: true
  scheduledAt?: true
  callLogId?: true
  phoneNumber?: true
  fromNumber?: true
  firstMessage?: true
  systemPrompt?: true
  optionalData?: true
  mode?: true
  status?: true
  createdAt?: true
  updatedAt?: true
  _all?: true
}

export type OutboundCallAggregateArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Filter which OutboundCall to aggregate.
   */
  where?: Prisma.OutboundCallWhereInput
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
   * 
   * Determine the order of OutboundCalls to fetch.
   */
  orderBy?: Prisma.OutboundCallOrderByWithRelationInput | Prisma.OutboundCallOrderByWithRelationInput[]
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
   * 
   * Sets the start position
   */
  cursor?: Prisma.OutboundCallWhereUniqueInput
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
   * 
   * Take `±n` OutboundCalls 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` OutboundCalls.
   */
  skip?: number
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
   * 
   * Count returned OutboundCalls
  **/
  _count?: true | OutboundCallCountAggregateInputType
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
   * 
   * Select which fields to find the minimum value
  **/
  _min?: OutboundCallMinAggregateInputType
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
   * 
   * Select which fields to find the maximum value
  **/
  _max?: OutboundCallMaxAggregateInputType
}

export type GetOutboundCallAggregateType<T extends OutboundCallAggregateArgs> = {
      [P in keyof T & keyof AggregateOutboundCall]: P extends '_count' | 'count'
    ? T[P] extends true
      ? number
      : Prisma.GetScalarType<T[P], AggregateOutboundCall[P]>
    : Prisma.GetScalarType<T[P], AggregateOutboundCall[P]>
}




export type OutboundCallGroupByArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  where?: Prisma.OutboundCallWhereInput
  orderBy?: Prisma.OutboundCallOrderByWithAggregationInput | Prisma.OutboundCallOrderByWithAggregationInput[]
  by: Prisma.OutboundCallScalarFieldEnum[] | Prisma.OutboundCallScalarFieldEnum
  having?: Prisma.OutboundCallScalarWhereWithAggregatesInput
  take?: number
  skip?: number
  _count?: OutboundCallCountAggregateInputType | true
  _min?: OutboundCallMinAggregateInputType
  _max?: OutboundCallMaxAggregateInputType
}

export type OutboundCallGroupByOutputType = {
  outboundId: string
  organizationId: string
  agentId: string | null
  userId: string | null
  campaignId: string | null
  scheduledAt: Date | null
  callLogId: string | null
  phoneNumber: string
  fromNumber: string
  firstMessage: string | null
  systemPrompt: string | null
  optionalData: runtime.JsonValue | null
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt: Date
  updatedAt: Date
  _count: OutboundCallCountAggregateOutputType | null
  _min: OutboundCallMinAggregateOutputType | null
  _max: OutboundCallMaxAggregateOutputType | null
}

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



export type OutboundCallWhereInput = {
  AND?: Prisma.OutboundCallWhereInput | Prisma.OutboundCallWhereInput[]
  OR?: Prisma.OutboundCallWhereInput[]
  NOT?: Prisma.OutboundCallWhereInput | Prisma.OutboundCallWhereInput[]
  outboundId?: Prisma.StringFilter<"OutboundCall"> | string
  organizationId?: Prisma.StringFilter<"OutboundCall"> | string
  agentId?: Prisma.StringNullableFilter<"OutboundCall"> | string | null
  userId?: Prisma.StringNullableFilter<"OutboundCall"> | string | null
  campaignId?: Prisma.StringNullableFilter<"OutboundCall"> | string | null
  scheduledAt?: Prisma.DateTimeNullableFilter<"OutboundCall"> | Date | string | null
  callLogId?: Prisma.StringNullableFilter<"OutboundCall"> | string | null
  phoneNumber?: Prisma.StringFilter<"OutboundCall"> | string
  fromNumber?: Prisma.StringFilter<"OutboundCall"> | string
  firstMessage?: Prisma.StringNullableFilter<"OutboundCall"> | string | null
  systemPrompt?: Prisma.StringNullableFilter<"OutboundCall"> | string | null
  optionalData?: Prisma.JsonNullableFilter<"OutboundCall">
  mode?: Prisma.EnumOutboundCallModeFilter<"OutboundCall"> | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFilter<"OutboundCall"> | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFilter<"OutboundCall"> | Date | string
  updatedAt?: Prisma.DateTimeFilter<"OutboundCall"> | Date | string
  organization?: Prisma.XOR<Prisma.OrganizationScalarRelationFilter, Prisma.OrganizationWhereInput>
  agent?: Prisma.XOR<Prisma.AgentNullableScalarRelationFilter, Prisma.AgentWhereInput> | null
  user?: Prisma.XOR<Prisma.UserNullableScalarRelationFilter, Prisma.UserWhereInput> | null
  campaign?: Prisma.XOR<Prisma.CampaignNullableScalarRelationFilter, Prisma.CampaignWhereInput> | null
  callLog?: Prisma.XOR<Prisma.CallLogNullableScalarRelationFilter, Prisma.CallLogWhereInput> | null
}

export type OutboundCallOrderByWithRelationInput = {
  outboundId?: Prisma.SortOrder
  organizationId?: Prisma.SortOrder
  agentId?: Prisma.SortOrderInput | Prisma.SortOrder
  userId?: Prisma.SortOrderInput | Prisma.SortOrder
  campaignId?: Prisma.SortOrderInput | Prisma.SortOrder
  scheduledAt?: Prisma.SortOrderInput | Prisma.SortOrder
  callLogId?: Prisma.SortOrderInput | Prisma.SortOrder
  phoneNumber?: Prisma.SortOrder
  fromNumber?: Prisma.SortOrder
  firstMessage?: Prisma.SortOrderInput | Prisma.SortOrder
  systemPrompt?: Prisma.SortOrderInput | Prisma.SortOrder
  optionalData?: Prisma.SortOrderInput | Prisma.SortOrder
  mode?: Prisma.SortOrder
  status?: Prisma.SortOrder
  createdAt?: Prisma.SortOrder
  updatedAt?: Prisma.SortOrder
  organization?: Prisma.OrganizationOrderByWithRelationInput
  agent?: Prisma.AgentOrderByWithRelationInput
  user?: Prisma.UserOrderByWithRelationInput
  campaign?: Prisma.CampaignOrderByWithRelationInput
  callLog?: Prisma.CallLogOrderByWithRelationInput
}

export type OutboundCallWhereUniqueInput = Prisma.AtLeast<{
  outboundId?: string
  callLogId?: string
  AND?: Prisma.OutboundCallWhereInput | Prisma.OutboundCallWhereInput[]
  OR?: Prisma.OutboundCallWhereInput[]
  NOT?: Prisma.OutboundCallWhereInput | Prisma.OutboundCallWhereInput[]
  organizationId?: Prisma.StringFilter<"OutboundCall"> | string
  agentId?: Prisma.StringNullableFilter<"OutboundCall"> | string | null
  userId?: Prisma.StringNullableFilter<"OutboundCall"> | string | null
  campaignId?: Prisma.StringNullableFilter<"OutboundCall"> | string | null
  scheduledAt?: Prisma.DateTimeNullableFilter<"OutboundCall"> | Date | string | null
  phoneNumber?: Prisma.StringFilter<"OutboundCall"> | string
  fromNumber?: Prisma.StringFilter<"OutboundCall"> | string
  firstMessage?: Prisma.StringNullableFilter<"OutboundCall"> | string | null
  systemPrompt?: Prisma.StringNullableFilter<"OutboundCall"> | string | null
  optionalData?: Prisma.JsonNullableFilter<"OutboundCall">
  mode?: Prisma.EnumOutboundCallModeFilter<"OutboundCall"> | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFilter<"OutboundCall"> | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFilter<"OutboundCall"> | Date | string
  updatedAt?: Prisma.DateTimeFilter<"OutboundCall"> | Date | string
  organization?: Prisma.XOR<Prisma.OrganizationScalarRelationFilter, Prisma.OrganizationWhereInput>
  agent?: Prisma.XOR<Prisma.AgentNullableScalarRelationFilter, Prisma.AgentWhereInput> | null
  user?: Prisma.XOR<Prisma.UserNullableScalarRelationFilter, Prisma.UserWhereInput> | null
  campaign?: Prisma.XOR<Prisma.CampaignNullableScalarRelationFilter, Prisma.CampaignWhereInput> | null
  callLog?: Prisma.XOR<Prisma.CallLogNullableScalarRelationFilter, Prisma.CallLogWhereInput> | null
}, "outboundId" | "callLogId">

export type OutboundCallOrderByWithAggregationInput = {
  outboundId?: Prisma.SortOrder
  organizationId?: Prisma.SortOrder
  agentId?: Prisma.SortOrderInput | Prisma.SortOrder
  userId?: Prisma.SortOrderInput | Prisma.SortOrder
  campaignId?: Prisma.SortOrderInput | Prisma.SortOrder
  scheduledAt?: Prisma.SortOrderInput | Prisma.SortOrder
  callLogId?: Prisma.SortOrderInput | Prisma.SortOrder
  phoneNumber?: Prisma.SortOrder
  fromNumber?: Prisma.SortOrder
  firstMessage?: Prisma.SortOrderInput | Prisma.SortOrder
  systemPrompt?: Prisma.SortOrderInput | Prisma.SortOrder
  optionalData?: Prisma.SortOrderInput | Prisma.SortOrder
  mode?: Prisma.SortOrder
  status?: Prisma.SortOrder
  createdAt?: Prisma.SortOrder
  updatedAt?: Prisma.SortOrder
  _count?: Prisma.OutboundCallCountOrderByAggregateInput
  _max?: Prisma.OutboundCallMaxOrderByAggregateInput
  _min?: Prisma.OutboundCallMinOrderByAggregateInput
}

export type OutboundCallScalarWhereWithAggregatesInput = {
  AND?: Prisma.OutboundCallScalarWhereWithAggregatesInput | Prisma.OutboundCallScalarWhereWithAggregatesInput[]
  OR?: Prisma.OutboundCallScalarWhereWithAggregatesInput[]
  NOT?: Prisma.OutboundCallScalarWhereWithAggregatesInput | Prisma.OutboundCallScalarWhereWithAggregatesInput[]
  outboundId?: Prisma.StringWithAggregatesFilter<"OutboundCall"> | string
  organizationId?: Prisma.StringWithAggregatesFilter<"OutboundCall"> | string
  agentId?: Prisma.StringNullableWithAggregatesFilter<"OutboundCall"> | string | null
  userId?: Prisma.StringNullableWithAggregatesFilter<"OutboundCall"> | string | null
  campaignId?: Prisma.StringNullableWithAggregatesFilter<"OutboundCall"> | string | null
  scheduledAt?: Prisma.DateTimeNullableWithAggregatesFilter<"OutboundCall"> | Date | string | null
  callLogId?: Prisma.StringNullableWithAggregatesFilter<"OutboundCall"> | string | null
  phoneNumber?: Prisma.StringWithAggregatesFilter<"OutboundCall"> | string
  fromNumber?: Prisma.StringWithAggregatesFilter<"OutboundCall"> | string
  firstMessage?: Prisma.StringNullableWithAggregatesFilter<"OutboundCall"> | string | null
  systemPrompt?: Prisma.StringNullableWithAggregatesFilter<"OutboundCall"> | string | null
  optionalData?: Prisma.JsonNullableWithAggregatesFilter<"OutboundCall">
  mode?: Prisma.EnumOutboundCallModeWithAggregatesFilter<"OutboundCall"> | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusWithAggregatesFilter<"OutboundCall"> | $Enums.CallStatus
  createdAt?: Prisma.DateTimeWithAggregatesFilter<"OutboundCall"> | Date | string
  updatedAt?: Prisma.DateTimeWithAggregatesFilter<"OutboundCall"> | Date | string
}

export type OutboundCallCreateInput = {
  outboundId?: string
  scheduledAt?: Date | string | null
  phoneNumber: string
  fromNumber: string
  firstMessage?: string | null
  systemPrompt?: string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt?: Date | string
  updatedAt?: Date | string
  organization: Prisma.OrganizationCreateNestedOneWithoutOutboundCallsInput
  agent?: Prisma.AgentCreateNestedOneWithoutOutboundCallsInput
  user?: Prisma.UserCreateNestedOneWithoutOutboundCallsInput
  campaign?: Prisma.CampaignCreateNestedOneWithoutOutboundCallsInput
  callLog?: Prisma.CallLogCreateNestedOneWithoutOutboundInput
}

export type OutboundCallUncheckedCreateInput = {
  outboundId?: string
  organizationId: string
  agentId?: string | null
  userId?: string | null
  campaignId?: string | null
  scheduledAt?: Date | string | null
  callLogId?: string | null
  phoneNumber: string
  fromNumber: string
  firstMessage?: string | null
  systemPrompt?: string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt?: Date | string
  updatedAt?: Date | string
}

export type OutboundCallUpdateInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  organization?: Prisma.OrganizationUpdateOneRequiredWithoutOutboundCallsNestedInput
  agent?: Prisma.AgentUpdateOneWithoutOutboundCallsNestedInput
  user?: Prisma.UserUpdateOneWithoutOutboundCallsNestedInput
  campaign?: Prisma.CampaignUpdateOneWithoutOutboundCallsNestedInput
  callLog?: Prisma.CallLogUpdateOneWithoutOutboundNestedInput
}

export type OutboundCallUncheckedUpdateInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  organizationId?: Prisma.StringFieldUpdateOperationsInput | string
  agentId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  userId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  campaignId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  callLogId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
}

export type OutboundCallCreateManyInput = {
  outboundId?: string
  organizationId: string
  agentId?: string | null
  userId?: string | null
  campaignId?: string | null
  scheduledAt?: Date | string | null
  callLogId?: string | null
  phoneNumber: string
  fromNumber: string
  firstMessage?: string | null
  systemPrompt?: string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt?: Date | string
  updatedAt?: Date | string
}

export type OutboundCallUpdateManyMutationInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
}

export type OutboundCallUncheckedUpdateManyInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  organizationId?: Prisma.StringFieldUpdateOperationsInput | string
  agentId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  userId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  campaignId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  callLogId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
}

export type OutboundCallListRelationFilter = {
  every?: Prisma.OutboundCallWhereInput
  some?: Prisma.OutboundCallWhereInput
  none?: Prisma.OutboundCallWhereInput
}

export type OutboundCallOrderByRelationAggregateInput = {
  _count?: Prisma.SortOrder
}

export type OutboundCallNullableScalarRelationFilter = {
  is?: Prisma.OutboundCallWhereInput | null
  isNot?: Prisma.OutboundCallWhereInput | null
}

export type OutboundCallCountOrderByAggregateInput = {
  outboundId?: Prisma.SortOrder
  organizationId?: Prisma.SortOrder
  agentId?: Prisma.SortOrder
  userId?: Prisma.SortOrder
  campaignId?: Prisma.SortOrder
  scheduledAt?: Prisma.SortOrder
  callLogId?: Prisma.SortOrder
  phoneNumber?: Prisma.SortOrder
  fromNumber?: Prisma.SortOrder
  firstMessage?: Prisma.SortOrder
  systemPrompt?: Prisma.SortOrder
  optionalData?: Prisma.SortOrder
  mode?: Prisma.SortOrder
  status?: Prisma.SortOrder
  createdAt?: Prisma.SortOrder
  updatedAt?: Prisma.SortOrder
}

export type OutboundCallMaxOrderByAggregateInput = {
  outboundId?: Prisma.SortOrder
  organizationId?: Prisma.SortOrder
  agentId?: Prisma.SortOrder
  userId?: Prisma.SortOrder
  campaignId?: Prisma.SortOrder
  scheduledAt?: Prisma.SortOrder
  callLogId?: Prisma.SortOrder
  phoneNumber?: Prisma.SortOrder
  fromNumber?: Prisma.SortOrder
  firstMessage?: Prisma.SortOrder
  systemPrompt?: Prisma.SortOrder
  mode?: Prisma.SortOrder
  status?: Prisma.SortOrder
  createdAt?: Prisma.SortOrder
  updatedAt?: Prisma.SortOrder
}

export type OutboundCallMinOrderByAggregateInput = {
  outboundId?: Prisma.SortOrder
  organizationId?: Prisma.SortOrder
  agentId?: Prisma.SortOrder
  userId?: Prisma.SortOrder
  campaignId?: Prisma.SortOrder
  scheduledAt?: Prisma.SortOrder
  callLogId?: Prisma.SortOrder
  phoneNumber?: Prisma.SortOrder
  fromNumber?: Prisma.SortOrder
  firstMessage?: Prisma.SortOrder
  systemPrompt?: Prisma.SortOrder
  mode?: Prisma.SortOrder
  status?: Prisma.SortOrder
  createdAt?: Prisma.SortOrder
  updatedAt?: Prisma.SortOrder
}

export type OutboundCallCreateNestedManyWithoutUserInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutUserInput, Prisma.OutboundCallUncheckedCreateWithoutUserInput> | Prisma.OutboundCallCreateWithoutUserInput[] | Prisma.OutboundCallUncheckedCreateWithoutUserInput[]
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutUserInput | Prisma.OutboundCallCreateOrConnectWithoutUserInput[]
  createMany?: Prisma.OutboundCallCreateManyUserInputEnvelope
  connect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
}

export type OutboundCallUncheckedCreateNestedManyWithoutUserInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutUserInput, Prisma.OutboundCallUncheckedCreateWithoutUserInput> | Prisma.OutboundCallCreateWithoutUserInput[] | Prisma.OutboundCallUncheckedCreateWithoutUserInput[]
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutUserInput | Prisma.OutboundCallCreateOrConnectWithoutUserInput[]
  createMany?: Prisma.OutboundCallCreateManyUserInputEnvelope
  connect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
}

export type OutboundCallUpdateManyWithoutUserNestedInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutUserInput, Prisma.OutboundCallUncheckedCreateWithoutUserInput> | Prisma.OutboundCallCreateWithoutUserInput[] | Prisma.OutboundCallUncheckedCreateWithoutUserInput[]
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutUserInput | Prisma.OutboundCallCreateOrConnectWithoutUserInput[]
  upsert?: Prisma.OutboundCallUpsertWithWhereUniqueWithoutUserInput | Prisma.OutboundCallUpsertWithWhereUniqueWithoutUserInput[]
  createMany?: Prisma.OutboundCallCreateManyUserInputEnvelope
  set?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  disconnect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  delete?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  connect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  update?: Prisma.OutboundCallUpdateWithWhereUniqueWithoutUserInput | Prisma.OutboundCallUpdateWithWhereUniqueWithoutUserInput[]
  updateMany?: Prisma.OutboundCallUpdateManyWithWhereWithoutUserInput | Prisma.OutboundCallUpdateManyWithWhereWithoutUserInput[]
  deleteMany?: Prisma.OutboundCallScalarWhereInput | Prisma.OutboundCallScalarWhereInput[]
}

export type OutboundCallUncheckedUpdateManyWithoutUserNestedInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutUserInput, Prisma.OutboundCallUncheckedCreateWithoutUserInput> | Prisma.OutboundCallCreateWithoutUserInput[] | Prisma.OutboundCallUncheckedCreateWithoutUserInput[]
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutUserInput | Prisma.OutboundCallCreateOrConnectWithoutUserInput[]
  upsert?: Prisma.OutboundCallUpsertWithWhereUniqueWithoutUserInput | Prisma.OutboundCallUpsertWithWhereUniqueWithoutUserInput[]
  createMany?: Prisma.OutboundCallCreateManyUserInputEnvelope
  set?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  disconnect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  delete?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  connect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  update?: Prisma.OutboundCallUpdateWithWhereUniqueWithoutUserInput | Prisma.OutboundCallUpdateWithWhereUniqueWithoutUserInput[]
  updateMany?: Prisma.OutboundCallUpdateManyWithWhereWithoutUserInput | Prisma.OutboundCallUpdateManyWithWhereWithoutUserInput[]
  deleteMany?: Prisma.OutboundCallScalarWhereInput | Prisma.OutboundCallScalarWhereInput[]
}

export type OutboundCallCreateNestedManyWithoutOrganizationInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutOrganizationInput, Prisma.OutboundCallUncheckedCreateWithoutOrganizationInput> | Prisma.OutboundCallCreateWithoutOrganizationInput[] | Prisma.OutboundCallUncheckedCreateWithoutOrganizationInput[]
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutOrganizationInput | Prisma.OutboundCallCreateOrConnectWithoutOrganizationInput[]
  createMany?: Prisma.OutboundCallCreateManyOrganizationInputEnvelope
  connect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
}

export type OutboundCallUncheckedCreateNestedManyWithoutOrganizationInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutOrganizationInput, Prisma.OutboundCallUncheckedCreateWithoutOrganizationInput> | Prisma.OutboundCallCreateWithoutOrganizationInput[] | Prisma.OutboundCallUncheckedCreateWithoutOrganizationInput[]
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutOrganizationInput | Prisma.OutboundCallCreateOrConnectWithoutOrganizationInput[]
  createMany?: Prisma.OutboundCallCreateManyOrganizationInputEnvelope
  connect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
}

export type OutboundCallUpdateManyWithoutOrganizationNestedInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutOrganizationInput, Prisma.OutboundCallUncheckedCreateWithoutOrganizationInput> | Prisma.OutboundCallCreateWithoutOrganizationInput[] | Prisma.OutboundCallUncheckedCreateWithoutOrganizationInput[]
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutOrganizationInput | Prisma.OutboundCallCreateOrConnectWithoutOrganizationInput[]
  upsert?: Prisma.OutboundCallUpsertWithWhereUniqueWithoutOrganizationInput | Prisma.OutboundCallUpsertWithWhereUniqueWithoutOrganizationInput[]
  createMany?: Prisma.OutboundCallCreateManyOrganizationInputEnvelope
  set?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  disconnect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  delete?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  connect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  update?: Prisma.OutboundCallUpdateWithWhereUniqueWithoutOrganizationInput | Prisma.OutboundCallUpdateWithWhereUniqueWithoutOrganizationInput[]
  updateMany?: Prisma.OutboundCallUpdateManyWithWhereWithoutOrganizationInput | Prisma.OutboundCallUpdateManyWithWhereWithoutOrganizationInput[]
  deleteMany?: Prisma.OutboundCallScalarWhereInput | Prisma.OutboundCallScalarWhereInput[]
}

export type OutboundCallUncheckedUpdateManyWithoutOrganizationNestedInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutOrganizationInput, Prisma.OutboundCallUncheckedCreateWithoutOrganizationInput> | Prisma.OutboundCallCreateWithoutOrganizationInput[] | Prisma.OutboundCallUncheckedCreateWithoutOrganizationInput[]
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutOrganizationInput | Prisma.OutboundCallCreateOrConnectWithoutOrganizationInput[]
  upsert?: Prisma.OutboundCallUpsertWithWhereUniqueWithoutOrganizationInput | Prisma.OutboundCallUpsertWithWhereUniqueWithoutOrganizationInput[]
  createMany?: Prisma.OutboundCallCreateManyOrganizationInputEnvelope
  set?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  disconnect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  delete?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  connect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  update?: Prisma.OutboundCallUpdateWithWhereUniqueWithoutOrganizationInput | Prisma.OutboundCallUpdateWithWhereUniqueWithoutOrganizationInput[]
  updateMany?: Prisma.OutboundCallUpdateManyWithWhereWithoutOrganizationInput | Prisma.OutboundCallUpdateManyWithWhereWithoutOrganizationInput[]
  deleteMany?: Prisma.OutboundCallScalarWhereInput | Prisma.OutboundCallScalarWhereInput[]
}

export type OutboundCallCreateNestedManyWithoutAgentInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutAgentInput, Prisma.OutboundCallUncheckedCreateWithoutAgentInput> | Prisma.OutboundCallCreateWithoutAgentInput[] | Prisma.OutboundCallUncheckedCreateWithoutAgentInput[]
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutAgentInput | Prisma.OutboundCallCreateOrConnectWithoutAgentInput[]
  createMany?: Prisma.OutboundCallCreateManyAgentInputEnvelope
  connect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
}

export type OutboundCallUncheckedCreateNestedManyWithoutAgentInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutAgentInput, Prisma.OutboundCallUncheckedCreateWithoutAgentInput> | Prisma.OutboundCallCreateWithoutAgentInput[] | Prisma.OutboundCallUncheckedCreateWithoutAgentInput[]
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutAgentInput | Prisma.OutboundCallCreateOrConnectWithoutAgentInput[]
  createMany?: Prisma.OutboundCallCreateManyAgentInputEnvelope
  connect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
}

export type OutboundCallUpdateManyWithoutAgentNestedInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutAgentInput, Prisma.OutboundCallUncheckedCreateWithoutAgentInput> | Prisma.OutboundCallCreateWithoutAgentInput[] | Prisma.OutboundCallUncheckedCreateWithoutAgentInput[]
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutAgentInput | Prisma.OutboundCallCreateOrConnectWithoutAgentInput[]
  upsert?: Prisma.OutboundCallUpsertWithWhereUniqueWithoutAgentInput | Prisma.OutboundCallUpsertWithWhereUniqueWithoutAgentInput[]
  createMany?: Prisma.OutboundCallCreateManyAgentInputEnvelope
  set?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  disconnect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  delete?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  connect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  update?: Prisma.OutboundCallUpdateWithWhereUniqueWithoutAgentInput | Prisma.OutboundCallUpdateWithWhereUniqueWithoutAgentInput[]
  updateMany?: Prisma.OutboundCallUpdateManyWithWhereWithoutAgentInput | Prisma.OutboundCallUpdateManyWithWhereWithoutAgentInput[]
  deleteMany?: Prisma.OutboundCallScalarWhereInput | Prisma.OutboundCallScalarWhereInput[]
}

export type OutboundCallUncheckedUpdateManyWithoutAgentNestedInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutAgentInput, Prisma.OutboundCallUncheckedCreateWithoutAgentInput> | Prisma.OutboundCallCreateWithoutAgentInput[] | Prisma.OutboundCallUncheckedCreateWithoutAgentInput[]
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutAgentInput | Prisma.OutboundCallCreateOrConnectWithoutAgentInput[]
  upsert?: Prisma.OutboundCallUpsertWithWhereUniqueWithoutAgentInput | Prisma.OutboundCallUpsertWithWhereUniqueWithoutAgentInput[]
  createMany?: Prisma.OutboundCallCreateManyAgentInputEnvelope
  set?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  disconnect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  delete?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  connect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  update?: Prisma.OutboundCallUpdateWithWhereUniqueWithoutAgentInput | Prisma.OutboundCallUpdateWithWhereUniqueWithoutAgentInput[]
  updateMany?: Prisma.OutboundCallUpdateManyWithWhereWithoutAgentInput | Prisma.OutboundCallUpdateManyWithWhereWithoutAgentInput[]
  deleteMany?: Prisma.OutboundCallScalarWhereInput | Prisma.OutboundCallScalarWhereInput[]
}

export type OutboundCallCreateNestedOneWithoutCallLogInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutCallLogInput, Prisma.OutboundCallUncheckedCreateWithoutCallLogInput>
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutCallLogInput
  connect?: Prisma.OutboundCallWhereUniqueInput
}

export type OutboundCallUncheckedCreateNestedOneWithoutCallLogInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutCallLogInput, Prisma.OutboundCallUncheckedCreateWithoutCallLogInput>
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutCallLogInput
  connect?: Prisma.OutboundCallWhereUniqueInput
}

export type OutboundCallUpdateOneWithoutCallLogNestedInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutCallLogInput, Prisma.OutboundCallUncheckedCreateWithoutCallLogInput>
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutCallLogInput
  upsert?: Prisma.OutboundCallUpsertWithoutCallLogInput
  disconnect?: Prisma.OutboundCallWhereInput | boolean
  delete?: Prisma.OutboundCallWhereInput | boolean
  connect?: Prisma.OutboundCallWhereUniqueInput
  update?: Prisma.XOR<Prisma.XOR<Prisma.OutboundCallUpdateToOneWithWhereWithoutCallLogInput, Prisma.OutboundCallUpdateWithoutCallLogInput>, Prisma.OutboundCallUncheckedUpdateWithoutCallLogInput>
}

export type OutboundCallUncheckedUpdateOneWithoutCallLogNestedInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutCallLogInput, Prisma.OutboundCallUncheckedCreateWithoutCallLogInput>
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutCallLogInput
  upsert?: Prisma.OutboundCallUpsertWithoutCallLogInput
  disconnect?: Prisma.OutboundCallWhereInput | boolean
  delete?: Prisma.OutboundCallWhereInput | boolean
  connect?: Prisma.OutboundCallWhereUniqueInput
  update?: Prisma.XOR<Prisma.XOR<Prisma.OutboundCallUpdateToOneWithWhereWithoutCallLogInput, Prisma.OutboundCallUpdateWithoutCallLogInput>, Prisma.OutboundCallUncheckedUpdateWithoutCallLogInput>
}

export type EnumOutboundCallModeFieldUpdateOperationsInput = {
  set?: $Enums.OutboundCallMode
}

export type OutboundCallCreateNestedManyWithoutCampaignInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutCampaignInput, Prisma.OutboundCallUncheckedCreateWithoutCampaignInput> | Prisma.OutboundCallCreateWithoutCampaignInput[] | Prisma.OutboundCallUncheckedCreateWithoutCampaignInput[]
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutCampaignInput | Prisma.OutboundCallCreateOrConnectWithoutCampaignInput[]
  createMany?: Prisma.OutboundCallCreateManyCampaignInputEnvelope
  connect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
}

export type OutboundCallUncheckedCreateNestedManyWithoutCampaignInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutCampaignInput, Prisma.OutboundCallUncheckedCreateWithoutCampaignInput> | Prisma.OutboundCallCreateWithoutCampaignInput[] | Prisma.OutboundCallUncheckedCreateWithoutCampaignInput[]
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutCampaignInput | Prisma.OutboundCallCreateOrConnectWithoutCampaignInput[]
  createMany?: Prisma.OutboundCallCreateManyCampaignInputEnvelope
  connect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
}

export type OutboundCallUpdateManyWithoutCampaignNestedInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutCampaignInput, Prisma.OutboundCallUncheckedCreateWithoutCampaignInput> | Prisma.OutboundCallCreateWithoutCampaignInput[] | Prisma.OutboundCallUncheckedCreateWithoutCampaignInput[]
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutCampaignInput | Prisma.OutboundCallCreateOrConnectWithoutCampaignInput[]
  upsert?: Prisma.OutboundCallUpsertWithWhereUniqueWithoutCampaignInput | Prisma.OutboundCallUpsertWithWhereUniqueWithoutCampaignInput[]
  createMany?: Prisma.OutboundCallCreateManyCampaignInputEnvelope
  set?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  disconnect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  delete?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  connect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  update?: Prisma.OutboundCallUpdateWithWhereUniqueWithoutCampaignInput | Prisma.OutboundCallUpdateWithWhereUniqueWithoutCampaignInput[]
  updateMany?: Prisma.OutboundCallUpdateManyWithWhereWithoutCampaignInput | Prisma.OutboundCallUpdateManyWithWhereWithoutCampaignInput[]
  deleteMany?: Prisma.OutboundCallScalarWhereInput | Prisma.OutboundCallScalarWhereInput[]
}

export type OutboundCallUncheckedUpdateManyWithoutCampaignNestedInput = {
  create?: Prisma.XOR<Prisma.OutboundCallCreateWithoutCampaignInput, Prisma.OutboundCallUncheckedCreateWithoutCampaignInput> | Prisma.OutboundCallCreateWithoutCampaignInput[] | Prisma.OutboundCallUncheckedCreateWithoutCampaignInput[]
  connectOrCreate?: Prisma.OutboundCallCreateOrConnectWithoutCampaignInput | Prisma.OutboundCallCreateOrConnectWithoutCampaignInput[]
  upsert?: Prisma.OutboundCallUpsertWithWhereUniqueWithoutCampaignInput | Prisma.OutboundCallUpsertWithWhereUniqueWithoutCampaignInput[]
  createMany?: Prisma.OutboundCallCreateManyCampaignInputEnvelope
  set?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  disconnect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  delete?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  connect?: Prisma.OutboundCallWhereUniqueInput | Prisma.OutboundCallWhereUniqueInput[]
  update?: Prisma.OutboundCallUpdateWithWhereUniqueWithoutCampaignInput | Prisma.OutboundCallUpdateWithWhereUniqueWithoutCampaignInput[]
  updateMany?: Prisma.OutboundCallUpdateManyWithWhereWithoutCampaignInput | Prisma.OutboundCallUpdateManyWithWhereWithoutCampaignInput[]
  deleteMany?: Prisma.OutboundCallScalarWhereInput | Prisma.OutboundCallScalarWhereInput[]
}

export type OutboundCallCreateWithoutUserInput = {
  outboundId?: string
  scheduledAt?: Date | string | null
  phoneNumber: string
  fromNumber: string
  firstMessage?: string | null
  systemPrompt?: string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt?: Date | string
  updatedAt?: Date | string
  organization: Prisma.OrganizationCreateNestedOneWithoutOutboundCallsInput
  agent?: Prisma.AgentCreateNestedOneWithoutOutboundCallsInput
  campaign?: Prisma.CampaignCreateNestedOneWithoutOutboundCallsInput
  callLog?: Prisma.CallLogCreateNestedOneWithoutOutboundInput
}

export type OutboundCallUncheckedCreateWithoutUserInput = {
  outboundId?: string
  organizationId: string
  agentId?: string | null
  campaignId?: string | null
  scheduledAt?: Date | string | null
  callLogId?: string | null
  phoneNumber: string
  fromNumber: string
  firstMessage?: string | null
  systemPrompt?: string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt?: Date | string
  updatedAt?: Date | string
}

export type OutboundCallCreateOrConnectWithoutUserInput = {
  where: Prisma.OutboundCallWhereUniqueInput
  create: Prisma.XOR<Prisma.OutboundCallCreateWithoutUserInput, Prisma.OutboundCallUncheckedCreateWithoutUserInput>
}

export type OutboundCallCreateManyUserInputEnvelope = {
  data: Prisma.OutboundCallCreateManyUserInput | Prisma.OutboundCallCreateManyUserInput[]
  skipDuplicates?: boolean
}

export type OutboundCallUpsertWithWhereUniqueWithoutUserInput = {
  where: Prisma.OutboundCallWhereUniqueInput
  update: Prisma.XOR<Prisma.OutboundCallUpdateWithoutUserInput, Prisma.OutboundCallUncheckedUpdateWithoutUserInput>
  create: Prisma.XOR<Prisma.OutboundCallCreateWithoutUserInput, Prisma.OutboundCallUncheckedCreateWithoutUserInput>
}

export type OutboundCallUpdateWithWhereUniqueWithoutUserInput = {
  where: Prisma.OutboundCallWhereUniqueInput
  data: Prisma.XOR<Prisma.OutboundCallUpdateWithoutUserInput, Prisma.OutboundCallUncheckedUpdateWithoutUserInput>
}

export type OutboundCallUpdateManyWithWhereWithoutUserInput = {
  where: Prisma.OutboundCallScalarWhereInput
  data: Prisma.XOR<Prisma.OutboundCallUpdateManyMutationInput, Prisma.OutboundCallUncheckedUpdateManyWithoutUserInput>
}

export type OutboundCallScalarWhereInput = {
  AND?: Prisma.OutboundCallScalarWhereInput | Prisma.OutboundCallScalarWhereInput[]
  OR?: Prisma.OutboundCallScalarWhereInput[]
  NOT?: Prisma.OutboundCallScalarWhereInput | Prisma.OutboundCallScalarWhereInput[]
  outboundId?: Prisma.StringFilter<"OutboundCall"> | string
  organizationId?: Prisma.StringFilter<"OutboundCall"> | string
  agentId?: Prisma.StringNullableFilter<"OutboundCall"> | string | null
  userId?: Prisma.StringNullableFilter<"OutboundCall"> | string | null
  campaignId?: Prisma.StringNullableFilter<"OutboundCall"> | string | null
  scheduledAt?: Prisma.DateTimeNullableFilter<"OutboundCall"> | Date | string | null
  callLogId?: Prisma.StringNullableFilter<"OutboundCall"> | string | null
  phoneNumber?: Prisma.StringFilter<"OutboundCall"> | string
  fromNumber?: Prisma.StringFilter<"OutboundCall"> | string
  firstMessage?: Prisma.StringNullableFilter<"OutboundCall"> | string | null
  systemPrompt?: Prisma.StringNullableFilter<"OutboundCall"> | string | null
  optionalData?: Prisma.JsonNullableFilter<"OutboundCall">
  mode?: Prisma.EnumOutboundCallModeFilter<"OutboundCall"> | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFilter<"OutboundCall"> | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFilter<"OutboundCall"> | Date | string
  updatedAt?: Prisma.DateTimeFilter<"OutboundCall"> | Date | string
}

export type OutboundCallCreateWithoutOrganizationInput = {
  outboundId?: string
  scheduledAt?: Date | string | null
  phoneNumber: string
  fromNumber: string
  firstMessage?: string | null
  systemPrompt?: string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt?: Date | string
  updatedAt?: Date | string
  agent?: Prisma.AgentCreateNestedOneWithoutOutboundCallsInput
  user?: Prisma.UserCreateNestedOneWithoutOutboundCallsInput
  campaign?: Prisma.CampaignCreateNestedOneWithoutOutboundCallsInput
  callLog?: Prisma.CallLogCreateNestedOneWithoutOutboundInput
}

export type OutboundCallUncheckedCreateWithoutOrganizationInput = {
  outboundId?: string
  agentId?: string | null
  userId?: string | null
  campaignId?: string | null
  scheduledAt?: Date | string | null
  callLogId?: string | null
  phoneNumber: string
  fromNumber: string
  firstMessage?: string | null
  systemPrompt?: string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt?: Date | string
  updatedAt?: Date | string
}

export type OutboundCallCreateOrConnectWithoutOrganizationInput = {
  where: Prisma.OutboundCallWhereUniqueInput
  create: Prisma.XOR<Prisma.OutboundCallCreateWithoutOrganizationInput, Prisma.OutboundCallUncheckedCreateWithoutOrganizationInput>
}

export type OutboundCallCreateManyOrganizationInputEnvelope = {
  data: Prisma.OutboundCallCreateManyOrganizationInput | Prisma.OutboundCallCreateManyOrganizationInput[]
  skipDuplicates?: boolean
}

export type OutboundCallUpsertWithWhereUniqueWithoutOrganizationInput = {
  where: Prisma.OutboundCallWhereUniqueInput
  update: Prisma.XOR<Prisma.OutboundCallUpdateWithoutOrganizationInput, Prisma.OutboundCallUncheckedUpdateWithoutOrganizationInput>
  create: Prisma.XOR<Prisma.OutboundCallCreateWithoutOrganizationInput, Prisma.OutboundCallUncheckedCreateWithoutOrganizationInput>
}

export type OutboundCallUpdateWithWhereUniqueWithoutOrganizationInput = {
  where: Prisma.OutboundCallWhereUniqueInput
  data: Prisma.XOR<Prisma.OutboundCallUpdateWithoutOrganizationInput, Prisma.OutboundCallUncheckedUpdateWithoutOrganizationInput>
}

export type OutboundCallUpdateManyWithWhereWithoutOrganizationInput = {
  where: Prisma.OutboundCallScalarWhereInput
  data: Prisma.XOR<Prisma.OutboundCallUpdateManyMutationInput, Prisma.OutboundCallUncheckedUpdateManyWithoutOrganizationInput>
}

export type OutboundCallCreateWithoutAgentInput = {
  outboundId?: string
  scheduledAt?: Date | string | null
  phoneNumber: string
  fromNumber: string
  firstMessage?: string | null
  systemPrompt?: string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt?: Date | string
  updatedAt?: Date | string
  organization: Prisma.OrganizationCreateNestedOneWithoutOutboundCallsInput
  user?: Prisma.UserCreateNestedOneWithoutOutboundCallsInput
  campaign?: Prisma.CampaignCreateNestedOneWithoutOutboundCallsInput
  callLog?: Prisma.CallLogCreateNestedOneWithoutOutboundInput
}

export type OutboundCallUncheckedCreateWithoutAgentInput = {
  outboundId?: string
  organizationId: string
  userId?: string | null
  campaignId?: string | null
  scheduledAt?: Date | string | null
  callLogId?: string | null
  phoneNumber: string
  fromNumber: string
  firstMessage?: string | null
  systemPrompt?: string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt?: Date | string
  updatedAt?: Date | string
}

export type OutboundCallCreateOrConnectWithoutAgentInput = {
  where: Prisma.OutboundCallWhereUniqueInput
  create: Prisma.XOR<Prisma.OutboundCallCreateWithoutAgentInput, Prisma.OutboundCallUncheckedCreateWithoutAgentInput>
}

export type OutboundCallCreateManyAgentInputEnvelope = {
  data: Prisma.OutboundCallCreateManyAgentInput | Prisma.OutboundCallCreateManyAgentInput[]
  skipDuplicates?: boolean
}

export type OutboundCallUpsertWithWhereUniqueWithoutAgentInput = {
  where: Prisma.OutboundCallWhereUniqueInput
  update: Prisma.XOR<Prisma.OutboundCallUpdateWithoutAgentInput, Prisma.OutboundCallUncheckedUpdateWithoutAgentInput>
  create: Prisma.XOR<Prisma.OutboundCallCreateWithoutAgentInput, Prisma.OutboundCallUncheckedCreateWithoutAgentInput>
}

export type OutboundCallUpdateWithWhereUniqueWithoutAgentInput = {
  where: Prisma.OutboundCallWhereUniqueInput
  data: Prisma.XOR<Prisma.OutboundCallUpdateWithoutAgentInput, Prisma.OutboundCallUncheckedUpdateWithoutAgentInput>
}

export type OutboundCallUpdateManyWithWhereWithoutAgentInput = {
  where: Prisma.OutboundCallScalarWhereInput
  data: Prisma.XOR<Prisma.OutboundCallUpdateManyMutationInput, Prisma.OutboundCallUncheckedUpdateManyWithoutAgentInput>
}

export type OutboundCallCreateWithoutCallLogInput = {
  outboundId?: string
  scheduledAt?: Date | string | null
  phoneNumber: string
  fromNumber: string
  firstMessage?: string | null
  systemPrompt?: string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt?: Date | string
  updatedAt?: Date | string
  organization: Prisma.OrganizationCreateNestedOneWithoutOutboundCallsInput
  agent?: Prisma.AgentCreateNestedOneWithoutOutboundCallsInput
  user?: Prisma.UserCreateNestedOneWithoutOutboundCallsInput
  campaign?: Prisma.CampaignCreateNestedOneWithoutOutboundCallsInput
}

export type OutboundCallUncheckedCreateWithoutCallLogInput = {
  outboundId?: string
  organizationId: string
  agentId?: string | null
  userId?: string | null
  campaignId?: string | null
  scheduledAt?: Date | string | null
  phoneNumber: string
  fromNumber: string
  firstMessage?: string | null
  systemPrompt?: string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt?: Date | string
  updatedAt?: Date | string
}

export type OutboundCallCreateOrConnectWithoutCallLogInput = {
  where: Prisma.OutboundCallWhereUniqueInput
  create: Prisma.XOR<Prisma.OutboundCallCreateWithoutCallLogInput, Prisma.OutboundCallUncheckedCreateWithoutCallLogInput>
}

export type OutboundCallUpsertWithoutCallLogInput = {
  update: Prisma.XOR<Prisma.OutboundCallUpdateWithoutCallLogInput, Prisma.OutboundCallUncheckedUpdateWithoutCallLogInput>
  create: Prisma.XOR<Prisma.OutboundCallCreateWithoutCallLogInput, Prisma.OutboundCallUncheckedCreateWithoutCallLogInput>
  where?: Prisma.OutboundCallWhereInput
}

export type OutboundCallUpdateToOneWithWhereWithoutCallLogInput = {
  where?: Prisma.OutboundCallWhereInput
  data: Prisma.XOR<Prisma.OutboundCallUpdateWithoutCallLogInput, Prisma.OutboundCallUncheckedUpdateWithoutCallLogInput>
}

export type OutboundCallUpdateWithoutCallLogInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  organization?: Prisma.OrganizationUpdateOneRequiredWithoutOutboundCallsNestedInput
  agent?: Prisma.AgentUpdateOneWithoutOutboundCallsNestedInput
  user?: Prisma.UserUpdateOneWithoutOutboundCallsNestedInput
  campaign?: Prisma.CampaignUpdateOneWithoutOutboundCallsNestedInput
}

export type OutboundCallUncheckedUpdateWithoutCallLogInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  organizationId?: Prisma.StringFieldUpdateOperationsInput | string
  agentId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  userId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  campaignId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
}

export type OutboundCallCreateWithoutCampaignInput = {
  outboundId?: string
  scheduledAt?: Date | string | null
  phoneNumber: string
  fromNumber: string
  firstMessage?: string | null
  systemPrompt?: string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt?: Date | string
  updatedAt?: Date | string
  organization: Prisma.OrganizationCreateNestedOneWithoutOutboundCallsInput
  agent?: Prisma.AgentCreateNestedOneWithoutOutboundCallsInput
  user?: Prisma.UserCreateNestedOneWithoutOutboundCallsInput
  callLog?: Prisma.CallLogCreateNestedOneWithoutOutboundInput
}

export type OutboundCallUncheckedCreateWithoutCampaignInput = {
  outboundId?: string
  organizationId: string
  agentId?: string | null
  userId?: string | null
  scheduledAt?: Date | string | null
  callLogId?: string | null
  phoneNumber: string
  fromNumber: string
  firstMessage?: string | null
  systemPrompt?: string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt?: Date | string
  updatedAt?: Date | string
}

export type OutboundCallCreateOrConnectWithoutCampaignInput = {
  where: Prisma.OutboundCallWhereUniqueInput
  create: Prisma.XOR<Prisma.OutboundCallCreateWithoutCampaignInput, Prisma.OutboundCallUncheckedCreateWithoutCampaignInput>
}

export type OutboundCallCreateManyCampaignInputEnvelope = {
  data: Prisma.OutboundCallCreateManyCampaignInput | Prisma.OutboundCallCreateManyCampaignInput[]
  skipDuplicates?: boolean
}

export type OutboundCallUpsertWithWhereUniqueWithoutCampaignInput = {
  where: Prisma.OutboundCallWhereUniqueInput
  update: Prisma.XOR<Prisma.OutboundCallUpdateWithoutCampaignInput, Prisma.OutboundCallUncheckedUpdateWithoutCampaignInput>
  create: Prisma.XOR<Prisma.OutboundCallCreateWithoutCampaignInput, Prisma.OutboundCallUncheckedCreateWithoutCampaignInput>
}

export type OutboundCallUpdateWithWhereUniqueWithoutCampaignInput = {
  where: Prisma.OutboundCallWhereUniqueInput
  data: Prisma.XOR<Prisma.OutboundCallUpdateWithoutCampaignInput, Prisma.OutboundCallUncheckedUpdateWithoutCampaignInput>
}

export type OutboundCallUpdateManyWithWhereWithoutCampaignInput = {
  where: Prisma.OutboundCallScalarWhereInput
  data: Prisma.XOR<Prisma.OutboundCallUpdateManyMutationInput, Prisma.OutboundCallUncheckedUpdateManyWithoutCampaignInput>
}

export type OutboundCallCreateManyUserInput = {
  outboundId?: string
  organizationId: string
  agentId?: string | null
  campaignId?: string | null
  scheduledAt?: Date | string | null
  callLogId?: string | null
  phoneNumber: string
  fromNumber: string
  firstMessage?: string | null
  systemPrompt?: string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt?: Date | string
  updatedAt?: Date | string
}

export type OutboundCallUpdateWithoutUserInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  organization?: Prisma.OrganizationUpdateOneRequiredWithoutOutboundCallsNestedInput
  agent?: Prisma.AgentUpdateOneWithoutOutboundCallsNestedInput
  campaign?: Prisma.CampaignUpdateOneWithoutOutboundCallsNestedInput
  callLog?: Prisma.CallLogUpdateOneWithoutOutboundNestedInput
}

export type OutboundCallUncheckedUpdateWithoutUserInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  organizationId?: Prisma.StringFieldUpdateOperationsInput | string
  agentId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  campaignId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  callLogId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
}

export type OutboundCallUncheckedUpdateManyWithoutUserInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  organizationId?: Prisma.StringFieldUpdateOperationsInput | string
  agentId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  campaignId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  callLogId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
}

export type OutboundCallCreateManyOrganizationInput = {
  outboundId?: string
  agentId?: string | null
  userId?: string | null
  campaignId?: string | null
  scheduledAt?: Date | string | null
  callLogId?: string | null
  phoneNumber: string
  fromNumber: string
  firstMessage?: string | null
  systemPrompt?: string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt?: Date | string
  updatedAt?: Date | string
}

export type OutboundCallUpdateWithoutOrganizationInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  agent?: Prisma.AgentUpdateOneWithoutOutboundCallsNestedInput
  user?: Prisma.UserUpdateOneWithoutOutboundCallsNestedInput
  campaign?: Prisma.CampaignUpdateOneWithoutOutboundCallsNestedInput
  callLog?: Prisma.CallLogUpdateOneWithoutOutboundNestedInput
}

export type OutboundCallUncheckedUpdateWithoutOrganizationInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  agentId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  userId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  campaignId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  callLogId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
}

export type OutboundCallUncheckedUpdateManyWithoutOrganizationInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  agentId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  userId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  campaignId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  callLogId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
}

export type OutboundCallCreateManyAgentInput = {
  outboundId?: string
  organizationId: string
  userId?: string | null
  campaignId?: string | null
  scheduledAt?: Date | string | null
  callLogId?: string | null
  phoneNumber: string
  fromNumber: string
  firstMessage?: string | null
  systemPrompt?: string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt?: Date | string
  updatedAt?: Date | string
}

export type OutboundCallUpdateWithoutAgentInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  organization?: Prisma.OrganizationUpdateOneRequiredWithoutOutboundCallsNestedInput
  user?: Prisma.UserUpdateOneWithoutOutboundCallsNestedInput
  campaign?: Prisma.CampaignUpdateOneWithoutOutboundCallsNestedInput
  callLog?: Prisma.CallLogUpdateOneWithoutOutboundNestedInput
}

export type OutboundCallUncheckedUpdateWithoutAgentInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  organizationId?: Prisma.StringFieldUpdateOperationsInput | string
  userId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  campaignId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  callLogId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
}

export type OutboundCallUncheckedUpdateManyWithoutAgentInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  organizationId?: Prisma.StringFieldUpdateOperationsInput | string
  userId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  campaignId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  callLogId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
}

export type OutboundCallCreateManyCampaignInput = {
  outboundId?: string
  organizationId: string
  agentId?: string | null
  userId?: string | null
  scheduledAt?: Date | string | null
  callLogId?: string | null
  phoneNumber: string
  fromNumber: string
  firstMessage?: string | null
  systemPrompt?: string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode: $Enums.OutboundCallMode
  status: $Enums.CallStatus
  createdAt?: Date | string
  updatedAt?: Date | string
}

export type OutboundCallUpdateWithoutCampaignInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  organization?: Prisma.OrganizationUpdateOneRequiredWithoutOutboundCallsNestedInput
  agent?: Prisma.AgentUpdateOneWithoutOutboundCallsNestedInput
  user?: Prisma.UserUpdateOneWithoutOutboundCallsNestedInput
  callLog?: Prisma.CallLogUpdateOneWithoutOutboundNestedInput
}

export type OutboundCallUncheckedUpdateWithoutCampaignInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  organizationId?: Prisma.StringFieldUpdateOperationsInput | string
  agentId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  userId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  callLogId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
}

export type OutboundCallUncheckedUpdateManyWithoutCampaignInput = {
  outboundId?: Prisma.StringFieldUpdateOperationsInput | string
  organizationId?: Prisma.StringFieldUpdateOperationsInput | string
  agentId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  userId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  scheduledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  callLogId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  phoneNumber?: Prisma.StringFieldUpdateOperationsInput | string
  fromNumber?: Prisma.StringFieldUpdateOperationsInput | string
  firstMessage?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  systemPrompt?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  optionalData?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue
  mode?: Prisma.EnumOutboundCallModeFieldUpdateOperationsInput | $Enums.OutboundCallMode
  status?: Prisma.EnumCallStatusFieldUpdateOperationsInput | $Enums.CallStatus
  createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
}



export type OutboundCallSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
  outboundId?: boolean
  organizationId?: boolean
  agentId?: boolean
  userId?: boolean
  campaignId?: boolean
  scheduledAt?: boolean
  callLogId?: boolean
  phoneNumber?: boolean
  fromNumber?: boolean
  firstMessage?: boolean
  systemPrompt?: boolean
  optionalData?: boolean
  mode?: boolean
  status?: boolean
  createdAt?: boolean
  updatedAt?: boolean
  organization?: boolean | Prisma.OrganizationDefaultArgs<ExtArgs>
  agent?: boolean | Prisma.OutboundCall$agentArgs<ExtArgs>
  user?: boolean | Prisma.OutboundCall$userArgs<ExtArgs>
  campaign?: boolean | Prisma.OutboundCall$campaignArgs<ExtArgs>
  callLog?: boolean | Prisma.OutboundCall$callLogArgs<ExtArgs>
}, ExtArgs["result"]["outboundCall"]>

export type OutboundCallSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
  outboundId?: boolean
  organizationId?: boolean
  agentId?: boolean
  userId?: boolean
  campaignId?: boolean
  scheduledAt?: boolean
  callLogId?: boolean
  phoneNumber?: boolean
  fromNumber?: boolean
  firstMessage?: boolean
  systemPrompt?: boolean
  optionalData?: boolean
  mode?: boolean
  status?: boolean
  createdAt?: boolean
  updatedAt?: boolean
  organization?: boolean | Prisma.OrganizationDefaultArgs<ExtArgs>
  agent?: boolean | Prisma.OutboundCall$agentArgs<ExtArgs>
  user?: boolean | Prisma.OutboundCall$userArgs<ExtArgs>
  campaign?: boolean | Prisma.OutboundCall$campaignArgs<ExtArgs>
  callLog?: boolean | Prisma.OutboundCall$callLogArgs<ExtArgs>
}, ExtArgs["result"]["outboundCall"]>

export type OutboundCallSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
  outboundId?: boolean
  organizationId?: boolean
  agentId?: boolean
  userId?: boolean
  campaignId?: boolean
  scheduledAt?: boolean
  callLogId?: boolean
  phoneNumber?: boolean
  fromNumber?: boolean
  firstMessage?: boolean
  systemPrompt?: boolean
  optionalData?: boolean
  mode?: boolean
  status?: boolean
  createdAt?: boolean
  updatedAt?: boolean
  organization?: boolean | Prisma.OrganizationDefaultArgs<ExtArgs>
  agent?: boolean | Prisma.OutboundCall$agentArgs<ExtArgs>
  user?: boolean | Prisma.OutboundCall$userArgs<ExtArgs>
  campaign?: boolean | Prisma.OutboundCall$campaignArgs<ExtArgs>
  callLog?: boolean | Prisma.OutboundCall$callLogArgs<ExtArgs>
}, ExtArgs["result"]["outboundCall"]>

export type OutboundCallSelectScalar = {
  outboundId?: boolean
  organizationId?: boolean
  agentId?: boolean
  userId?: boolean
  campaignId?: boolean
  scheduledAt?: boolean
  callLogId?: boolean
  phoneNumber?: boolean
  fromNumber?: boolean
  firstMessage?: boolean
  systemPrompt?: boolean
  optionalData?: boolean
  mode?: boolean
  status?: boolean
  createdAt?: boolean
  updatedAt?: boolean
}

export type OutboundCallOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"outboundId" | "organizationId" | "agentId" | "userId" | "campaignId" | "scheduledAt" | "callLogId" | "phoneNumber" | "fromNumber" | "firstMessage" | "systemPrompt" | "optionalData" | "mode" | "status" | "createdAt" | "updatedAt", ExtArgs["result"]["outboundCall"]>
export type OutboundCallInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  organization?: boolean | Prisma.OrganizationDefaultArgs<ExtArgs>
  agent?: boolean | Prisma.OutboundCall$agentArgs<ExtArgs>
  user?: boolean | Prisma.OutboundCall$userArgs<ExtArgs>
  campaign?: boolean | Prisma.OutboundCall$campaignArgs<ExtArgs>
  callLog?: boolean | Prisma.OutboundCall$callLogArgs<ExtArgs>
}
export type OutboundCallIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  organization?: boolean | Prisma.OrganizationDefaultArgs<ExtArgs>
  agent?: boolean | Prisma.OutboundCall$agentArgs<ExtArgs>
  user?: boolean | Prisma.OutboundCall$userArgs<ExtArgs>
  campaign?: boolean | Prisma.OutboundCall$campaignArgs<ExtArgs>
  callLog?: boolean | Prisma.OutboundCall$callLogArgs<ExtArgs>
}
export type OutboundCallIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  organization?: boolean | Prisma.OrganizationDefaultArgs<ExtArgs>
  agent?: boolean | Prisma.OutboundCall$agentArgs<ExtArgs>
  user?: boolean | Prisma.OutboundCall$userArgs<ExtArgs>
  campaign?: boolean | Prisma.OutboundCall$campaignArgs<ExtArgs>
  callLog?: boolean | Prisma.OutboundCall$callLogArgs<ExtArgs>
}

export type $OutboundCallPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  name: "OutboundCall"
  objects: {
    organization: Prisma.$OrganizationPayload<ExtArgs>
    agent: Prisma.$AgentPayload<ExtArgs> | null
    user: Prisma.$UserPayload<ExtArgs> | null
    campaign: Prisma.$CampaignPayload<ExtArgs> | null
    callLog: Prisma.$CallLogPayload<ExtArgs> | null
  }
  scalars: runtime.Types.Extensions.GetPayloadResult<{
    outboundId: string
    organizationId: string
    agentId: string | null
    userId: string | null
    campaignId: string | null
    scheduledAt: Date | null
    callLogId: string | null
    phoneNumber: string
    fromNumber: string
    firstMessage: string | null
    systemPrompt: string | null
    optionalData: runtime.JsonValue | null
    mode: $Enums.OutboundCallMode
    status: $Enums.CallStatus
    createdAt: Date
    updatedAt: Date
  }, ExtArgs["result"]["outboundCall"]>
  composites: {}
}

export type OutboundCallGetPayload<S extends boolean | null | undefined | OutboundCallDefaultArgs> = runtime.Types.Result.GetResult<Prisma.$OutboundCallPayload, S>

export type OutboundCallCountArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> =
  Omit<OutboundCallFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
    select?: OutboundCallCountAggregateInputType | true
  }

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

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

  /**
   * Find the first OutboundCall 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 {OutboundCallFindFirstArgs} args - Arguments to find a OutboundCall
   * @example
   * // Get one OutboundCall
   * const outboundCall = await prisma.outboundCall.findFirst({
   *   where: {
   *     // ... provide filter here
   *   }
   * })
   */
  findFirst<T extends OutboundCallFindFirstArgs>(args?: Prisma.SelectSubset<T, OutboundCallFindFirstArgs<ExtArgs>>): Prisma.Prisma__OutboundCallClient<runtime.Types.Result.GetResult<Prisma.$OutboundCallPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

  /**
   * Find the first OutboundCall 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 {OutboundCallFindFirstOrThrowArgs} args - Arguments to find a OutboundCall
   * @example
   * // Get one OutboundCall
   * const outboundCall = await prisma.outboundCall.findFirstOrThrow({
   *   where: {
   *     // ... provide filter here
   *   }
   * })
   */
  findFirstOrThrow<T extends OutboundCallFindFirstOrThrowArgs>(args?: Prisma.SelectSubset<T, OutboundCallFindFirstOrThrowArgs<ExtArgs>>): Prisma.Prisma__OutboundCallClient<runtime.Types.Result.GetResult<Prisma.$OutboundCallPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

  /**
   * Find zero or more OutboundCalls 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 {OutboundCallFindManyArgs} args - Arguments to filter and select certain fields only.
   * @example
   * // Get all OutboundCalls
   * const outboundCalls = await prisma.outboundCall.findMany()
   * 
   * // Get first 10 OutboundCalls
   * const outboundCalls = await prisma.outboundCall.findMany({ take: 10 })
   * 
   * // Only select the `outboundId`
   * const outboundCallWithOutboundIdOnly = await prisma.outboundCall.findMany({ select: { outboundId: true } })
   * 
   */
  findMany<T extends OutboundCallFindManyArgs>(args?: Prisma.SelectSubset<T, OutboundCallFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$OutboundCallPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

  /**
   * Create a OutboundCall.
   * @param {OutboundCallCreateArgs} args - Arguments to create a OutboundCall.
   * @example
   * // Create one OutboundCall
   * const OutboundCall = await prisma.outboundCall.create({
   *   data: {
   *     // ... data to create a OutboundCall
   *   }
   * })
   * 
   */
  create<T extends OutboundCallCreateArgs>(args: Prisma.SelectSubset<T, OutboundCallCreateArgs<ExtArgs>>): Prisma.Prisma__OutboundCallClient<runtime.Types.Result.GetResult<Prisma.$OutboundCallPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

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

  /**
   * Create many OutboundCalls and returns the data saved in the database.
   * @param {OutboundCallCreateManyAndReturnArgs} args - Arguments to create many OutboundCalls.
   * @example
   * // Create many OutboundCalls
   * const outboundCall = await prisma.outboundCall.createManyAndReturn({
   *   data: [
   *     // ... provide data here
   *   ]
   * })
   * 
   * // Create many OutboundCalls and only return the `outboundId`
   * const outboundCallWithOutboundIdOnly = await prisma.outboundCall.createManyAndReturn({
   *   select: { outboundId: true },
   *   data: [
   *     // ... provide data here
   *   ]
   * })
   * Note, that providing `undefined` is treated as the value not being there.
   * Read more here: https://pris.ly/d/null-undefined
   * 
   */
  createManyAndReturn<T extends OutboundCallCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, OutboundCallCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$OutboundCallPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>

  /**
   * Delete a OutboundCall.
   * @param {OutboundCallDeleteArgs} args - Arguments to delete one OutboundCall.
   * @example
   * // Delete one OutboundCall
   * const OutboundCall = await prisma.outboundCall.delete({
   *   where: {
   *     // ... filter to delete one OutboundCall
   *   }
   * })
   * 
   */
  delete<T extends OutboundCallDeleteArgs>(args: Prisma.SelectSubset<T, OutboundCallDeleteArgs<ExtArgs>>): Prisma.Prisma__OutboundCallClient<runtime.Types.Result.GetResult<Prisma.$OutboundCallPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

  /**
   * Update one OutboundCall.
   * @param {OutboundCallUpdateArgs} args - Arguments to update one OutboundCall.
   * @example
   * // Update one OutboundCall
   * const outboundCall = await prisma.outboundCall.update({
   *   where: {
   *     // ... provide filter here
   *   },
   *   data: {
   *     // ... provide data here
   *   }
   * })
   * 
   */
  update<T extends OutboundCallUpdateArgs>(args: Prisma.SelectSubset<T, OutboundCallUpdateArgs<ExtArgs>>): Prisma.Prisma__OutboundCallClient<runtime.Types.Result.GetResult<Prisma.$OutboundCallPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

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

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

  /**
   * Update zero or more OutboundCalls and returns the data updated in the database.
   * @param {OutboundCallUpdateManyAndReturnArgs} args - Arguments to update many OutboundCalls.
   * @example
   * // Update many OutboundCalls
   * const outboundCall = await prisma.outboundCall.updateManyAndReturn({
   *   where: {
   *     // ... provide filter here
   *   },
   *   data: [
   *     // ... provide data here
   *   ]
   * })
   * 
   * // Update zero or more OutboundCalls and only return the `outboundId`
   * const outboundCallWithOutboundIdOnly = await prisma.outboundCall.updateManyAndReturn({
   *   select: { outboundId: true },
   *   where: {
   *     // ... provide filter here
   *   },
   *   data: [
   *     // ... provide data here
   *   ]
   * })
   * Note, that providing `undefined` is treated as the value not being there.
   * Read more here: https://pris.ly/d/null-undefined
   * 
   */
  updateManyAndReturn<T extends OutboundCallUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, OutboundCallUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$OutboundCallPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>

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


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

  /**
   * Allows you to perform aggregations operations on a OutboundCall.
   * Note, that providing `undefined` is treated as the value not being there.
   * Read more here: https://pris.ly/d/null-undefined
   * @param {OutboundCallAggregateArgs} 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 OutboundCallAggregateArgs>(args: Prisma.Subset<T, OutboundCallAggregateArgs>): Prisma.PrismaPromise<GetOutboundCallAggregateType<T>>

  /**
   * Group by OutboundCall.
   * Note, that providing `undefined` is treated as the value not being there.
   * Read more here: https://pris.ly/d/null-undefined
   * @param {OutboundCallGroupByArgs} 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 OutboundCallGroupByArgs,
    HasSelectOrTake extends Prisma.Or<
      Prisma.Extends<'skip', Prisma.Keys<T>>,
      Prisma.Extends<'take', Prisma.Keys<T>>
    >,
    OrderByArg extends Prisma.True extends HasSelectOrTake
      ? { orderBy: OutboundCallGroupByArgs['orderBy'] }
      : { orderBy?: OutboundCallGroupByArgs['orderBy'] },
    OrderFields extends Prisma.ExcludeUnderscoreKeys<Prisma.Keys<Prisma.MaybeTupleToUnion<T['orderBy']>>>,
    ByFields extends Prisma.MaybeTupleToUnion<T['by']>,
    ByValid extends Prisma.Has<ByFields, OrderFields>,
    HavingFields extends Prisma.GetHavingFields<T['having']>,
    HavingValid extends Prisma.Has<ByFields, HavingFields>,
    ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False,
    InputErrors extends ByEmpty extends Prisma.True
    ? `Error: "by" must not be empty.`
    : HavingValid extends Prisma.False
    ? {
        [P in HavingFields]: P extends ByFields
          ? never
          : P extends string
          ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
          : [
              Error,
              'Field ',
              P,
              ` in "having" needs to be provided in "by"`,
            ]
      }[HavingFields]
    : 'take' extends Prisma.Keys<T>
    ? 'orderBy' extends Prisma.Keys<T>
      ? ByValid extends Prisma.True
        ? {}
        : {
            [P in OrderFields]: P extends ByFields
              ? never
              : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
          }[OrderFields]
      : 'Error: If you provide "take", you also need to provide "orderBy"'
    : 'skip' extends Prisma.Keys<T>
    ? 'orderBy' extends Prisma.Keys<T>
      ? ByValid extends Prisma.True
        ? {}
        : {
            [P in OrderFields]: P extends ByFields
              ? never
              : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
          }[OrderFields]
      : 'Error: If you provide "skip", you also need to provide "orderBy"'
    : ByValid extends Prisma.True
    ? {}
    : {
        [P in OrderFields]: P extends ByFields
          ? never
          : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
      }[OrderFields]
  >(args: Prisma.SubsetIntersection<T, OutboundCallGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetOutboundCallGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
/**
 * Fields of the OutboundCall model
 */
readonly fields: OutboundCallFieldRefs;
}

/**
 * The delegate class that acts as a "Promise-like" for OutboundCall.
 * 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__OutboundCallClient<T, Null = never, ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
  readonly [Symbol.toStringTag]: "PrismaPromise"
  organization<T extends Prisma.OrganizationDefaultArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.OrganizationDefaultArgs<ExtArgs>>): Prisma.Prisma__OrganizationClient<runtime.Types.Result.GetResult<Prisma.$OrganizationPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
  agent<T extends Prisma.OutboundCall$agentArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.OutboundCall$agentArgs<ExtArgs>>): Prisma.Prisma__AgentClient<runtime.Types.Result.GetResult<Prisma.$AgentPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
  user<T extends Prisma.OutboundCall$userArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.OutboundCall$userArgs<ExtArgs>>): Prisma.Prisma__UserClient<runtime.Types.Result.GetResult<Prisma.$UserPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
  campaign<T extends Prisma.OutboundCall$campaignArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.OutboundCall$campaignArgs<ExtArgs>>): Prisma.Prisma__CampaignClient<runtime.Types.Result.GetResult<Prisma.$CampaignPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
  callLog<T extends Prisma.OutboundCall$callLogArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.OutboundCall$callLogArgs<ExtArgs>>): Prisma.Prisma__CallLogClient<runtime.Types.Result.GetResult<Prisma.$CallLogPayload<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): runtime.Types.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): runtime.Types.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): runtime.Types.Utils.JsPromise<T>
}




/**
 * Fields of the OutboundCall model
 */
export interface OutboundCallFieldRefs {
  readonly outboundId: Prisma.FieldRef<"OutboundCall", 'String'>
  readonly organizationId: Prisma.FieldRef<"OutboundCall", 'String'>
  readonly agentId: Prisma.FieldRef<"OutboundCall", 'String'>
  readonly userId: Prisma.FieldRef<"OutboundCall", 'String'>
  readonly campaignId: Prisma.FieldRef<"OutboundCall", 'String'>
  readonly scheduledAt: Prisma.FieldRef<"OutboundCall", 'DateTime'>
  readonly callLogId: Prisma.FieldRef<"OutboundCall", 'String'>
  readonly phoneNumber: Prisma.FieldRef<"OutboundCall", 'String'>
  readonly fromNumber: Prisma.FieldRef<"OutboundCall", 'String'>
  readonly firstMessage: Prisma.FieldRef<"OutboundCall", 'String'>
  readonly systemPrompt: Prisma.FieldRef<"OutboundCall", 'String'>
  readonly optionalData: Prisma.FieldRef<"OutboundCall", 'Json'>
  readonly mode: Prisma.FieldRef<"OutboundCall", 'OutboundCallMode'>
  readonly status: Prisma.FieldRef<"OutboundCall", 'CallStatus'>
  readonly createdAt: Prisma.FieldRef<"OutboundCall", 'DateTime'>
  readonly updatedAt: Prisma.FieldRef<"OutboundCall", 'DateTime'>
}
    

// Custom InputTypes
/**
 * OutboundCall findUnique
 */
export type OutboundCallFindUniqueArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the OutboundCall
   */
  select?: Prisma.OutboundCallSelect<ExtArgs> | null
  /**
   * Omit specific fields from the OutboundCall
   */
  omit?: Prisma.OutboundCallOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.OutboundCallInclude<ExtArgs> | null
  /**
   * Filter, which OutboundCall to fetch.
   */
  where: Prisma.OutboundCallWhereUniqueInput
}

/**
 * OutboundCall findUniqueOrThrow
 */
export type OutboundCallFindUniqueOrThrowArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the OutboundCall
   */
  select?: Prisma.OutboundCallSelect<ExtArgs> | null
  /**
   * Omit specific fields from the OutboundCall
   */
  omit?: Prisma.OutboundCallOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.OutboundCallInclude<ExtArgs> | null
  /**
   * Filter, which OutboundCall to fetch.
   */
  where: Prisma.OutboundCallWhereUniqueInput
}

/**
 * OutboundCall findFirst
 */
export type OutboundCallFindFirstArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the OutboundCall
   */
  select?: Prisma.OutboundCallSelect<ExtArgs> | null
  /**
   * Omit specific fields from the OutboundCall
   */
  omit?: Prisma.OutboundCallOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.OutboundCallInclude<ExtArgs> | null
  /**
   * Filter, which OutboundCall to fetch.
   */
  where?: Prisma.OutboundCallWhereInput
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
   * 
   * Determine the order of OutboundCalls to fetch.
   */
  orderBy?: Prisma.OutboundCallOrderByWithRelationInput | Prisma.OutboundCallOrderByWithRelationInput[]
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
   * 
   * Sets the position for searching for OutboundCalls.
   */
  cursor?: Prisma.OutboundCallWhereUniqueInput
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
   * 
   * Take `±n` OutboundCalls 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` OutboundCalls.
   */
  skip?: number
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
   * 
   * Filter by unique combinations of OutboundCalls.
   */
  distinct?: Prisma.OutboundCallScalarFieldEnum | Prisma.OutboundCallScalarFieldEnum[]
}

/**
 * OutboundCall findFirstOrThrow
 */
export type OutboundCallFindFirstOrThrowArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the OutboundCall
   */
  select?: Prisma.OutboundCallSelect<ExtArgs> | null
  /**
   * Omit specific fields from the OutboundCall
   */
  omit?: Prisma.OutboundCallOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.OutboundCallInclude<ExtArgs> | null
  /**
   * Filter, which OutboundCall to fetch.
   */
  where?: Prisma.OutboundCallWhereInput
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
   * 
   * Determine the order of OutboundCalls to fetch.
   */
  orderBy?: Prisma.OutboundCallOrderByWithRelationInput | Prisma.OutboundCallOrderByWithRelationInput[]
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
   * 
   * Sets the position for searching for OutboundCalls.
   */
  cursor?: Prisma.OutboundCallWhereUniqueInput
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
   * 
   * Take `±n` OutboundCalls 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` OutboundCalls.
   */
  skip?: number
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
   * 
   * Filter by unique combinations of OutboundCalls.
   */
  distinct?: Prisma.OutboundCallScalarFieldEnum | Prisma.OutboundCallScalarFieldEnum[]
}

/**
 * OutboundCall findMany
 */
export type OutboundCallFindManyArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the OutboundCall
   */
  select?: Prisma.OutboundCallSelect<ExtArgs> | null
  /**
   * Omit specific fields from the OutboundCall
   */
  omit?: Prisma.OutboundCallOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.OutboundCallInclude<ExtArgs> | null
  /**
   * Filter, which OutboundCalls to fetch.
   */
  where?: Prisma.OutboundCallWhereInput
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
   * 
   * Determine the order of OutboundCalls to fetch.
   */
  orderBy?: Prisma.OutboundCallOrderByWithRelationInput | Prisma.OutboundCallOrderByWithRelationInput[]
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
   * 
   * Sets the position for listing OutboundCalls.
   */
  cursor?: Prisma.OutboundCallWhereUniqueInput
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
   * 
   * Take `±n` OutboundCalls 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` OutboundCalls.
   */
  skip?: number
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
   * 
   * Filter by unique combinations of OutboundCalls.
   */
  distinct?: Prisma.OutboundCallScalarFieldEnum | Prisma.OutboundCallScalarFieldEnum[]
}

/**
 * OutboundCall create
 */
export type OutboundCallCreateArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the OutboundCall
   */
  select?: Prisma.OutboundCallSelect<ExtArgs> | null
  /**
   * Omit specific fields from the OutboundCall
   */
  omit?: Prisma.OutboundCallOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.OutboundCallInclude<ExtArgs> | null
  /**
   * The data needed to create a OutboundCall.
   */
  data: Prisma.XOR<Prisma.OutboundCallCreateInput, Prisma.OutboundCallUncheckedCreateInput>
}

/**
 * OutboundCall createMany
 */
export type OutboundCallCreateManyArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * The data used to create many OutboundCalls.
   */
  data: Prisma.OutboundCallCreateManyInput | Prisma.OutboundCallCreateManyInput[]
  skipDuplicates?: boolean
}

/**
 * OutboundCall createManyAndReturn
 */
export type OutboundCallCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the OutboundCall
   */
  select?: Prisma.OutboundCallSelectCreateManyAndReturn<ExtArgs> | null
  /**
   * Omit specific fields from the OutboundCall
   */
  omit?: Prisma.OutboundCallOmit<ExtArgs> | null
  /**
   * The data used to create many OutboundCalls.
   */
  data: Prisma.OutboundCallCreateManyInput | Prisma.OutboundCallCreateManyInput[]
  skipDuplicates?: boolean
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.OutboundCallIncludeCreateManyAndReturn<ExtArgs> | null
}

/**
 * OutboundCall update
 */
export type OutboundCallUpdateArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the OutboundCall
   */
  select?: Prisma.OutboundCallSelect<ExtArgs> | null
  /**
   * Omit specific fields from the OutboundCall
   */
  omit?: Prisma.OutboundCallOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.OutboundCallInclude<ExtArgs> | null
  /**
   * The data needed to update a OutboundCall.
   */
  data: Prisma.XOR<Prisma.OutboundCallUpdateInput, Prisma.OutboundCallUncheckedUpdateInput>
  /**
   * Choose, which OutboundCall to update.
   */
  where: Prisma.OutboundCallWhereUniqueInput
}

/**
 * OutboundCall updateMany
 */
export type OutboundCallUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * The data used to update OutboundCalls.
   */
  data: Prisma.XOR<Prisma.OutboundCallUpdateManyMutationInput, Prisma.OutboundCallUncheckedUpdateManyInput>
  /**
   * Filter which OutboundCalls to update
   */
  where?: Prisma.OutboundCallWhereInput
  /**
   * Limit how many OutboundCalls to update.
   */
  limit?: number
}

/**
 * OutboundCall updateManyAndReturn
 */
export type OutboundCallUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the OutboundCall
   */
  select?: Prisma.OutboundCallSelectUpdateManyAndReturn<ExtArgs> | null
  /**
   * Omit specific fields from the OutboundCall
   */
  omit?: Prisma.OutboundCallOmit<ExtArgs> | null
  /**
   * The data used to update OutboundCalls.
   */
  data: Prisma.XOR<Prisma.OutboundCallUpdateManyMutationInput, Prisma.OutboundCallUncheckedUpdateManyInput>
  /**
   * Filter which OutboundCalls to update
   */
  where?: Prisma.OutboundCallWhereInput
  /**
   * Limit how many OutboundCalls to update.
   */
  limit?: number
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.OutboundCallIncludeUpdateManyAndReturn<ExtArgs> | null
}

/**
 * OutboundCall upsert
 */
export type OutboundCallUpsertArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the OutboundCall
   */
  select?: Prisma.OutboundCallSelect<ExtArgs> | null
  /**
   * Omit specific fields from the OutboundCall
   */
  omit?: Prisma.OutboundCallOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.OutboundCallInclude<ExtArgs> | null
  /**
   * The filter to search for the OutboundCall to update in case it exists.
   */
  where: Prisma.OutboundCallWhereUniqueInput
  /**
   * In case the OutboundCall found by the `where` argument doesn't exist, create a new OutboundCall with this data.
   */
  create: Prisma.XOR<Prisma.OutboundCallCreateInput, Prisma.OutboundCallUncheckedCreateInput>
  /**
   * In case the OutboundCall was found with the provided `where` argument, update it with this data.
   */
  update: Prisma.XOR<Prisma.OutboundCallUpdateInput, Prisma.OutboundCallUncheckedUpdateInput>
}

/**
 * OutboundCall delete
 */
export type OutboundCallDeleteArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the OutboundCall
   */
  select?: Prisma.OutboundCallSelect<ExtArgs> | null
  /**
   * Omit specific fields from the OutboundCall
   */
  omit?: Prisma.OutboundCallOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.OutboundCallInclude<ExtArgs> | null
  /**
   * Filter which OutboundCall to delete.
   */
  where: Prisma.OutboundCallWhereUniqueInput
}

/**
 * OutboundCall deleteMany
 */
export type OutboundCallDeleteManyArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Filter which OutboundCalls to delete
   */
  where?: Prisma.OutboundCallWhereInput
  /**
   * Limit how many OutboundCalls to delete.
   */
  limit?: number
}

/**
 * OutboundCall.agent
 */
export type OutboundCall$agentArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the Agent
   */
  select?: Prisma.AgentSelect<ExtArgs> | null
  /**
   * Omit specific fields from the Agent
   */
  omit?: Prisma.AgentOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.AgentInclude<ExtArgs> | null
  where?: Prisma.AgentWhereInput
}

/**
 * OutboundCall.user
 */
export type OutboundCall$userArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the User
   */
  select?: Prisma.UserSelect<ExtArgs> | null
  /**
   * Omit specific fields from the User
   */
  omit?: Prisma.UserOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.UserInclude<ExtArgs> | null
  where?: Prisma.UserWhereInput
}

/**
 * OutboundCall.campaign
 */
export type OutboundCall$campaignArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the Campaign
   */
  select?: Prisma.CampaignSelect<ExtArgs> | null
  /**
   * Omit specific fields from the Campaign
   */
  omit?: Prisma.CampaignOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.CampaignInclude<ExtArgs> | null
  where?: Prisma.CampaignWhereInput
}

/**
 * OutboundCall.callLog
 */
export type OutboundCall$callLogArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the CallLog
   */
  select?: Prisma.CallLogSelect<ExtArgs> | null
  /**
   * Omit specific fields from the CallLog
   */
  omit?: Prisma.CallLogOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.CallLogInclude<ExtArgs> | null
  where?: Prisma.CallLogWhereInput
}

/**
 * OutboundCall without action
 */
export type OutboundCallDefaultArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the OutboundCall
   */
  select?: Prisma.OutboundCallSelect<ExtArgs> | null
  /**
   * Omit specific fields from the OutboundCall
   */
  omit?: Prisma.OutboundCallOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.OutboundCallInclude<ExtArgs> | null
}
