/**
 * This module was automatically generated by `ts-interface-builder`
 */
import * as t from "ts-interface-checker";
// tslint:disable:object-literal-key-quotes

export const PaymentsTypes = t.enumtype({
  "DeferredPayment": "deferred_payment",
  "PaymentMethod": "payment_method",
});

export const PaymentAction = t.enumtype({
  "PaymentProcessed": "payment_processed",
  "View": "view",
  "Add": "add",
  "Remove": "remove",
  "Update": "update",
  "Select": "select",
  "Other": "other",
});

export const PaymentMethod = t.enumtype({
  "BankCard": "bank_card",
  "BankTransfer": "bank_transfer",
  "CashOnDelivery": "cash_on_delivery",
  "Cheque": "cheque",
  "Credit": "credit",
  "PointOfSale": "point_of_sale",
  "MobileTransfer": "mobile_transfer",
  "Cash": "cash",
  "Wallet": "wallet",
  "Other": "other",
});

export const DeferredPaymentProperties = t.iface([], {
  "id": "string",
  "order_id": "string",
  "action": "PaymentAction",
  "account_balance": "number",
  "payment_amount": "number",
  "currency": "CurrencyCode",
  "is_successful": "boolean",
  "type": "PaymentMethod",
  "meta": t.opt("any"),
});

export const PaymentMethodProperties = t.iface([], {
  "id": "string",
  "action": "PaymentAction",
  "order_id": "string",
  "type": "PaymentMethod",
  "payment_amount": "number",
  "currency": "CurrencyCode",
  "meta": t.opt("any"),
});

const exportedTypeSuite: t.ITypeSuite = {
  PaymentsTypes,
  PaymentAction,
  PaymentMethod,
  DeferredPaymentProperties,
  PaymentMethodProperties,
};
export default exportedTypeSuite;
