export const ENDPOINTS = {
  BASE_URL: process.env.NEXT_PUBLIC_API_BASE_URL || 'http://192.168.65.95:8000/api/v1/admin/',

  AUTH: {
    LOGIN_STEP1: 'auth/login-step1',
    LOGIN_VERIFY_OTP: 'auth/verify-otp',
    REFRESH: 'auth/refresh',
    LOGOUT: 'auth/logout',
    ME: 'auth/me',
    CHANGE_PASSWORD: 'auth/change-password',
    CHANGE_TEMP_PASSWORD: 'auth/change-temp-password',
  },

  DASHBOARD: {
    OVERVIEW: 'dashboard/overview',
    ACTIVITY: 'dashboard/activity',
    ALERTS: 'dashboard/alerts',
  },

  MARKET_PRICES: {
    LATEST: 'market-prices/latest',
    REFRESH: 'market-prices/refresh',
    LIVE_MODE_START: 'market-prices/live-mode/start',
    LIVE_MODE_STOP: 'market-prices/live-mode/stop',
    SETTINGS: 'market-prices/settings',
  },

  CUSTOMERS: {
    LIST: 'customers',
    CREATE: 'customers',
    GET_BY_ID: (id: string): string => `/customers/${id}`,
    UPDATE: (id: string): string => `/customers/${id}`,
    DELETE: (id: string): string => `/customers/${id}`,
    ACTIVATE: (id: string): string => `/customers/${id}/activate`,
    SUSPEND: (id: string): string => `/customers/${id}/suspend`,
    BLOCK: (id: string): string => `/customers/${id}/block`,
    FREEZE: (id: string): string => `/customers/${id}/freeze`,
    UNFREEZE: (id: string): string => `/customers/${id}/unfreeze`,
    CLOSE: (id: string): string => `/customers/${id}/close`,
    REOPEN: (id: string): string => `/customers/${id}/reopen`,
    EXPORT_PROFILE: (id: string): string => `/customers/${id}/export-profile`,
    LIMIT_CHANGE_REQUESTS: (id: string): string => `/customers/${id}/limits/change-requests`,
    FORCE_PASSWORD_RESET: (id: string): string => `/customers/${id}/access/force-password-reset`,
    LOGOUT_ALL: (id: string): string => `/customers/${id}/access/logout-all`,
    ARCHIVE: (id: string): string => `/customers/${id}/archive`,
    REACTIVATE: (id: string): string => `/customers/${id}/reactivate`,
    KYC_SUBMIT: (id: string): string => `/customers/${id}/kyc/submit`,
    KYC_APPROVE: (id: string): string => `/customers/${id}/kyc/approve`,
    KYC_REJECT: (id: string): string => `/customers/${id}/kyc/reject`,
    KYC_DOCUMENTS: (id: string): string => `/customers/${id}/kyc/documents`,
    WALLETS: (id: string): string => `/customers/${id}/wallets`,
    STATEMENT: (id: string): string => `/customers/${id}/statement`,
  },

  KYC: {
    LIST: '/kyc/applications',
    GET_BY_ID: (id: string): string => `/kyc/applications/${id}`,
    APPROVE: (id: string): string => `/kyc/applications/${id}/approve`,
    REJECT: (id: string): string => `/kyc/applications/${id}/reject`,
    DOCUMENTS: (id: string): string => `/kyc/applications/${id}/documents`,
    DOCUMENT_CONTENT: (applicationId: string, documentId: string): string => `/kyc/applications/${applicationId}/documents/${documentId}/content`,
    APPROVE_DOCUMENT: (applicationId: string, documentId: string): string => `/kyc/applications/${applicationId}/documents/${documentId}/approve`,
    REJECT_DOCUMENT: (applicationId: string, documentId: string): string => `/kyc/applications/${applicationId}/documents/${documentId}/reject`,
    AML_BY_USER: (userId: string): string => `/kyc/aml/screenings/users/${userId}`,
    RISK_PROFILE: (userId: string): string => `/kyc/risk-profiles/${userId}`,
  },

  CASH_WALLET: {
    LIST: '/wallets/cash',
    GET_BY_ID: (id: string): string => `/wallets/cash/${id}`,
    LEDGER: (id: string): string => `/wallets/cash/${id}/ledger`,
  },

  GOLD_WALLET: {
    LIST: '/wallets/gold',
    GET_BY_ID: (id: string): string => `/wallets/gold/${id}`,
    LEDGER: (id: string): string => `/wallets/gold/${id}/ledger`,
  },

  ORDERS: {
    LIST: '/orders',
    CREATE: '/orders',
    GET_BY_ID: (id: string): string => `/orders/${id}`,
    UPDATE: (id: string): string => `/orders/${id}`,
    CANCEL: (id: string): string => `/orders/${id}/cancel`,
  },

  BUY_ORDERS: {
    LIST: '/buy-orders',
    CREATE: '/buy-orders',
    COMPUTE_PRICE: '/buy-orders/compute-buy-price',
    GET_BY_ID: (id: string): string => `/buy-orders/${id}`,
    UPDATE: (id: string): string => `/buy-orders/${id}`,
    RECALCULATE: (id: string): string => `/buy-orders/${id}/recalculate`,
    SUBMIT_FOR_REVIEW: (id: string): string => `/buy-orders/${id}/submit-for-review`,
    SUBMIT_FOR_APPROVAL: (id: string): string => `/buy-orders/${id}/submit-for-approval`,
    APPROVE: (id: string): string => `/buy-orders/${id}/approve`,
    SEND_TO_SUPPLIER: (id: string): string => `/buy-orders/${id}/send-to-supplier`,
    MARK_PARTIALLY_SUPPLIED: (id: string): string => `/buy-orders/${id}/mark-partially-supplied`,
    MARK_FULLY_SUPPLIED: (id: string): string => `/buy-orders/${id}/mark-fully-supplied`,
    CLOSE: (id: string): string => `/buy-orders/${id}/close`,
    REJECT: (id: string): string => `/buy-orders/${id}/reject`,
    CANCEL: (id: string): string => `/buy-orders/${id}/cancel`,
    STATUS_HISTORY: (id: string): string => `/buy-orders/${id}/status-history`,
    APPROVALS: (id: string): string => `/buy-orders/${id}/approvals`,
    APPROVE_STEP: (id: string, stepId: string): string => `/buy-orders/${id}/approvals/${stepId}/approve`,
    REJECT_STEP: (id: string, stepId: string): string => `/buy-orders/${id}/approvals/${stepId}/reject`,
    ITEMS: (id: string): string => `/buy-orders/${id}/items`,
    ITEM: (id: string, itemId: string): string => `/buy-orders/${id}/items/${itemId}`,
    ATTACHMENTS: (id: string): string => `/buy-orders/${id}/attachments`,
    POST_APPROVAL: (id: string): string => `/buy-orders/${id}/post-approval`,
    POST_SUPPLY: (id: string): string => `/buy-orders/${id}/post-supply`,
    POST_BUYBACK: (id: string): string => `/buy-orders/${id}/post-buyback`,
    REVERSE: (id: string): string => `/buy-orders/${id}/reverse-posting`,
    POSTINGS: (id: string): string => `/buy-orders/${id}/postings`,
  },

  PURCHASE_REQUESTS: {
    LIST: '/purchase-requests/',
    CREATE: '/purchase-requests/',
    GET_BY_ID: (id: string): string => `/purchase-requests/${id}`,
    UPDATE: (id: string): string => `/purchase-requests/${id}`,
    SUBMIT: (id: string): string => `/purchase-requests/${id}/submit`,
    SEND_FOR_APPROVAL: (id: string): string => `/purchase-requests/${id}/send-for-approval`,
    APPROVE: (id: string): string => `/purchase-requests/${id}/approve`,
    REJECT: (id: string): string => `/purchase-requests/${id}/reject`,
    CANCEL: (id: string): string => `/purchase-requests/${id}/cancel`,
    CONVERT_TO_PO: (id: string): string => `/purchase-requests/${id}/convert-to-po`,
  },

  PURCHASE_ORDERS: {
    LIST: '/purchase-orders',
    CREATE: '/purchase-orders',
    GET_BY_ID: (id: string): string => `/purchase-orders/${id}`,
    UPDATE: (id: string): string => `/purchase-orders/${id}`,
    SUBMIT_REVIEW: (id: string): string => `/purchase-orders/${id}/submit-review`,
    SUBMIT_APPROVAL: (id: string): string => `/purchase-orders/${id}/submit-approval`,
    APPROVE: (id: string): string => `/purchase-orders/${id}/approve`,
    SEND_TO_SUPPLIER: (id: string): string => `/purchase-orders/${id}/send-to-supplier`,
    RECORD_ADVANCE_PAYMENT: (id: string): string => `/purchase-orders/${id}/record-advance-payment`,
    ACCOUNTING_PREVIEW: (id: string): string => `/purchase-orders/${id}/accounting-preview`,
    STATUS_HISTORY: (id: string): string => `/purchase-orders/${id}/status-history`,
    CANCEL: (id: string): string => `/purchase-orders/${id}/cancel`,
    CLOSE: (id: string): string => `/purchase-orders/${id}/close`,
  },

  SUPPLIER_SHIPMENTS: {
    LIST: '/supplier-shipments',
    CREATE: '/supplier-shipments',
    GET_BY_ID: (id: string): string => `/supplier-shipments/${id}`,
    UPDATE: (id: string): string => `/supplier-shipments/${id}`,
    CONFIRM_DISPATCH: (id: string): string => `/supplier-shipments/${id}/confirm-dispatch`,
    MARK_ARRIVED: (id: string): string => `/supplier-shipments/${id}/mark-arrived`,
    LINK_TO_RECEIVING: (id: string): string => `/supplier-shipments/${id}/link-to-receiving`,
    CANCEL: (id: string): string => `/supplier-shipments/${id}/cancel`,
    CLOSE: (id: string): string => `/supplier-shipments/${id}/close`,
  },

  INBOUND_POSTINGS: {
    LIST: '/inbound-postings',
    GET_BY_ID: (id: string): string => `/inbound-postings/${id}`,
    REVIEW: (id: string): string => `/inbound-postings/${id}/review`,
    APPROVE: (id: string): string => `/inbound-postings/${id}/approve`,
    POST: (id: string): string => `/inbound-postings/${id}/post`,
    REVERSE: (id: string): string => `/inbound-postings/${id}/reverse`,
    CLOSE: (id: string): string => `/inbound-postings/${id}/close`,
  },

  SELL_ORDERS: {
    LIST: '/sell-orders',
    CREATE: '/sell-orders',
    GET_BY_ID: (id: string): string => `/sell-orders/${id}`,
    UPDATE: (id: string): string => `/sell-orders/${id}`,
    SUBMIT_FOR_REVIEW: (id: string): string => `/sell-orders/${id}/submit-for-review`,
    SUBMIT_FOR_APPROVAL: (id: string): string => `/sell-orders/${id}/submit-for-approval`,
    APPROVE: (id: string): string => `/sell-orders/${id}/approve`,
    REJECT: (id: string): string => `/sell-orders/${id}/reject`,
    CANCEL: (id: string): string => `/sell-orders/${id}/cancel`,
    STATUS_HISTORY: (id: string): string => `/sell-orders/${id}/status-history`,
    APPROVALS: (id: string): string => `/sell-orders/${id}/approvals`,
    POST: (id: string): string => `/sell-orders/${id}/post`,
    POSTINGS: (id: string): string => `/sell-orders/${id}/postings`,
    COMPUTE_PRICE: '/sell-orders/compute-sell-price',
    RECALCULATE: (id: string): string => `/sell-orders/${id}/recalculate`,
    AVAILABILITY: (id: string): string => `/sell-orders/${id}/availability`,
    ITEMS: (id: string): string => `/sell-orders/${id}/items`,
    ITEM: (id: string, itemId: string): string => `/sell-orders/${id}/items/${itemId}`,
    MARK_DELIVERING: (id: string): string => `/sell-orders/${id}/mark-delivering`,
    MARK_DELIVERED: (id: string): string => `/sell-orders/${id}/mark-delivered`,
    CLOSE: (id: string): string => `/sell-orders/${id}/close`,
    REVERSE: (id: string): string => `/sell-orders/${id}/reverse-posting`,
    WALLET_MOVEMENTS: (id: string): string => `/sell-orders/${id}/wallet-movements`,
    INVENTORY_MOVEMENTS: (id: string): string => `/sell-orders/${id}/inventory-movements`,
    JOURNAL_DETAILS: (id: string): string => `/sell-orders/${id}/journal-details`,
    VOUCHER: (id: string): string => `/sell-orders/${id}/voucher`,
  },

  AUDIT_LOGS: {
    LIST: '/audit/logs',
  },

  REDEMPTIONS: {
    LIST: '/warehouse/deliveries',
    GET_BY_ID: (id: string): string => `/warehouse/deliveries/${id}`,
    APPROVE: (id: string): string => `/warehouse/deliveries/${id}/approve`,
    REJECT: (id: string): string => `/warehouse/deliveries/${id}/reject`,
  },

  TRANSFERS: {
    LIST: '/warehouse/transfers',
    GET_BY_ID: (id: string): string => `/warehouse/transfers/${id}`,
    APPROVE: (id: string): string => `/warehouse/transfers/${id}/approve`,
    REJECT: (id: string): string => `/warehouse/transfers/${id}/reject`,
    DISPATCH: (id: string): string => `/warehouse/transfers/${id}/dispatch`,
    COMPLETE: (id: string): string => `/warehouse/transfers/${id}/complete`,
  },

  CUSTODY: {
    CHAIN: '/custody/chain',
    GET_CHAIN_BY_ID: (id: string): string => `/custody/chain/${id}`,
    CONFIRM: (id: string): string => `/custody/chain/${id}/confirm`,
    RELEASE: (id: string): string => `/custody/chain/${id}/release`,
    TRANSFER: (id: string): string => `/custody/chain/${id}/transfer`,
    REVOKE: (id: string): string => `/custody/chain/${id}/revoke`,
  },

  DELIVERIES: {
    LIST: '/warehouse/deliveries',
    GET_BY_ID: (id: string): string => `/warehouse/deliveries/${id}`,
    VERIFY_IDENTITY: (id: string): string => `/warehouse/deliveries/${id}/verify-identity`,
    VERIFY_OTP: (id: string): string => `/warehouse/deliveries/${id}/verify-otp`,
    PREPARE: (id: string): string => `/warehouse/deliveries/${id}/prepare`,
    READY_FOR_PICKUP: (id: string): string => `/warehouse/deliveries/${id}/ready-for-pickup`,
    HAND_OVER: (id: string): string => `/warehouse/deliveries/${id}/hand-over`,
    COMPLETE: (id: string): string => `/warehouse/deliveries/${id}/complete`,
    CANCEL: (id: string): string => `/warehouse/deliveries/${id}/cancel`,
    FAIL: (id: string): string => `/warehouse/deliveries/${id}/fail`,
    SIGNATURES: (id: string): string => `/warehouse/deliveries/${id}/signatures`,
  },

  INVENTORY: {
    VAULTS: '/warehouse/vaults',
    VAULT_BY_ID: (id: string): string => `/warehouse/vaults/${id}`,
    BARS: '/warehouse/bars',
    MOVEMENTS: '/warehouse/movements',
    FRACTIONAL_POOLS: '/warehouse/fractional-pools',
  },

  STOCK_COUNTS: {
    LIST: '/warehouse/stock-counts',
    GET_BY_ID: (id: string): string => `/warehouse/stock-counts/${id}`,
    CREATE: '/warehouse/stock-counts',
    START: (id: string): string => `/warehouse/stock-counts/${id}/start`,
    RECORD_ITEM: (id: string): string => `/warehouse/stock-counts/${id}/items`,
    COMPLETE: (id: string): string => `/warehouse/stock-counts/${id}/complete`,
    APPROVE: (id: string): string => `/warehouse/stock-counts/${id}/approve`,
    CANCEL: (id: string): string => `/warehouse/stock-counts/${id}/cancel`,
  },

  INCIDENTS: {
    LIST: '/warehouse/incidents',
    GET_BY_ID: (id: string): string => `/warehouse/incidents/${id}`,
    CREATE: '/warehouse/incidents',
    UPDATE: (id: string): string => `/warehouse/incidents/${id}`,
    INVESTIGATE: (id: string): string => `/warehouse/incidents/${id}/investigate`,
    RESOLVE: (id: string): string => `/warehouse/incidents/${id}/resolve`,
    CLOSE: (id: string): string => `/warehouse/incidents/${id}/close`,
  },

  ADJUSTMENTS: {
    LIST: '/warehouse/adjustments',
    GET_BY_ID: (id: string): string => `/warehouse/adjustments/${id}`,
    CREATE: '/warehouse/adjustments',
    APPROVE: (id: string): string => `/warehouse/adjustments/${id}/approve`,
    APPLY: (id: string): string => `/warehouse/adjustments/${id}/apply`,
    REJECT: (id: string): string => `/warehouse/adjustments/${id}/reject`,
  },

  PAYMENTS: {
    LIST: '/payments-new',
    GET_BY_ID: (id: string): string => `/payments-new/${id}`,
    CREATE: '/payments-new',
    UPDATE: (id: string): string => `/payments-new/${id}`,
    SUBMIT: (id: string): string => `/payments-new/${id}/submit-for-review`,
    APPROVE: (id: string): string => `/payments-new/${id}/approve`,
    CANCEL: (id: string): string => `/payments-new/${id}/cancel`,
    POST: (id: string): string => `/payments-new/${id}/post`,
    REVERSE: (id: string): string => `/payments-new/${id}/reverse`,
    STATUS_HISTORY: (id: string): string => `/payments-new/${id}/status-history`,
    RECEIPT_VOUCHER: (id: string): string => `/payments-new/${id}/receipt-voucher`,
    PAYMENT_VOUCHER: (id: string): string => `/payments-new/${id}/payment-voucher`,
  },

  SETTLEMENTS: {
    LIST: '/settlements',
    CREATE: '/settlements',
    GET_BY_ID: (id: string): string => `/settlements/${id}`,
    SUBMIT: (id: string): string => `/settlements/${id}/submit-for-review`,
    APPROVE: (id: string): string => `/settlements/${id}/approve`,
    POST: (id: string): string => `/settlements/${id}/post`,
    CANCEL: (id: string): string => `/settlements/${id}/cancel`,
    REVERSE: (id: string): string => `/settlements/${id}/reverse`,
    LINES: (id: string): string => `/settlements/${id}/lines`,
    LINE_BY_ID: (settlementId: string, lineId: string): string => `/settlements/${settlementId}/lines/${lineId}`,
    STATUS_HISTORY: (id: string): string => `/settlements/${id}/status-history`,
  },

  SPRINT_RECONCILIATIONS: {
    LIST: '/reconciliations',
    CREATE: '/reconciliations',
    GET_BY_ID: (id: string): string => `/reconciliations/${id}`,
    START: (id: string): string => `/reconciliations/${id}/start`,
    MARK_RECONCILED: (id: string): string => `/reconciliations/${id}/mark-reconciled`,
    MARK_DISCREPANCY: (id: string): string => `/reconciliations/${id}/mark-discrepancy`,
  },

  BRANCHES: {
    LIST: '/branches',
    GET_BY_ID: (id: string): string => `/branches/${id}`,
    CREATE: '/branches',
    UPDATE: (id: string): string => `/branches/${id}`,
  },

  COMPANIES: {
    LIST: '/companies',
    CREATE: '/companies',
    GET_BY_ID: (id: string): string => `/companies/${id}`,
    UPDATE: (id: string): string => `/companies/${id}`,
    DEACTIVATE: (id: string): string => `/companies/${id}/deactivate`,
  },

  COUNTRIES: {
    LIST: '/countries',
  },

  SUPPLIERS: {
    LIST: '/suppliers/',
    APPROVED: '/suppliers/approved',
    GET_BY_ID: (id: string): string => `/suppliers/${id}`,
    CREATE: '/suppliers/',
    UPDATE: (id: string): string => `/suppliers/${id}`,
    APPROVE: (id: string): string => `/suppliers/${id}/approve`,
    BLOCK: (id: string): string => `/suppliers/${id}/block`,
    UNBLOCK: (id: string): string => `/suppliers/${id}/unblock`,
    CHANGE_STATUS: (id: string): string => `/suppliers/${id}/change-status`,
  },

  PURITIES: {
    LIST: '/purities/',
    CREATE: '/purities/',
    UPDATE: (id: string): string => `/purities/${id}`,
    DEACTIVATE: (id: string): string => `/purities/${id}/deactivate`,
  },

  GOLD_UNITS: {
    LIST: '/units/',
    CREATE: '/units/',
    UPDATE: (id: string): string => `/units/${id}`,
    DEACTIVATE: (id: string): string => `/units/${id}/deactivate`,
    CONVERT: '/units/convert',
  },

  CURRENCIES: {
    LIST: '/currencies',
  },

  OUTBOUND_ORDERS: {
    LIST: '/outbound-orders',
    CREATE_FROM_SOURCE: '/outbound-orders/from-source',
    GET_BY_ID: (id: string): string => `/outbound-orders/${id}`,
    APPROVE: (id: string): string => `/outbound-orders/${id}/approve`,
    PICK: (id: string): string => `/outbound-orders/${id}/pick`,
    DISPATCH: (id: string): string => `/outbound-orders/${id}/dispatch`,
    CONFIRM_HANDOVER: (id: string): string => `/outbound-orders/${id}/confirm-handover`,
    CLOSE: (id: string): string => `/outbound-orders/${id}/close`,
  },

  PURCHASE_RETURNS: {
    LIST: '/purchase-returns',
    CREATE: '/purchase-returns',
    GET_BY_ID: (id: string): string => `/purchase-returns/${id}`,
    APPROVE: (id: string): string => `/purchase-returns/${id}/approve`,
    PREPARE_DISPATCH: (id: string): string => `/purchase-returns/${id}/prepare-dispatch`,
    POST_OUTBOUND: (id: string): string => `/purchase-returns/${id}/post-outbound`,
    REVERSE: (id: string): string => `/purchase-returns/${id}/reverse`,
    CLOSE: (id: string): string => `/purchase-returns/${id}/close`,
  },

  PLATFORM_ALLOCATIONS: {
    LIST: '/platform-allocations',
    CREATE: '/platform-allocations',
    GET_BY_ID: (id: string): string => `/platform-allocations/${id}`,
    APPROVE: (id: string): string => `/platform-allocations/${id}/approve`,
    POST: (id: string): string => `/platform-allocations/${id}/post`,
    WITHDRAW: (id: string): string => `/platform-allocations/${id}/withdraw-from-platform`,
    CLOSE: (id: string): string => `/platform-allocations/${id}/close`,
  },

  BULLION_BARS: {
    LIST: '/warehouse/bars',
    GET_BY_ID: (id: string): string => `/warehouse/bars/${id}`,
    MOVEMENTS: (id: string): string => `/warehouse/bars/${id}/movements`,
    OWNERSHIP: (id: string): string => `/warehouse/bars/${id}/ownership`,
    AUDIT: (id: string): string => `/warehouse/bars/${id}/audit`,
    FREEZE: (id: string): string => `/warehouse/bars/${id}/freeze`,
    UNFREEZE: (id: string): string => `/warehouse/bars/${id}/unfreeze`,
    RESERVE: (id: string): string => `/warehouse/bars/${id}/reserve`,
    RELEASE: (id: string): string => `/warehouse/bars/${id}/release`,
    BLOCK: (id: string): string => `/warehouse/bars/${id}/block`,
  },

  RECEIVING: {
    LIST: '/warehouse/receiving-batches',
    GET_BY_ID: (id: string): string => `/warehouse/receiving-batches/${id}`,
    CREATE: '/warehouse/receiving-batches',
    START_INSPECTION: (id: string): string => `/warehouse/receiving-batches/${id}/start-inspection`,
    COMPLETE: (id: string): string => `/warehouse/receiving-batches/${id}/complete`,
  },

  RECEIVING_ORDERS: {
    LIST: '/receiving-orders',
    CREATE: '/receiving-orders',
    GET_BY_ID: (id: string): string => `/receiving-orders/${id}`,
    UPDATE: (id: string): string => `/receiving-orders/${id}`,
    SUBMIT_FOR_REVIEW: (id: string): string => `/receiving-orders/${id}/submit-for-review`,
    APPROVE: (id: string): string => `/receiving-orders/${id}/approve`,
    REJECT: (id: string): string => `/receiving-orders/${id}/reject`,
    MARK_RECEIVED: (id: string): string => `/receiving-orders/${id}/mark-received`,
    POST: (id: string): string => `/receiving-orders/${id}/post`,
    POSTING_PREVIEW: (id: string): string => `/receiving-orders/${id}/posting-preview`,
    RECEIPT: (id: string): string => `/receiving-orders/${id}/receipt`,
    CANCEL: (id: string): string => `/receiving-orders/${id}/cancel`,
    RESUBMIT: (id: string): string => `/receiving-orders/${id}/resubmit`,
    STATUS_HISTORY: (id: string): string => `/receiving-orders/${id}/status-history`,
    ITEMS: (id: string): string => `/receiving-orders/${id}/items`,
    ITEM_ASSAY: (id: string, itemId: string): string => `/receiving-orders/${id}/items/${itemId}/assay`,
  },

  INSPECTIONS: {
    LIST: '/warehouse/inspections',
    GET_BY_ID: (id: string): string => `/warehouse/inspections/${id}`,
    APPROVE: (id: string): string => `/warehouse/inspections/${id}/approve`,
    REJECT: (id: string): string => `/warehouse/inspections/${id}/reject`,
  },

  BARS: {
    LIST: '/warehouse/bars',
    GET_BY_ID: (id: string): string => `/warehouse/bars/${id}`,
    RESERVE: (id: string): string => `/warehouse/bars/${id}/reserve`,
    RELEASE: (id: string): string => `/warehouse/bars/${id}/release`,
    BLOCK: (id: string): string => `/warehouse/bars/${id}/block`,
  },

  PRICING: {
    SPREAD_RULES: '/gold-pricing/spread-rules',
    COMPUTE_BUY: '/gold-pricing/compute-buy-price',
    COMPUTE_SELL: '/gold-pricing/compute-sell-price',
  },

  FEES: {
    LIST: '/fees-taxes/fee-rules',
    GET_BY_ID: (id: string): string => `/fees-taxes/fee-rules/${id}`,
    UPDATE: (id: string): string => `/fees-taxes/fee-rules/${id}`,
  },

  LEDGER: {
    LIST: '/journal-headers/',
    CREATE: '/journal-headers/',
    GET_BY_ID: (id: string): string => `/journal-headers/${id}`,
    UPDATE: (id: string): string => `/journal-headers/${id}`,
    VALIDATE: (id: string): string => `/journal-headers/${id}/validate`,
    SUBMIT_APPROVAL: (id: string): string => `/journal-headers/${id}/submit-approval`,
    APPROVE: (id: string): string => `/journal-headers/${id}/approve`,
    POST: (id: string): string => `/journal-headers/${id}/post`,
    CANCEL: (id: string): string => `/journal-headers/${id}/cancel`,
    REVERSE: (id: string): string => `/journal-headers/${id}/reverse`,
    AUDIT: (id: string): string => `/journal-headers/${id}/audit`,
    LINES: (id: string): string => `/journal-headers/${id}/lines/`,
    LINE: (id: string, lineId: string): string => `/journal-headers/${id}/lines/${lineId}`,
    BALANCE: (id: string): string => `/journal-headers/${id}/lines/balance`,
  },

  ACCOUNTS: {
    LIST: '/accounts/',
    TREE: '/accounts/tree',
    POSTING: '/accounts/posting',
    CREATE: '/accounts/',
    UPDATE: (id: string): string => `/accounts/${id}`,
    DEACTIVATE: (id: string): string => `/accounts/${id}/deactivate`,
  },

  ACCOUNT_TYPES: {
    LIST: '/account-types/',
    CREATE: '/account-types/',
    UPDATE: (id: string): string => `/account-types/${id}`,
    DEACTIVATE: (id: string): string => `/account-types/${id}/deactivate`,
  },

  FISCAL: {
    YEARS: '/fiscal/years',
    CURRENT_YEAR: '/fiscal/years/current',
    CREATE_YEAR: '/fiscal/years',
    GENERATE_PERIODS: (id: string): string => `/fiscal/years/${id}/generate-periods`,
    OPEN_YEAR: (id: string): string => `/fiscal/years/${id}/open`,
    CLOSE_YEAR: (id: string): string => `/fiscal/years/${id}/close`,
    LOCK_YEAR: (id: string): string => `/fiscal/years/${id}/lock`,
    YEAR_PERIODS: (id: string): string => `/fiscal/years/${id}/periods`,
    PERIOD: (id: string): string => `/fiscal/periods/${id}`,
    CREATE_PERIOD: '/fiscal/periods',
    UPDATE_PERIOD: (id: string): string => `/fiscal/periods/${id}`,
    CLOSE_PERIOD: (id: string): string => `/fiscal/periods/${id}/close`,
    REOPEN_PERIOD: (id: string): string => `/fiscal/periods/${id}/reopen`,
    OPEN_PERIOD: (id: string): string => `/fiscal/periods/${id}/open`,
    PERIOD_BALANCES: (id: string): string => `/fiscal/periods/${id}/balances`,
    AUDIT_LOGS: '/fiscal/audit-logs',
  },

  RECONCILIATION: {
    LIST: '/reconciliation/',
    GET_BY_ID: (id: string): string => `/reconciliation/${id}`,
  },

  NOTIFICATIONS: {
    LIST: '/notifications',
    MARK_READ: (id: string): string => `/notifications/${id}/read`,
    REGISTER_TOKEN: '/notifications/register-token',
    SEND_TEST: '/notifications/send-test',
  },

  SUPPORT: {
    CASES: '/support/tickets',
    GET_BY_ID: (id: string): string => `/support/tickets/${id}`,
    UPDATE: (id: string): string => `/support/tickets/${id}`,
  },

  REPORTS: {
    DASHBOARD_KPIS: '/reports/dashboard-kpis',
    GENERAL_LEDGER: '/reports/general-ledger',
    TRIAL_BALANCE: '/reports/trial-balance',
    CUSTOMER_STATEMENT: (customerId: string): string => `/customer-statement/${customerId}`,
    GOLD_BALANCES: '/reports/gold-balances',
    GOLD_MOVEMENTS: '/reports/gold-movements',
    FEES_PROFIT: '/reports/fees-profit',
  },

  ROLES: {
    LIST: '/roles/',
    WITH_PERMISSIONS: '/roles/with-permissions',
    CREATE: '/roles/',
    GET_BY_ID: (id: string): string => `/roles/${id}`,
    UPDATE: (id: string): string => `/roles/${id}`,
    DELETE: (id: string): string => `/roles/${id}`,
    USER_ROLES: (userId: string): string => `/roles/users/${userId}/roles`,
  },

  USERS: {
    LIST: '/users',
    CREATE: '/users',
    PENDING_APPROVALS: '/users/pending-approvals',
    GET_BY_ID: (id: string): string => `/users/${id}`,
    UPDATE: (id: string): string => `/users/${id}`,
    DELETE: (id: string): string => `/users/${id}`,
    APPROVE_ADMIN: (id: string): string => `/users/${id}/approve-admin`,
    REGENERATE_PASSWORD: (id: string): string => `/users/${id}/regenerate-password`,
    REVOKE_SESSIONS: (id: string): string => `/users/${id}/revoke-sessions`,
    WHITELIST_IPS: (id: string): string => `/users/${id}/whitelist-ips`,
  },

  IP_BLACKLISTS: {
    LIST: '/ip-blacklists',
    CREATE: '/ip-blacklists',
    GET_BY_ID: (id: string): string => `/ip-blacklists/${id}`,
    UPDATE: (id: string): string => `/ip-blacklists/${id}`,
    EXPIRE: (id: string): string => `/ip-blacklists/${id}/expire`,
  },

  PERMISSIONS: {
    LIST: '/permissions/',
    CREATE: '/permissions/',
    MODULES: '/permissions/modules',
  },

  SETTINGS: {
    LIST: '/settings/',
    CREATE: '/settings/',
    UPDATE: (key: string): string => `/settings/${key}`,
  },

  RISK_AML: {
    ALERTS: '/risk-aml/alerts',
    ALERT_BY_ID: (id: string): string => `/risk-aml/alerts/${id}`,
    REVIEW: (id: string): string => `/risk-aml/alerts/${id}/review`,
  },

  GOLD: {
    FETCH_PRICES: '/gold/prices/fetch',
  },

  WALLET_ENGINE: {
    CASH_MOVE: '/cash-move',
    GOLD_MOVE: '/gold-move',
    RECONCILE: '/reconcile',
  },
};
