/* 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: {
    'main-menu': MainMenu
  }
}
export interface Page {
  id: string
  title: string
  layout: {
    form: string | Form
    enableIntro?: boolean
    introContent: {
      [k: string]: unknown
    }[]
    id?: string
    blockName?: string
    blockType: 'formBlock'
  }[]
  slug?: string
  updatedAt: string
  createdAt: string
  _status?: 'draft' | 'published'
}
export interface Form {
  id: string
  title: string
  fields?: (
    | {
        name: string
        label?: string
        width?: number
        defaultValue?: string
        required?: boolean
        id?: string
        blockName?: string
        blockType: 'text'
      }
    | {
        name: string
        label?: string
        width?: number
        defaultValue?: string
        required?: boolean
        id?: string
        blockName?: string
        blockType: 'textarea'
      }
    | {
        name: string
        label?: string
        width?: number
        defaultValue?: string
        options?: {
          label: string
          value: string
          id?: string
        }[]
        required?: boolean
        id?: string
        blockName?: string
        blockType: 'select'
      }
    | {
        name: string
        label?: string
        width?: number
        required?: boolean
        id?: string
        blockName?: string
        blockType: 'email'
      }
    | {
        name: string
        label?: string
        width?: number
        required?: boolean
        id?: string
        blockName?: string
        blockType: 'state'
      }
    | {
        name: string
        label?: string
        width?: number
        required?: boolean
        id?: string
        blockName?: string
        blockType: 'country'
      }
    | {
        name: string
        label?: string
        width?: number
        defaultValue?: number
        required?: boolean
        id?: string
        blockName?: string
        blockType: 'number'
      }
    | {
        name: string
        label?: string
        width?: number
        required?: boolean
        defaultValue?: boolean
        id?: string
        blockName?: string
        blockType: 'checkbox'
      }
    | {
        message?: {
          [k: string]: unknown
        }[]
        id?: string
        blockName?: string
        blockType: 'message'
      }
  )[]
  submitButtonLabel?: string
  confirmationType?: 'message' | 'redirect'
  confirmationMessage: {
    [k: string]: unknown
  }[]
  redirect?: {
    url: string
  }
  emails?: {
    emailTo?: string
    cc?: string
    bcc?: string
    replyTo?: string
    emailFrom?: string
    subject: string
    message?: {
      [k: string]: unknown
    }[]
    id?: string
  }[]
  updatedAt: string
  createdAt: string
}
export interface User {
  id: string
  updatedAt: string
  createdAt: string
  email: string
  resetPasswordToken?: string
  resetPasswordExpiration?: string
  salt?: string
  hash?: string
  loginAttempts?: number
  lockUntil?: string
  password?: string
}
export interface FormSubmission {
  id: string
  form: string | Form
  submissionData?: {
    field: string
    value: string
    id?: string
  }[]
  updatedAt: string
  createdAt: string
}
export interface PayloadPreference {
  id: string
  user: {
    relationTo: 'users'
    value: string | User
  }
  key?: string
  value?:
    | {
        [k: string]: unknown
      }
    | unknown[]
    | string
    | number
    | boolean
    | null
  updatedAt: string
  createdAt: string
}
export interface PayloadMigration {
  id: string
  name?: string
  batch?: number
  updatedAt: string
  createdAt: string
}
export interface MainMenu {
  id: string
  navItems?: {
    link: {
      type?: 'reference' | 'custom'
      newTab?: boolean
      reference: {
        relationTo: 'pages'
        value: string | Page
      }
      url: string
      label: string
    }
    id?: string
  }[]
  updatedAt?: string
  createdAt?: string
}

declare module 'payload' {
  export interface GeneratedTypes {
    collections: {
      pages: Page
      users: User
      forms: Form
      'form-submissions': FormSubmission
      'payload-preferences': PayloadPreference
      'payload-migrations': PayloadMigration
    }
    globals: {
      'main-menu': MainMenu
    }
  }
}
