/** Types generated for queries found in "src/modules/scraper-ingestion/providers/otsar-hahayal-scraper-ingestion.provider.ts" */
export type DateOrString = Date | string;

export type DateOrStringArray = (DateOrString)[];

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

export type NumberOrString = number | string;

export type numberArray = (number)[];

export type stringArray = (string)[];

/** 'FetchOtsarHahayalIlsByKeys' parameters type */
export interface IFetchOtsarHahayalIlsByKeysParams {
  accountNumbers: numberArray;
  branchNumbers: numberArray;
  dateOfRegistrations: DateOrStringArray;
}

/** 'FetchOtsarHahayalIlsByKeys' return type */
export interface IFetchOtsarHahayalIlsByKeysResult {
  account_number: number;
  action_code: number;
  bfb_source: string;
  branch_number: number;
  closing_balance: string;
  correspondent_account: number;
  correspondent_account_type: number;
  correspondent_bank: number;
  correspondent_branch: number;
  credit_amount: string;
  customer_name: string;
  date_of_business_day: Date;
  date_of_registration: Date;
  debit_amount: string;
  depositor_id: number;
  description: string;
  drill_down_data: Json | null;
  drill_down_url: string;
  first_transaction_of_day: boolean;
  id: string;
  last_transaction_of_day: boolean;
  name: string;
  opening_balance: string;
  operation_source: string;
  origin_reference: string;
  reference: number;
  salary_ind: number;
  transaction_reason: string;
  transaction_source: string;
}

/** 'FetchOtsarHahayalIlsByKeys' query type */
export interface IFetchOtsarHahayalIlsByKeysQuery {
  params: IFetchOtsarHahayalIlsByKeysParams;
  result: IFetchOtsarHahayalIlsByKeysResult;
}

/** 'UploadOtsarHahayalIlsTransactions' parameters type */
export interface IUploadOtsarHahayalIlsTransactionsParams {
  transactions: readonly ({
    accountNumber: number | null | void,
    accountType: number | null | void,
    branchNumber: number | null | void,
    actionCode: number | null | void,
    bfbSource: string | null | void,
    closingBalance: NumberOrString | null | void,
    correspondentAccount: number | null | void,
    correspondentAccountType: number | null | void,
    correspondentBank: number | null | void,
    correspondentBranch: number | null | void,
    creditAmount: NumberOrString | null | void,
    customerName: string | null | void,
    dateOfBusinessDay: DateOrString | null | void,
    dateOfRegistration: DateOrString | null | void,
    debitAmount: NumberOrString | null | void,
    depositorId: number | null | void,
    description: string | null | void,
    drillDownUrl: string | null | void,
    drillDownData: Json | null | void,
    firstTransactionOfDay: boolean | null | void,
    lastTransactionOfDay: boolean | null | void,
    name: string | null | void,
    openingBalance: NumberOrString | null | void,
    operationSource: string | null | void,
    reference: number | null | void,
    salaryInd: number | null | void,
    transactionSource: string | null | void,
    transactionReason: string | null | void,
    originReference: string | null | void,
    ownerId: string | null | void
  })[];
}

/** 'UploadOtsarHahayalIlsTransactions' return type */
export interface IUploadOtsarHahayalIlsTransactionsResult {
  account_number: number;
  branch_number: number;
  credit_amount: string;
  date_of_registration: Date;
  debit_amount: string;
  description: string;
  id: string;
}

/** 'UploadOtsarHahayalIlsTransactions' query type */
export interface IUploadOtsarHahayalIlsTransactionsQuery {
  params: IUploadOtsarHahayalIlsTransactionsParams;
  result: IUploadOtsarHahayalIlsTransactionsResult;
}

/** 'FetchOtsarHahayalForeignByKeys' parameters type */
export interface IFetchOtsarHahayalForeignByKeysParams {
  accounts: numberArray;
  branches: numberArray;
  dates: DateOrStringArray;
  references: stringArray;
}

