/* 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: {
    'fields-relationship': FieldsRelationship
    'relation-one': RelationOne
    'relation-two': RelationTwo
    'relation-restricted': RelationRestricted
    'relation-with-title': RelationWithTitle
    'relation-updated-externally': RelationUpdatedExternally
    'collection-1': Collection1
    'collection-2': Collection2
    'versioned-relationship-field': VersionedRelationshipField
    users: User
    'payload-preferences': PayloadPreference
    'payload-migrations': PayloadMigration
  }
  db: {
    defaultIDType: string
  }
  globals: {}
  locale: 'en'
  user: User & {
    collection: 'users'
  }
}
export interface FieldsRelationship {
  id: string
  relationship?: (string | null) | RelationOne
  relationshipHasMany?: (string | RelationOne)[] | null
  relationshipMultiple?:
    | ({
        relationTo: 'relation-one'
        value: string | RelationOne
      } | null)
    | ({
        relationTo: 'relation-two'
        value: string | RelationTwo
      } | null)
  relationshipHasManyMultiple?:
    | (
        | {
            relationTo: 'relation-one'
            value: string | RelationOne
          }
        | {
            relationTo: 'relation-two'
            value: string | RelationTwo
          }
      )[]
    | null
  relationshipRestricted?: (string | null) | RelationRestricted
  relationshipWithTitle?: (string | null) | RelationWithTitle
  relationshipFiltered?: (string | null) | RelationOne
  relationshipFilteredAsync?: (string | null) | RelationOne
  relationshipManyFiltered?:
    | (
        | {
            relationTo: 'relation-with-title'
            value: string | RelationWithTitle
          }
        | {
            relationTo: 'relation-one'
            value: string | RelationOne
          }
      )[]
    | null
  filter?: string | null
  relationshipReadOnly?: (string | null) | RelationOne
  updatedAt: string
  createdAt: string
}
export interface RelationOne {
  id: string
  name?: string | null
  updatedAt: string
  createdAt: string
}
export interface RelationTwo {
  id: string
  name?: string | null
  updatedAt: string
  createdAt: string
}
export interface RelationRestricted {
  id: string
  name?: string | null
  updatedAt: string
  createdAt: string
}
export interface RelationWithTitle {
  id: string
  name?: string | null
  meta?: {
    title?: string | null
  }
  updatedAt: string
  createdAt: string
}
export interface RelationUpdatedExternally {
  id: string
  relationPrePopulate?: (string | null) | Collection1
  relationHasMany?: (string | Collection1)[] | null
  relationToManyHasMany?:
    | (
        | {
            relationTo: 'collection-1'
            value: string | Collection1
          }
        | {
            relationTo: 'collection-2'
            value: string | Collection2
          }
      )[]
    | null
  updatedAt: string
  createdAt: string
}
export interface Collection1 {
  id: string
  name?: string | null
  updatedAt: string
  createdAt: string
}
export interface Collection2 {
  id: string
  name?: string | null
  updatedAt: string
  createdAt: string
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "versioned-relationship-field".
 */
export interface VersionedRelationshipField {
  id: string
  title: string
  relationshipField?:
    | {
        relationTo: 'collection-1'
        value: string | Collection1
      }[]
    | 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 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 {}
}
