/* 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 { FiatCancel } from "./fiat-cancel";
// May contain unused imports in some cases
// @ts-ignore
import { FiatMoney } from "./fiat-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 { FiatPayment } from "./fiat-payment";
// May contain unused imports in some cases
// @ts-ignore
import { FiatRefund } from "./fiat-refund";
// May contain unused imports in some cases
// @ts-ignore
import { MetadataPhoneEmail } from "./metadata-phone-email";
// May contain unused imports in some cases
// @ts-ignore
import { PaymentErrorCode } from "./payment-error-code";
// May contain unused imports in some cases
// @ts-ignore
import { PaymentStatus } from "./payment-status";
// May contain unused imports in some cases
// @ts-ignore
import { PaymentVerificationResponse } from "./payment-verification-response";
// May contain unused imports in some cases
// @ts-ignore
import { RequiredAction } from "./required-action";
// May contain unused imports in some cases
// @ts-ignore
import { RiskEvaluation } from "./risk-evaluation";
// May contain unused imports in some cases
// @ts-ignore
import { SourceResponse } from "./source-response";

/**
 *
 * @export
 * @interface FiatPaymentPolymorphic
 */
export interface FiatPaymentPolymorphic {
  /**
   * Unique system generated identifier for the entity.
   * @type {string}
   * @memberof FiatPaymentPolymorphic
   */
  id: string;
  /**
   * Type of the payment object.
   * @type {string}
   * @memberof FiatPaymentPolymorphic
   */
  type: FiatPaymentPolymorphicTypeEnum;
  /**
   * Unique system generated identifier for the merchant.
   * @type {string}
   * @memberof FiatPaymentPolymorphic
   */
  merchantId: string;
  /**
   * Unique system generated identifier for the wallet of the merchant.
   * @type {string}
   * @memberof FiatPaymentPolymorphic
   */
  merchantWalletId?: string;
  /**
   *
   * @type {FiatMoneyUsd}
   * @memberof FiatPaymentPolymorphic
   */
  amount: FiatMoneyUsd;
  /**
   *
   * @type {FiatMoney}
   * @memberof FiatPaymentPolymorphic
   */
  fromAmount?: FiatMoney;
  /**
   *
   * @type {SourceResponse}
   * @memberof FiatPaymentPolymorphic
   */
  source: SourceResponse;
  /**
   * Enumerated description of the payment.
   * @type {string}
   * @memberof FiatPaymentPolymorphic
   */
  description?: FiatPaymentPolymorphicDescriptionEnum;
  /**
   *
   * @type {PaymentStatus}
   * @memberof FiatPaymentPolymorphic
   */
  status: PaymentStatus;
  /**
   *
   * @type {RequiredAction}
   * @memberof FiatPaymentPolymorphic
   */
  requiredAction?: RequiredAction;
  /**
   *
   * @type {PaymentVerificationResponse}
   * @memberof FiatPaymentPolymorphic
   */
  verification?: PaymentVerificationResponse;
  /**
   *
   * @type {FiatPayment}
   * @memberof FiatPaymentPolymorphic
   */
  originalPayment?: FiatPayment;
  /**
   *
   * @type {FiatCancel}
   * @memberof FiatPaymentPolymorphic
   */
  cancel?: FiatCancel | null;
  /**
   *
   * @type {Array<FiatRefund>}
   * @memberof FiatPaymentPolymorphic
   */
  refunds?: Array<FiatRefund> | null;
  /**
   *
   * @type {FiatMoneyUsd}
   * @memberof FiatPaymentPolymorphic
   */
  fees?: FiatMoneyUsd;
  /**
   * Payment tracking reference. Will be present once known.
   * @type {string}
   * @memberof FiatPaymentPolymorphic
   */
  trackingRef?: string | null;
  /**
   * External network identifier which will be present once provided from the applicable network.   Examples: * **Input/Output Message Accountability Data (IMAD/OMAD)**: unique number given to each FedWire payment when using the Federal Reserve Bank Service which can be used to investigate and track wire transfers.
   * @type {string}
   * @memberof FiatPaymentPolymorphic
   */
  externalRef?: string;
  /**
   *
   * @type {PaymentErrorCode}
   * @memberof FiatPaymentPolymorphic
   */
  errorCode?: PaymentErrorCode | null;
  /**
   *
   * @type {MetadataPhoneEmail}
   * @memberof FiatPaymentPolymorphic
   */
  metadata?: MetadataPhoneEmail;
  /**
   * The channel identifier that can be set for the payment. When not provided, the default channel is used.
   * @type {string}
   * @memberof FiatPaymentPolymorphic
   */
  channel?: string;
  /**
   *
   * @type {RiskEvaluation}
   * @memberof FiatPaymentPolymorphic
   */
  riskEvaluation?: RiskEvaluation | null;
  /**
   * ISO-8601 UTC date/time format.
   * @type {string}
   * @memberof FiatPaymentPolymorphic
   */
  createDate?: string;
  /**
   * ISO-8601 UTC date/time format.
   * @type {string}
   * @memberof FiatPaymentPolymorphic
   */
  updateDate?: string;
}

export const FiatPaymentPolymorphicTypeEnum = {
  Payment: "payment",
  Refund: "refund",
  Cancel: "cancel"
} as const;

export type FiatPaymentPolymorphicTypeEnum =
  typeof FiatPaymentPolymorphicTypeEnum[keyof typeof FiatPaymentPolymorphicTypeEnum];
export const FiatPaymentPolymorphicDescriptionEnum = {
  Payment: "Payment"
} as const;

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