/**
 * Payments Domain - Contract
 * 
 * Constants and types for the payments domain.
 * All validated types are derived from schemas (see schema.ts).
 */

// ============================================================================
// Payment Method Type Constants
// ============================================================================

export const PAYMENT_METHOD_TYPE = {
  CREDIT_CARD: "CreditCard",
  BANK_ACCOUNT: "BankAccount",
  REMOTE_CREDIT_CARD: "RemoteCreditCard",
  REMOTE_BANK_ACCOUNT: "RemoteBankAccount",
  MANUAL: "Manual",
} as const;

// ============================================================================
// Payment Gateway Type Constants
// ============================================================================

export const PAYMENT_GATEWAY_TYPE = {
  MERCHANT: "merchant",
  THIRDPARTY: "thirdparty",
  TOKENIZATION: "tokenization",
  MANUAL: "manual",
} as const;

// ============================================================================
// Business Types (Not validated at runtime)
// ============================================================================

/**
 * Invoice payment link - not validated at runtime
 * This is a business domain type used internally
 */
export interface InvoicePaymentLink {
  url: string;
  expiresAt: string;
  gatewayName?: string;
}

// ============================================================================
// Re-export Types from Schema (Schema-First Approach)
// ============================================================================

export type {
  PaymentMethodType,
  PaymentMethod,
  PaymentMethodList,
  PaymentGatewayType,
  PaymentGateway,
  PaymentGatewayList,
} from './schema';
