/* 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 {
  auth: {
    users: UserAuthOperations;
  };
  collections: {
    parish: Parish;
    church: Church;
    worship: Worship;
    announcement: Announcement;
    blog: Blog;
    highlight: Highlight;
    event: Event;
    group: Group;
    employees: Employee;
    testimony: Testimony;
    page: Page;
    users: User;
    documents: Document;
    media: Media;
    'payload-locked-documents': PayloadLockedDocument;
    'payload-preferences': PayloadPreference;
    'payload-migrations': PayloadMigration;
  };
  collectionsJoins: {};
  collectionsSelect: {
    parish: ParishSelect<false> | ParishSelect<true>;
    church: ChurchSelect<false> | ChurchSelect<true>;
    worship: WorshipSelect<false> | WorshipSelect<true>;
    announcement: AnnouncementSelect<false> | AnnouncementSelect<true>;
    blog: BlogSelect<false> | BlogSelect<true>;
    highlight: HighlightSelect<false> | HighlightSelect<true>;
    event: EventSelect<false> | EventSelect<true>;
    group: GroupSelect<false> | GroupSelect<true>;
    employees: EmployeesSelect<false> | EmployeesSelect<true>;
    testimony: TestimonySelect<false> | TestimonySelect<true>;
    page: PageSelect<false> | PageSelect<true>;
    users: UsersSelect<false> | UsersSelect<true>;
    documents: DocumentsSelect<false> | DocumentsSelect<true>;
    media: MediaSelect<false> | MediaSelect<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: null;
  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` "parish".
 */
