/* tslint:disable */
/* eslint-disable */
/**
 * This file was automatically generated by Payload.
 * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config,
 * and re-run `payload generate:types` to regenerate this file.
 */

export interface Config {
  collections: {
    pages: Page
    users: User
    forms: Form
    'form-submissions': FormSubmission
    'payload-preferences': PayloadPreference
    'payload-migrations': PayloadMigration
  }
  globals: {}
}
export interface Page {
  id: string
  title: string
  slug: string
  form?: (string | null) | Form
  updatedAt: string
  createdAt: string
}
export interface Form {
  id: string
  title: string
  fields?:
    | (
        | {
            name: string
            label?: string | null
            width?: number | null
            required?: boolean | null
            defaultValue?: boolean | null
            id?: string | null
            blockName?: string | null
            blockType: 'checkbox'
          }
        | {
            name: string
            label?: string | null
            width?: number | null
            required?: boolean | null
            id?: string | null
            blockName?: string | null
            blockType: 'country'
          }
        | {
            name: string
            label?: string | null
            width?: number | null
            required?: boolean | null
            id?: string | null
            blockName?: string | null
            blockType: 'email'
          }
        | {
            message?:
              | {
                  [k: string]: unknown
                }[]
              | null
            id?: string | null
            blockName?: string | null
            blockType: 'message'
          }
        | {
            name: string
            label?: string | null
            width?: number | null
            defaultValue?: number | null
            required?: boolean | null
            id?: string | null
            blockName?: string | null
            blockType: 'number'
          }
        | {
            name: string
            label?: string | null
            width?: number | null
            basePrice?: number | null
            priceConditions?:
              | {
                  fieldToUse?: string | null
                  condition?: ('hasValue' | 'equals' | 'notEquals') | null
                  valueForCondition?: string | null
                  operator?: ('add' | 'subtract' | 'multiply' | 'divide') | null
                  valueType?: ('static' | 'valueOfField') | null
                  valueForOperator?: string | null
                  id?: string | null
                }[]
              | null
            required?: boolean | null
            id?: string | null
            blockName?: string | null
            blockType: 'payment'
          }
        | {
            name: string
            label?: string | null
            width?: number | null
            defaultValue?: string | null
            options?:
              | {
                  label: string
                  value: string
                  id?: string | null
                }[]
              | null
            required?: boolean | null
            id?: string | null
            blockName?: string | null
            blockType: 'select'
          }
        | {
            name: string
            label?: string | null
            width?: number | null
            required?: boolean | null
            id?: string | null
            blockName?: string | null
            blockType: 'state'
          }
        | {
            name: string
            label?: string | null
            width?: number | null
            defaultValue?: string | null
            required?: boolean | null
            id?: string | null
            blockName?: string | null
            blockType: 'text'
          }
        | {
            name: string
            label?: string | null
            width?: number | null
            defaultValue?: string | null
            required?: boolean | null
            id?: string | null
            blockName?: string | null
            blockType: 'textarea'
          }
        | {
            value?: string | null
            id?: string | null
            blockName?: string | null
            blockType: 'color'
          }
      )[]
    | null
  submitButtonLabel?: string | null
  confirmationType?: ('message' | 'redirect') | null
  confirmationMessage?:
    | {
        [k: string]: unknown
      }[]
    | null
  redirect?: {
    type?: ('reference' | 'custom') | null
    reference?: {
      relationTo: 'pages'
      value: string | Page
    } | null
    url?: string | null
  }
  emails?:
    | {
        emailTo?: string | null
        cc?: string | null
        bcc?: string | null
        replyTo?: string | null
        emailFrom?: string | null
        subject: string
        message?:
          | {
              [k: string]: unknown
            }[]
          | null
        id?: string | null
      }[]
    | null
  custom?: string | null
  updatedAt: string
  createdAt: string
}
export interface User {
  id: string
  updatedAt: string
  createdAt: string
  email: string
  resetPasswordToken?: string | null
  resetPasswordExpiration?: string | null
  salt?: string | null
  hash?: string | null
  loginAttempts?: number | null
  lockUntil?: string | null
  password: string | null
}
export interface FormSubmission {
  id: string
  form: string | Form
  submissionData?:
    | {
        field: string
        value: string
        id?: string | null
      }[]
    | null
  payment?: {
    field?: string | null
    status?: string | null
    amount?: number | null
    paymentProcessor?: string | null
    creditCard?: {
      token?: string | null
      brand?: string | null
      number?: string | null
    }
  }
  updatedAt: string
  createdAt: string
}
export interface PayloadPreference {
  id: string
  user: {
    relationTo: 'users'
    value: string | User
  }
  key?: string | null
  value?:
    | {
        [k: string]: unknown
      }
    | unknown[]
    | string
    | number
    | boolean
    | null
  updatedAt: string
  createdAt: string
}
export interface PayloadMigration {
  id: string
  name?: string | null
  batch?: number | null
  updatedAt: string
  createdAt: string
}

declare module 'payload' {
  export interface GeneratedTypes extends Config {}
}
