/* tslint:disable */
/* eslint-disable */
/**
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

// May contain unused imports in some cases
// @ts-ignore
import { CryptoPaymentDepositAddress } from "./crypto-payment-deposit-address";
// May contain unused imports in some cases
// @ts-ignore
import { CryptoPaymentFromAddresses } from "./crypto-payment-from-addresses";
// May contain unused imports in some cases
// @ts-ignore
import { CryptoPaymentNetworkFee } from "./crypto-payment-network-fee";
// May contain unused imports in some cases
// @ts-ignore
import { CryptoPaymentsOptionalAmountMoney } from "./crypto-payments-optional-amount-money";
// May contain unused imports in some cases
// @ts-ignore
import { FiatMoneyUsd } from "./fiat-money-usd";
// May contain unused imports in some cases
// @ts-ignore
import { PaymentStatus } from "./payment-status";
// May contain unused imports in some cases
// @ts-ignore
import { RiskEvaluation } from "./risk-evaluation";

/**
 * Status information of the related payment.
 * @export
 * @interface CryptoPayment
 */
export interface CryptoPayment {
  /**
   * Unique system generated identifier for the entity.
   * @type {string}
   * @memberof CryptoPayment
   */
  id: string;
  /**
   * Type of the payment object.
   * @type {string}
   * @memberof CryptoPayment
   */
  type: CryptoPaymentTypeEnum;
  /**
   * Unique system generated identifier for the merchant.
   * @type {string}
   * @memberof CryptoPayment
   */
  merchantId: string;
  /**
   * Unique system generated identifier for the wallet of the merchant.
   * @type {string}
   * @memberof CryptoPayment
   */
  merchantWalletId?: string;
  /**
   *
   * @type {CryptoPaymentsOptionalAmountMoney}
   * @memberof CryptoPayment
   */
  amount: CryptoPaymentsOptionalAmountMoney;
  /**
   *
   * @type {PaymentStatus}
   * @memberof CryptoPayment
   */
  status: PaymentStatus;
  /**
   *
   * @type {FiatMoneyUsd}
   * @memberof CryptoPayment
   */
  fees?: FiatMoneyUsd;
  /**
   *
   * @type {CryptoPaymentNetworkFee}
   * @memberof CryptoPayment
   */
  networkFees?: CryptoPaymentNetworkFee;
  /**
   *
   * @type {string}
   * @memberof CryptoPayment
   */
  paymentIntentId?: string;
  /**
   *
   * @type {FiatMoneyUsd}
   * @memberof CryptoPayment
   */
  settlementAmount?: FiatMoneyUsd;
  /**
   *
   * @type {CryptoPaymentFromAddresses}
   * @memberof CryptoPayment
   */
  fromAddresses?: CryptoPaymentFromAddresses;
  /**
   *
   * @type {CryptoPaymentDepositAddress}
   * @memberof CryptoPayment
   */
  depositAddress?: CryptoPaymentDepositAddress;
  /**
   *
   * @type {string}
   * @memberof CryptoPayment
   */
  transactionHash?: string;
  /**
   * ISO-8601 UTC date/time format.
   * @type {string}
   * @memberof CryptoPayment
   */
  createDate?: string;
  /**
   * ISO-8601 UTC date/time format.
   * @type {string}
   * @memberof CryptoPayment
   */
  updateDate?: string;
  /**
   *
   * @type {RiskEvaluation}
   * @memberof CryptoPayment
   */
  riskEvaluation?: RiskEvaluation | null;
}

export const CryptoPaymentTypeEnum = {
  Payment: "payment",
  Refund: "refund"
} as const;

export type CryptoPaymentTypeEnum =
  typeof CryptoPaymentTypeEnum[keyof typeof CryptoPaymentTypeEnum];
