/* 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.
 */

/**
 * Supported timezones in IANA format.
 *
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "supportedTimezones".
 */
export type SupportedTimezones =
  | 'Pacific/Midway'
  | 'Pacific/Niue'
  | 'Pacific/Honolulu'
  | 'Pacific/Rarotonga'
  | 'America/Anchorage'
  | 'Pacific/Gambier'
  | 'America/Los_Angeles'
  | 'America/Tijuana'
  | 'America/Denver'
  | 'America/Phoenix'
  | 'America/Chicago'
  | 'America/Guatemala'
  | 'America/New_York'
  | 'America/Bogota'
  | 'America/Caracas'
  | 'America/Santiago'
  | 'America/Buenos_Aires'
  | 'America/Sao_Paulo'
  | 'Atlantic/South_Georgia'
  | 'Atlantic/Azores'
  | 'Atlantic/Cape_Verde'
  | 'Europe/London'
  | 'Europe/Berlin'
  | 'Africa/Lagos'
  | 'Europe/Athens'
  | 'Africa/Cairo'
  | 'Europe/Moscow'
  | 'Asia/Riyadh'
  | 'Asia/Dubai'
  | 'Asia/Baku'
  | 'Asia/Karachi'
  | 'Asia/Tashkent'
  | 'Asia/Calcutta'
  | 'Asia/Dhaka'
  | 'Asia/Almaty'
  | 'Asia/Jakarta'
  | 'Asia/Bangkok'
  | 'Asia/Shanghai'
  | 'Asia/Singapore'
  | 'Asia/Tokyo'
  | 'Asia/Seoul'
  | 'Australia/Brisbane'
  | 'Australia/Sydney'
  | 'Pacific/Guam'
  | 'Pacific/Noumea'
  | 'Pacific/Auckland'
  | 'Pacific/Fiji';

