/** Types generated for queries found in "src/modules/charges/providers/charges.provider.ts" */
export type accountant_status = 'APPROVED' | 'PENDING' | 'UNAPPROVED';

export type charge_type = 'BANK_DEPOSIT' | 'BUSINESS_TRIP' | 'COMMON' | 'CONVERSION' | 'CREDITCARD_BANK' | 'DIVIDEND' | 'FINANCIAL' | 'FOREIGN_SECURITIES' | 'INTERNAL' | 'PAYROLL' | 'VAT';

export type currency = 'AUD' | 'CAD' | 'ETH' | 'EUR' | 'GBP' | 'GRT' | 'ILS' | 'JPY' | 'SEK' | 'USD' | 'USDC';

export type DateArray = (Date)[];

export type accountant_statusArray = (accountant_status)[];

export type stringArray = (string)[];

/** 'GetChargesByIds' parameters type */
export interface IGetChargesByIdsParams {
  chargeIds: readonly (string | null | void)[];
}

/** 'GetChargesByIds' return type */
export interface IGetChargesByIdsResult {
  accountant_status: accountant_status;
  created_at: Date;
  documents_optional_flag: boolean;
  id: string;
  invoice_payment_currency_diff: boolean | null;
  is_property: boolean;
  optional_vat: boolean;
  owner_id: string;
  tax_category_id: string | null;
  type: charge_type | null;
  updated_at: Date;
  user_description: string | null;
}

/** 'GetChargesByIds' query type */
export interface IGetChargesByIdsQuery {
  params: IGetChargesByIdsParams;
  result: IGetChargesByIdsResult;
}

/** 'GetChargesByTransactionIds' parameters type */
export interface IGetChargesByTransactionIdsParams {
  transactionIds: readonly (string | null | void)[];
}

/** 'GetChargesByTransactionIds' return type */
export interface IGetChargesByTransactionIdsResult {
  accountant_status: accountant_status;
  created_at: Date;
  documents_optional_flag: boolean;
  id: string;
  invoice_payment_currency_diff: boolean | null;
  is_property: boolean;
  optional_vat: boolean;
  owner_id: string;
  tax_category_id: string | null;
  transaction_id: string;
  type: charge_type | null;
  updated_at: Date;
  user_description: string | null;
}

/** 'GetChargesByTransactionIds' query type */
export interface IGetChargesByTransactionIdsQuery {
  params: IGetChargesByTransactionIdsParams;
  result: IGetChargesByTransactionIdsResult;
}

/** 'GetChargesByMissingRequiredInfo' parameters type */
export type IGetChargesByMissingRequiredInfoParams = void;

/** 'GetChargesByMissingRequiredInfo' return type */
export interface IGetChargesByMissingRequiredInfoResult {
  accountant_status: accountant_status;
  created_at: Date;
  documents_optional_flag: boolean;
  id: string;
  invoice_payment_currency_diff: boolean | null;
  is_property: boolean;
  optional_vat: boolean;
  owner_id: string;
  tax_category_id: string | null;
  type: charge_type | null;
  updated_at: Date;
  user_description: string | null;
}

/** 'GetChargesByMissingRequiredInfo' query type */
export interface IGetChargesByMissingRequiredInfoQuery {
  params: IGetChargesByMissingRequiredInfoParams;
  result: IGetChargesByMissingRequiredInfoResult;
}

/** 'UpdateCharge' parameters type */
export interface IUpdateChargeParams {
  accountantStatus?: accountant_status | null | void;
  chargeId?: string | null | void;
  isInvoicePaymentDifferentCurrency?: boolean | null | void;
  isProperty?: boolean | null | void;
  optionalDocuments?: boolean | null | void;
  optionalVAT?: boolean | null | void;
  taxCategoryId?: string | null | void;
  type?: charge_type | null | void;
  userDescription?: string | null | void;
}

/** 'UpdateCharge' return type */
export interface IUpdateChargeResult {
  accountant_status: accountant_status;
  created_at: Date;
  documents_optional_flag: boolean;
  id: string;
  invoice_payment_currency_diff: boolean | null;
  is_property: boolean;
  optional_vat: boolean;
  owner_id: string;
  tax_category_id: string | null;
  type: charge_type | null;
  updated_at: Date;
  user_description: string | null;
}

