defmodule UpiSettlement do @moduledoc """ UpiSettlement — NPCI-aligned settlement engine for the Mercury UPI PSP platform. Public façade. All heavy lifting is delegated to sub-modules: * `UpiSettlement.Window` — IST settlement window boundaries * `UpiSettlement.Settlements` — Ecto context for settlement records * `UpiSettlement.SettlementService` — batch generation + scheduling * `UpiSettlement.HolidayCalendar` — working-day calendar (IN + SG) * `UpiSettlement.NpciFile` — NPCI file parsing and ingestion * `UpiSettlement.Dispute` — chargeback / RRC / representment * `UpiSettlement.DisputeService` — dispute state machine * `UpiSettlement.BulkUpload` — TCC102/TCC103/RET CSV generation * `UpiSettlement.Scheduler` — wall-clock IST GenServer trigger """ defdelegate aggregate_eligible_transactions(merchant_id, date), to: UpiSettlement.Settlements defdelegate create_settlement(attrs), to: UpiSettlement.Settlements defdelegate get_settlement(id), to: UpiSettlement.Settlements defdelegate list_settlements(filters \\ %{}), to: UpiSettlement.Settlements defdelegate generate_merchant_settlement_batch(merchant_id, date), to: UpiSettlement.SettlementService defdelegate run_settlement_pass(date), to: UpiSettlement.SettlementService end