export interface Config {
  auth: {
    users: UserAuthOperations;
  };
  blocks: {};
  collections: {
    'fields-relationship': FieldsRelationship;
    'relation-filter-false': RelationFilterFalse;
    'relation-filter-true': RelationFilterTrue;
    'relation-one': RelationOne;
    'relation-two': RelationTwo;
    'relation-restricted': RelationRestricted;
    'relation-with-title': RelationWithTitle;
    'relation-updated-externally': RelationUpdatedExternally;
    'collection-1': Collection1;
    'collection-2': Collection2;
    videos: Video;
    podcasts: Podcast;
    'mixed-media': MixedMedia;
    'versioned-relationship-field': VersionedRelationshipField;
    users: User;
    'payload-locked-documents': PayloadLockedDocument;
    'payload-preferences': PayloadPreference;
    'payload-migrations': PayloadMigration;
  };
  collectionsJoins: {};
  collectionsSelect: {
    'fields-relationship': FieldsRelationshipSelect<false> | FieldsRelationshipSelect<true>;
    'relation-filter-false': RelationFilterFalseSelect<false> | RelationFilterFalseSelect<true>;
    'relation-filter-true': RelationFilterTrueSelect<false> | RelationFilterTrueSelect<true>;
    'relation-one': RelationOneSelect<false> | RelationOneSelect<true>;
    'relation-two': RelationTwoSelect<false> | RelationTwoSelect<true>;
    'relation-restricted': RelationRestrictedSelect<false> | RelationRestrictedSelect<true>;
    'relation-with-title': RelationWithTitleSelect<false> | RelationWithTitleSelect<true>;
    'relation-updated-externally': RelationUpdatedExternallySelect<false> | RelationUpdatedExternallySelect<true>;
    'collection-1': Collection1Select<false> | Collection1Select<true>;
    'collection-2': Collection2Select<false> | Collection2Select<true>;
    videos: VideosSelect<false> | VideosSelect<true>;
    podcasts: PodcastsSelect<false> | PodcastsSelect<true>;
    'mixed-media': MixedMediaSelect<false> | MixedMediaSelect<true>;
    'versioned-relationship-field': VersionedRelationshipFieldSelect<false> | VersionedRelationshipFieldSelect<true>;
    users: UsersSelect<false> | UsersSelect<true>;
    'payload-locked-documents': PayloadLockedDocumentsSelect<false> | PayloadLockedDocumentsSelect<true>;
    'payload-preferences': PayloadPreferencesSelect<false> | PayloadPreferencesSelect<true>;
    'payload-migrations': PayloadMigrationsSelect<false> | PayloadMigrationsSelect<true>;
  };
  db: {
    defaultIDType: string;
  };
  globals: {};
  globalsSelect: {};
  locale: 'en';
  user: User & {
    collection: 'users';
  };
  jobs: {
    tasks: unknown;
    workflows: unknown;
  };
}
export interface UserAuthOperations {
  forgotPassword: {
    email: string;
    password: string;
  };
  login: {
    email: string;
    password: string;
  };
  registerFirstUser: {
    email: string;
    password: string;
  };
  unlock: {
    email: string;
    password: string;
  };
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "fields-relationship".
 */
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;
  /**
   * This will filter the relationship options based on id, which is the same as the relationship field in this document
   */
  relationshipFilteredByID?: (string | null) | RelationOne;
  /**
   * This will filter the relationship options if the filter field in this document is set to "Include me"
   */
  relationshipFilteredByField?: (string | null) | FieldsRelationship;
  /**
   * This will filter the relationship options if the filter field in this document is set to "Include me"
   */
  nestedRelationshipFilteredByField?: (string | null) | FieldsRelationship;
  relationshipFilteredAsync?: (string | null) | RelationOne;
  relationshipManyFiltered?:
    | (
        | {
            relationTo: 'relation-with-title';
            value: string | RelationWithTitle;
          }
        | {
            relationTo: 'relation-filter-false';
            value: string | RelationFilterFalse;
          }
        | {
            relationTo: 'relation-filter-true';
            value: string | RelationFilterTrue;
          }
        | {
            relationTo: 'relation-one';
            value: string | RelationOne;
          }
      )[]
    | null;
  filter?: string | null;
  relationshipReadOnly?: (string | null) | RelationOne;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "relation-one".
 */
export interface RelationOne {
  id: string;
  name?: string | null;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "relation-two".
 */
export interface RelationTwo {
  id: string;
  name?: string | null;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "relation-restricted".
 */
export interface RelationRestricted {
  id: string;
  name?: string | null;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "relation-with-title".
 */
export interface RelationWithTitle {
  id: string;
  name?: string | null;
  meta?: {
    title?: string | null;
  };
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "relation-filter-false".
 */
export interface RelationFilterFalse {
  id: string;
  name?: string | null;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "relation-filter-true".
 */
export interface RelationFilterTrue {
  id: string;
  name?: string | null;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "relation-updated-externally".
 */
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;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "collection-1".
 */
export interface Collection1 {
  id: string;
  name?: string | null;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "collection-2".
 */
export interface Collection2 {
  id: string;
  name?: string | null;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "videos".
 */
export interface Video {
  id: number;
  title?: string | null;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "podcasts".
 */
export interface Podcast {
  id: number;
  title?: string | null;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "mixed-media".
 */
export interface MixedMedia {
  id: string;
  relatedMedia?:
    | (
        | {
            relationTo: 'videos';
            value: number | Video;
          }
        | {
            relationTo: 'podcasts';
            value: number | Podcast;
          }
      )[]
    | 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;
  _status?: ('draft' | 'published') | null;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "users".
 */
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;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "payload-locked-documents".
 */
export interface PayloadLockedDocument {
  id: string;
  document?:
    | ({
        relationTo: 'fields-relationship';
        value: string | FieldsRelationship;
      } | null)
    | ({
        relationTo: 'relation-filter-false';
        value: string | RelationFilterFalse;
      } | null)
    | ({
        relationTo: 'relation-filter-true';
        value: string | RelationFilterTrue;
      } | null)
    | ({
        relationTo: 'relation-one';
        value: string | RelationOne;
      } | null)
    | ({
        relationTo: 'relation-two';
        value: string | RelationTwo;
      } | null)
    | ({
        relationTo: 'relation-restricted';
        value: string | RelationRestricted;
      } | null)
    | ({
        relationTo: 'relation-with-title';
        value: string | RelationWithTitle;
      } | null)
    | ({
        relationTo: 'relation-updated-externally';
        value: string | RelationUpdatedExternally;
      } | null)
    | ({
        relationTo: 'collection-1';
        value: string | Collection1;
      } | null)
    | ({
        relationTo: 'collection-2';
        value: string | Collection2;
      } | null)
    | ({
        relationTo: 'videos';
        value: number | Video;
      } | null)
    | ({
        relationTo: 'podcasts';
        value: number | Podcast;
      } | null)
    | ({
        relationTo: 'mixed-media';
        value: string | MixedMedia;
      } | null)
    | ({
        relationTo: 'versioned-relationship-field';
        value: string | VersionedRelationshipField;
      } | null)
    | ({
        relationTo: 'users';
        value: string | User;
      } | null);
  globalSlug?: string | null;
  user: {
    relationTo: 'users';
    value: string | User;
  };
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "payload-preferences".
 */
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;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "payload-migrations".
 */
export interface PayloadMigration {
  id: string;
  name?: string | null;
  batch?: number | null;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "fields-relationship_select".
 */
export interface FieldsRelationshipSelect<T extends boolean = true> {
  relationship?: T;
  relationshipHasMany?: T;
  relationshipMultiple?: T;
  relationshipHasManyMultiple?: T;
  relationshipRestricted?: T;
  relationshipWithTitle?: T;
  relationshipFilteredByID?: T;
  relationshipFilteredByField?: T;
  nestedRelationshipFilteredByField?: T;
  relationshipFilteredAsync?: T;
  relationshipManyFiltered?: T;
  filter?: T;
  relationshipReadOnly?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "relation-filter-false_select".
 */
export interface RelationFilterFalseSelect<T extends boolean = true> {
  name?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "relation-filter-true_select".
 */
export interface RelationFilterTrueSelect<T extends boolean = true> {
  name?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "relation-one_select".
 */
export interface RelationOneSelect<T extends boolean = true> {
  name?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "relation-two_select".
 */
export interface RelationTwoSelect<T extends boolean = true> {
  name?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "relation-restricted_select".
 */
export interface RelationRestrictedSelect<T extends boolean = true> {
  name?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "relation-with-title_select".
 */
export interface RelationWithTitleSelect<T extends boolean = true> {
  name?: T;
  meta?:
    | T
    | {
        title?: T;
      };
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "relation-updated-externally_select".
 */
export interface RelationUpdatedExternallySelect<T extends boolean = true> {
  relationPrePopulate?: T;
  relationHasMany?: T;
  relationToManyHasMany?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "collection-1_select".
 */
export interface Collection1Select<T extends boolean = true> {
  name?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "collection-2_select".
 */
export interface Collection2Select<T extends boolean = true> {
  name?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "videos_select".
 */
export interface VideosSelect<T extends boolean = true> {
  id?: T;
  title?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "podcasts_select".
 */
export interface PodcastsSelect<T extends boolean = true> {
  id?: T;
  title?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "mixed-media_select".
 */
export interface MixedMediaSelect<T extends boolean = true> {
  relatedMedia?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "versioned-relationship-field_select".
 */
export interface VersionedRelationshipFieldSelect<T extends boolean = true> {
  title?: T;
  relationshipField?: T;
  updatedAt?: T;
  createdAt?: T;
  _status?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "users_select".
 */
export interface UsersSelect<T extends boolean = true> {
  updatedAt?: T;
  createdAt?: T;
  email?: T;
  resetPasswordToken?: T;
  resetPasswordExpiration?: T;
  salt?: T;
  hash?: T;
  loginAttempts?: T;
  lockUntil?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "payload-locked-documents_select".
 */
export interface PayloadLockedDocumentsSelect<T extends boolean = true> {
  document?: T;
  globalSlug?: T;
  user?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "payload-preferences_select".
 */
export interface PayloadPreferencesSelect<T extends boolean = true> {
  user?: T;
  key?: T;
  value?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "payload-migrations_select".
 */
export interface PayloadMigrationsSelect<T extends boolean = true> {
  name?: T;
  batch?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "auth".
 */
export interface Auth {
  [k: string]: unknown;
}


declare module 'payload' {
  // @ts-ignore 
  export interface GeneratedTypes extends Config {}
}