/**
 * When true, the payouts domain is served by the in-memory mock (`apis/mockApi.ts`) behind the
 * `PayoutsApi` seam.
 *
 * **Mock is primary this phase.** b13 shipped the nurse read as a **single** endpoint
 * (`GET api/v1/nurse_payouts/history` → `NursePayoutHistoryDto`). The **four-bucket earnings summary**,
 * the **per-booking earnings list + money-state**, and a **nurse-readable payout detail** (batch context +
 * booking links + `failureReason`) are contract gaps filed as **REQ-025**. So the whole earnings surface is
 * mocked behind this seam with real-shaped fixtures covering **all four earnings states + a negative net
 * balance (clawback > earnings) + a `failed` payout** (every UI state exercisable). Flip to `false` once
 * REQ-025 lands — no hook/component change (only `clientApi.ts`'s three gap methods start returning real data).
 */
export const USE_PAYOUTS_MOCK = true;

/**
 * Which mock ledger picture to serve. `standard` = a healthy positive net balance with one of each earnings
 * state; `clawback_heavy` = outstanding clawbacks exceed accrued-unpaid earnings so the **net balance goes
 * negative** ("owed back") — the explicit owed-back UI state (phase §7 step 3). The four earnings rows are
 * identical across scenarios; only the ledger-derived summary differs (the summary spans the whole ledger,
 * not just the visible page). Flip to demo the negative-balance treatment.
 */
export type PayoutsMockScenario = 'standard' | 'clawback_heavy';
export const MOCK_SCENARIO: PayoutsMockScenario = 'standard';

/**
 * Earnings move on a **weekly cadence**, not per second — a generous `staleTime` means revisiting the
 * screen or switching a tab never needlessly refetches. There are no mutations this phase, so nothing
 * invalidates these; the natural staleness is the only refresh trigger.
 */
export const EARNINGS_SUMMARY_STALE_TIME = 5 * 60 * 1000;
export const EARNINGS_LIST_STALE_TIME = 5 * 60 * 1000;
export const PAYOUT_HISTORY_STALE_TIME = 5 * 60 * 1000;
/** A settled payout is immutable — its detail is effectively permanent; keep it warm longer. */
export const PAYOUT_DETAIL_STALE_TIME = 10 * 60 * 1000;
export const PAYOUTS_GC_TIME = 15 * 60 * 1000;

/**
 * The **admin** reconciliation surfaces are more volatile than the nurse read — within one session an admin
 * opens a draft, runs it, retries a failed payout, records a reference. A short `staleTime`, backed by
 * explicit invalidation on every mutation (`useRunPayoutBatch`/`useRetryPayout`/`useRecordTransferReference`).
 */
export const ADMIN_BATCHES_STALE_TIME = 30 * 1000;
export const ADMIN_BATCH_DETAIL_STALE_TIME = 30 * 1000;
/** Page size for the admin batch-detail payout rows (contract default 50). */
export const ADMIN_BATCH_DETAIL_PAGE_SIZE = 50;

/** Page size for the earnings + payout-history lists (api-conventions `pageSize`). */
export const PAYOUTS_PAGE_SIZE = 10;
