/** Types generated for queries found in "src/modules/financial-entities/providers/businesses.provider.ts" */
export type pcn874_record_type = 'C' | 'H' | 'I' | 'K' | 'L1' | 'L2' | 'M' | 'P' | 'R' | 'S1' | 'S2' | 'T' | 'Y';

export type Json = null | boolean | number | string | Json[] | { [key: string]: Json };

/** 'GetBusinessesByIds' parameters type */
export interface IGetBusinessesByIdsParams {
  ids: readonly (string | null | void)[];
}

/** 'GetBusinessesByIds' return type */
export interface IGetBusinessesByIdsResult {
  address: string | null;
  address_hebrew: string | null;
  can_settle_with_receipt: boolean;
  city: string | null;
  country: string;
  created_at: Date;
  email: string | null;
  exempt_dealer: boolean;
  hebrew_name: string | null;
  id: string;
  irs_code: number | null;
  is_active: boolean;
  name: string;
  no_invoices_required: boolean;
  optional_vat: boolean;
  owner_id: string | null;
  pcn874_record_type_override: pcn874_record_type | null;
  phone_number: string | null;
  sort_code: number | null;
  suggestion_data: Json | null;
  type: string | null;
  updated_at: Date;
  vat_number: string | null;
  website: string | null;
  zip_code: string | null;
}

/** 'GetBusinessesByIds' query type */
export interface IGetBusinessesByIdsQuery {
  params: IGetBusinessesByIdsParams;
  result: IGetBusinessesByIdsResult;
}

/** 'GetAllBusinesses' parameters type */
export type IGetAllBusinessesParams = void;

/** 'GetAllBusinesses' return type */
export interface IGetAllBusinessesResult {
  address: string | null;
  address_hebrew: string | null;
  can_settle_with_receipt: boolean;
  city: string | null;
  country: string;
  created_at: Date;
  email: string | null;
  exempt_dealer: boolean;
  hebrew_name: string | null;
  id: string;
  irs_code: number | null;
  is_active: boolean;
  name: string;
  no_invoices_required: boolean;
  optional_vat: boolean;
  owner_id: string | null;
  pcn874_record_type_override: pcn874_record_type | null;
  phone_number: string | null;
  sort_code: number | null;
  suggestion_data: Json | null;
  type: string | null;
  updated_at: Date;
  vat_number: string | null;
  website: string | null;
  zip_code: string | null;
}

/** 'GetAllBusinesses' query type */
export interface IGetAllBusinessesQuery {
  params: IGetAllBusinessesParams;
  result: IGetAllBusinessesResult;
}

/** 'GetBusinessByEmail' parameters type */
export interface IGetBusinessByEmailParams {
  email?: string | null | void;
}

/** 'GetBusinessByEmail' return type */
export interface IGetBusinessByEmailResult {
  address: string | null;
  address_hebrew: string | null;
  can_settle_with_receipt: boolean;
  city: string | null;
  country: string;
  created_at: Date;
  email: string | null;
  exempt_dealer: boolean;
  hebrew_name: string | null;
  id: string;
  irs_code: number | null;
  is_active: boolean;
  name: string;
  no_invoices_required: boolean;
  optional_vat: boolean;
  owner_id: string | null;
  pcn874_record_type_override: pcn874_record_type | null;
  phone_number: string | null;
  sort_code: number | null;
  suggestion_data: Json | null;
  type: string | null;
  updated_at: Date;
  vat_number: string | null;
  website: string | null;
  zip_code: string | null;
}

/** 'GetBusinessByEmail' query type */
export interface IGetBusinessByEmailQuery {
  params: IGetBusinessByEmailParams;
  result: IGetBusinessByEmailResult;
}

/** 'UpdateBusiness' parameters type */
export interface IUpdateBusinessParams {
  address?: string | null | void;
  addressHebrew?: string | null | void;
  businessId?: string | null | void;
  city?: string | null | void;
  country?: string | null | void;
  email?: string | null | void;
  exemptDealer?: boolean | null | void;
  hebrewName?: string | null | void;
  isDocumentsOptional?: boolean | null | void;
  isReceiptEnough?: boolean | null | void;
  optionalVat?: boolean | null | void;
  pcn874RecordTypeOverride?: pcn874_record_type | null | void;
  phoneNumber?: string | null | void;
  suggestionData?: Json | null | void;
  vatNumber?: string | null | void;
  website?: string | null | void;
  zipCode?: string | null | void;
}

/** 'UpdateBusiness' return type */
export interface IUpdateBusinessResult {
  address: string | null;
  address_hebrew: string | null;
  can_settle_with_receipt: boolean;
  city: string | null;
  country: string;
  email: string | null;
  exempt_dealer: boolean;
  hebrew_name: string | null;
  id: string;
  no_invoices_required: boolean;
  optional_vat: boolean;
  owner_id: string;
  pcn874_record_type_override: pcn874_record_type | null;
  phone_number: string | null;
  suggestion_data: Json | null;
  vat_number: string | null;
  website: string | null;
  zip_code: string | null;
}

/** 'UpdateBusiness' query type */
export interface IUpdateBusinessQuery {
  params: IUpdateBusinessParams;
  result: IUpdateBusinessResult;
}

/** 'InsertBusinesses' parameters type */
export interface IInsertBusinessesParams {
  businesses: readonly ({
    id: string | null | void,
    hebrewName: string | null | void,
    address: string | null | void,
    city: string | null | void,
    zipCode: string | null | void,
    email: string | null | void,
    website: string | null | void,
    phoneNumber: string | null | void,
    governmentId: string | null | void,
    exemptDealer: boolean | null | void,
    suggestions: Json | null | void,
    optionalVat: boolean | null | void,
    country: string | null | void,
    pcn874RecordTypeOverride: pcn874_record_type | null | void,
    isReceiptEnough: boolean | null | void,
    isDocumentsOptional: boolean | null | void,
    ownerId: string | null | void
  })[];
}

/** 'InsertBusinesses' return type */
export interface IInsertBusinessesResult {
  address: string | null;
  address_hebrew: string | null;
  can_settle_with_receipt: boolean;
  city: string | null;
  country: string;
  email: string | null;
  exempt_dealer: boolean;
  hebrew_name: string | null;
  id: string;
  no_invoices_required: boolean;
  optional_vat: boolean;
  owner_id: string;
  pcn874_record_type_override: pcn874_record_type | null;
  phone_number: string | null;
  suggestion_data: Json | null;
  vat_number: string | null;
  website: string | null;
  zip_code: string | null;
}

/** 'InsertBusinesses' query type */
export interface IInsertBusinessesQuery {
  params: IInsertBusinessesParams;
  result: IInsertBusinessesResult;
}

/** 'ReplaceBusinesses' parameters type */
export interface IReplaceBusinessesParams {
  businessIdToReplace?: string | null | void;
  targetBusinessId?: string | null | void;
}

/** 'ReplaceBusinesses' return type */
export interface IReplaceBusinessesResult {
  id: string;
}

/** 'ReplaceBusinesses' query type */
export interface IReplaceBusinessesQuery {
  params: IReplaceBusinessesParams;
  result: IReplaceBusinessesResult;
}