export interface Parish {
  id: string;
  name: string;
  slug: string;
  churches: (string | Church)[];
  employees?: (string | Employee)[] | null;
  contactPersons?:
    | {
        title: string;
        description: string;
        id?: string | null;
      }[]
    | null;
  description: string;
  history: string;
  contact: string;
  photo: string | Media;
  gallery?:
    | {
        photo: string | Media;
        id?: string | null;
      }[]
    | null;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "church".
 */
export interface Church {
  id: string;
  name: string;
  address: string;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "employees".
 */
export interface Employee {
  id: string;
  photo?: (string | null) | Media;
  name: string;
  occupation: string;
  email?: string | null;
  telephone?: string | null;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "media".
 */
export interface Media {
  id: string;
  alt: string;
  updatedAt: string;
  createdAt: string;
  url?: string | null;
  thumbnailURL?: string | null;
  filename?: string | null;
  mimeType?: string | null;
  filesize?: number | null;
  width?: number | null;
  height?: number | null;
  focalX?: number | null;
  focalY?: number | null;
  sizes?: {
    thumbnail?: {
      url?: string | null;
      width?: number | null;
      height?: number | null;
      mimeType?: string | null;
      filesize?: number | null;
      filename?: string | null;
    };
    banner?: {
      url?: string | null;
      width?: number | null;
      height?: number | null;
      mimeType?: string | null;
      filesize?: number | null;
      filename?: string | null;
    };
    gallery?: {
      url?: string | null;
      width?: number | null;
      height?: number | null;
      mimeType?: string | null;
      filesize?: number | null;
      filename?: string | null;
    };
    tablet?: {
      url?: string | null;
      width?: number | null;
      height?: number | null;
      mimeType?: string | null;
      filesize?: number | null;
      filename?: string | null;
    };
  };
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "worship".
 */
export interface Worship {
  id: string;
  date: string;
  location: string | Church;
  type: 'MASS' | 'FAMILY' | 'WORD';
  title?: string | null;
  cancelled: boolean;
  liturgicalDay?: string | null;
  celebrant?: string | null;
  description?: string | null;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "announcement".
 */
export interface Announcement {
  id: string;
  date: string;
  parish: (string | Parish)[];
  document: string | Document;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "documents".
 */
export interface Document {
  id: string;
  name: string;
  updatedAt: string;
  createdAt: string;
  url?: string | null;
  thumbnailURL?: string | null;
  filename?: string | null;
  mimeType?: string | null;
  filesize?: number | null;
  width?: number | null;
  height?: number | null;
  focalX?: number | null;
  focalY?: number | null;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "blog".
 */
export interface Blog {
  id: string;
  photo?: (string | null) | Media;
  title: string;
  parish?: (string | Parish)[] | null;
  excerpt: string;
  content: (
    | {
        content: {
          root: {
            type: string;
            children: {
              type: string;
              version: number;
              [k: string]: unknown;
            }[];
            direction: ('ltr' | 'rtl') | null;
            format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
            indent: number;
            version: number;
          };
          [k: string]: unknown;
        };
        content_html?: string | null;
        width: '1/2' | '3/4';
        id?: string | null;
        blockName?: string | null;
        blockType: 'text';
      }
    | {
        file: string | Document;
        button: string;
        id?: string | null;
        blockName?: string | null;
        blockType: 'document';
      }
    | {
        title: string;
        description: string;
        email: string;
        id?: string | null;
        blockName?: string | null;
        blockType: 'contactform';
      }
    | {
        items: {
          photo: string | Media;
          id?: string | null;
        }[];
        id?: string | null;
        blockName?: string | null;
        blockType: 'gallery';
      }
  )[];
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "highlight".
 */
export interface Highlight {
  id: string;
  from: string;
  until: string;
  date: string;
  link?:
    | ({
        relationTo: 'event';
        value: string | Event;
      } | null)
    | ({
        relationTo: 'blog';
        value: string | Blog;
      } | null)
    | ({
        relationTo: 'worship';
        value: string | Worship;
      } | null);
  text: string;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "event".
 */
export interface Event {
  id: string;
  photo?: (string | null) | Media;
  title: string;
  date: string;
  location: string;
  parish?: (string | Parish)[] | null;
  group?: (string | Group)[] | null;
  shortDescription: string;
  description: {
    root: {
      type: string;
      children: {
        type: string;
        version: number;
        [k: string]: unknown;
      }[];
      direction: ('ltr' | 'rtl') | null;
      format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
      indent: number;
      version: number;
    };
    [k: string]: unknown;
  };
  cancelled: boolean;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "group".
 */
export interface Group {
  id: string;
  photo?: (string | null) | Media;
  name: string;
  slug: string;
  description: string;
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "testimony".
 */
export interface Testimony {
  id: string;
  testimony: string;
  name: string;
  occupation?: string | null;
  category: 'EUCHARIST';
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "page".
 */
export interface Page {
  id: string;
  title: string;
  slug: string;
  content: (
    | {
        content: {
          root: {
            type: string;
            children: {
              type: string;
              version: number;
              [k: string]: unknown;
            }[];
            direction: ('ltr' | 'rtl') | null;
            format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
            indent: number;
            version: number;
          };
          [k: string]: unknown;
        };
        id?: string | null;
        blockName?: string | null;
        blockType: 'content';
      }
    | {
        title: string;
        id?: string | null;
        blockName?: string | null;
        blockType: 'title';
      }
    | {
        testimony: string | Testimony;
        id?: string | null;
        blockName?: string | null;
        blockType: 'testimony';
      }
  )[];
  updatedAt: string;
  createdAt: string;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "users".
 */
export interface User {
  id: string;
  name: string;
  roles: 'user' | 'employee' | 'admin';
  groups?: (string | Group)[] | null;
  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: 'parish';
        value: string | Parish;
      } | null)
    | ({
        relationTo: 'church';
        value: string | Church;
      } | null)
    | ({
        relationTo: 'worship';
        value: string | Worship;
      } | null)
    | ({
        relationTo: 'announcement';
        value: string | Announcement;
      } | null)
    | ({
        relationTo: 'blog';
        value: string | Blog;
      } | null)
    | ({
        relationTo: 'highlight';
        value: string | Highlight;
      } | null)
    | ({
        relationTo: 'event';
        value: string | Event;
      } | null)
    | ({
        relationTo: 'group';
        value: string | Group;
      } | null)
    | ({
        relationTo: 'employees';
        value: string | Employee;
      } | null)
    | ({
        relationTo: 'testimony';
        value: string | Testimony;
      } | null)
    | ({
        relationTo: 'page';
        value: string | Page;
      } | null)
    | ({
        relationTo: 'users';
        value: string | User;
      } | null)
    | ({
        relationTo: 'documents';
        value: string | Document;
      } | null)
    | ({
        relationTo: 'media';
        value: string | Media;
      } | 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` "parish_select".
 */
export interface ParishSelect<T extends boolean = true> {
  name?: T;
  slug?: T;
  churches?: T;
  employees?: T;
  contactPersons?:
    | T
    | {
        title?: T;
        description?: T;
        id?: T;
      };
  description?: T;
  history?: T;
  contact?: T;
  photo?: T;
  gallery?:
    | T
    | {
        photo?: T;
        id?: T;
      };
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "church_select".
 */
export interface ChurchSelect<T extends boolean = true> {
  name?: T;
  address?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "worship_select".
 */
export interface WorshipSelect<T extends boolean = true> {
  date?: T;
  location?: T;
  type?: T;
  title?: T;
  cancelled?: T;
  liturgicalDay?: T;
  celebrant?: T;
  description?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "announcement_select".
 */
export interface AnnouncementSelect<T extends boolean = true> {
  date?: T;
  parish?: T;
  document?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "blog_select".
 */
export interface BlogSelect<T extends boolean = true> {
  photo?: T;
  title?: T;
  parish?: T;
  excerpt?: T;
  content?:
    | T
    | {
        text?:
          | T
          | {
              content?: T;
              content_html?: T;
              width?: T;
              id?: T;
              blockName?: T;
            };
        document?:
          | T
          | {
              file?: T;
              button?: T;
              id?: T;
              blockName?: T;
            };
        contactform?:
          | T
          | {
              title?: T;
              description?: T;
              email?: T;
              id?: T;
              blockName?: T;
            };
        gallery?:
          | T
          | {
              items?:
                | T
                | {
                    photo?: T;
                    id?: T;
                  };
              id?: T;
              blockName?: T;
            };
      };
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "highlight_select".
 */
export interface HighlightSelect<T extends boolean = true> {
  from?: T;
  until?: T;
  date?: T;
  link?: T;
  text?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "event_select".
 */
export interface EventSelect<T extends boolean = true> {
  photo?: T;
  title?: T;
  date?: T;
  location?: T;
  parish?: T;
  group?: T;
  shortDescription?: T;
  description?: T;
  cancelled?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "group_select".
 */
export interface GroupSelect<T extends boolean = true> {
  photo?: T;
  name?: T;
  slug?: T;
  description?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "employees_select".
 */
export interface EmployeesSelect<T extends boolean = true> {
  photo?: T;
  name?: T;
  occupation?: T;
  email?: T;
  telephone?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "testimony_select".
 */
export interface TestimonySelect<T extends boolean = true> {
  testimony?: T;
  name?: T;
  occupation?: T;
  category?: T;
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "page_select".
 */
export interface PageSelect<T extends boolean = true> {
  title?: T;
  slug?: T;
  content?:
    | T
    | {
        content?:
          | T
          | {
              content?: T;
              id?: T;
              blockName?: T;
            };
        title?:
          | T
          | {
              title?: T;
              id?: T;
              blockName?: T;
            };
        testimony?:
          | T
          | {
              testimony?: T;
              id?: T;
              blockName?: T;
            };
      };
  updatedAt?: T;
  createdAt?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "users_select".
 */
export interface UsersSelect<T extends boolean = true> {
  name?: T;
  roles?: T;
  groups?: T;
  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` "documents_select".
 */
export interface DocumentsSelect<T extends boolean = true> {
  name?: T;
  updatedAt?: T;
  createdAt?: T;
  url?: T;
  thumbnailURL?: T;
  filename?: T;
  mimeType?: T;
  filesize?: T;
  width?: T;
  height?: T;
  focalX?: T;
  focalY?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "media_select".
 */
export interface MediaSelect<T extends boolean = true> {
  alt?: T;
  updatedAt?: T;
  createdAt?: T;
  url?: T;
  thumbnailURL?: T;
  filename?: T;
  mimeType?: T;
  filesize?: T;
  width?: T;
  height?: T;
  focalX?: T;
  focalY?: T;
  sizes?:
    | T
    | {
        thumbnail?:
          | T
          | {
              url?: T;
              width?: T;
              height?: T;
              mimeType?: T;
              filesize?: T;
              filename?: T;
            };
        banner?:
          | T
          | {
              url?: T;
              width?: T;
              height?: T;
              mimeType?: T;
              filesize?: T;
              filename?: T;
            };
        gallery?:
          | T
          | {
              url?: T;
              width?: T;
              height?: T;
              mimeType?: T;
              filesize?: T;
              filename?: T;
            };
        tablet?:
          | T
          | {
              url?: T;
              width?: T;
              height?: T;
              mimeType?: T;
              filesize?: T;
              filename?: 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' {
  export interface GeneratedTypes extends Config {}
}