/** Types generated for queries found in "src/modules/misc-expenses/providers/misc-expenses.provider.ts" */
export type currency = 'AUD' | 'CAD' | 'ETH' | 'EUR' | 'GBP' | 'GRT' | 'ILS' | 'JPY' | 'SEK' | 'USD' | 'USDC';

export type DateOrString = Date | string;

export type NumberOrString = number | string;

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

/** 'GetExpensesByChargeIds' return type */
export interface IGetExpensesByChargeIdsResult {
  amount: string;
  charge_id: string;
  creditor_id: string;
  currency: currency;
  debtor_id: string;
  description: string | null;
  id: string;
  invoice_date: Date;
  owner_id: string;
  value_date: Date;
}

/** 'GetExpensesByChargeIds' query type */
export interface IGetExpensesByChargeIdsQuery {
  params: IGetExpensesByChargeIdsParams;
  result: IGetExpensesByChargeIdsResult;
}

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

/** 'GetExpensesByIds' return type */
export interface IGetExpensesByIdsResult {
  amount: string;
  charge_id: string;
  creditor_id: string;
  currency: currency;
  debtor_id: string;
  description: string | null;
  id: string;
  invoice_date: Date;
  owner_id: string;
  value_date: Date;
}

/** 'GetExpensesByIds' query type */
export interface IGetExpensesByIdsQuery {
  params: IGetExpensesByIdsParams;
  result: IGetExpensesByIdsResult;
}

/** 'GetExpensesByFinancialEntityIds' parameters type */
export interface IGetExpensesByFinancialEntityIdsParams {
  financialEntityIds: readonly (string | null | void)[];
}

/** 'GetExpensesByFinancialEntityIds' return type */
export interface IGetExpensesByFinancialEntityIdsResult {
  amount: string;
  charge_id: string;
  creditor_id: string;
  currency: currency;
  debtor_id: string;
  description: string | null;
  id: string;
  invoice_date: Date;
  owner_id: string;
  value_date: Date;
}

/** 'GetExpensesByFinancialEntityIds' query type */
export interface IGetExpensesByFinancialEntityIdsQuery {
  params: IGetExpensesByFinancialEntityIdsParams;
  result: IGetExpensesByFinancialEntityIdsResult;
}

/** 'UpdateExpense' parameters type */
export interface IUpdateExpenseParams {
  amount?: NumberOrString | null | void;
  chargeId?: string | null | void;
  creditorId?: string | null | void;
  currency?: currency | null | void;
  debtorId?: string | null | void;
  description?: string | null | void;
  invoiceDate?: DateOrString | null | void;
  miscExpenseId?: string | null | void;
  valueDate?: DateOrString | null | void;
}

/** 'UpdateExpense' return type */
export interface IUpdateExpenseResult {
  amount: string;
  charge_id: string;
  creditor_id: string;
  currency: currency;
  debtor_id: string;
  description: string | null;
  id: string;
  invoice_date: Date;
  owner_id: string;
  value_date: Date;
}

/** 'UpdateExpense' query type */
export interface IUpdateExpenseQuery {
  params: IUpdateExpenseParams;
  result: IUpdateExpenseResult;
}

/** 'ReplaceMiscExpensesChargeId' parameters type */
export interface IReplaceMiscExpensesChargeIdParams {
  assertChargeID?: string | null | void;
  replaceChargeID?: string | null | void;
}

/** 'ReplaceMiscExpensesChargeId' return type */
export interface IReplaceMiscExpensesChargeIdResult {
  amount: string;
  charge_id: string;
  creditor_id: string;
  currency: currency;
  debtor_id: string;
  description: string | null;
  id: string;
  invoice_date: Date;
  owner_id: string;
  value_date: Date;
}

/** 'ReplaceMiscExpensesChargeId' query type */
export interface IReplaceMiscExpensesChargeIdQuery {
  params: IReplaceMiscExpensesChargeIdParams;
  result: IReplaceMiscExpensesChargeIdResult;
}

/** 'InsertExpense' parameters type */
export interface IInsertExpenseParams {
  amount?: NumberOrString | null | void;
  chargeId?: string | null | void;
  creditorId?: string | null | void;
  currency?: currency | null | void;
  debtorId?: string | null | void;
  description?: string | null | void;
  invoiceDate?: DateOrString | null | void;
  ownerId?: string | null | void;
  valueDate?: DateOrString | null | void;
}

/** 'InsertExpense' return type */
export interface IInsertExpenseResult {
  amount: string;
  charge_id: string;
  creditor_id: string;
  currency: currency;
  debtor_id: string;
  description: string | null;
  id: string;
  invoice_date: Date;
  owner_id: string;
  value_date: Date;
}

/** 'InsertExpense' query type */
export interface IInsertExpenseQuery {
  params: IInsertExpenseParams;
  result: IInsertExpenseResult;
}

/** 'InsertExpenses' parameters type */
export interface IInsertExpensesParams {
  miscExpenses: readonly ({
    chargeId: string | null | void,
    creditorId: string | null | void,
    debtorId: string | null | void,
    amount: NumberOrString | null | void,
    currency: currency | null | void,
    description: string | null | void,
    invoiceDate: DateOrString | null | void,
    valueDate: DateOrString | null | void,
    ownerId: string | null | void
  })[];
}

/** 'InsertExpenses' return type */
export interface IInsertExpensesResult {
  amount: string;
  charge_id: string;
  creditor_id: string;
  currency: currency;
  debtor_id: string;
  description: string | null;
  id: string;
  invoice_date: Date;
  owner_id: string;
  value_date: Date;
}

/** 'InsertExpenses' query type */
export interface IInsertExpensesQuery {
  params: IInsertExpensesParams;
  result: IInsertExpensesResult;
}

/** 'DeleteExpense' parameters type */
export interface IDeleteExpenseParams {
  id?: string | null | void;
}

/** 'DeleteExpense' return type */
export interface IDeleteExpenseResult {
  id: string;
}

/** 'DeleteExpense' query type */
export interface IDeleteExpenseQuery {
  params: IDeleteExpenseParams;
  result: IDeleteExpenseResult;
}