/** 'UpdateCharge' query type */
export interface IUpdateChargeQuery {
  params: IUpdateChargeParams;
  result: IUpdateChargeResult;
}

/** 'BatchUpdateCharges' parameters type */
export interface IBatchUpdateChargesParams {
  accountantStatus?: accountant_status | null | void;
  chargeIds: readonly (string | null | void)[];
  isInvoicePaymentDifferentCurrency?: boolean | null | void;
  isProperty?: boolean | null | void;
  optionalDocuments?: boolean | null | void;
  optionalVAT?: boolean | null | void;
  taxCategoryId?: string | null | void;
  type?: charge_type | null | void;
  userDescription?: string | null | void;
}

/** 'BatchUpdateCharges' return type */
export interface IBatchUpdateChargesResult {
  accountant_status: accountant_status;
  created_at: Date;
  documents_optional_flag: boolean;
  id: string;
  invoice_payment_currency_diff: boolean | null;
  is_property: boolean;
  optional_vat: boolean;
  owner_id: string;
  tax_category_id: string | null;
  type: charge_type | null;
  updated_at: Date;
  user_description: string | null;
}

/** 'BatchUpdateCharges' query type */
export interface IBatchUpdateChargesQuery {
  params: IBatchUpdateChargesParams;
  result: IBatchUpdateChargesResult;
}

/** 'UpdateAccountantApproval' parameters type */
export interface IUpdateAccountantApprovalParams {
  accountantStatus?: accountant_status | null | void;
  chargeId?: string | null | void;
}

/** 'UpdateAccountantApproval' return type */
export interface IUpdateAccountantApprovalResult {
  accountant_status: accountant_status;
  created_at: Date;
  documents_optional_flag: boolean;
  id: string;
  invoice_payment_currency_diff: boolean | null;
  is_property: boolean;
  optional_vat: boolean;
  owner_id: string;
  tax_category_id: string | null;
  type: charge_type | null;
  updated_at: Date;
  user_description: string | null;
}

/** 'UpdateAccountantApproval' query type */
export interface IUpdateAccountantApprovalQuery {
  params: IUpdateAccountantApprovalParams;
  result: IUpdateAccountantApprovalResult;
}

/** 'GenerateCharge' parameters type */
export interface IGenerateChargeParams {
  accountantStatus?: accountant_status | null | void;
  isProperty?: boolean | null | void;
  optionalDocuments?: boolean | null | void;
  optionalVAT?: boolean | null | void;
  ownerId?: string | null | void;
  taxCategoryId?: string | null | void;
  type?: charge_type | null | void;
  userDescription?: string | null | void;
}

/** 'GenerateCharge' return type */
export interface IGenerateChargeResult {
  accountant_status: accountant_status;
  created_at: Date;
  documents_optional_flag: boolean;
  id: string;
  invoice_payment_currency_diff: boolean | null;
  is_property: boolean;
  optional_vat: boolean;
  owner_id: string;
  tax_category_id: string | null;
  type: charge_type | null;
  updated_at: Date;
  user_description: string | null;
}

/** 'GenerateCharge' query type */
export interface IGenerateChargeQuery {
  params: IGenerateChargeParams;
  result: IGenerateChargeResult;
}

/** 'GetChargesByFilters' parameters type */
export interface IGetChargesByFiltersParams {
  accountantStatuses?: accountant_statusArray | null | void;
  asc?: boolean | null | void;
  businessIds?: stringArray | null | void;
  businessTripIds?: stringArray | null | void;
  chargeType?: string | null | void;
  freeText?: string | null | void;
  fromAnyDate?: string | null | void;
  fromDate?: string | null | void;
  IDs: readonly (string | null | void)[];
  isAccountantStatuses?: number | null | void;
  isBusinessIds?: number | null | void;
  isBusinessTripIds?: number | null | void;
  isIDs?: number | null | void;
  isOwnerIds?: number | null | void;
  isTags?: number | null | void;
  ownerIds: readonly (string | null | void)[];
  sortColumn?: string | null | void;
  tags?: stringArray | null | void;
  toAnyDate?: string | null | void;
  toDate?: string | null | void;
  type?: charge_type | null | void;
  withMissingCounterparty?: boolean | null | void;
  withOpenDocuments?: boolean | null | void;
  withoutDocuments?: boolean | null | void;
  withoutInvoice?: boolean | null | void;
  withoutLedger?: boolean | null | void;
  withoutReceipt?: boolean | null | void;
  withoutTransactions?: boolean | null | void;
}

