/* 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 { CryptoPaymentsMoney } from "./crypto-payments-money";
// May contain unused imports in some cases
// @ts-ignore
import { PaymentIntentFees } from "./payment-intent-fees";
// May contain unused imports in some cases
// @ts-ignore
import { PaymentMethodBlockchain } from "./payment-method-blockchain";
// May contain unused imports in some cases
// @ts-ignore
import { Timeline } from "./timeline";

/**
 *
 * @export
 * @interface PaymentIntent
 */
export interface PaymentIntent {
  /**
   * Unique system generated identifier for the entity.
   * @type {string}
   * @memberof PaymentIntent
   */
  id?: string;
  /**
   *
   * @type {CryptoPaymentsMoney}
   * @memberof PaymentIntent
   */
  amount: CryptoPaymentsMoney;
  /**
   *
   * @type {CryptoPaymentsMoney}
   * @memberof PaymentIntent
   */
  amountPaid?: CryptoPaymentsMoney;
  /**
   *
   * @type {CryptoPaymentsMoney}
   * @memberof PaymentIntent
   */
  amountRefunded?: CryptoPaymentsMoney;
  /**
   * Desired currency for the payments to settle in.
   * @type {string}
   * @memberof PaymentIntent
   */
  settlementCurrency: PaymentIntentSettlementCurrencyEnum;
  /**
   *
   * @type {Array<PaymentMethodBlockchain>}
   * @memberof PaymentIntent
   */
  paymentMethods: Array<PaymentMethodBlockchain>;
  /**
   *
   * @type {Array<PaymentIntentFees>}
   * @memberof PaymentIntent
   */
  fees?: Array<PaymentIntentFees>;
  /**
   * List of associated payments.
   * @type {Array<string>}
   * @memberof PaymentIntent
   */
  paymentIds?: Array<string>;
  /**
   * List of associated refunds.
   * @type {Array<string>}
   * @memberof PaymentIntent
   */
  refundIds?: Array<string>;
  /**
   * State management timeline.
   * @type {Array<Timeline>}
   * @memberof PaymentIntent
   */
  timeline?: Array<Timeline>;
  /**
   * ISO-8601 UTC date/time format.
   * @type {string}
   * @memberof PaymentIntent
   */
  expiresOn?: string;
  /**
   * ISO-8601 UTC date/time format.
   * @type {string}
   * @memberof PaymentIntent
   */
  updateDate?: string;
  /**
   * ISO-8601 UTC date/time format.
   * @type {string}
   * @memberof PaymentIntent
   */
  createDate?: string;
  /**
   * Unique system generated identifier for the wallet of the merchant.
   * @type {string}
   * @memberof PaymentIntent
   */
  merchantWalletId?: string;
}

export const PaymentIntentSettlementCurrencyEnum = {
  Usd: "USD",
  Btc: "BTC",
  Eth: "ETH"
} as const;

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