/** 'FetchOtsarHahayalForeignByKeys' return type */
export interface IFetchOtsarHahayalForeignByKeysResult {
  account: number;
  account_type: string;
  balance: string | null;
  branch: number;
  credit: string;
  currency: string;
  date: Date;
  debit: string;
  description: string;
  id: string;
  opening_balance: string;
  reference: string;
  sp: number | null;
  sub_transactions: Json;
  value_date: Date;
}

/** 'FetchOtsarHahayalForeignByKeys' query type */
export interface IFetchOtsarHahayalForeignByKeysQuery {
  params: IFetchOtsarHahayalForeignByKeysParams;
  result: IFetchOtsarHahayalForeignByKeysResult;
}

/** 'UploadOtsarHahayalForeignTransactions' parameters type */
export interface IUploadOtsarHahayalForeignTransactionsParams {
  transactions: readonly ({
    account: number | null | void,
    branch: number | null | void,
    accountType: string | null | void,
    currency: string | null | void,
    openingBalance: NumberOrString | null | void,
    balance: NumberOrString | null | void,
    valueDate: DateOrString | null | void,
    credit: NumberOrString | null | void,
    debit: NumberOrString | null | void,
    description: string | null | void,
    sp: number | null | void,
    reference: string | null | void,
    date: DateOrString | null | void,
    subTransactions: Json | null | void,
    ownerId: string | null | void
  })[];
}

/** 'UploadOtsarHahayalForeignTransactions' return type */
export interface IUploadOtsarHahayalForeignTransactionsResult {
  account: number;
  branch: number;
  credit: string;
  currency: string;
  date: Date;
  debit: string;
  description: string;
  id: string;
}

/** 'UploadOtsarHahayalForeignTransactions' query type */
export interface IUploadOtsarHahayalForeignTransactionsQuery {
  params: IUploadOtsarHahayalForeignTransactionsParams;
  result: IUploadOtsarHahayalForeignTransactionsResult;
}

/** 'FetchOtsarHahayalCreditCardByKeys' parameters type */
export interface IFetchOtsarHahayalCreditCardByKeysParams {
  cardTypes: numberArray;
  dates: DateOrStringArray;
  resourceIds: stringArray;
}

/** 'FetchOtsarHahayalCreditCardByKeys' return type */
export interface IFetchOtsarHahayalCreditCardByKeysResult {
  billing_period: string;
  card_type: number;
  charge_amount: string;
  charge_currency: string;
  charge_date: Date;
  counter: number;
  date: Date;
  deal_amount: string;
  deal_currency: string;
  id: string;
  masked_pan: string;
  name: string;
  notes: string;
  resource_id: string;
  wallet_type: number;
}

/** 'FetchOtsarHahayalCreditCardByKeys' query type */
export interface IFetchOtsarHahayalCreditCardByKeysQuery {
  params: IFetchOtsarHahayalCreditCardByKeysParams;
  result: IFetchOtsarHahayalCreditCardByKeysResult;
}

/** 'UploadOtsarHahayalCreditCardTransactions' parameters type */
export interface IUploadOtsarHahayalCreditCardTransactionsParams {
  transactions: readonly ({
    resourceId: string | null | void,
    maskedPan: string | null | void,
    cardType: number | null | void,
    dealGroup: string | null | void,
    date: DateOrString | null | void,
    chargeDate: DateOrString | null | void,
    name: string | null | void,
    dealAmount: NumberOrString | null | void,
    chargeAmount: NumberOrString | null | void,
    notes: string | null | void,
    walletType: number | null | void,
    chargeCurrency: string | null | void,
    dealCurrency: string | null | void,
    counter: number | null | void,
    ownerId: string | null | void
  })[];
}

/** 'UploadOtsarHahayalCreditCardTransactions' return type */
export interface IUploadOtsarHahayalCreditCardTransactionsResult {
  charge_amount: string;
  charge_currency: string;
  date: Date;
  id: string;
  name: string;
  resource_id: string;
}

/** 'UploadOtsarHahayalCreditCardTransactions' query type */
export interface IUploadOtsarHahayalCreditCardTransactionsQuery {
  params: IUploadOtsarHahayalCreditCardTransactionsParams;
  result: IUploadOtsarHahayalCreditCardTransactionsResult;
}