/** 'GetChargesByFilters' return type */
export interface IGetChargesByFiltersResult {
  abs_event_amount: string | null;
  accountant_status: accountant_status;
  business_array: stringArray | null;
  business_id: string;
  business_trip_id: string | null;
  can_settle_with_receipt: boolean | null;
  created_at: Date;
  documents_count: string | null;
  documents_currency: currency | null;
  documents_event_amount: number | null;
  documents_max_date: Date | null;
  documents_min_date: Date | null;
  documents_optional_flag: boolean;
  documents_vat_amount: number | null;
  event_amount: string | null;
  id: string;
  invalid_documents: boolean | null;
  invalid_transactions: boolean | null;
  invoice_payment_currency_diff: boolean | null;
  invoices_count: string | null;
  is_property: boolean;
  ledger_count: string | null;
  ledger_financial_entities: stringArray | null;
  ledger_max_invoice_date: Date | null;
  ledger_max_value_date: Date | null;
  ledger_min_invoice_date: Date | null;
  ledger_min_value_date: Date | null;
  missing_counterparty_documents: boolean | null;
  missing_counterparty_transactions: boolean | null;
  no_invoices_required: boolean | null;
  open_docs_flag: boolean | null;
  optional_vat: boolean;
  owner_id: string;
  receipts_count: string | null;
  tags: stringArray | null;
  tax_category_id: string | null;
  transactions_count: string | null;
  transactions_currency: currency | null;
  transactions_event_amount: string | null;
  transactions_max_debit_date: Date | null;
  transactions_max_event_date: Date | null;
  transactions_min_debit_date: Date | null;
  transactions_min_event_date: Date | null;
  type: charge_type | null;
  updated_at: Date;
  user_description: string | null;
  years_of_relevance: DateArray | null;
}

/** 'GetChargesByFilters' query type */
export interface IGetChargesByFiltersQuery {
  params: IGetChargesByFiltersParams;
  result: IGetChargesByFiltersResult;
}

/** 'GetSimilarCharges' parameters type */
export interface IGetSimilarChargesParams {
  businessArray?: stringArray | null | void;
  businessId?: string | null | void;
  descriptionDifferentThan?: string | null | void;
  ownerId?: string | null | void;
  tagsDifferentThan?: stringArray | null | void;
  withMissingDescription?: boolean | null | void;
  withMissingTags?: boolean | null | void;
}

/** 'GetSimilarCharges' return type */
export interface IGetSimilarChargesResult {
  accountant_status: accountant_status;
  created_at: Date;
  documents_optional_flag: boolean;
  id: string;
  invoice_payment_currency_diff: boolean | null;
  is_property: boolean;
  optional_vat: boolean;
  owner_id: string;
  tax_category_id: string | null;
  type: charge_type | null;
  updated_at: Date;
  user_description: string | null;
}

/** 'GetSimilarCharges' query type */
export interface IGetSimilarChargesQuery {
  params: IGetSimilarChargesParams;
  result: IGetSimilarChargesResult;
}

/** 'DeleteChargesByIds' parameters type */
export interface IDeleteChargesByIdsParams {
  chargeIds: readonly (string | null | void)[];
}

/** 'DeleteChargesByIds' return type */
export type IDeleteChargesByIdsResult = void;

/** 'DeleteChargesByIds' query type */
export interface IDeleteChargesByIdsQuery {
  params: IDeleteChargesByIdsParams;
  result: IDeleteChargesByIdsResult;
}

