import {
  CreateInvoiceData,
  InvoiceEnumStatus,
  InvoiceID,
  InvoiceStats,
} from '../../models/invoice';

/** InvoiceResponse represent invoice as a backend response. */
export type InvoiceResponse = {
  domain?: string;
  id: number | string;
  code?: string;
  webhook?: string;
  amount: number | string | bigint;
  order_id: number | string | bigint;
  status?: InvoiceEnumStatus;
  transaction?: unknown; // any json object
  createdAt?: string;
  updatedAt?: string;
  user_from_id?: string | bigint;
  user_to_id?: string | bigint;
  wallet_from_id?: string | number;
  wallet_to_id?: string | number;
  user_from?: {
    first_name: string;
    last_name?: string;
    photo_url?: string;
  };
  wallet_from?: {
    address?: string;
  };
};

export type CreateInvoiceRequestData = CreateInvoiceData;

export type CreateInvoiceResponseData = { data: InvoiceResponse };

export type CancelInvoiceRequestData = { invoiceId: InvoiceID };

export type CancelInvoiceResponseData = { data: InvoiceResponse };

export type GetInvoiceInfoRequestData = null;

export type GetInvoiceInfoResponseData = { data: InvoiceResponse };

export type GetInvoiceStatsRequestData = null;

export type GetInvoiceStatsResponseData = { data: InvoiceStats };
