diff --git a/README.md b/README.md index eb30977..7aba49a 100644 --- a/README.md +++ b/README.md @@ -1 +1,76 @@ -# brazil-swift-ops \ No newline at end of file +# Brazil SWIFT Operations Platform + +Regulator-grade cross-border payment rules engine and treasury management console compliant with Brazilian Banco Central (BCB) requirements, ISO 20022, and international AML/KYC standards. + +## Architecture + +This is a **monorepo** built with: +- **pnpm workspaces** for package management +- **Turborepo** for build orchestration +- **TypeScript** for type safety +- **React** + **Tailwind CSS** for the frontend + +## Packages + +- `packages/types` - Shared TypeScript types and interfaces +- `packages/utils` - Common utilities (currency, dates, validation, E&O) +- `packages/rules-engine` - Brazil regulatory rules engine +- `packages/iso20022` - ISO 20022 message handling +- `packages/treasury` - Treasury & subledger management +- `packages/risk-models` - Capital, reserves, LCR stress allocation +- `packages/audit` - Audit logging & compliance reporting +- `apps/web` - React frontend application + +## Getting Started + +### Prerequisites + +- Node.js >= 18.0.0 +- pnpm >= 8.0.0 + +### Installation + +```bash +pnpm install +``` + +### Development + +```bash +pnpm dev +``` + +### Build + +```bash +pnpm build +``` + +### Testing + +```bash +pnpm test +``` + +### Type Checking + +```bash +pnpm type-check +``` + +## Features + +- ✅ Brazil regulatory compliance (BCB requirements) +- ✅ ISO 20022 message support (pacs.008, pacs.009, pain.001) +- ✅ Multi-transaction batch processing +- ✅ Treasury & subledger management +- ✅ Risk, capital & liquidity stress allocation +- ✅ AML & anti-structuring detection +- ✅ IOF tax calculation +- ✅ FX contract validation +- ✅ Audit logging & compliance reporting +- ✅ Errors & Omissions (E&O) +10% uplift + +## License + +Private - Internal Use Only diff --git a/apps/web/src/App.d.ts b/apps/web/src/App.d.ts deleted file mode 100644 index 848bdd0..0000000 --- a/apps/web/src/App.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare function App(): import("react/jsx-runtime").JSX.Element; -export default App; -//# sourceMappingURL=App.d.ts.map \ No newline at end of file diff --git a/apps/web/src/App.d.ts.map b/apps/web/src/App.d.ts.map deleted file mode 100644 index 3d0f649..0000000 --- a/apps/web/src/App.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["App.tsx"],"names":[],"mappings":"AAMA,iBAAS,GAAG,4CAuDX;AAED,eAAe,GAAG,CAAC"} \ No newline at end of file diff --git a/apps/web/src/App.js b/apps/web/src/App.js deleted file mode 100644 index 9026f13..0000000 --- a/apps/web/src/App.js +++ /dev/null @@ -1,11 +0,0 @@ -import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; -import { BrowserRouter, Routes, Route, Link } from 'react-router-dom'; -import DashboardPage from './pages/DashboardPage'; -import TransactionsPage from './pages/TransactionsPage'; -import TreasuryPage from './pages/TreasuryPage'; -import ReportsPage from './pages/ReportsPage'; -function App() { - return (_jsx(BrowserRouter, { children: _jsxs("div", { className: "min-h-screen bg-gray-50", children: [_jsx("nav", { className: "bg-white shadow-sm border-b", children: _jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: _jsx("div", { className: "flex justify-between h-16", children: _jsxs("div", { className: "flex", children: [_jsx("div", { className: "flex-shrink-0 flex items-center", children: _jsx("h1", { className: "text-xl font-bold text-gray-900", children: "Brazil SWIFT Operations" }) }), _jsxs("div", { className: "hidden sm:ml-6 sm:flex sm:space-x-8", children: [_jsx(Link, { to: "/", className: "border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium", children: "Dashboard" }), _jsx(Link, { to: "/transactions", className: "border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium", children: "Transactions" }), _jsx(Link, { to: "/treasury", className: "border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium", children: "Treasury" }), _jsx(Link, { to: "/reports", className: "border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium", children: "Reports" })] })] }) }) }) }), _jsx("main", { className: "max-w-7xl mx-auto py-6 sm:px-6 lg:px-8", children: _jsxs(Routes, { children: [_jsx(Route, { path: "/", element: _jsx(DashboardPage, {}) }), _jsx(Route, { path: "/transactions", element: _jsx(TransactionsPage, {}) }), _jsx(Route, { path: "/treasury", element: _jsx(TreasuryPage, {}) }), _jsx(Route, { path: "/reports", element: _jsx(ReportsPage, {}) })] }) })] }) })); -} -export default App; -//# sourceMappingURL=App.js.map \ No newline at end of file diff --git a/apps/web/src/App.js.map b/apps/web/src/App.js.map deleted file mode 100644 index 2beca59..0000000 --- a/apps/web/src/App.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"App.js","sourceRoot":"","sources":["App.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,aAAa,MAAM,uBAAuB,CAAC;AAClD,OAAO,gBAAgB,MAAM,0BAA0B,CAAC;AACxD,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAChD,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAE9C,SAAS,GAAG;IACV,OAAO,CACL,KAAC,aAAa,cACZ,eAAK,SAAS,EAAC,yBAAyB,aACtC,cAAK,SAAS,EAAC,6BAA6B,YAC1C,cAAK,SAAS,EAAC,wCAAwC,YACrD,cAAK,SAAS,EAAC,2BAA2B,YACxC,eAAK,SAAS,EAAC,MAAM,aACnB,cAAK,SAAS,EAAC,iCAAiC,YAC9C,aAAI,SAAS,EAAC,iCAAiC,wCAE1C,GACD,EACN,eAAK,SAAS,EAAC,qCAAqC,aAClD,KAAC,IAAI,IACH,EAAE,EAAC,GAAG,EACN,SAAS,EAAC,8IAA8I,0BAGnJ,EACP,KAAC,IAAI,IACH,EAAE,EAAC,eAAe,EAClB,SAAS,EAAC,8IAA8I,6BAGnJ,EACP,KAAC,IAAI,IACH,EAAE,EAAC,WAAW,EACd,SAAS,EAAC,8IAA8I,yBAGnJ,EACP,KAAC,IAAI,IACH,EAAE,EAAC,UAAU,EACb,SAAS,EAAC,8IAA8I,wBAGnJ,IACH,IACF,GACF,GACF,GACF,EAEN,eAAM,SAAS,EAAC,wCAAwC,YACtD,MAAC,MAAM,eACL,KAAC,KAAK,IAAC,IAAI,EAAC,GAAG,EAAC,OAAO,EAAE,KAAC,aAAa,KAAG,GAAI,EAC9C,KAAC,KAAK,IAAC,IAAI,EAAC,eAAe,EAAC,OAAO,EAAE,KAAC,gBAAgB,KAAG,GAAI,EAC7D,KAAC,KAAK,IAAC,IAAI,EAAC,WAAW,EAAC,OAAO,EAAE,KAAC,YAAY,KAAG,GAAI,EACrD,KAAC,KAAK,IAAC,IAAI,EAAC,UAAU,EAAC,OAAO,EAAE,KAAC,WAAW,KAAG,GAAI,IAC5C,GACJ,IACH,GACQ,CACjB,CAAC;AACJ,CAAC;AAED,eAAe,GAAG,CAAC"} \ No newline at end of file diff --git a/apps/web/src/main.d.ts b/apps/web/src/main.d.ts deleted file mode 100644 index c5184af..0000000 --- a/apps/web/src/main.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import './index.css'; -//# sourceMappingURL=main.d.ts.map \ No newline at end of file diff --git a/apps/web/src/main.d.ts.map b/apps/web/src/main.d.ts.map deleted file mode 100644 index 15c19ee..0000000 --- a/apps/web/src/main.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["main.tsx"],"names":[],"mappings":"AAGA,OAAO,aAAa,CAAC"} \ No newline at end of file diff --git a/apps/web/src/main.js b/apps/web/src/main.js deleted file mode 100644 index fd257c5..0000000 --- a/apps/web/src/main.js +++ /dev/null @@ -1,7 +0,0 @@ -import { jsx as _jsx } from "react/jsx-runtime"; -import React from 'react'; -import ReactDOM from 'react-dom/client'; -import App from './App'; -import './index.css'; -ReactDOM.createRoot(document.getElementById('root')).render(_jsx(React.StrictMode, { children: _jsx(App, {}) })); -//# sourceMappingURL=main.js.map \ No newline at end of file diff --git a/apps/web/src/main.js.map b/apps/web/src/main.js.map deleted file mode 100644 index 0356b3b..0000000 --- a/apps/web/src/main.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["main.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AACxC,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,aAAa,CAAC;AAErB,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAE,CAAC,CAAC,MAAM,CAC1D,KAAC,KAAK,CAAC,UAAU,cACf,KAAC,GAAG,KAAG,GACU,CACpB,CAAC"} \ No newline at end of file diff --git a/apps/web/src/pages/DashboardPage.d.ts b/apps/web/src/pages/DashboardPage.d.ts deleted file mode 100644 index 070ef0b..0000000 --- a/apps/web/src/pages/DashboardPage.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export default function DashboardPage(): import("react/jsx-runtime").JSX.Element; -//# sourceMappingURL=DashboardPage.d.ts.map \ No newline at end of file diff --git a/apps/web/src/pages/DashboardPage.d.ts.map b/apps/web/src/pages/DashboardPage.d.ts.map deleted file mode 100644 index b63bc2d..0000000 --- a/apps/web/src/pages/DashboardPage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DashboardPage.d.ts","sourceRoot":"","sources":["DashboardPage.tsx"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,aAAa,4CASpC"} \ No newline at end of file diff --git a/apps/web/src/pages/DashboardPage.js b/apps/web/src/pages/DashboardPage.js deleted file mode 100644 index 6039757..0000000 --- a/apps/web/src/pages/DashboardPage.js +++ /dev/null @@ -1,5 +0,0 @@ -import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; -export default function DashboardPage() { - return (_jsx("div", { className: "px-4 py-6 sm:px-0", children: _jsxs("div", { className: "border-4 border-dashed border-gray-200 rounded-lg h-96 p-8", children: [_jsx("h1", { className: "text-2xl font-bold mb-4", children: "Dashboard" }), _jsx("p", { className: "text-gray-600", children: "Brazil SWIFT Operations Platform" })] }) })); -} -//# sourceMappingURL=DashboardPage.js.map \ No newline at end of file diff --git a/apps/web/src/pages/DashboardPage.js.map b/apps/web/src/pages/DashboardPage.js.map deleted file mode 100644 index b1bccf6..0000000 --- a/apps/web/src/pages/DashboardPage.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DashboardPage.js","sourceRoot":"","sources":["DashboardPage.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,OAAO,UAAU,aAAa;IACnC,OAAO,CACL,cAAK,SAAS,EAAC,mBAAmB,YAChC,eAAK,SAAS,EAAC,4DAA4D,aACzE,aAAI,SAAS,EAAC,yBAAyB,0BAAe,EACtD,YAAG,SAAS,EAAC,eAAe,iDAAqC,IAC7D,GACF,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/apps/web/src/pages/ReportsPage.d.ts b/apps/web/src/pages/ReportsPage.d.ts deleted file mode 100644 index 7168761..0000000 --- a/apps/web/src/pages/ReportsPage.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export default function ReportsPage(): import("react/jsx-runtime").JSX.Element; -//# sourceMappingURL=ReportsPage.d.ts.map \ No newline at end of file diff --git a/apps/web/src/pages/ReportsPage.d.ts.map b/apps/web/src/pages/ReportsPage.d.ts.map deleted file mode 100644 index 4e2dc97..0000000 --- a/apps/web/src/pages/ReportsPage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ReportsPage.d.ts","sourceRoot":"","sources":["ReportsPage.tsx"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,WAAW,4CAOlC"} \ No newline at end of file diff --git a/apps/web/src/pages/ReportsPage.js b/apps/web/src/pages/ReportsPage.js deleted file mode 100644 index 30837d6..0000000 --- a/apps/web/src/pages/ReportsPage.js +++ /dev/null @@ -1,5 +0,0 @@ -import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; -export default function ReportsPage() { - return (_jsxs("div", { className: "px-4 py-6 sm:px-0", children: [_jsx("h1", { className: "text-2xl font-bold mb-4", children: "ReportsPage" }), _jsx("p", { className: "text-gray-600", children: "ReportsPage interface" })] })); -} -//# sourceMappingURL=ReportsPage.js.map \ No newline at end of file diff --git a/apps/web/src/pages/ReportsPage.js.map b/apps/web/src/pages/ReportsPage.js.map deleted file mode 100644 index cb2eabf..0000000 --- a/apps/web/src/pages/ReportsPage.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ReportsPage.js","sourceRoot":"","sources":["ReportsPage.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,OAAO,UAAU,WAAW;IACjC,OAAO,CACL,eAAK,SAAS,EAAC,mBAAmB,aAChC,aAAI,SAAS,EAAC,yBAAyB,4BAAiB,EACxD,YAAG,SAAS,EAAC,eAAe,sCAA0B,IAClD,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/apps/web/src/pages/TransactionsPage.d.ts b/apps/web/src/pages/TransactionsPage.d.ts deleted file mode 100644 index 1010aff..0000000 --- a/apps/web/src/pages/TransactionsPage.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export default function TransactionsPage(): import("react/jsx-runtime").JSX.Element; -//# sourceMappingURL=TransactionsPage.d.ts.map \ No newline at end of file diff --git a/apps/web/src/pages/TransactionsPage.d.ts.map b/apps/web/src/pages/TransactionsPage.d.ts.map deleted file mode 100644 index 055d9fb..0000000 --- a/apps/web/src/pages/TransactionsPage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TransactionsPage.d.ts","sourceRoot":"","sources":["TransactionsPage.tsx"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,gBAAgB,4CAOvC"} \ No newline at end of file diff --git a/apps/web/src/pages/TransactionsPage.js b/apps/web/src/pages/TransactionsPage.js deleted file mode 100644 index 29356f6..0000000 --- a/apps/web/src/pages/TransactionsPage.js +++ /dev/null @@ -1,5 +0,0 @@ -import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; -export default function TransactionsPage() { - return (_jsxs("div", { className: "px-4 py-6 sm:px-0", children: [_jsx("h1", { className: "text-2xl font-bold mb-4", children: "TransactionsPage" }), _jsx("p", { className: "text-gray-600", children: "TransactionsPage interface" })] })); -} -//# sourceMappingURL=TransactionsPage.js.map \ No newline at end of file diff --git a/apps/web/src/pages/TransactionsPage.js.map b/apps/web/src/pages/TransactionsPage.js.map deleted file mode 100644 index b734e7c..0000000 --- a/apps/web/src/pages/TransactionsPage.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TransactionsPage.js","sourceRoot":"","sources":["TransactionsPage.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,OAAO,UAAU,gBAAgB;IACtC,OAAO,CACL,eAAK,SAAS,EAAC,mBAAmB,aAChC,aAAI,SAAS,EAAC,yBAAyB,iCAAsB,EAC7D,YAAG,SAAS,EAAC,eAAe,2CAA+B,IACvD,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/apps/web/src/pages/TreasuryPage.d.ts b/apps/web/src/pages/TreasuryPage.d.ts deleted file mode 100644 index 2436df7..0000000 --- a/apps/web/src/pages/TreasuryPage.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export default function TreasuryPage(): import("react/jsx-runtime").JSX.Element; -//# sourceMappingURL=TreasuryPage.d.ts.map \ No newline at end of file diff --git a/apps/web/src/pages/TreasuryPage.d.ts.map b/apps/web/src/pages/TreasuryPage.d.ts.map deleted file mode 100644 index b835325..0000000 --- a/apps/web/src/pages/TreasuryPage.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TreasuryPage.d.ts","sourceRoot":"","sources":["TreasuryPage.tsx"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,YAAY,4CAOnC"} \ No newline at end of file diff --git a/apps/web/src/pages/TreasuryPage.js b/apps/web/src/pages/TreasuryPage.js deleted file mode 100644 index 68b5478..0000000 --- a/apps/web/src/pages/TreasuryPage.js +++ /dev/null @@ -1,5 +0,0 @@ -import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; -export default function TreasuryPage() { - return (_jsxs("div", { className: "px-4 py-6 sm:px-0", children: [_jsx("h1", { className: "text-2xl font-bold mb-4", children: "TreasuryPage" }), _jsx("p", { className: "text-gray-600", children: "TreasuryPage interface" })] })); -} -//# sourceMappingURL=TreasuryPage.js.map \ No newline at end of file diff --git a/apps/web/src/pages/TreasuryPage.js.map b/apps/web/src/pages/TreasuryPage.js.map deleted file mode 100644 index 0f37e45..0000000 --- a/apps/web/src/pages/TreasuryPage.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TreasuryPage.js","sourceRoot":"","sources":["TreasuryPage.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,OAAO,UAAU,YAAY;IAClC,OAAO,CACL,eAAK,SAAS,EAAC,mBAAmB,aAChC,aAAI,SAAS,EAAC,yBAAyB,6BAAkB,EACzD,YAAG,SAAS,EAAC,eAAe,uCAA2B,IACnD,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/apps/web/src/stores/transactionStore.d.ts b/apps/web/src/stores/transactionStore.d.ts deleted file mode 100644 index 2f9d1ea..0000000 --- a/apps/web/src/stores/transactionStore.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { Transaction, BrazilRegulatoryResult } from '@brazil-swift-ops/types'; -interface TransactionStore { - transactions: Transaction[]; - results: Map; - addTransaction: (txn: Transaction) => void; - evaluateTransaction: (txn: Transaction) => BrazilRegulatoryResult; -} -export declare const useTransactionStore: import("zustand").UseBoundStore>; -export {}; -//# sourceMappingURL=transactionStore.d.ts.map \ No newline at end of file diff --git a/apps/web/src/stores/transactionStore.d.ts.map b/apps/web/src/stores/transactionStore.d.ts.map deleted file mode 100644 index e8ccb4c..0000000 --- a/apps/web/src/stores/transactionStore.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transactionStore.d.ts","sourceRoot":"","sources":["transactionStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAGnF,UAAU,gBAAgB;IACxB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAC7C,cAAc,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;IAC3C,mBAAmB,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,sBAAsB,CAAC;CACnE;AAED,eAAO,MAAM,mBAAmB,+EAiB7B,CAAC"} \ No newline at end of file diff --git a/apps/web/src/stores/transactionStore.js b/apps/web/src/stores/transactionStore.js deleted file mode 100644 index 045d75c..0000000 --- a/apps/web/src/stores/transactionStore.js +++ /dev/null @@ -1,21 +0,0 @@ -import { create } from 'zustand'; -import { evaluateTransaction } from '@brazil-swift-ops/rules-engine'; -export const useTransactionStore = create((set) => ({ - transactions: [], - results: new Map(), - addTransaction: (txn) => { - const result = evaluateTransaction(txn); - set((state) => ({ - transactions: [...state.transactions, txn], - results: new Map(state.results).set(txn.id, result), - })); - }, - evaluateTransaction: (txn) => { - const result = evaluateTransaction(txn); - set((state) => ({ - results: new Map(state.results).set(txn.id, result), - })); - return result; - }, -})); -//# sourceMappingURL=transactionStore.js.map \ No newline at end of file diff --git a/apps/web/src/stores/transactionStore.js.map b/apps/web/src/stores/transactionStore.js.map deleted file mode 100644 index a5aa9d8..0000000 --- a/apps/web/src/stores/transactionStore.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transactionStore.js","sourceRoot":"","sources":["transactionStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,mBAAmB,EAAiB,MAAM,gCAAgC,CAAC;AASpF,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAmB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACpE,YAAY,EAAE,EAAE;IAChB,OAAO,EAAE,IAAI,GAAG,EAAE;IAClB,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE;QACtB,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACxC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACd,YAAY,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC;YAC1C,OAAO,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC;SACpD,CAAC,CAAC,CAAC;IACN,CAAC;IACD,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;QAC3B,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACxC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACd,OAAO,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC;SACpD,CAAC,CAAC,CAAC;QACJ,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/audit/src/index.d.ts b/packages/audit/src/index.d.ts deleted file mode 100644 index 41c21d5..0000000 --- a/packages/audit/src/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './logger'; -export * from './reports'; -export * from './retention'; -export * from './versions'; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/audit/src/index.d.ts.map b/packages/audit/src/index.d.ts.map deleted file mode 100644 index 1f8f082..0000000 --- a/packages/audit/src/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"} \ No newline at end of file diff --git a/packages/audit/src/index.js b/packages/audit/src/index.js deleted file mode 100644 index e8e89c3..0000000 --- a/packages/audit/src/index.js +++ /dev/null @@ -1,5 +0,0 @@ -export * from './logger'; -export * from './reports'; -export * from './retention'; -export * from './versions'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/audit/src/index.js.map b/packages/audit/src/index.js.map deleted file mode 100644 index ba118cf..0000000 --- a/packages/audit/src/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"} \ No newline at end of file diff --git a/packages/audit/src/logger.d.ts b/packages/audit/src/logger.d.ts deleted file mode 100644 index b1cd4ad..0000000 --- a/packages/audit/src/logger.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { AuditLog, BrazilRegulatoryResult } from '@brazil-swift-ops/types'; -declare class AuditLogStore { - private logs; - add(log: AuditLog): void; - get(id: string): AuditLog | undefined; - getByTransaction(transactionId: string): AuditLog[]; - getByDateRange(startDate: Date, endDate: Date): AuditLog[]; - getAll(): AuditLog[]; -} -export declare function getAuditLogStore(): AuditLogStore; -export declare function createAuditLog(result: BrazilRegulatoryResult, action?: string, userId?: string, ipAddress?: string): AuditLog; -export {}; -//# sourceMappingURL=logger.d.ts.map \ No newline at end of file diff --git a/packages/audit/src/logger.d.ts.map b/packages/audit/src/logger.d.ts.map deleted file mode 100644 index d37559d..0000000 --- a/packages/audit/src/logger.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEhF,cAAM,aAAa;IACjB,OAAO,CAAC,IAAI,CAAkB;IAE9B,GAAG,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAIxB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIrC,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,QAAQ,EAAE;IAInD,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,QAAQ,EAAE;IAM1D,MAAM,IAAI,QAAQ,EAAE;CAGrB;AAID,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,sBAAsB,EAC9B,MAAM,GAAE,MAAgC,EACxC,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,QAAQ,CAwBV"} \ No newline at end of file diff --git a/packages/audit/src/logger.js b/packages/audit/src/logger.js deleted file mode 100644 index 41c0bb3..0000000 --- a/packages/audit/src/logger.js +++ /dev/null @@ -1,47 +0,0 @@ -class AuditLogStore { - logs = []; - add(log) { - this.logs.push(log); - } - get(id) { - return this.logs.find((log) => log.id === id); - } - getByTransaction(transactionId) { - return this.logs.filter((log) => log.transactionId === transactionId); - } - getByDateRange(startDate, endDate) { - return this.logs.filter((log) => log.timestamp >= startDate && log.timestamp <= endDate); - } - getAll() { - return [...this.logs]; - } -} -const auditLogStore = new AuditLogStore(); -export function getAuditLogStore() { - return auditLogStore; -} -export function createAuditLog(result, action = 'transaction_processed', userId, ipAddress) { - const log = { - id: `AUDIT-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`, - timestamp: result.timestamp, - transactionId: result.transactionId, - ruleSetVersion: result.ruleSetVersion, - inputs: { - transactionId: result.transactionId, - }, - outputs: { - overallDecision: result.overallDecision, - overallSeverity: result.overallSeverity, - rules: result.rules, - }, - decision: result.overallDecision, - severity: result.overallSeverity, - rationale: result.rules.map((r) => r.rationale).join('; '), - userId, - ipAddress, - action, - }; - auditLogStore.add(log); - return log; -} -//# sourceMappingURL=logger.js.map \ No newline at end of file diff --git a/packages/audit/src/logger.js.map b/packages/audit/src/logger.js.map deleted file mode 100644 index 28fde45..0000000 --- a/packages/audit/src/logger.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"logger.js","sourceRoot":"","sources":["logger.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa;IACT,IAAI,GAAe,EAAE,CAAC;IAE9B,GAAG,CAAC,GAAa;QACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB,CAAC,aAAqB;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,KAAK,aAAa,CAAC,CAAC;IACxE,CAAC;IAED,cAAc,CAAC,SAAe,EAAE,OAAa;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CACrB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,OAAO,CAChE,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;CACF;AAED,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAE1C,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,MAA8B,EAC9B,SAAiB,uBAAuB,EACxC,MAAe,EACf,SAAkB;IAElB,MAAM,GAAG,GAAa;QACpB,EAAE,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QACpE,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,MAAM,EAAE;YACN,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC;QACD,OAAO,EAAE;YACP,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB;QACD,QAAQ,EAAE,MAAM,CAAC,eAAe;QAChC,QAAQ,EAAE,MAAM,CAAC,eAAe;QAChC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1D,MAAM;QACN,SAAS;QACT,MAAM;KACP,CAAC;IAEF,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,OAAO,GAAG,CAAC;AACb,CAAC"} \ No newline at end of file diff --git a/packages/audit/src/reports.d.ts b/packages/audit/src/reports.d.ts deleted file mode 100644 index 2fa0938..0000000 --- a/packages/audit/src/reports.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import type { BCBReport, Transaction, BrazilRegulatoryResult } from '@brazil-swift-ops/types'; -export declare function generateBCBReport(transactions: Transaction[], results: BrazilRegulatoryResult[], reportType?: 'transaction' | 'batch' | 'periodic', periodStart?: Date, periodEnd?: Date): BCBReport; -export declare function exportBCBReportToCSV(report: BCBReport): string; -//# sourceMappingURL=reports.d.ts.map \ No newline at end of file diff --git a/packages/audit/src/reports.d.ts.map b/packages/audit/src/reports.d.ts.map deleted file mode 100644 index 257eaa0..0000000 --- a/packages/audit/src/reports.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["reports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAGT,WAAW,EACX,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;AAGjC,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,WAAW,EAAE,EAC3B,OAAO,EAAE,sBAAsB,EAAE,EACjC,UAAU,GAAE,aAAa,GAAG,OAAO,GAAG,UAA0B,EAChE,WAAW,CAAC,EAAE,IAAI,EAClB,SAAS,CAAC,EAAE,IAAI,GACf,SAAS,CA6DX;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAqC9D"} \ No newline at end of file diff --git a/packages/audit/src/reports.js b/packages/audit/src/reports.js deleted file mode 100644 index 891480f..0000000 --- a/packages/audit/src/reports.js +++ /dev/null @@ -1,95 +0,0 @@ -import { getDefaultConverter } from '@brazil-swift-ops/utils'; -export function generateBCBReport(transactions, results, reportType = 'transaction', periodStart, periodEnd) { - const converter = getDefaultConverter(); - const reportTransactions = transactions.map((txn, index) => { - const result = results[index]; - const usdEquivalent = converter.getUSDEquivalent(txn.amount, txn.currency); - return { - transactionId: txn.id, - executionDate: txn.createdAt, - direction: txn.direction, - amount: txn.amount, - currency: txn.currency, - usdEquivalent, - orderingCustomer: { - name: txn.orderingCustomer.name, - taxId: txn.orderingCustomer.taxId, - country: txn.orderingCustomer.country, - }, - beneficiary: { - name: txn.beneficiary.name, - taxId: txn.beneficiary.taxId, - country: txn.beneficiary.country, - accountNumber: txn.beneficiary.accountNumber, - }, - purposeOfPayment: txn.purposeOfPayment, - fxContractId: txn.fxContractId, - iofAmount: result.iofCalculation?.iofAmount, - reportingRequired: result.thresholdCheck?.requiresReporting ?? false, - }; - }); - const summary = { - totalTransactions: reportTransactions.length, - totalAmount: reportTransactions.reduce((sum, t) => sum + t.amount, 0), - totalUsdEquivalent: reportTransactions.reduce((sum, t) => sum + t.usdEquivalent, 0), - inboundCount: reportTransactions.filter((t) => t.direction === 'inbound').length, - inboundAmount: reportTransactions - .filter((t) => t.direction === 'inbound') - .reduce((sum, t) => sum + t.amount, 0), - outboundCount: reportTransactions.filter((t) => t.direction === 'outbound').length, - outboundAmount: reportTransactions - .filter((t) => t.direction === 'outbound') - .reduce((sum, t) => sum + t.amount, 0), - reportingRequiredCount: reportTransactions.filter((t) => t.reportingRequired).length, - totalIOF: reportTransactions.reduce((sum, t) => sum + (t.iofAmount || 0), 0), - }; - const report = { - reportId: `BCB-${Date.now()}`, - reportType, - generatedAt: new Date(), - periodStart, - periodEnd, - transactions: reportTransactions, - summary, - format: 'json', - data: JSON.stringify({ transactions: reportTransactions, summary }, null, 2), - }; - return report; -} -export function exportBCBReportToCSV(report) { - const headers = [ - 'Transaction ID', - 'Execution Date', - 'Direction', - 'Amount', - 'Currency', - 'USD Equivalent', - 'Ordering Customer', - 'Ordering Tax ID', - 'Beneficiary', - 'Beneficiary Tax ID', - 'Purpose', - 'FX Contract ID', - 'IOF Amount', - 'Reporting Required', - ]; - const rows = report.transactions.map((t) => [ - t.transactionId, - t.executionDate.toISOString(), - t.direction, - t.amount.toString(), - t.currency, - t.usdEquivalent.toString(), - t.orderingCustomer.name, - t.orderingCustomer.taxId || '', - t.beneficiary.name, - t.beneficiary.taxId || '', - t.purposeOfPayment || '', - t.fxContractId || '', - (t.iofAmount || 0).toString(), - t.reportingRequired ? 'Yes' : 'No', - ]); - const csv = [headers.join(','), ...rows.map((row) => row.join(','))].join('\n'); - return csv; -} -//# sourceMappingURL=reports.js.map \ No newline at end of file diff --git a/packages/audit/src/reports.js.map b/packages/audit/src/reports.js.map deleted file mode 100644 index a3a33f3..0000000 --- a/packages/audit/src/reports.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"reports.js","sourceRoot":"","sources":["reports.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/audit/src/retention.d.ts b/packages/audit/src/retention.d.ts deleted file mode 100644 index 7a802c8..0000000 --- a/packages/audit/src/retention.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { RetentionPolicy, AuditLog } from '@brazil-swift-ops/types'; -declare class RetentionPolicyStore { - private policies; - add(policy: RetentionPolicy): void; - get(dataType: RetentionPolicy['dataType']): RetentionPolicy | undefined; - getAll(): RetentionPolicy[]; -} -export declare function getRetentionPolicyStore(): RetentionPolicyStore; -export declare function applyRetentionPolicy(log: AuditLog, policy: RetentionPolicy): { - shouldArchive: boolean; - shouldDelete: boolean; -}; -export declare function enforceRetentionPolicies(): void; -export {}; -//# sourceMappingURL=retention.d.ts.map \ No newline at end of file diff --git a/packages/audit/src/retention.d.ts.map b/packages/audit/src/retention.d.ts.map deleted file mode 100644 index 7efbebe..0000000 --- a/packages/audit/src/retention.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["retention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAIzE,cAAM,oBAAoB;IACxB,OAAO,CAAC,QAAQ,CAAyB;IAEzC,GAAG,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAIlC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,eAAe,GAAG,SAAS;IAIvE,MAAM,IAAI,eAAe,EAAE;CAG5B;AAID,wBAAgB,uBAAuB,IAAI,oBAAoB,CAE9D;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,eAAe,GACtB;IAAE,aAAa,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAcnD;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAqB/C"} \ No newline at end of file diff --git a/packages/audit/src/retention.js b/packages/audit/src/retention.js deleted file mode 100644 index 4e76e64..0000000 --- a/packages/audit/src/retention.js +++ /dev/null @@ -1,49 +0,0 @@ -import { shouldArchive, shouldDelete } from '@brazil-swift-ops/utils'; -import { getAuditLogStore } from './logger'; -class RetentionPolicyStore { - policies = []; - add(policy) { - this.policies.push(policy); - } - get(dataType) { - return this.policies.find((p) => p.dataType === dataType); - } - getAll() { - return [...this.policies]; - } -} -const retentionPolicyStore = new RetentionPolicyStore(); -export function getRetentionPolicyStore() { - return retentionPolicyStore; -} -export function applyRetentionPolicy(log, policy) { - if (policy.archivalAfterDays) { - const archive = shouldArchive(log.timestamp, policy.archivalAfterDays); - if (archive) { - return { shouldArchive: true, shouldDelete: false }; - } - } - if (policy.autoDelete) { - const deleteLog = shouldDelete(log.timestamp, policy.retentionPeriodDays); - return { shouldArchive: false, shouldDelete: deleteLog }; - } - return { shouldArchive: false, shouldDelete: false }; -} -export function enforceRetentionPolicies() { - const auditLogStore = getAuditLogStore(); - const policyStore = getRetentionPolicyStore(); - const allPolicies = policyStore.getAll(); - const allLogs = auditLogStore.getAll(); - allLogs.forEach((log) => { - const policy = allPolicies.find((p) => p.dataType === 'audit_log' || p.dataType === 'all'); - if (policy) { - const { shouldDelete: shouldDeleteLog } = applyRetentionPolicy(log, policy); - if (shouldDeleteLog && policy.autoDelete) { - // In production, would actually delete from persistent storage - // For now, just mark for deletion - console.log(`Log ${log.id} should be deleted per retention policy`); - } - } - }); -} -//# sourceMappingURL=retention.js.map \ No newline at end of file diff --git a/packages/audit/src/retention.js.map b/packages/audit/src/retention.js.map deleted file mode 100644 index 2796a57..0000000 --- a/packages/audit/src/retention.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"retention.js","sourceRoot":"","sources":["retention.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,oBAAoB;IAChB,QAAQ,GAAsB,EAAE,CAAC;IAEzC,GAAG,CAAC,MAAuB;QACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,QAAqC;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM;QACJ,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAExD,MAAM,UAAU,uBAAuB;IACrC,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,GAAa,EACb,MAAuB;IAEvB,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACvE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC1E,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IAC3D,CAAC;IAED,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,uBAAuB,EAAE,CAAC;IAE9C,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;IAEvC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,CAC1D,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC5E,IAAI,eAAe,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACzC,+DAA+D;gBAC/D,kCAAkC;gBAClC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,yCAAyC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"} \ No newline at end of file diff --git a/packages/audit/src/versions.d.ts b/packages/audit/src/versions.d.ts deleted file mode 100644 index 128698a..0000000 --- a/packages/audit/src/versions.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { RuleVersion } from '@brazil-swift-ops/types'; -declare class RuleVersionStore { - private versions; - add(version: RuleVersion): void; - get(version: string): RuleVersion | undefined; - getCurrent(): RuleVersion | undefined; - getAll(): RuleVersion[]; - deprecate(version: string, deprecatedDate: Date): void; -} -export declare function getRuleVersionStore(): RuleVersionStore; -export declare function createRuleVersion(version: string, effectiveDate: Date, approvalAuthority: string, description?: string): RuleVersion; -export {}; -//# sourceMappingURL=versions.d.ts.map \ No newline at end of file diff --git a/packages/audit/src/versions.d.ts.map b/packages/audit/src/versions.d.ts.map deleted file mode 100644 index 367aa64..0000000 --- a/packages/audit/src/versions.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["versions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,cAAM,gBAAgB;IACpB,OAAO,CAAC,QAAQ,CAAqB;IAErC,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAI/B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI7C,UAAU,IAAI,WAAW,GAAG,SAAS;IAMrC,MAAM,IAAI,WAAW,EAAE;IAIvB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,GAAG,IAAI;CAOvD;AAID,wBAAgB,mBAAmB,IAAI,gBAAgB,CAEtD;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,IAAI,EACnB,iBAAiB,EAAE,MAAM,EACzB,WAAW,CAAC,EAAE,MAAM,GACnB,WAAW,CAWb"} \ No newline at end of file diff --git a/packages/audit/src/versions.js b/packages/audit/src/versions.js deleted file mode 100644 index 02e32f8..0000000 --- a/packages/audit/src/versions.js +++ /dev/null @@ -1,40 +0,0 @@ -class RuleVersionStore { - versions = []; - add(version) { - this.versions.push(version); - } - get(version) { - return this.versions.find((v) => v.version === version); - } - getCurrent() { - return this.versions - .filter((v) => !v.deprecated) - .sort((a, b) => b.effectiveDate.getTime() - a.effectiveDate.getTime())[0]; - } - getAll() { - return [...this.versions]; - } - deprecate(version, deprecatedDate) { - const versionObj = this.versions.find((v) => v.version === version); - if (versionObj) { - versionObj.deprecated = true; - versionObj.deprecatedDate = deprecatedDate; - } - } -} -const ruleVersionStore = new RuleVersionStore(); -export function getRuleVersionStore() { - return ruleVersionStore; -} -export function createRuleVersion(version, effectiveDate, approvalAuthority, description) { - const ruleVersion = { - version, - effectiveDate, - approvalAuthority, - deprecated: false, - description, - }; - ruleVersionStore.add(ruleVersion); - return ruleVersion; -} -//# sourceMappingURL=versions.js.map \ No newline at end of file diff --git a/packages/audit/src/versions.js.map b/packages/audit/src/versions.js.map deleted file mode 100644 index 8480b41..0000000 --- a/packages/audit/src/versions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"versions.js","sourceRoot":"","sources":["versions.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB;IACZ,QAAQ,GAAkB,EAAE,CAAC;IAErC,GAAG,CAAC,OAAoB;QACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,OAAe;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ;aACjB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;aAC5B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM;QACJ,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,SAAS,CAAC,OAAe,EAAE,cAAoB;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QACpE,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;YAC7B,UAAU,CAAC,cAAc,GAAG,cAAc,CAAC;QAC7C,CAAC;IACH,CAAC;CACF;AAED,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAEhD,MAAM,UAAU,mBAAmB;IACjC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,aAAmB,EACnB,iBAAyB,EACzB,WAAoB;IAEpB,MAAM,WAAW,GAAgB;QAC/B,OAAO;QACP,aAAa;QACb,iBAAiB;QACjB,UAAU,EAAE,KAAK;QACjB,WAAW;KACZ,CAAC;IAEF,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAClC,OAAO,WAAW,CAAC;AACrB,CAAC"} \ No newline at end of file diff --git a/packages/iso20022/src/exporter.d.ts b/packages/iso20022/src/exporter.d.ts deleted file mode 100644 index 559ad7c..0000000 --- a/packages/iso20022/src/exporter.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { ISO20022Message } from '@brazil-swift-ops/types'; -export declare function exportToJSON(message: ISO20022Message): string; -export declare function exportToXML(message: ISO20022Message): string; -export declare function exportMessage(message: ISO20022Message, format?: 'json' | 'xml'): string; -//# sourceMappingURL=exporter.d.ts.map \ No newline at end of file diff --git a/packages/iso20022/src/exporter.d.ts.map b/packages/iso20022/src/exporter.d.ts.map deleted file mode 100644 index 7488e9a..0000000 --- a/packages/iso20022/src/exporter.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["exporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAE7D;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAa5D;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,eAAe,EACxB,MAAM,GAAE,MAAM,GAAG,KAAc,GAC9B,MAAM,CASR"} \ No newline at end of file diff --git a/packages/iso20022/src/exporter.js b/packages/iso20022/src/exporter.js deleted file mode 100644 index 2c58867..0000000 --- a/packages/iso20022/src/exporter.js +++ /dev/null @@ -1,28 +0,0 @@ -export function exportToJSON(message) { - return JSON.stringify(message, null, 2); -} -export function exportToXML(message) { - // Simplified XML export - in production would use proper XML serialization - const xml = ` - - <${message.messageType}> - - ${message.groupHeader.messageIdentification} - ${message.groupHeader.creationDateTime.toISOString()} - ${message.groupHeader.numberOfTransactions} - - -`; - return xml; -} -export function exportMessage(message, format = 'json') { - switch (format) { - case 'json': - return exportToJSON(message); - case 'xml': - return exportToXML(message); - default: - throw new Error(`Unsupported export format: ${format}`); - } -} -//# sourceMappingURL=exporter.js.map \ No newline at end of file diff --git a/packages/iso20022/src/exporter.js.map b/packages/iso20022/src/exporter.js.map deleted file mode 100644 index 3a9fed2..0000000 --- a/packages/iso20022/src/exporter.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"exporter.js","sourceRoot":"","sources":["exporter.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,YAAY,CAAC,OAAwB;IACnD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAwB;IAClD,2EAA2E;IAC3E,MAAM,GAAG,GAAG;kDACoC,OAAO,CAAC,WAAW;KAChE,OAAO,CAAC,WAAW;;eAET,OAAO,CAAC,WAAW,CAAC,qBAAqB;iBACvC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE;iBAClD,OAAO,CAAC,WAAW,CAAC,oBAAoB;;MAEnD,OAAO,CAAC,WAAW;YACb,CAAC;IACX,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,OAAwB,EACxB,SAAyB,MAAM;IAE/B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/B,KAAK,KAAK;YACR,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9B;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"} \ No newline at end of file diff --git a/packages/iso20022/src/index.d.ts b/packages/iso20022/src/index.d.ts deleted file mode 100644 index 9b0fdda..0000000 --- a/packages/iso20022/src/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from './pacs008'; -export * from './pacs009'; -export * from './pain001'; -export * from './mt-mapper'; -export * from './exporter'; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/iso20022/src/index.d.ts.map b/packages/iso20022/src/index.d.ts.map deleted file mode 100644 index 5653a82..0000000 --- a/packages/iso20022/src/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"} \ No newline at end of file diff --git a/packages/iso20022/src/index.js b/packages/iso20022/src/index.js deleted file mode 100644 index 96f2b68..0000000 --- a/packages/iso20022/src/index.js +++ /dev/null @@ -1,6 +0,0 @@ -export * from './pacs008'; -export * from './pacs009'; -export * from './pain001'; -export * from './mt-mapper'; -export * from './exporter'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/iso20022/src/index.js.map b/packages/iso20022/src/index.js.map deleted file mode 100644 index 323f439..0000000 --- a/packages/iso20022/src/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"} \ No newline at end of file diff --git a/packages/iso20022/src/mt-mapper.d.ts b/packages/iso20022/src/mt-mapper.d.ts deleted file mode 100644 index f56740b..0000000 --- a/packages/iso20022/src/mt-mapper.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { Transaction, ISO20022Message } from '@brazil-swift-ops/types'; -export interface MT103Message { - field20: string; - field23B: string; - field32A: string; - field50A?: string; - field52A?: string; - field53A?: string; - field54A?: string; - field56A?: string; - field57A?: string; - field59: string; - field70: string; - field71A: string; - field72: string; -} -export declare function mapMT103ToTransaction(mt103: MT103Message): Transaction; -export declare function mapTransactionToMT103(transaction: Transaction): MT103Message; -export declare function convertMT103ToISO20022(mt103: MT103Message, targetType?: 'pacs.008' | 'pacs.009' | 'pain.001', version?: string): ISO20022Message; -export declare function convertISO20022ToMT103(message: ISO20022Message): MT103Message; -//# sourceMappingURL=mt-mapper.d.ts.map \ No newline at end of file diff --git a/packages/iso20022/src/mt-mapper.d.ts.map b/packages/iso20022/src/mt-mapper.d.ts.map deleted file mode 100644 index 7ad1b49..0000000 --- a/packages/iso20022/src/mt-mapper.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mt-mapper.d.ts","sourceRoot":"","sources":["mt-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK5E,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,CAuBtE;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,YAAY,CAc5E;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,YAAY,EACnB,UAAU,GAAE,UAAU,GAAG,UAAU,GAAG,UAAuB,EAC7D,OAAO,CAAC,EAAE,MAAM,GACf,eAAe,CAWjB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,YAAY,CAqB7E"} \ No newline at end of file diff --git a/packages/iso20022/src/mt-mapper.js b/packages/iso20022/src/mt-mapper.js deleted file mode 100644 index e6b311d..0000000 --- a/packages/iso20022/src/mt-mapper.js +++ /dev/null @@ -1,73 +0,0 @@ -import { createPacs008Message } from './pacs008'; -import { createPacs009Message } from './pacs009'; -import { createPain001Message } from './pain001'; -export function mapMT103ToTransaction(mt103) { - const [valueDate, currency, amountStr] = mt103.field32A.split(/(\d{6})([A-Z]{3})([\d,]+)/).filter(Boolean); - const amount = parseFloat(amountStr.replace(',', '.')); - return { - id: mt103.field20, - direction: 'outbound', - amount, - currency: currency || 'USD', - orderingCustomer: { - name: mt103.field50A || '', - country: 'BR', - }, - beneficiary: { - name: mt103.field59, - country: 'BR', - }, - purposeOfPayment: mt103.field70, - swiftReference: mt103.field20, - status: 'pending', - createdAt: new Date(), - updatedAt: new Date(), - }; -} -export function mapTransactionToMT103(transaction) { - const valueDate = new Date().toISOString().slice(0, 10).replace(/-/g, ''); - const amountStr = transaction.amount.toFixed(2).replace('.', ','); - return { - field20: transaction.swiftReference || transaction.id, - field23B: 'CRED', - field32A: `${valueDate}${transaction.currency}${amountStr}`, - field50A: transaction.orderingCustomer.name, - field59: transaction.beneficiary.name, - field70: transaction.purposeOfPayment || '', - field71A: 'OUR', - field72: `//${transaction.fxContractId || ''}`, - }; -} -export function convertMT103ToISO20022(mt103, targetType = 'pacs.008', version) { - const transaction = mapMT103ToTransaction(mt103); - switch (targetType) { - case 'pacs.008': - return createPacs008Message(transaction, version); - case 'pacs.009': - return createPacs009Message(transaction, version); - case 'pain.001': - return createPain001Message(transaction, version); - } -} -export function convertISO20022ToMT103(message) { - // This is a simplified conversion - in production would need full mapping - const transaction = { - id: message.groupHeader.messageIdentification, - direction: 'outbound', - amount: message.groupHeader.controlSum || 0, - currency: 'USD', - orderingCustomer: { - name: message.groupHeader.initiatingParty.name || '', - country: 'BR', - }, - beneficiary: { - name: '', - country: 'BR', - }, - status: 'pending', - createdAt: message.creationDateTime, - updatedAt: new Date(), - }; - return mapTransactionToMT103(transaction); -} -//# sourceMappingURL=mt-mapper.js.map \ No newline at end of file diff --git a/packages/iso20022/src/mt-mapper.js.map b/packages/iso20022/src/mt-mapper.js.map deleted file mode 100644 index 21690d0..0000000 --- a/packages/iso20022/src/mt-mapper.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mt-mapper.js","sourceRoot":"","sources":["mt-mapper.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/risk-models/src/capital.d.ts b/packages/risk-models/src/capital.d.ts deleted file mode 100644 index 78b95e0..0000000 --- a/packages/risk-models/src/capital.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { Transaction, CapitalImpact, RiskWeight } from '@brazil-swift-ops/types'; -export interface CapitalConfig { - capitalRatio: number; - capitalBuffer: number; - riskWeights: RiskWeight[]; -} -export declare function getRiskWeight(transaction: Transaction, riskWeights: RiskWeight[]): number; -export declare function calculateCapitalImpact(transaction: Transaction, config: CapitalConfig): CapitalImpact; -//# sourceMappingURL=capital.d.ts.map \ No newline at end of file diff --git a/packages/risk-models/src/capital.d.ts.map b/packages/risk-models/src/capital.d.ts.map deleted file mode 100644 index dc3cf2e..0000000 --- a/packages/risk-models/src/capital.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"capital.d.ts","sourceRoot":"","sources":["capital.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEtF,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAGzF;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,GAAG,aAAa,CA2BrG"} \ No newline at end of file diff --git a/packages/risk-models/src/capital.js b/packages/risk-models/src/capital.js deleted file mode 100644 index 4685f06..0000000 --- a/packages/risk-models/src/capital.js +++ /dev/null @@ -1,33 +0,0 @@ -import Decimal from 'decimal.js'; -export function getRiskWeight(transaction, riskWeights) { - const paymentWeight = riskWeights.find((w) => w.category === 'payment'); - return paymentWeight?.weight ?? 0.1; -} -export function calculateCapitalImpact(transaction, config) { - const riskWeight = getRiskWeight(transaction, config.riskWeights); - const transactionDecimal = new Decimal(transaction.amount); - const weightDecimal = new Decimal(riskWeight); - const rwaDecimal = transactionDecimal.mul(weightDecimal); - const riskWeightedAssets = rwaDecimal.toNumber(); - const ratioDecimal = new Decimal(config.capitalRatio); - const capitalConsumedDecimal = rwaDecimal.mul(ratioDecimal); - const capitalConsumed = capitalConsumedDecimal.toNumber(); - const capitalBufferAfter = config.capitalBuffer - capitalConsumed; - const complianceCheck = capitalBufferAfter >= 0; - return { - transactionId: transaction.id, - transactionAmount: transaction.amount, - currency: transaction.currency, - riskWeight, - riskWeightedAssets, - capitalRatio: config.capitalRatio, - capitalConsumed, - capitalBufferBefore: config.capitalBuffer, - capitalBufferAfter, - complianceCheck, - rationale: complianceCheck - ? `Capital consumed: ${capitalConsumed.toFixed(2)}. Capital buffer after transaction: ${capitalBufferAfter.toFixed(2)} (above minimum).` - : `Capital consumed: ${capitalConsumed.toFixed(2)}. Capital buffer after transaction: ${capitalBufferAfter.toFixed(2)} (below minimum). Transaction may be blocked.`, - }; -} -//# sourceMappingURL=capital.js.map \ No newline at end of file diff --git a/packages/risk-models/src/capital.js.map b/packages/risk-models/src/capital.js.map deleted file mode 100644 index a92caf5..0000000 --- a/packages/risk-models/src/capital.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"capital.js","sourceRoot":"","sources":["capital.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AASjC,MAAM,UAAU,aAAa,CAAC,WAAwB,EAAE,WAAyB;IAC/E,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;IACxE,OAAO,aAAa,EAAE,MAAM,IAAI,GAAG,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,WAAwB,EAAE,MAAqB;IACpF,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAClE,MAAM,kBAAkB,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACzD,MAAM,kBAAkB,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,sBAAsB,GAAG,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,sBAAsB,CAAC,QAAQ,EAAE,CAAC;IAC1D,MAAM,kBAAkB,GAAG,MAAM,CAAC,aAAa,GAAG,eAAe,CAAC;IAClE,MAAM,eAAe,GAAG,kBAAkB,IAAI,CAAC,CAAC;IAEhD,OAAO;QACL,aAAa,EAAE,WAAW,CAAC,EAAE;QAC7B,iBAAiB,EAAE,WAAW,CAAC,MAAM;QACrC,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,UAAU;QACV,kBAAkB;QAClB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,eAAe;QACf,mBAAmB,EAAE,MAAM,CAAC,aAAa;QACzC,kBAAkB;QAClB,eAAe;QACf,SAAS,EAAE,eAAe;YACxB,CAAC,CAAC,qBAAqB,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,uCAAuC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB;YACxI,CAAC,CAAC,qBAAqB,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,uCAAuC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,+CAA+C;KACvK,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/packages/risk-models/src/escalation.d.ts b/packages/risk-models/src/escalation.d.ts deleted file mode 100644 index 4dc409e..0000000 --- a/packages/risk-models/src/escalation.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { EscalationState, EscalationLevel, RuleDecision } from '@brazil-swift-ops/types'; -export declare function determineEscalationLevel(decision: RuleDecision, hasLiquidityIssue: boolean, hasCapitalIssue: boolean, hasLCRIssue: boolean): EscalationLevel; -export declare function createEscalationState(transactionId: string, level: EscalationLevel, reason: string): EscalationState; -export declare function escalate(currentState: EscalationState, newLevel: EscalationLevel, reason: string): EscalationState; -export declare function approveEscalation(state: EscalationState, approvedBy: string): EscalationState; -//# sourceMappingURL=escalation.d.ts.map \ No newline at end of file diff --git a/packages/risk-models/src/escalation.d.ts.map b/packages/risk-models/src/escalation.d.ts.map deleted file mode 100644 index 41efa9f..0000000 --- a/packages/risk-models/src/escalation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"escalation.d.ts","sourceRoot":"","sources":["escalation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,YAAY,EACb,MAAM,yBAAyB,CAAC;AAEjC,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,YAAY,EACtB,iBAAiB,EAAE,OAAO,EAC1B,eAAe,EAAE,OAAO,EACxB,WAAW,EAAE,OAAO,GACnB,eAAe,CAcjB;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,MAAM,GACb,eAAe,CAQjB;AAED,wBAAgB,QAAQ,CACtB,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,MAAM,GACb,eAAe,CAQjB;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,MAAM,GACjB,eAAe,CAOjB"} \ No newline at end of file diff --git a/packages/risk-models/src/escalation.js b/packages/risk-models/src/escalation.js deleted file mode 100644 index 9291c76..0000000 --- a/packages/risk-models/src/escalation.js +++ /dev/null @@ -1,39 +0,0 @@ -export function determineEscalationLevel(decision, hasLiquidityIssue, hasCapitalIssue, hasLCRIssue) { - if (decision === 'Allow') { - return 'Allow'; - } - if (hasLiquidityIssue || hasCapitalIssue || hasLCRIssue) { - return 'TreasuryApproval'; - } - if (decision === 'Escalate') { - return 'ComplianceReview'; - } - return 'Hold'; -} -export function createEscalationState(transactionId, level, reason) { - return { - transactionId, - currentLevel: level, - reason, - escalatedAt: new Date(), - approvalRequired: level !== 'Allow', - }; -} -export function escalate(currentState, newLevel, reason) { - return { - ...currentState, - previousLevel: currentState.currentLevel, - currentLevel: newLevel, - reason, - escalatedAt: new Date(), - }; -} -export function approveEscalation(state, approvedBy) { - return { - ...state, - approvalRequired: false, - approvedBy, - approvedAt: new Date(), - }; -} -//# sourceMappingURL=escalation.js.map \ No newline at end of file diff --git a/packages/risk-models/src/escalation.js.map b/packages/risk-models/src/escalation.js.map deleted file mode 100644 index 7502e4f..0000000 --- a/packages/risk-models/src/escalation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"escalation.js","sourceRoot":"","sources":["escalation.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,wBAAwB,CACtC,QAAsB,EACtB,iBAA0B,EAC1B,eAAwB,EACxB,WAAoB;IAEpB,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,iBAAiB,IAAI,eAAe,IAAI,WAAW,EAAE,CAAC;QACxD,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC5B,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,aAAqB,EACrB,KAAsB,EACtB,MAAc;IAEd,OAAO;QACL,aAAa;QACb,YAAY,EAAE,KAAK;QACnB,MAAM;QACN,WAAW,EAAE,IAAI,IAAI,EAAE;QACvB,gBAAgB,EAAE,KAAK,KAAK,OAAO;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,YAA6B,EAC7B,QAAyB,EACzB,MAAc;IAEd,OAAO;QACL,GAAG,YAAY;QACf,aAAa,EAAE,YAAY,CAAC,YAAY;QACxC,YAAY,EAAE,QAAQ;QACtB,MAAM;QACN,WAAW,EAAE,IAAI,IAAI,EAAE;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAAsB,EACtB,UAAkB;IAElB,OAAO;QACL,GAAG,KAAK;QACR,gBAAgB,EAAE,KAAK;QACvB,UAAU;QACV,UAAU,EAAE,IAAI,IAAI,EAAE;KACvB,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/packages/risk-models/src/index.d.ts b/packages/risk-models/src/index.d.ts deleted file mode 100644 index d2aaf27..0000000 --- a/packages/risk-models/src/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from './reserves'; -export * from './capital'; -export * from './lcr'; -export * from './escalation'; -export * from './risk-weights'; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/risk-models/src/index.d.ts.map b/packages/risk-models/src/index.d.ts.map deleted file mode 100644 index 661c22d..0000000 --- a/packages/risk-models/src/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"} \ No newline at end of file diff --git a/packages/risk-models/src/index.js b/packages/risk-models/src/index.js deleted file mode 100644 index 4aa53e6..0000000 --- a/packages/risk-models/src/index.js +++ /dev/null @@ -1,6 +0,0 @@ -export * from './reserves'; -export * from './capital'; -export * from './lcr'; -export * from './escalation'; -export * from './risk-weights'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/risk-models/src/index.js.map b/packages/risk-models/src/index.js.map deleted file mode 100644 index 91c0a40..0000000 --- a/packages/risk-models/src/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"} \ No newline at end of file diff --git a/packages/risk-models/src/lcr.d.ts b/packages/risk-models/src/lcr.d.ts deleted file mode 100644 index c733d67..0000000 --- a/packages/risk-models/src/lcr.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { Transaction, LCRImpact } from '@brazil-swift-ops/types'; -export interface LCRConfig { - hqla: number; - netOutflows: number; - minimumLCR: number; - runoffFactor: number; -} -export declare function calculateLCRImpact(transaction: Transaction, config: LCRConfig): LCRImpact; -//# sourceMappingURL=lcr.d.ts.map \ No newline at end of file diff --git a/packages/risk-models/src/lcr.d.ts.map b/packages/risk-models/src/lcr.d.ts.map deleted file mode 100644 index 683387c..0000000 --- a/packages/risk-models/src/lcr.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lcr.d.ts","sourceRoot":"","sources":["lcr.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGtE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,CAgCzF"} \ No newline at end of file diff --git a/packages/risk-models/src/lcr.js b/packages/risk-models/src/lcr.js deleted file mode 100644 index e816be9..0000000 --- a/packages/risk-models/src/lcr.js +++ /dev/null @@ -1,35 +0,0 @@ -import Decimal from 'decimal.js'; -import { getDefaultConverter } from '@brazil-swift-ops/utils'; -export function calculateLCRImpact(transaction, config) { - const converter = getDefaultConverter(); - const brlAmount = converter.convert(transaction.amount, transaction.currency, 'BRL'); - const transactionDecimal = new Decimal(brlAmount); - const runoffDecimal = new Decimal(config.runoffFactor); - const outflowStressDecimal = transactionDecimal.mul(runoffDecimal); - const outflowStress = outflowStressDecimal.toNumber(); - const netOutflowsAfter = config.netOutflows + outflowStress; - const hqlaDecimal = new Decimal(config.hqla); - const outflowsBeforeDecimal = new Decimal(config.netOutflows); - const outflowsAfterDecimal = new Decimal(netOutflowsAfter); - const lcrBefore = outflowsBeforeDecimal.gt(0) ? hqlaDecimal.div(outflowsBeforeDecimal).toNumber() : Infinity; - const lcrAfter = outflowsAfterDecimal.gt(0) ? hqlaDecimal.div(outflowsAfterDecimal).toNumber() : Infinity; - const complianceCheck = lcrAfter >= config.minimumLCR; - return { - transactionId: transaction.id, - transactionAmount: transaction.amount, - currency: transaction.currency, - runoffFactor: config.runoffFactor, - outflowStress, - hqlaBefore: config.hqla, - netOutflowsBefore: config.netOutflows, - netOutflowsAfter, - lcrBefore, - lcrAfter, - minimumLCR: config.minimumLCR, - complianceCheck, - rationale: complianceCheck - ? `LCR after transaction: ${(lcrAfter * 100).toFixed(2)}% (above minimum ${(config.minimumLCR * 100).toFixed(2)}%).` - : `LCR after transaction: ${(lcrAfter * 100).toFixed(2)}% (below minimum ${(config.minimumLCR * 100).toFixed(2)}%). Transaction may be blocked.`, - }; -} -//# sourceMappingURL=lcr.js.map \ No newline at end of file diff --git a/packages/risk-models/src/lcr.js.map b/packages/risk-models/src/lcr.js.map deleted file mode 100644 index 643aa16..0000000 --- a/packages/risk-models/src/lcr.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lcr.js","sourceRoot":"","sources":["lcr.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAS9D,MAAM,UAAU,kBAAkB,CAAC,WAAwB,EAAE,MAAiB;IAC5E,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACrF,MAAM,kBAAkB,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACvD,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,oBAAoB,CAAC,QAAQ,EAAE,CAAC;IACtD,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC;IAC5D,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,qBAAqB,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,oBAAoB,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7G,MAAM,QAAQ,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1G,MAAM,eAAe,GAAG,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC;IAEtD,OAAO;QACL,aAAa,EAAE,WAAW,CAAC,EAAE;QAC7B,iBAAiB,EAAE,WAAW,CAAC,MAAM;QACrC,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,aAAa;QACb,UAAU,EAAE,MAAM,CAAC,IAAI;QACvB,iBAAiB,EAAE,MAAM,CAAC,WAAW;QACrC,gBAAgB;QAChB,SAAS;QACT,QAAQ;QACR,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,eAAe;QACf,SAAS,EAAE,eAAe;YACxB,CAAC,CAAC,0BAA0B,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;YACpH,CAAC,CAAC,0BAA0B,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iCAAiC;KACnJ,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/packages/risk-models/src/reserves.d.ts b/packages/risk-models/src/reserves.d.ts deleted file mode 100644 index 32a5abb..0000000 --- a/packages/risk-models/src/reserves.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { Transaction, ReserveImpact } from '@brazil-swift-ops/types'; -export interface ReserveConfig { - reserveRatio: number; - availableLiquidity: number; - requiredReserves: number; -} -export declare function calculateReserveImpact(transaction: Transaction, config: ReserveConfig): ReserveImpact; -//# sourceMappingURL=reserves.d.ts.map \ No newline at end of file diff --git a/packages/risk-models/src/reserves.d.ts.map b/packages/risk-models/src/reserves.d.ts.map deleted file mode 100644 index 3491ed7..0000000 --- a/packages/risk-models/src/reserves.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"reserves.d.ts","sourceRoot":"","sources":["reserves.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG1E,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,GAAG,aAAa,CAwBrG"} \ No newline at end of file diff --git a/packages/risk-models/src/reserves.js b/packages/risk-models/src/reserves.js deleted file mode 100644 index c449cb2..0000000 --- a/packages/risk-models/src/reserves.js +++ /dev/null @@ -1,27 +0,0 @@ -import Decimal from 'decimal.js'; -import { getDefaultConverter } from '@brazil-swift-ops/utils'; -export function calculateReserveImpact(transaction, config) { - const converter = getDefaultConverter(); - const brlAmount = converter.convert(transaction.amount, transaction.currency, 'BRL'); - const transactionDecimal = new Decimal(brlAmount); - const ratioDecimal = new Decimal(config.reserveRatio); - const reserveImpactDecimal = transactionDecimal.mul(ratioDecimal); - const reserveImpact = reserveImpactDecimal.toNumber(); - const availableLiquidityAfter = config.availableLiquidity - brlAmount; - const complianceCheck = availableLiquidityAfter >= config.requiredReserves; - return { - transactionId: transaction.id, - transactionAmount: transaction.amount, - currency: transaction.currency, - reserveRatio: config.reserveRatio, - reserveImpact, - availableLiquidityBefore: config.availableLiquidity, - availableLiquidityAfter, - requiredReserves: config.requiredReserves, - complianceCheck, - rationale: complianceCheck - ? `Reserve impact: ${reserveImpact.toFixed(2)} BRL. Available liquidity after transaction: ${availableLiquidityAfter.toFixed(2)} BRL (above required ${config.requiredReserves.toFixed(2)} BRL).` - : `Reserve impact: ${reserveImpact.toFixed(2)} BRL. Available liquidity after transaction: ${availableLiquidityAfter.toFixed(2)} BRL (below required ${config.requiredReserves.toFixed(2)} BRL). Transaction may be blocked.`, - }; -} -//# sourceMappingURL=reserves.js.map \ No newline at end of file diff --git a/packages/risk-models/src/reserves.js.map b/packages/risk-models/src/reserves.js.map deleted file mode 100644 index f413ec1..0000000 --- a/packages/risk-models/src/reserves.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"reserves.js","sourceRoot":"","sources":["reserves.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAQ9D,MAAM,UAAU,sBAAsB,CAAC,WAAwB,EAAE,MAAqB;IACpF,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACrF,MAAM,kBAAkB,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,oBAAoB,CAAC,QAAQ,EAAE,CAAC;IACtD,MAAM,uBAAuB,GAAG,MAAM,CAAC,kBAAkB,GAAG,SAAS,CAAC;IACtE,MAAM,eAAe,GAAG,uBAAuB,IAAI,MAAM,CAAC,gBAAgB,CAAC;IAE3E,OAAO;QACL,aAAa,EAAE,WAAW,CAAC,EAAE;QAC7B,iBAAiB,EAAE,WAAW,CAAC,MAAM;QACrC,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,aAAa;QACb,wBAAwB,EAAE,MAAM,CAAC,kBAAkB;QACnD,uBAAuB;QACvB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,eAAe;QACf,SAAS,EAAE,eAAe;YACxB,CAAC,CAAC,mBAAmB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,gDAAgD,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;YACjM,CAAC,CAAC,mBAAmB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,gDAAgD,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,oCAAoC;KAChO,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/packages/risk-models/src/risk-weights.d.ts b/packages/risk-models/src/risk-weights.d.ts deleted file mode 100644 index e30c1fa..0000000 --- a/packages/risk-models/src/risk-weights.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import type { RiskWeight, RiskWeightTable } from '@brazil-swift-ops/types'; -export declare const DEFAULT_RISK_WEIGHTS: RiskWeight[]; -export declare function createRiskWeightTable(version?: string, effectiveDate?: Date): RiskWeightTable; -//# sourceMappingURL=risk-weights.d.ts.map \ No newline at end of file diff --git a/packages/risk-models/src/risk-weights.d.ts.map b/packages/risk-models/src/risk-weights.d.ts.map deleted file mode 100644 index 1286a8e..0000000 --- a/packages/risk-models/src/risk-weights.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"risk-weights.d.ts","sourceRoot":"","sources":["risk-weights.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE3E,eAAO,MAAM,oBAAoB,EAAE,UAAU,EAsB5C,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,MAAgB,EACzB,aAAa,GAAE,IAAiB,GAC/B,eAAe,CAOjB"} \ No newline at end of file diff --git a/packages/risk-models/src/risk-weights.js b/packages/risk-models/src/risk-weights.js deleted file mode 100644 index 28e3e21..0000000 --- a/packages/risk-models/src/risk-weights.js +++ /dev/null @@ -1,32 +0,0 @@ -export const DEFAULT_RISK_WEIGHTS = [ - { - category: 'payment', - description: 'Payment transactions', - weight: 0.1, // 10% - minWeight: 0.0, - maxWeight: 0.2, - }, - { - category: 'fx_settlement', - description: 'FX settlement transactions', - weight: 0.35, // 35% - minWeight: 0.2, - maxWeight: 0.5, - }, - { - category: 'nostro_exposure', - description: 'Nostro account exposure', - weight: 1.0, // 100% - minWeight: 0.5, - maxWeight: 1.0, - }, -]; -export function createRiskWeightTable(version = '1.0.0', effectiveDate = new Date()) { - return { - id: `RWT-${version}`, - version, - effectiveDate, - weights: DEFAULT_RISK_WEIGHTS, - }; -} -//# sourceMappingURL=risk-weights.js.map \ No newline at end of file diff --git a/packages/risk-models/src/risk-weights.js.map b/packages/risk-models/src/risk-weights.js.map deleted file mode 100644 index 5d6575d..0000000 --- a/packages/risk-models/src/risk-weights.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"risk-weights.js","sourceRoot":"","sources":["risk-weights.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAiB;IAChD;QACE,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,sBAAsB;QACnC,MAAM,EAAE,GAAG,EAAE,MAAM;QACnB,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;KACf;IACD;QACE,QAAQ,EAAE,eAAe;QACzB,WAAW,EAAE,4BAA4B;QACzC,MAAM,EAAE,IAAI,EAAE,MAAM;QACpB,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;KACf;IACD;QACE,QAAQ,EAAE,iBAAiB;QAC3B,WAAW,EAAE,yBAAyB;QACtC,MAAM,EAAE,GAAG,EAAE,OAAO;QACpB,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;KACf;CACF,CAAC;AAEF,MAAM,UAAU,qBAAqB,CACnC,UAAkB,OAAO,EACzB,gBAAsB,IAAI,IAAI,EAAE;IAEhC,OAAO;QACL,EAAE,EAAE,OAAO,OAAO,EAAE;QACpB,OAAO;QACP,aAAa;QACb,OAAO,EAAE,oBAAoB;KAC9B,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/packages/rules-engine/src/aml.d.ts b/packages/rules-engine/src/aml.d.ts deleted file mode 100644 index 833d869..0000000 --- a/packages/rules-engine/src/aml.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * AML (Anti-Money Laundering) and anti-structuring detection - */ -import type { Transaction, AMLCheckResult, SingleTransactionAMLResult, StructuringCheckResult, RuleResult } from '@brazil-swift-ops/types'; -/** - * Transaction history for structuring detection (in production, this would be a database) - */ -interface TransactionHistory { - transactionId: string; - amount: number; - currency: string; - usdEquivalent: number; - date: Date; - orderingCustomerTaxId?: string; - beneficiaryTaxId?: string; -} -declare class TransactionHistoryStore { - private history; - add(entry: TransactionHistory): void; - getByDateRange(startDate: Date, endDate: Date): TransactionHistory[]; - getByCustomer(taxId: string, startDate: Date, endDate: Date): TransactionHistory[]; - getAll(): TransactionHistory[]; -} -export declare function getHistoryStore(): TransactionHistoryStore; -/** - * Check single transaction AML threshold - */ -export declare function checkSingleTransactionAML(transaction: Transaction): SingleTransactionAMLResult; -/** - * Check for structuring patterns (multiple small transactions that sum above threshold) - */ -export declare function checkStructuring(transaction: Transaction, historicalTransactions?: TransactionHistory[]): StructuringCheckResult | undefined; -/** - * Perform complete AML check - */ -export declare function performAMLCheck(transaction: Transaction, historicalTransactions?: TransactionHistory[]): AMLCheckResult; -/** - * Create rule result for AML check - */ -export declare function createAMLRuleResult(check: AMLCheckResult): RuleResult; -export {}; -//# sourceMappingURL=aml.d.ts.map \ No newline at end of file diff --git a/packages/rules-engine/src/aml.d.ts.map b/packages/rules-engine/src/aml.d.ts.map deleted file mode 100644 index a990341..0000000 --- a/packages/rules-engine/src/aml.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aml.d.ts","sourceRoot":"","sources":["aml.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,0BAA0B,EAC1B,sBAAsB,EACtB,UAAU,EAGX,MAAM,yBAAyB,CAAC;AAKjC;;GAEG;AACH,UAAU,kBAAkB;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,cAAM,uBAAuB;IAC3B,OAAO,CAAC,OAAO,CAA4B;IAE3C,GAAG,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAIpC,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,kBAAkB,EAAE;IAMpE,aAAa,CACX,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,IAAI,GACZ,kBAAkB,EAAE;IAUvB,MAAM,IAAI,kBAAkB,EAAE;CAG/B;AAID,wBAAgB,eAAe,IAAI,uBAAuB,CAEzD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,WAAW,GACvB,0BAA0B,CA6B5B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,WAAW,EACxB,sBAAsB,CAAC,EAAE,kBAAkB,EAAE,GAC5C,sBAAsB,GAAG,SAAS,CAiEpC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,WAAW,EACxB,sBAAsB,CAAC,EAAE,kBAAkB,EAAE,GAC5C,cAAc,CAyBhB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,UAAU,CAsBrE"} \ No newline at end of file diff --git a/packages/rules-engine/src/aml.js b/packages/rules-engine/src/aml.js deleted file mode 100644 index a5928f0..0000000 --- a/packages/rules-engine/src/aml.js +++ /dev/null @@ -1,152 +0,0 @@ -/** - * AML (Anti-Money Laundering) and anti-structuring detection - */ -import { getDefaultConverter } from '@brazil-swift-ops/utils'; -import { calculateRollingWindow, filterDatesInWindow } from '@brazil-swift-ops/utils'; -import { getConfig } from './config'; -class TransactionHistoryStore { - history = []; - add(entry) { - this.history.push(entry); - } - getByDateRange(startDate, endDate) { - return this.history.filter((entry) => entry.date >= startDate && entry.date <= endDate); - } - getByCustomer(taxId, startDate, endDate) { - return this.history.filter((entry) => (entry.orderingCustomerTaxId === taxId || - entry.beneficiaryTaxId === taxId) && - entry.date >= startDate && - entry.date <= endDate); - } - getAll() { - return [...this.history]; - } -} -const historyStore = new TransactionHistoryStore(); -export function getHistoryStore() { - return historyStore; -} -/** - * Check single transaction AML threshold - */ -export function checkSingleTransactionAML(transaction) { - const config = getConfig(); - const converter = getDefaultConverter(); - const usdEquivalent = converter.getUSDEquivalent(transaction.amount, transaction.currency); - const threshold = config.aml.singleTransactionThreshold; - const requiresEnhancedReview = usdEquivalent >= threshold; - let riskLevel; - if (usdEquivalent >= threshold) { - riskLevel = 'High'; - } - else if (usdEquivalent >= threshold * 0.5) { - riskLevel = 'Medium'; - } - else { - riskLevel = 'Low'; - } - return { - passed: true, // AML check doesn't fail, it flags for review - transactionAmount: transaction.amount, - usdEquivalent, - threshold, - requiresEnhancedReview, - riskLevel, - }; -} -/** - * Check for structuring patterns (multiple small transactions that sum above threshold) - */ -export function checkStructuring(transaction, historicalTransactions) { - const config = getConfig(); - const converter = getDefaultConverter(); - // Calculate rolling window - const window = calculateRollingWindow(transaction.createdAt || new Date(), config.aml.structuringWindowDays); - // Get historical transactions if not provided - if (!historicalTransactions) { - const customerTaxId = transaction.orderingCustomerTaxId || transaction.beneficiary?.taxId; - if (customerTaxId) { - historicalTransactions = historyStore.getByCustomer(customerTaxId, window.startDate, window.endDate); - } - else { - historicalTransactions = historyStore.getByDateRange(window.startDate, window.endDate); - } - } - // Filter to transactions in window - const windowTransactions = historicalTransactions.filter((t) => filterDatesInWindow([t.date], window).length > 0); - // Calculate totals - const totalAmount = windowTransactions.reduce((sum, t) => sum + t.amount, transaction.amount); - const totalUsdEquivalent = windowTransactions.reduce((sum, t) => sum + t.usdEquivalent, converter.getUSDEquivalent(transaction.amount, transaction.currency)); - const individualAmounts = [ - ...windowTransactions.map((t) => t.usdEquivalent), - converter.getUSDEquivalent(transaction.amount, transaction.currency), - ]; - // Check if structuring detected - const threshold = config.aml.structuringThreshold; - const detected = totalUsdEquivalent >= threshold && - individualAmounts.every((amt) => amt < threshold); - return { - detected, - windowDays: window.days, - transactionCount: windowTransactions.length + 1, - totalAmount, - totalUsdEquivalent, - individualAmounts, - rationale: detected - ? `Structuring detected: ${windowTransactions.length + 1} transactions totaling ${totalUsdEquivalent.toFixed(2)} USD over ${window.days} days, each below ${threshold} USD threshold.` - : `No structuring pattern detected. Total: ${totalUsdEquivalent.toFixed(2)} USD over ${window.days} days.`, - }; -} -/** - * Perform complete AML check - */ -export function performAMLCheck(transaction, historicalTransactions) { - const singleCheck = checkSingleTransactionAML(transaction); - const structuringCheck = checkStructuring(transaction, historicalTransactions); - // Determine overall risk level - let overallRiskLevel; - if (singleCheck.riskLevel === 'High' || structuringCheck?.detected) { - overallRiskLevel = 'High'; - } - else if (singleCheck.riskLevel === 'Medium') { - overallRiskLevel = 'Medium'; - } - else { - overallRiskLevel = 'Low'; - } - const passed = overallRiskLevel !== 'High'; - return { - passed, - singleTransactionCheck: singleCheck, - structuringCheck, - overallRiskLevel, - rationale: passed - ? `AML check passed. Risk level: ${overallRiskLevel}.` - : `AML check flagged for review. Risk level: ${overallRiskLevel}. ${structuringCheck?.detected ? 'Structuring pattern detected.' : ''}`, - }; -} -/** - * Create rule result for AML check - */ -export function createAMLRuleResult(check) { - const severity = check.overallRiskLevel === 'High' - ? 'Critical' - : check.overallRiskLevel === 'Medium' - ? 'Warning' - : 'Info'; - const decision = check.passed ? 'Allow' : 'Escalate'; - return { - ruleId: 'aml-check', - ruleName: 'AML & Anti-Structuring Check', - passed: check.passed, - severity, - decision, - rationale: check.rationale, - details: { - overallRiskLevel: check.overallRiskLevel, - singleTransactionCheck: check.singleTransactionCheck, - structuringCheck: check.structuringCheck, - }, - }; -} -//# sourceMappingURL=aml.js.map \ No newline at end of file diff --git a/packages/rules-engine/src/aml.js.map b/packages/rules-engine/src/aml.js.map deleted file mode 100644 index f6da2c3..0000000 --- a/packages/rules-engine/src/aml.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aml.js","sourceRoot":"","sources":["aml.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/rules-engine/src/fx-contract.d.ts b/packages/rules-engine/src/fx-contract.d.ts deleted file mode 100644 index 7a66fa4..0000000 --- a/packages/rules-engine/src/fx-contract.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { Transaction, FXContract, FXContractCheckResult, RuleResult } from '@brazil-swift-ops/types'; -declare class FXContractStore { - private contracts; - add(contract: FXContract): void; - get(contractId: string): FXContract | undefined; - getAll(): FXContract[]; - updateRemainingAmount(contractId: string, usedAmount: number): void; -} -export declare function getContractStore(): FXContractStore; -export declare function validateFXContract(transaction: Transaction, contract?: FXContract): FXContractCheckResult; -export declare function createFXContractRuleResult(check: FXContractCheckResult): RuleResult; -export {}; -//# sourceMappingURL=fx-contract.d.ts.map \ No newline at end of file diff --git a/packages/rules-engine/src/fx-contract.d.ts.map b/packages/rules-engine/src/fx-contract.d.ts.map deleted file mode 100644 index ec35ef0..0000000 --- a/packages/rules-engine/src/fx-contract.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fx-contract.d.ts","sourceRoot":"","sources":["fx-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,UAAU,EAGX,MAAM,yBAAyB,CAAC;AAGjC,cAAM,eAAe;IACnB,OAAO,CAAC,SAAS,CAAsC;IAEvD,GAAG,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;IAI/B,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI/C,MAAM,IAAI,UAAU,EAAE;IAItB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;CAWpE;AAID,wBAAgB,gBAAgB,IAAI,eAAe,CAElD;AAED,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,WAAW,EACxB,QAAQ,CAAC,EAAE,UAAU,GACpB,qBAAqB,CAmFvB;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,qBAAqB,GAC3B,UAAU,CAsBZ"} \ No newline at end of file diff --git a/packages/rules-engine/src/fx-contract.js b/packages/rules-engine/src/fx-contract.js deleted file mode 100644 index 9fa1d95..0000000 --- a/packages/rules-engine/src/fx-contract.js +++ /dev/null @@ -1,127 +0,0 @@ -import { isEffectiveDate } from '@brazil-swift-ops/utils'; -class FXContractStore { - contracts = new Map(); - add(contract) { - this.contracts.set(contract.contractId, contract); - } - get(contractId) { - return this.contracts.get(contractId); - } - getAll() { - return Array.from(this.contracts.values()); - } - updateRemainingAmount(contractId, usedAmount) { - const contract = this.contracts.get(contractId); - if (contract) { - contract.usedAmount += usedAmount; - contract.remainingAmount = contract.amount - contract.usedAmount; - contract.updatedAt = new Date(); - if (contract.remainingAmount <= 0) { - contract.status = 'exhausted'; - } - } - } -} -const contractStore = new FXContractStore(); -export function getContractStore() { - return contractStore; -} -export function validateFXContract(transaction, contract) { - if (!transaction.fxContractId) { - return { - passed: false, - contractExists: false, - contractType: undefined, - contractAmount: 0, - contractRemainingAmount: 0, - transactionAmount: transaction.amount, - amountWithinLimit: false, - rationale: 'FX contract ID is required for cross-border transactions.', - }; - } - if (!contract) { - contract = contractStore.get(transaction.fxContractId); - } - if (!contract) { - return { - passed: false, - fxContractId: transaction.fxContractId, - contractExists: false, - contractType: undefined, - contractAmount: 0, - contractRemainingAmount: 0, - transactionAmount: transaction.amount, - amountWithinLimit: false, - rationale: `FX contract ${transaction.fxContractId} not found.`, - }; - } - const now = new Date(); - const contractActive = contract.status === 'active' && - isEffectiveDate(now, contract.effectiveDate, contract.expiryDate); - if (!contractActive) { - return { - passed: false, - fxContractId: contract.contractId, - contractExists: true, - contractActive: false, - contractType: contract.type, - contractAmount: contract.amount, - contractRemainingAmount: contract.remainingAmount, - transactionAmount: transaction.amount, - amountWithinLimit: false, - rationale: `FX contract ${contract.contractId} is not active (status: ${contract.status}).`, - }; - } - if (contract.type !== transaction.direction) { - return { - passed: false, - fxContractId: contract.contractId, - contractExists: true, - contractActive: false, - contractType: contract.type, - contractAmount: contract.amount, - contractRemainingAmount: contract.remainingAmount, - transactionAmount: transaction.amount, - amountWithinLimit: false, - rationale: `FX contract type (${contract.type}) does not match transaction direction (${transaction.direction}).`, - }; - } - const amountWithinLimit = transaction.amount <= contract.remainingAmount; - return { - passed: amountWithinLimit && contractActive, - fxContractId: contract.contractId, - contractExists: true, - contractActive, - contractType: contract.type, - contractAmount: contract.amount, - contractRemainingAmount: contract.remainingAmount, - transactionAmount: transaction.amount, - amountWithinLimit, - rationale: amountWithinLimit - ? `Transaction amount (${transaction.amount} ${transaction.currency}) is within FX contract limit (${contract.remainingAmount} ${contract.currency} remaining).` - : `Transaction amount (${transaction.amount} ${transaction.currency}) exceeds FX contract remaining amount (${contract.remainingAmount} ${contract.currency}).`, - }; -} -export function createFXContractRuleResult(check) { - const severity = check.passed ? 'Info' : 'Critical'; - const decision = check.passed ? 'Allow' : 'Hold'; - return { - ruleId: 'fx-contract-check', - ruleName: 'FX Contract Validation', - passed: check.passed, - severity, - decision, - rationale: check.rationale, - details: { - fxContractId: check.fxContractId, - contractExists: check.contractExists, - contractActive: check.contractActive, - contractType: check.contractType, - contractAmount: check.contractAmount, - contractRemainingAmount: check.contractRemainingAmount, - transactionAmount: check.transactionAmount, - amountWithinLimit: check.amountWithinLimit, - }, - }; -} -//# sourceMappingURL=fx-contract.js.map \ No newline at end of file diff --git a/packages/rules-engine/src/fx-contract.js.map b/packages/rules-engine/src/fx-contract.js.map deleted file mode 100644 index b431378..0000000 --- a/packages/rules-engine/src/fx-contract.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fx-contract.js","sourceRoot":"","sources":["fx-contract.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/rules-engine/src/index.d.ts b/packages/rules-engine/src/index.d.ts deleted file mode 100644 index 7d3e745..0000000 --- a/packages/rules-engine/src/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * @brazil-swift-ops/rules-engine - * - * Brazil regulatory rules engine for cross-border payments - */ -export * from './config'; -export * from './threshold'; -export * from './documentation'; -export * from './fx-contract'; -export * from './iof'; -export * from './aml'; -export * from './orchestrator'; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/rules-engine/src/index.d.ts.map b/packages/rules-engine/src/index.d.ts.map deleted file mode 100644 index 61c459a..0000000 --- a/packages/rules-engine/src/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC"} \ No newline at end of file diff --git a/packages/rules-engine/src/index.js b/packages/rules-engine/src/index.js deleted file mode 100644 index 177c812..0000000 --- a/packages/rules-engine/src/index.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * @brazil-swift-ops/rules-engine - * - * Brazil regulatory rules engine for cross-border payments - */ -export * from './config'; -export * from './threshold'; -export * from './documentation'; -export * from './fx-contract'; -export * from './iof'; -export * from './aml'; -export * from './orchestrator'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/rules-engine/src/index.js.map b/packages/rules-engine/src/index.js.map deleted file mode 100644 index bf7bdc5..0000000 --- a/packages/rules-engine/src/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC"} \ No newline at end of file diff --git a/packages/rules-engine/src/iof.d.ts b/packages/rules-engine/src/iof.d.ts deleted file mode 100644 index 8ebcf47..0000000 --- a/packages/rules-engine/src/iof.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import type { Transaction, IOFCalculationResult, RuleResult } from '@brazil-swift-ops/types'; -export declare function calculateIOF(transaction: Transaction): IOFCalculationResult; -export declare function createIOFRuleResult(calculation: IOFCalculationResult): RuleResult; -//# sourceMappingURL=iof.d.ts.map \ No newline at end of file diff --git a/packages/rules-engine/src/iof.d.ts.map b/packages/rules-engine/src/iof.d.ts.map deleted file mode 100644 index 285f1dc..0000000 --- a/packages/rules-engine/src/iof.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"iof.d.ts","sourceRoot":"","sources":["iof.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACpB,UAAU,EACX,MAAM,yBAAyB,CAAC;AAIjC,wBAAgB,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,oBAAoB,CAuC3E;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,oBAAoB,GAChC,UAAU,CAoBZ"} \ No newline at end of file diff --git a/packages/rules-engine/src/iof.js b/packages/rules-engine/src/iof.js deleted file mode 100644 index 086ed4e..0000000 --- a/packages/rules-engine/src/iof.js +++ /dev/null @@ -1,55 +0,0 @@ -import Decimal from 'decimal.js'; -import { getDefaultConverter } from '@brazil-swift-ops/utils'; -import { getConfig } from './config'; -export function calculateIOF(transaction) { - const config = getConfig(); - const converter = getDefaultConverter(); - const brlAmount = converter.convert(transaction.amount, transaction.currency, 'BRL'); - const iofRate = transaction.direction === 'inbound' - ? config.iof.inboundRate - : config.iof.outboundRate; - const brlDecimal = new Decimal(brlAmount); - const rateDecimal = new Decimal(iofRate); - const iofDecimal = brlDecimal.mul(rateDecimal); - const iofAmount = iofDecimal.toNumber(); - let netAmount; - if (transaction.direction === 'inbound') { - netAmount = brlAmount - iofAmount; - } - else { - netAmount = brlAmount + iofAmount; - } - return { - direction: transaction.direction, - transactionAmount: transaction.amount, - currency: transaction.currency, - brlAmount, - iofRate, - iofAmount, - netAmount, - effectiveDate: config.iof.effectiveDate, - rateVersion: config.iof.rateVersion, - }; -} -export function createIOFRuleResult(calculation) { - return { - ruleId: 'iof-calculation', - ruleName: 'IOF Tax Calculation', - passed: true, - severity: 'Info', - decision: 'Allow', - rationale: `IOF calculated: ${calculation.iofAmount.toFixed(2)} BRL (${(calculation.iofRate * 100).toFixed(2)}% rate) for ${calculation.direction} transaction. Net amount: ${calculation.netAmount.toFixed(2)} BRL.`, - details: { - direction: calculation.direction, - transactionAmount: calculation.transactionAmount, - currency: calculation.currency, - brlAmount: calculation.brlAmount, - iofRate: calculation.iofRate, - iofAmount: calculation.iofAmount, - netAmount: calculation.netAmount, - effectiveDate: calculation.effectiveDate, - rateVersion: calculation.rateVersion, - }, - }; -} -//# sourceMappingURL=iof.js.map \ No newline at end of file diff --git a/packages/rules-engine/src/iof.js.map b/packages/rules-engine/src/iof.js.map deleted file mode 100644 index 61f6ab4..0000000 --- a/packages/rules-engine/src/iof.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"iof.js","sourceRoot":"","sources":["iof.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AAMjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,UAAU,YAAY,CAAC,WAAwB;IACnD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IAExC,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CACjC,WAAW,CAAC,MAAM,EAClB,WAAW,CAAC,QAAQ,EACpB,KAAK,CACN,CAAC;IAEF,MAAM,OAAO,GACX,WAAW,CAAC,SAAS,KAAK,SAAS;QACjC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW;QACxB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;IAE9B,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE/C,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;IAExC,IAAI,SAAiB,CAAC;IACtB,IAAI,WAAW,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACxC,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACpC,CAAC;IAED,OAAO;QACL,SAAS,EAAE,WAAW,CAAC,SAAS;QAChC,iBAAiB,EAAE,WAAW,CAAC,MAAM;QACrC,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,SAAS;QACT,OAAO;QACP,SAAS;QACT,SAAS;QACT,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa;QACvC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,WAAiC;IAEjC,OAAO;QACL,MAAM,EAAE,iBAAiB;QACzB,QAAQ,EAAE,qBAAqB;QAC/B,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,mBAAmB,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,WAAW,CAAC,SAAS,6BAA6B,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;QACrN,OAAO,EAAE;YACP,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,iBAAiB,EAAE,WAAW,CAAC,iBAAiB;YAChD,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,aAAa,EAAE,WAAW,CAAC,aAAa;YACxC,WAAW,EAAE,WAAW,CAAC,WAAW;SACrC;KACF,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/packages/rules-engine/src/orchestrator.d.ts b/packages/rules-engine/src/orchestrator.d.ts deleted file mode 100644 index 7b54bab..0000000 --- a/packages/rules-engine/src/orchestrator.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Rules engine orchestrator - coordinates all regulatory rule evaluations - */ -import type { Transaction, BrazilRegulatoryResult } from '@brazil-swift-ops/types'; -/** - * Evaluate all Brazil regulatory rules for a transaction - */ -export declare function evaluateTransaction(transaction: Transaction): BrazilRegulatoryResult; -/** - * Evaluate a batch of transactions - */ -export declare function evaluateBatch(transactions: Transaction[]): BrazilRegulatoryResult[]; -//# sourceMappingURL=orchestrator.d.ts.map \ No newline at end of file diff --git a/packages/rules-engine/src/orchestrator.d.ts.map b/packages/rules-engine/src/orchestrator.d.ts.map deleted file mode 100644 index c39783e..0000000 --- a/packages/rules-engine/src/orchestrator.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EAGvB,MAAM,yBAAyB,CAAC;AAmBjC;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,WAAW,GACvB,sBAAsB,CAoDxB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,YAAY,EAAE,WAAW,EAAE,GAC1B,sBAAsB,EAAE,CAE1B"} \ No newline at end of file diff --git a/packages/rules-engine/src/orchestrator.js b/packages/rules-engine/src/orchestrator.js deleted file mode 100644 index 943a7fa..0000000 --- a/packages/rules-engine/src/orchestrator.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * Rules engine orchestrator - coordinates all regulatory rule evaluations - */ -import { getConfig } from './config'; -import { evaluateThreshold, createThresholdRuleResult } from './threshold'; -import { validateDocumentation, createDocumentationRuleResult, } from './documentation'; -import { validateFXContract, createFXContractRuleResult, getContractStore, } from './fx-contract'; -import { calculateIOF, createIOFRuleResult } from './iof'; -import { performAMLCheck, createAMLRuleResult, } from './aml'; -/** - * Evaluate all Brazil regulatory rules for a transaction - */ -export function evaluateTransaction(transaction) { - const config = getConfig(); - const timestamp = new Date(); - // Run all rule checks - const thresholdCheck = evaluateThreshold(transaction); - const documentationCheck = validateDocumentation(transaction); - const fxContract = getContractStore().get(transaction.fxContractId || ''); - const fxContractCheck = validateFXContract(transaction, fxContract); - const iofCalculation = calculateIOF(transaction); - const amlCheck = performAMLCheck(transaction); - // Create rule results - const rules = [ - createThresholdRuleResult(thresholdCheck), - createDocumentationRuleResult(documentationCheck), - createFXContractRuleResult(fxContractCheck), - createIOFRuleResult(iofCalculation), - createAMLRuleResult(amlCheck), - ]; - // Determine overall decision and severity - const criticalRules = rules.filter((r) => r.severity === 'Critical' && !r.passed); - const warningRules = rules.filter((r) => r.severity === 'Warning' && !r.passed); - let overallDecision; - let overallSeverity; - if (criticalRules.length > 0) { - overallDecision = 'Hold'; - overallSeverity = 'Critical'; - } - else if (warningRules.length > 0) { - overallDecision = 'Escalate'; - overallSeverity = 'Warning'; - } - else { - overallDecision = 'Allow'; - overallSeverity = 'Info'; - } - return { - transactionId: transaction.id, - timestamp, - ruleSetVersion: config.ruleSetVersion, - overallDecision, - overallSeverity, - rules, - thresholdCheck, - documentationCheck, - fxContractCheck, - iofCalculation, - amlCheck, - }; -} -/** - * Evaluate a batch of transactions - */ -export function evaluateBatch(transactions) { - return transactions.map((txn) => evaluateTransaction(txn)); -} -//# sourceMappingURL=orchestrator.js.map \ No newline at end of file diff --git a/packages/rules-engine/src/orchestrator.js.map b/packages/rules-engine/src/orchestrator.js.map deleted file mode 100644 index 42e8a0e..0000000 --- a/packages/rules-engine/src/orchestrator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EACL,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,EACL,eAAe,EACf,mBAAmB,GAEpB,MAAM,OAAO,CAAC;AAEf;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAwB;IAExB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAE7B,sBAAsB;IACtB,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAC1E,MAAM,eAAe,GAAG,kBAAkB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACpE,MAAM,cAAc,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAE9C,sBAAsB;IACtB,MAAM,KAAK,GAAG;QACZ,yBAAyB,CAAC,cAAc,CAAC;QACzC,6BAA6B,CAAC,kBAAkB,CAAC;QACjD,0BAA0B,CAAC,eAAe,CAAC;QAC3C,mBAAmB,CAAC,cAAc,CAAC;QACnC,mBAAmB,CAAC,QAAQ,CAAC;KAC9B,CAAC;IAEF,0CAA0C;IAC1C,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAClF,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAEhF,IAAI,eAA6B,CAAC;IAClC,IAAI,eAA6B,CAAC;IAElC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,eAAe,GAAG,MAAM,CAAC;QACzB,eAAe,GAAG,UAAU,CAAC;IAC/B,CAAC;SAAM,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,eAAe,GAAG,UAAU,CAAC;QAC7B,eAAe,GAAG,SAAS,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,eAAe,GAAG,OAAO,CAAC;QAC1B,eAAe,GAAG,MAAM,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,aAAa,EAAE,WAAW,CAAC,EAAE;QAC7B,SAAS;QACT,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,eAAe;QACf,eAAe;QACf,KAAK;QACL,cAAc;QACd,kBAAkB;QAClB,eAAe;QACf,cAAc;QACd,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,YAA2B;IAE3B,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7D,CAAC"} \ No newline at end of file diff --git a/packages/treasury/src/accounts.d.ts b/packages/treasury/src/accounts.d.ts deleted file mode 100644 index 33c4e3e..0000000 --- a/packages/treasury/src/accounts.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { TreasuryAccount, SubledgerAccount, Account } from '@brazil-swift-ops/types'; -declare class AccountStore { - private accounts; - add(account: Account): void; - get(id: string): Account | undefined; - getByParent(parentId: string): SubledgerAccount[]; - getAll(): Account[]; - update(id: string, updates: Partial): void; - delete(id: string): void; -} -export declare function getAccountStore(): AccountStore; -export declare function createTreasuryAccount(accountNumber: string, name: string, currency: string): TreasuryAccount; -export declare function createSubledgerAccount(accountNumber: string, name: string, currency: string, parentAccountId: string): SubledgerAccount; -export {}; -//# sourceMappingURL=accounts.d.ts.map \ No newline at end of file diff --git a/packages/treasury/src/accounts.d.ts.map b/packages/treasury/src/accounts.d.ts.map deleted file mode 100644 index f6e6398..0000000 --- a/packages/treasury/src/accounts.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["accounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE1F,cAAM,YAAY;IAChB,OAAO,CAAC,QAAQ,CAAmC;IAEnD,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAI3B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIpC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAOjD,MAAM,IAAI,OAAO,EAAE;IAInB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI;IAQnD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;CAGzB;AAID,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CAa5G;AAED,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,gBAAgB,CAcvI"} \ No newline at end of file diff --git a/packages/treasury/src/accounts.js b/packages/treasury/src/accounts.js deleted file mode 100644 index b5f17d3..0000000 --- a/packages/treasury/src/accounts.js +++ /dev/null @@ -1,59 +0,0 @@ -class AccountStore { - accounts = new Map(); - add(account) { - this.accounts.set(account.id, account); - } - get(id) { - return this.accounts.get(id); - } - getByParent(parentId) { - return Array.from(this.accounts.values()).filter((acc) => acc.type === 'subledger' && acc.parentAccountId === parentId); - } - getAll() { - return Array.from(this.accounts.values()); - } - update(id, updates) { - const account = this.accounts.get(id); - if (account) { - const updated = { ...account, ...updates, updatedAt: new Date() }; - this.accounts.set(id, updated); - } - } - delete(id) { - this.accounts.delete(id); - } -} -const accountStore = new AccountStore(); -export function getAccountStore() { - return accountStore; -} -export function createTreasuryAccount(accountNumber, name, currency) { - return { - id: `TREASURY-${Date.now()}`, - accountNumber, - name, - type: 'treasury', - currency, - status: 'active', - balance: 0, - availableBalance: 0, - createdAt: new Date(), - updatedAt: new Date(), - }; -} -export function createSubledgerAccount(accountNumber, name, currency, parentAccountId) { - return { - id: `SUB-${Date.now()}`, - accountNumber, - name, - type: 'subledger', - currency, - status: 'active', - parentAccountId, - balance: 0, - availableBalance: 0, - createdAt: new Date(), - updatedAt: new Date(), - }; -} -//# sourceMappingURL=accounts.js.map \ No newline at end of file diff --git a/packages/treasury/src/accounts.js.map b/packages/treasury/src/accounts.js.map deleted file mode 100644 index dd5b1cb..0000000 --- a/packages/treasury/src/accounts.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"accounts.js","sourceRoot":"","sources":["accounts.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY;IACR,QAAQ,GAAyB,IAAI,GAAG,EAAE,CAAC;IAEnD,GAAG,CAAC,OAAgB;QAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,WAAW,CAAC,QAAgB;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAC9C,CAAC,GAAG,EAA2B,EAAE,CAC/B,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,eAAe,KAAK,QAAQ,CAC/D,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,EAAU,EAAE,OAAyB;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAa,CAAC;YAC7E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,EAAU;QACf,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AAExC,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,aAAqB,EAAE,IAAY,EAAE,QAAgB;IACzF,OAAO;QACL,EAAE,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE;QAC5B,aAAa;QACb,IAAI;QACJ,IAAI,EAAE,UAAU;QAChB,QAAQ;QACR,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,CAAC;QACV,gBAAgB,EAAE,CAAC;QACnB,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,SAAS,EAAE,IAAI,IAAI,EAAE;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,aAAqB,EAAE,IAAY,EAAE,QAAgB,EAAE,eAAuB;IACnH,OAAO;QACL,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE;QACvB,aAAa;QACb,IAAI;QACJ,IAAI,EAAE,WAAW;QACjB,QAAQ;QACR,MAAM,EAAE,QAAQ;QAChB,eAAe;QACf,OAAO,EAAE,CAAC;QACV,gBAAgB,EAAE,CAAC;QACnB,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,SAAS,EAAE,IAAI,IAAI,EAAE;KACtB,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/packages/treasury/src/index.d.ts b/packages/treasury/src/index.d.ts deleted file mode 100644 index 1a3a5c0..0000000 --- a/packages/treasury/src/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './accounts'; -export * from './posting'; -export * from './transfers'; -export * from './reporting'; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/treasury/src/index.d.ts.map b/packages/treasury/src/index.d.ts.map deleted file mode 100644 index 87c0039..0000000 --- a/packages/treasury/src/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"} \ No newline at end of file diff --git a/packages/treasury/src/index.js b/packages/treasury/src/index.js deleted file mode 100644 index 61690ef..0000000 --- a/packages/treasury/src/index.js +++ /dev/null @@ -1,5 +0,0 @@ -export * from './accounts'; -export * from './posting'; -export * from './transfers'; -export * from './reporting'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/treasury/src/index.js.map b/packages/treasury/src/index.js.map deleted file mode 100644 index 1ad4609..0000000 --- a/packages/treasury/src/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"} \ No newline at end of file diff --git a/packages/treasury/src/posting.d.ts b/packages/treasury/src/posting.d.ts deleted file mode 100644 index 2cc579d..0000000 --- a/packages/treasury/src/posting.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { Account, AccountPosting, PostingType, Transaction } from '@brazil-swift-ops/types'; -declare class PostingStore { - private postings; - add(posting: AccountPosting): void; - getByAccount(accountId: string): AccountPosting[]; - getByTransaction(transactionId: string): AccountPosting[]; - getAll(): AccountPosting[]; -} -export declare function getPostingStore(): PostingStore; -export declare function postToAccount(account: Account, transaction: Transaction, postingType: PostingType, amount?: number): AccountPosting; -export declare function allocateTransactionToSubledger(transaction: Transaction, subledgerId: string): AccountPosting[]; -export {}; -//# sourceMappingURL=posting.d.ts.map \ No newline at end of file diff --git a/packages/treasury/src/posting.d.ts.map b/packages/treasury/src/posting.d.ts.map deleted file mode 100644 index 3f704f0..0000000 --- a/packages/treasury/src/posting.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"posting.d.ts","sourceRoot":"","sources":["posting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAIjG,cAAM,YAAY;IAChB,OAAO,CAAC,QAAQ,CAAwB;IAExC,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIlC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,EAAE;IAIjD,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,EAAE;IAIzD,MAAM,IAAI,cAAc,EAAE;CAG3B;AAID,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAmCnI;AAED,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc,EAAE,CAoB9G"} \ No newline at end of file diff --git a/packages/treasury/src/posting.js b/packages/treasury/src/posting.js deleted file mode 100644 index a2d0945..0000000 --- a/packages/treasury/src/posting.js +++ /dev/null @@ -1,75 +0,0 @@ -import { getDefaultConverter } from '@brazil-swift-ops/utils'; -import { getAccountStore } from './accounts'; -class PostingStore { - postings = []; - add(posting) { - this.postings.push(posting); - } - getByAccount(accountId) { - return this.postings.filter((p) => p.accountId === accountId); - } - getByTransaction(transactionId) { - return this.postings.filter((p) => p.transactionId === transactionId); - } - getAll() { - return [...this.postings]; - } -} -const postingStore = new PostingStore(); -export function getPostingStore() { - return postingStore; -} -export function postToAccount(account, transaction, postingType, amount) { - const accountStore = getAccountStore(); - const converter = getDefaultConverter(); - const transactionAmount = amount ?? transaction.amount; - let postingAmount = transactionAmount; - let fxRate; - if (transaction.currency !== account.currency) { - const rate = converter.getRate(transaction.currency, account.currency); - if (rate !== null) { - fxRate = rate; - postingAmount = converter.convert(transactionAmount, transaction.currency, account.currency); - } - } - const balanceBefore = account.balance; - const balanceAfter = postingType === 'debit' ? balanceBefore - postingAmount : balanceBefore + postingAmount; - const posting = { - id: `POST-${Date.now()}`, - accountId: account.id, - transactionId: transaction.id, - postingType, - amount: postingAmount, - currency: account.currency, - fxRate, - balanceBefore, - balanceAfter, - postedAt: new Date(), - description: `Transaction ${transaction.id} - ${postingType}`, - }; - accountStore.update(account.id, { balance: balanceAfter, availableBalance: balanceAfter }); - postingStore.add(posting); - return posting; -} -export function allocateTransactionToSubledger(transaction, subledgerId) { - const accountStore = getAccountStore(); - const subledger = accountStore.get(subledgerId); - if (!subledger || subledger.type !== 'subledger') { - throw new Error(`Subledger account ${subledgerId} not found`); - } - const parent = accountStore.get(subledger.parentAccountId); - if (!parent) { - throw new Error(`Parent account ${subledger.parentAccountId} not found`); - } - const postings = []; - if (transaction.direction === 'inbound') { - postings.push(postToAccount(subledger, transaction, 'credit')); - postings.push(postToAccount(parent, transaction, 'credit')); - } - else { - postings.push(postToAccount(subledger, transaction, 'debit')); - postings.push(postToAccount(parent, transaction, 'debit')); - } - return postings; -} -//# sourceMappingURL=posting.js.map \ No newline at end of file diff --git a/packages/treasury/src/posting.js.map b/packages/treasury/src/posting.js.map deleted file mode 100644 index 8df2a4e..0000000 --- a/packages/treasury/src/posting.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"posting.js","sourceRoot":"","sources":["posting.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/treasury/src/reporting.d.ts b/packages/treasury/src/reporting.d.ts deleted file mode 100644 index 0c4d272..0000000 --- a/packages/treasury/src/reporting.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { SubledgerReport } from '@brazil-swift-ops/types'; -export declare function generateSubledgerReport(subledgerId: string, periodStart: Date, periodEnd: Date): SubledgerReport; -//# sourceMappingURL=reporting.d.ts.map \ No newline at end of file diff --git a/packages/treasury/src/reporting.d.ts.map b/packages/treasury/src/reporting.d.ts.map deleted file mode 100644 index ca9b340..0000000 --- a/packages/treasury/src/reporting.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"reporting.d.ts","sourceRoot":"","sources":["reporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,yBAAyB,CAAC;AAIjC,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,IAAI,EACjB,SAAS,EAAE,IAAI,GACd,eAAe,CA2CjB"} \ No newline at end of file diff --git a/packages/treasury/src/reporting.js b/packages/treasury/src/reporting.js deleted file mode 100644 index 7fcdae1..0000000 --- a/packages/treasury/src/reporting.js +++ /dev/null @@ -1,38 +0,0 @@ -import { getPostingStore } from './posting'; -import { getAccountStore } from './accounts'; -export function generateSubledgerReport(subledgerId, periodStart, periodEnd) { - const accountStore = getAccountStore(); - const postingStore = getPostingStore(); - const subledger = accountStore.get(subledgerId); - if (!subledger || subledger.type !== 'subledger') { - throw new Error(`Subledger account ${subledgerId} not found`); - } - const postings = postingStore - .getByAccount(subledgerId) - .filter((p) => p.postedAt >= periodStart && p.postedAt <= periodEnd); - const openingBalance = subledger.balance - postings.reduce((sum, p) => { - return p.postingType === 'debit' ? sum - p.amount : sum + p.amount; - }, 0); - const totalDebits = postings - .filter((p) => p.postingType === 'debit') - .reduce((sum, p) => sum + p.amount, 0); - const totalCredits = postings - .filter((p) => p.postingType === 'credit') - .reduce((sum, p) => sum + p.amount, 0); - const closingBalance = openingBalance + totalCredits - totalDebits; - const netPosition = totalCredits - totalDebits; - return { - subledgerId, - periodStart, - periodEnd, - openingBalance, - closingBalance, - totalDebits, - totalCredits, - netPosition, - currency: subledger.currency, - transactionCount: new Set(postings.map((p) => p.transactionId)).size, - postings, - }; -} -//# sourceMappingURL=reporting.js.map \ No newline at end of file diff --git a/packages/treasury/src/reporting.js.map b/packages/treasury/src/reporting.js.map deleted file mode 100644 index 0b292c1..0000000 --- a/packages/treasury/src/reporting.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"reporting.js","sourceRoot":"","sources":["reporting.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,UAAU,uBAAuB,CACrC,WAAmB,EACnB,WAAiB,EACjB,SAAe;IAEf,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,qBAAqB,WAAW,YAAY,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY;SAC1B,YAAY,CAAC,WAAW,CAAC;SACzB,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,WAAW,IAAI,CAAC,CAAC,QAAQ,IAAI,SAAS,CAC5D,CAAC;IAEJ,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACpE,OAAO,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;IACrE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEN,MAAM,WAAW,GAAG,QAAQ;SACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC;SACxC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAEzC,MAAM,YAAY,GAAG,QAAQ;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC;SACzC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAEzC,MAAM,cAAc,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,CAAC;IACnE,MAAM,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;IAE/C,OAAO;QACL,WAAW;QACX,WAAW;QACX,SAAS;QACT,cAAc;QACd,cAAc;QACd,WAAW;QACX,YAAY;QACZ,WAAW;QACX,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,gBAAgB,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI;QACpE,QAAQ;KACT,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/packages/treasury/src/transfers.d.ts b/packages/treasury/src/transfers.d.ts deleted file mode 100644 index d7a1e1c..0000000 --- a/packages/treasury/src/transfers.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { SubledgerTransfer } from '@brazil-swift-ops/types'; -declare class TransferStore { - private transfers; - add(transfer: SubledgerTransfer): void; - get(id: string): SubledgerTransfer | undefined; - getByAccount(accountId: string): SubledgerTransfer[]; - getAll(): SubledgerTransfer[]; -} -export declare function getTransferStore(): TransferStore; -export declare function executeSubledgerTransfer(fromAccountId: string, toAccountId: string, amount: number, currency: string, description?: string): SubledgerTransfer; -export {}; -//# sourceMappingURL=transfers.d.ts.map \ No newline at end of file diff --git a/packages/treasury/src/transfers.d.ts.map b/packages/treasury/src/transfers.d.ts.map deleted file mode 100644 index 01d7211..0000000 --- a/packages/treasury/src/transfers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transfers.d.ts","sourceRoot":"","sources":["transfers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,yBAAyB,CAAC;AAIjC,cAAM,aAAa;IACjB,OAAO,CAAC,SAAS,CAA2B;IAE5C,GAAG,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAItC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI9C,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAMpD,MAAM,IAAI,iBAAiB,EAAE;CAG9B;AAID,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,iBAAiB,CAyDnB"} \ No newline at end of file diff --git a/packages/treasury/src/transfers.js b/packages/treasury/src/transfers.js deleted file mode 100644 index 719b21d..0000000 --- a/packages/treasury/src/transfers.js +++ /dev/null @@ -1,70 +0,0 @@ -import { getAccountStore } from './accounts'; -class TransferStore { - transfers = []; - add(transfer) { - this.transfers.push(transfer); - } - get(id) { - return this.transfers.find((t) => t.id === id); - } - getByAccount(accountId) { - return this.transfers.filter((t) => t.fromAccountId === accountId || t.toAccountId === accountId); - } - getAll() { - return [...this.transfers]; - } -} -const transferStore = new TransferStore(); -export function getTransferStore() { - return transferStore; -} -export function executeSubledgerTransfer(fromAccountId, toAccountId, amount, currency, description) { - const accountStore = getAccountStore(); - const fromAccount = accountStore.get(fromAccountId); - const toAccount = accountStore.get(toAccountId); - if (!fromAccount) { - throw new Error(`Source account ${fromAccountId} not found`); - } - if (!toAccount) { - throw new Error(`Destination account ${toAccountId} not found`); - } - if (fromAccount.currency !== currency || toAccount.currency !== currency) { - throw new Error('Currency mismatch in transfer'); - } - if (fromAccount.balance < amount) { - throw new Error('Insufficient balance in source account'); - } - const transfer = { - id: `TRF-${Date.now()}`, - fromAccountId, - toAccountId, - amount, - currency, - description, - executedAt: new Date(), - status: 'pending', - }; - // Execute transfer - try { - // Debit from source - const fromBalanceBefore = fromAccount.balance; - accountStore.update(fromAccountId, { - balance: fromBalanceBefore - amount, - availableBalance: fromBalanceBefore - amount, - }); - // Credit to destination - const toBalanceBefore = toAccount.balance; - accountStore.update(toAccountId, { - balance: toBalanceBefore + amount, - availableBalance: toBalanceBefore + amount, - }); - transfer.status = 'completed'; - } - catch (error) { - transfer.status = 'failed'; - throw error; - } - transferStore.add(transfer); - return transfer; -} -//# sourceMappingURL=transfers.js.map \ No newline at end of file diff --git a/packages/treasury/src/transfers.js.map b/packages/treasury/src/transfers.js.map deleted file mode 100644 index ba205e4..0000000 --- a/packages/treasury/src/transfers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transfers.js","sourceRoot":"","sources":["transfers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/types/src/audit.d.ts b/packages/types/src/audit.d.ts deleted file mode 100644 index b297bc8..0000000 --- a/packages/types/src/audit.d.ts +++ /dev/null @@ -1,83 +0,0 @@ -/** - * Audit logging and compliance reporting types - */ -export interface AuditLog { - id: string; - timestamp: Date; - transactionId?: string; - batchId?: string; - ruleSetVersion: string; - inputs: Record; - outputs: Record; - decision: 'Allow' | 'Hold' | 'Escalate'; - severity: 'Info' | 'Warning' | 'Critical'; - rationale: string; - userId?: string; - ipAddress?: string; - userAgent?: string; - action: string; - metadata?: Record; -} -export interface RuleVersion { - version: string; - effectiveDate: Date; - approvalAuthority: string; - deprecated: boolean; - deprecatedDate?: Date; - description?: string; - changes?: string[]; -} -export interface BCBReport { - reportId: string; - reportType: 'transaction' | 'batch' | 'periodic'; - generatedAt: Date; - periodStart?: Date; - periodEnd?: Date; - transactions: BCBReportTransaction[]; - summary: BCBReportSummary; - format: 'json' | 'csv'; - data: string; -} -export interface BCBReportTransaction { - transactionId: string; - executionDate: Date; - direction: 'inbound' | 'outbound'; - amount: number; - currency: string; - usdEquivalent: number; - orderingCustomer: { - name: string; - taxId?: string; - country: string; - }; - beneficiary: { - name: string; - taxId?: string; - country: string; - accountNumber?: string; - }; - purposeOfPayment?: string; - fxContractId?: string; - iofAmount?: number; - reportingRequired: boolean; -} -export interface BCBReportSummary { - totalTransactions: number; - totalAmount: number; - totalUsdEquivalent: number; - inboundCount: number; - inboundAmount: number; - outboundCount: number; - outboundAmount: number; - reportingRequiredCount: number; - totalIOF: number; -} -export interface RetentionPolicy { - policyId: string; - dataType: 'audit_log' | 'transaction' | 'report' | 'all'; - retentionPeriodDays: number; - archivalAfterDays?: number; - autoDelete: boolean; - effectiveDate: Date; -} -//# sourceMappingURL=audit.d.ts.map \ No newline at end of file diff --git a/packages/types/src/audit.d.ts.map b/packages/types/src/audit.d.ts.map deleted file mode 100644 index dbae35c..0000000 --- a/packages/types/src/audit.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["audit.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/types/src/audit.js b/packages/types/src/audit.js deleted file mode 100644 index 9db16b4..0000000 --- a/packages/types/src/audit.js +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Audit logging and compliance reporting types - */ -export {}; -//# sourceMappingURL=audit.js.map \ No newline at end of file diff --git a/packages/types/src/audit.js.map b/packages/types/src/audit.js.map deleted file mode 100644 index 872a237..0000000 --- a/packages/types/src/audit.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"audit.js","sourceRoot":"","sources":["audit.ts"],"names":[],"mappings":"AAAA;;GAEG"} \ No newline at end of file diff --git a/packages/types/src/eo-uplift.d.ts b/packages/types/src/eo-uplift.d.ts deleted file mode 100644 index 4251345..0000000 --- a/packages/types/src/eo-uplift.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Errors & Omissions (E&O) Uplift types - */ -export interface EOUplift { - baseAmount: number; - upliftRate: number; - upliftAmount: number; - adjustedExposure: number; - treatment: 'off_balance_sheet'; -} -export interface TransactionEOUplift extends EOUplift { - transactionId: string; - currency: string; - usdEquivalent?: number; -} -export interface BatchEOUplift extends EOUplift { - batchId: string; - transactionCount: number; - currency: string; - usdEquivalent?: number; -} -//# sourceMappingURL=eo-uplift.d.ts.map \ No newline at end of file diff --git a/packages/types/src/eo-uplift.d.ts.map b/packages/types/src/eo-uplift.d.ts.map deleted file mode 100644 index 7c99261..0000000 --- a/packages/types/src/eo-uplift.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"eo-uplift.d.ts","sourceRoot":"","sources":["eo-uplift.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,mBAAmB,CAAC;CAChC;AAED,MAAM,WAAW,mBAAoB,SAAQ,QAAQ;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/types/src/eo-uplift.js b/packages/types/src/eo-uplift.js deleted file mode 100644 index afe0369..0000000 --- a/packages/types/src/eo-uplift.js +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Errors & Omissions (E&O) Uplift types - */ -export {}; -//# sourceMappingURL=eo-uplift.js.map \ No newline at end of file diff --git a/packages/types/src/eo-uplift.js.map b/packages/types/src/eo-uplift.js.map deleted file mode 100644 index 25d00ad..0000000 --- a/packages/types/src/eo-uplift.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"eo-uplift.js","sourceRoot":"","sources":["eo-uplift.ts"],"names":[],"mappings":"AAAA;;GAEG"} \ No newline at end of file diff --git a/packages/types/src/fx-contract.d.ts b/packages/types/src/fx-contract.d.ts deleted file mode 100644 index 7dc1177..0000000 --- a/packages/types/src/fx-contract.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * FX Contract (Contrato de Câmbio) types - */ -export interface FXContract { - contractId: string; - type: 'inbound' | 'outbound'; - counterparty: string; - counterpartyTaxId?: string; - amount: number; - currency: string; - effectiveDate: Date; - expiryDate: Date; - remainingAmount: number; - usedAmount: number; - status: 'active' | 'expired' | 'exhausted' | 'cancelled'; - createdAt: Date; - updatedAt: Date; - metadata?: Record; -} -export interface FXContractValidation { - contractId: string; - contractExists: boolean; - contractValid: boolean; - contractActive: boolean; - amountWithinLimit: boolean; - transactionAmount: number; - contractRemainingAmount: number; - errors: string[]; - warnings: string[]; -} -//# sourceMappingURL=fx-contract.d.ts.map \ No newline at end of file diff --git a/packages/types/src/fx-contract.d.ts.map b/packages/types/src/fx-contract.d.ts.map deleted file mode 100644 index 628b419..0000000 --- a/packages/types/src/fx-contract.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fx-contract.d.ts","sourceRoot":"","sources":["fx-contract.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,SAAS,GAAG,UAAU,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,IAAI,CAAC;IACpB,UAAU,EAAE,IAAI,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;IACzD,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uBAAuB,EAAE,MAAM,CAAC;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB"} \ No newline at end of file diff --git a/packages/types/src/fx-contract.js b/packages/types/src/fx-contract.js deleted file mode 100644 index 94b88ef..0000000 --- a/packages/types/src/fx-contract.js +++ /dev/null @@ -1,5 +0,0 @@ -/** - * FX Contract (Contrato de Câmbio) types - */ -export {}; -//# sourceMappingURL=fx-contract.js.map \ No newline at end of file diff --git a/packages/types/src/fx-contract.js.map b/packages/types/src/fx-contract.js.map deleted file mode 100644 index ef6a136..0000000 --- a/packages/types/src/fx-contract.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fx-contract.js","sourceRoot":"","sources":["fx-contract.ts"],"names":[],"mappings":"AAAA;;GAEG"} \ No newline at end of file diff --git a/packages/types/src/index.d.ts b/packages/types/src/index.d.ts deleted file mode 100644 index 1f72b01..0000000 --- a/packages/types/src/index.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @brazil-swift-ops/types - * - * Shared TypeScript types and interfaces for the Brazil SWIFT Operations Platform - */ -export * from './transaction'; -export * from './iso20022'; -export * from './regulatory'; -export * from './treasury'; -export * from './audit'; -export * from './risk'; -export * from './fx-contract'; -export * from './eo-uplift'; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/types/src/index.d.ts.map b/packages/types/src/index.d.ts.map deleted file mode 100644 index 0f578f1..0000000 --- a/packages/types/src/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"} \ No newline at end of file diff --git a/packages/types/src/index.js b/packages/types/src/index.js deleted file mode 100644 index 952e399..0000000 --- a/packages/types/src/index.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @brazil-swift-ops/types - * - * Shared TypeScript types and interfaces for the Brazil SWIFT Operations Platform - */ -export * from './transaction'; -export * from './iso20022'; -export * from './regulatory'; -export * from './treasury'; -export * from './audit'; -export * from './risk'; -export * from './fx-contract'; -export * from './eo-uplift'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/types/src/index.js.map b/packages/types/src/index.js.map deleted file mode 100644 index e21306c..0000000 --- a/packages/types/src/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"} \ No newline at end of file diff --git a/packages/types/src/iso20022.d.ts b/packages/types/src/iso20022.d.ts deleted file mode 100644 index 3553283..0000000 --- a/packages/types/src/iso20022.d.ts +++ /dev/null @@ -1,111 +0,0 @@ -/** - * ISO 20022 message types and structures - */ -export type ISO20022MessageType = 'pacs.008' | 'pacs.009' | 'pain.001'; -export type ISO20022Version = string; -export interface ISO20022Message { - messageId: string; - messageType: ISO20022MessageType; - version: ISO20022Version; - creationDateTime: Date; - groupHeader: GroupHeader; - paymentInformation: PaymentInformation[]; - rawMessage?: Record; -} -export interface GroupHeader { - messageIdentification: string; - creationDateTime: Date; - numberOfTransactions: number; - controlSum?: number; - initiatingParty: PartyIdentification; -} -export interface PartyIdentification { - name?: string; - postalAddress?: PostalAddress; - identification?: PartyIdentificationDetails; -} -export interface PostalAddress { - streetName?: string; - buildingNumber?: string; - postCode?: string; - townName?: string; - country: string; -} -export interface PartyIdentificationDetails { - organisationIdentification?: string; - privateIdentification?: string; -} -export interface PaymentInformation { - paymentInformationIdentification: string; - paymentMethod: string; - requestedExecutionDate: Date; - debtor: PartyIdentification; - debtorAccount: CashAccount; - debtorAgent?: FinancialInstitutionIdentification; - creditTransferTransactionInformation: CreditTransferTransactionInformation[]; -} -export interface CashAccount { - identification: string; - name?: string; - currency?: string; - type?: string; - iban?: string; -} -export interface FinancialInstitutionIdentification { - bic?: string; - name?: string; - postalAddress?: PostalAddress; -} -export interface CreditTransferTransactionInformation { - paymentIdentification: PaymentIdentification; - amount: Amount; - chargeBearer?: string; - creditor: PartyIdentification; - creditorAccount: CashAccount; - creditorAgent?: FinancialInstitutionIdentification; - remittanceInformation?: RemittanceInformation; - purpose?: string; -} -export interface PaymentIdentification { - instructionId?: string; - endToEndId: string; - transactionId?: string; -} -export interface Amount { - currency: string; - value: number; -} -export interface RemittanceInformation { - unstructured?: string; - structured?: Record; -} -export interface Pacs008Message extends ISO20022Message { - messageType: 'pacs.008'; - creditTransferTransaction: CreditTransferTransaction[]; -} -export interface CreditTransferTransaction { - paymentIdentification: PaymentIdentification; - amount: Amount; - chargeBearer?: string; - debtor: PartyIdentification; - debtorAccount: CashAccount; - debtorAgent?: FinancialInstitutionIdentification; - creditor: PartyIdentification; - creditorAccount: CashAccount; - creditorAgent?: FinancialInstitutionIdentification; - remittanceInformation?: RemittanceInformation; - purpose?: string; -} -export interface Pacs009Message extends ISO20022Message { - messageType: 'pacs.009'; - creditTransferTransaction: CreditTransferTransaction[]; -} -export interface Pain001Message extends ISO20022Message { - messageType: 'pain.001'; - customerCreditTransferInitiation: CustomerCreditTransferInitiation; -} -export interface CustomerCreditTransferInitiation { - groupHeader: GroupHeader; - paymentInformation: PaymentInformation[]; -} -//# sourceMappingURL=iso20022.d.ts.map \ No newline at end of file diff --git a/packages/types/src/iso20022.d.ts.map b/packages/types/src/iso20022.d.ts.map deleted file mode 100644 index 039b108..0000000 --- a/packages/types/src/iso20022.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"iso20022.d.ts","sourceRoot":"","sources":["iso20022.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/types/src/iso20022.js b/packages/types/src/iso20022.js deleted file mode 100644 index 764c667..0000000 --- a/packages/types/src/iso20022.js +++ /dev/null @@ -1,5 +0,0 @@ -/** - * ISO 20022 message types and structures - */ -export {}; -//# sourceMappingURL=iso20022.js.map \ No newline at end of file diff --git a/packages/types/src/iso20022.js.map b/packages/types/src/iso20022.js.map deleted file mode 100644 index d076831..0000000 --- a/packages/types/src/iso20022.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"iso20022.js","sourceRoot":"","sources":["iso20022.ts"],"names":[],"mappings":"AAAA;;GAEG"} \ No newline at end of file diff --git a/packages/types/src/regulatory.d.ts b/packages/types/src/regulatory.d.ts deleted file mode 100644 index f20eae4..0000000 --- a/packages/types/src/regulatory.d.ts +++ /dev/null @@ -1,95 +0,0 @@ -/** - * Brazil regulatory rule evaluation types - */ -export type RuleSeverity = 'Info' | 'Warning' | 'Critical'; -export type RuleDecision = 'Allow' | 'Hold' | 'Escalate'; -export interface RuleResult { - ruleId: string; - ruleName: string; - passed: boolean; - severity: RuleSeverity; - decision: RuleDecision; - rationale: string; - details?: Record; -} -export interface BrazilRegulatoryResult { - transactionId: string; - timestamp: Date; - ruleSetVersion: string; - overallDecision: RuleDecision; - overallSeverity: RuleSeverity; - rules: RuleResult[]; - thresholdCheck?: ThresholdCheckResult; - documentationCheck?: DocumentationCheckResult; - fxContractCheck?: FXContractCheckResult; - iofCalculation?: IOFCalculationResult; - amlCheck?: AMLCheckResult; -} -export interface ThresholdCheckResult { - passed: boolean; - transactionAmount: number; - currency: string; - usdEquivalent: number; - threshold: number; - requiresReporting: boolean; - rationale: string; -} -export interface DocumentationCheckResult { - passed: boolean; - hasOrderingCustomerName: boolean; - hasOrderingCustomerAddress: boolean; - hasOrderingCustomerTaxId: boolean; - hasBeneficiaryName: boolean; - hasBeneficiaryAccount: boolean; - hasBeneficiaryTaxId: boolean; - hasPurposeOfPayment: boolean; - missingFields: string[]; - rationale: string; -} -export interface FXContractCheckResult { - passed: boolean; - fxContractId?: string; - contractExists: boolean; - contractType?: 'inbound' | 'outbound'; - contractAmount: number; - contractRemainingAmount: number; - transactionAmount: number; - amountWithinLimit: boolean; - rationale: string; -} -export interface IOFCalculationResult { - direction: 'inbound' | 'outbound'; - transactionAmount: number; - currency: string; - brlAmount: number; - iofRate: number; - iofAmount: number; - netAmount: number; - effectiveDate: Date; - rateVersion: string; -} -export interface AMLCheckResult { - passed: boolean; - singleTransactionCheck: SingleTransactionAMLResult; - structuringCheck?: StructuringCheckResult; - overallRiskLevel: 'Low' | 'Medium' | 'High'; - rationale: string; -} -export interface SingleTransactionAMLResult { - passed: boolean; - transactionAmount: number; - usdEquivalent: number; - threshold: number; - requiresEnhancedReview: boolean; - riskLevel: 'Low' | 'Medium' | 'High'; -} -export interface StructuringCheckResult { - detected: boolean; - windowDays: number; - transactionCount: number; - totalAmount: number; - totalUsdEquivalent: number; - individualAmounts: number[]; - rationale: string; -} -//# sourceMappingURL=regulatory.d.ts.map \ No newline at end of file diff --git a/packages/types/src/regulatory.d.ts.map b/packages/types/src/regulatory.d.ts.map deleted file mode 100644 index 3756341..0000000 --- a/packages/types/src/regulatory.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"regulatory.d.ts","sourceRoot":"","sources":["regulatory.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/types/src/regulatory.js b/packages/types/src/regulatory.js deleted file mode 100644 index 9ea7c7e..0000000 --- a/packages/types/src/regulatory.js +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Brazil regulatory rule evaluation types - */ -export {}; -//# sourceMappingURL=regulatory.js.map \ No newline at end of file diff --git a/packages/types/src/regulatory.js.map b/packages/types/src/regulatory.js.map deleted file mode 100644 index 12117b7..0000000 --- a/packages/types/src/regulatory.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"regulatory.js","sourceRoot":"","sources":["regulatory.ts"],"names":[],"mappings":"AAAA;;GAEG"} \ No newline at end of file diff --git a/packages/types/src/risk.d.ts b/packages/types/src/risk.d.ts deleted file mode 100644 index ed49be7..0000000 --- a/packages/types/src/risk.d.ts +++ /dev/null @@ -1,79 +0,0 @@ -/** - * Risk, capital, and liquidity modeling types - */ -export interface ReserveImpact { - transactionId: string; - transactionAmount: number; - currency: string; - reserveRatio: number; - reserveImpact: number; - availableLiquidityBefore: number; - availableLiquidityAfter: number; - requiredReserves: number; - complianceCheck: boolean; - rationale: string; -} -export interface CapitalImpact { - transactionId: string; - transactionAmount: number; - currency: string; - riskWeight: number; - riskWeightedAssets: number; - capitalRatio: number; - capitalConsumed: number; - capitalBufferBefore: number; - capitalBufferAfter: number; - complianceCheck: boolean; - rationale: string; -} -export interface LCRImpact { - transactionId: string; - transactionAmount: number; - currency: string; - runoffFactor: number; - outflowStress: number; - hqlaBefore: number; - netOutflowsBefore: number; - netOutflowsAfter: number; - lcrBefore: number; - lcrAfter: number; - minimumLCR: number; - complianceCheck: boolean; - rationale: string; -} -export interface RiskWeightTable { - id: string; - version: string; - effectiveDate: Date; - weights: RiskWeight[]; -} -export interface RiskWeight { - category: string; - description: string; - weight: number; - minWeight?: number; - maxWeight?: number; -} -export interface EscalationState { - transactionId: string; - currentLevel: EscalationLevel; - previousLevel?: EscalationLevel; - reason: string; - escalatedAt: Date; - escalatedBy?: string; - approvalRequired?: boolean; - approvedBy?: string; - approvedAt?: Date; -} -export type EscalationLevel = 'Allow' | 'Hold' | 'ComplianceReview' | 'TreasuryApproval' | 'ExceptionApproval'; -export interface StressTestResult { - transactionId: string; - reserveImpact: ReserveImpact; - capitalImpact: CapitalImpact; - lcrImpact: LCRImpact; - overallCompliance: boolean; - blockingIssues: string[]; - warnings: string[]; - recommendedAction: 'Allow' | 'Hold' | 'Escalate'; -} -//# sourceMappingURL=risk.d.ts.map \ No newline at end of file diff --git a/packages/types/src/risk.d.ts.map b/packages/types/src/risk.d.ts.map deleted file mode 100644 index a02b72f..0000000 --- a/packages/types/src/risk.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"risk.d.ts","sourceRoot":"","sources":["risk.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,wBAAwB,EAAE,MAAM,CAAC;IACjC,uBAAuB,EAAE,MAAM,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,IAAI,CAAC;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,eAAe,CAAC;IAC9B,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,IAAI,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAE/G,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iBAAiB,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;CAClD"} \ No newline at end of file diff --git a/packages/types/src/risk.js b/packages/types/src/risk.js deleted file mode 100644 index d3bd6fc..0000000 --- a/packages/types/src/risk.js +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Risk, capital, and liquidity modeling types - */ -export {}; -//# sourceMappingURL=risk.js.map \ No newline at end of file diff --git a/packages/types/src/risk.js.map b/packages/types/src/risk.js.map deleted file mode 100644 index 40473c2..0000000 --- a/packages/types/src/risk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"risk.js","sourceRoot":"","sources":["risk.ts"],"names":[],"mappings":"AAAA;;GAEG"} \ No newline at end of file diff --git a/packages/types/src/transaction.d.ts b/packages/types/src/transaction.d.ts deleted file mode 100644 index 1f28a51..0000000 --- a/packages/types/src/transaction.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Canonical transaction model for cross-border payments - */ -export type TransactionDirection = 'inbound' | 'outbound'; -export type TransactionStatus = 'pending' | 'approved' | 'held' | 'rejected' | 'escalated'; -export type Currency = string; -export interface Party { - name: string; - address?: string; - city?: string; - country: string; - taxId?: string; - email?: string; - phone?: string; - accountNumber?: string; - iban?: string; - bic?: string; -} -export interface Transaction { - id: string; - direction: TransactionDirection; - amount: number; - currency: Currency; - usdEquivalent?: number; - orderingCustomer: Party; - beneficiary: Party; - purposeOfPayment?: string; - fxContractId?: string; - swiftReference?: string; - iso20022MessageId?: string; - status: TransactionStatus; - createdAt: Date; - updatedAt: Date; - metadata?: Record; -} -export interface BatchTransaction { - batchId: string; - transactions: Transaction[]; - totalAmount: number; - totalUsdEquivalent: number; - currency: Currency; - createdAt: Date; - status: 'pending' | 'processing' | 'completed' | 'failed'; -} -//# sourceMappingURL=transaction.d.ts.map \ No newline at end of file diff --git a/packages/types/src/transaction.d.ts.map b/packages/types/src/transaction.d.ts.map deleted file mode 100644 index 02b243b..0000000 --- a/packages/types/src/transaction.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["transaction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,UAAU,CAAC;AAC1D,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;AAC3F,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,oBAAoB,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,KAAK,CAAC;IACxB,WAAW,EAAE,KAAK,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;CAC3D"} \ No newline at end of file diff --git a/packages/types/src/transaction.js b/packages/types/src/transaction.js deleted file mode 100644 index 65c7023..0000000 --- a/packages/types/src/transaction.js +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Canonical transaction model for cross-border payments - */ -export {}; -//# sourceMappingURL=transaction.js.map \ No newline at end of file diff --git a/packages/types/src/transaction.js.map b/packages/types/src/transaction.js.map deleted file mode 100644 index db0125f..0000000 --- a/packages/types/src/transaction.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transaction.js","sourceRoot":"","sources":["transaction.ts"],"names":[],"mappings":"AAAA;;GAEG"} \ No newline at end of file diff --git a/packages/types/src/treasury.d.ts b/packages/types/src/treasury.d.ts deleted file mode 100644 index c61ebad..0000000 --- a/packages/types/src/treasury.d.ts +++ /dev/null @@ -1,86 +0,0 @@ -/** - * Treasury and subledger account types - */ -export type AccountStatus = 'active' | 'inactive' | 'closed' | 'suspended'; -export type AccountType = 'treasury' | 'subledger'; -export type PostingType = 'debit' | 'credit'; -export interface TreasuryAccount { - id: string; - accountNumber: string; - name: string; - type: 'treasury'; - currency: string; - status: AccountStatus; - parentAccountId?: string; - balance: number; - availableBalance: number; - createdAt: Date; - updatedAt: Date; - metadata?: Record; -} -export interface SubledgerAccount { - id: string; - accountNumber: string; - name: string; - type: 'subledger'; - currency: string; - status: AccountStatus; - parentAccountId: string; - balance: number; - availableBalance: number; - routingRules?: RoutingRule[]; - createdAt: Date; - updatedAt: Date; - metadata?: Record; -} -export type Account = TreasuryAccount | SubledgerAccount; -export interface RoutingRule { - id: string; - subledgerAccountId: string; - conditions: RoutingCondition[]; - priority: number; - active: boolean; -} -export interface RoutingCondition { - field: string; - operator: 'equals' | 'greaterThan' | 'lessThan' | 'contains'; - value: string | number; -} -export interface AccountPosting { - id: string; - accountId: string; - transactionId: string; - postingType: PostingType; - amount: number; - currency: string; - fxRate?: number; - balanceBefore: number; - balanceAfter: number; - postedAt: Date; - description?: string; -} -export interface SubledgerTransfer { - id: string; - fromAccountId: string; - toAccountId: string; - amount: number; - currency: string; - transactionId?: string; - description?: string; - executedAt: Date; - status: 'pending' | 'completed' | 'failed'; -} -export interface SubledgerReport { - subledgerId: string; - periodStart: Date; - periodEnd: Date; - openingBalance: number; - closingBalance: number; - totalDebits: number; - totalCredits: number; - netPosition: number; - currency: string; - transactionCount: number; - postings: AccountPosting[]; -} -//# sourceMappingURL=treasury.d.ts.map \ No newline at end of file diff --git a/packages/types/src/treasury.d.ts.map b/packages/types/src/treasury.d.ts.map deleted file mode 100644 index cc8f16c..0000000 --- a/packages/types/src/treasury.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"treasury.d.ts","sourceRoot":"","sources":["treasury.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/types/src/treasury.js b/packages/types/src/treasury.js deleted file mode 100644 index 97f9794..0000000 --- a/packages/types/src/treasury.js +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Treasury and subledger account types - */ -export {}; -//# sourceMappingURL=treasury.js.map \ No newline at end of file diff --git a/packages/types/src/treasury.js.map b/packages/types/src/treasury.js.map deleted file mode 100644 index cf17b9d..0000000 --- a/packages/types/src/treasury.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"treasury.js","sourceRoot":"","sources":["treasury.ts"],"names":[],"mappings":"AAAA;;GAEG"} \ No newline at end of file diff --git a/packages/utils/src/currency.d.ts b/packages/utils/src/currency.d.ts deleted file mode 100644 index b4c0ef1..0000000 --- a/packages/utils/src/currency.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Currency conversion and USD equivalent calculation utilities - */ -export interface ExchangeRate { - fromCurrency: string; - toCurrency: string; - rate: number; - effectiveDate: Date; - source?: string; -} -export interface CurrencyConverter { - convert(amount: number, fromCurrency: string, toCurrency: string, date?: Date): number; - getUSDEquivalent(amount: number, currency: string, date?: Date): number; - getRate(fromCurrency: string, toCurrency: string, date?: Date): number | null; -} -/** - * Simple in-memory currency converter with configurable rates - * In production, this would integrate with a real-time FX rate service - */ -export declare class SimpleCurrencyConverter implements CurrencyConverter { - private rates; - private defaultUSDRates; - constructor(initialRates?: ExchangeRate[]); - private initializeDefaultRates; - addRate(rate: ExchangeRate): void; - private getRateKey; - getRate(fromCurrency: string, toCurrency: string, date?: Date): number | null; - convert(amount: number, fromCurrency: string, toCurrency: string, date?: Date): number; - getUSDEquivalent(amount: number, currency: string, date?: Date): number; -} -export declare function getDefaultConverter(): CurrencyConverter; -export declare function setDefaultConverter(converter: CurrencyConverter): void; -//# sourceMappingURL=currency.d.ts.map \ No newline at end of file diff --git a/packages/utils/src/currency.d.ts.map b/packages/utils/src/currency.d.ts.map deleted file mode 100644 index 29d94e9..0000000 --- a/packages/utils/src/currency.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["currency.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACvF,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACxE,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;CAC/E;AAED;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,iBAAiB;IAC/D,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,eAAe,CAKrB;gBAEU,YAAY,CAAC,EAAE,YAAY,EAAE;IAOzC,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAYjC,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI;IAsB7E,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM;IAiBtF,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM;CAMxE;AAID,wBAAgB,mBAAmB,IAAI,iBAAiB,CAKvD;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAEtE"} \ No newline at end of file diff --git a/packages/utils/src/currency.js b/packages/utils/src/currency.js deleted file mode 100644 index 03cc80e..0000000 --- a/packages/utils/src/currency.js +++ /dev/null @@ -1,98 +0,0 @@ -/** - * Currency conversion and USD equivalent calculation utilities - */ -import Decimal from 'decimal.js'; -/** - * Simple in-memory currency converter with configurable rates - * In production, this would integrate with a real-time FX rate service - */ -export class SimpleCurrencyConverter { - rates = new Map(); - defaultUSDRates = { - USD: 1.0, - BRL: 0.2, - EUR: 1.1, - GBP: 1.27, - }; - constructor(initialRates) { - if (initialRates) { - initialRates.forEach((rate) => this.addRate(rate)); - } - this.initializeDefaultRates(); - } - initializeDefaultRates() { - const now = new Date(); - Object.entries(this.defaultUSDRates).forEach(([currency, rate]) => { - if (currency !== 'USD') { - this.addRate({ - fromCurrency: currency, - toCurrency: 'USD', - rate, - effectiveDate: now, - source: 'default', - }); - } - }); - } - addRate(rate) { - const key = this.getRateKey(rate.fromCurrency, rate.toCurrency); - this.rates.set(key, rate); - const inverseKey = this.getRateKey(rate.toCurrency, rate.fromCurrency); - this.rates.set(inverseKey, { - ...rate, - fromCurrency: rate.toCurrency, - toCurrency: rate.fromCurrency, - rate: 1 / rate.rate, - }); - } - getRateKey(fromCurrency, toCurrency) { - return `${fromCurrency}:${toCurrency}`; - } - getRate(fromCurrency, toCurrency, date) { - if (fromCurrency === toCurrency) { - return 1.0; - } - const key = this.getRateKey(fromCurrency, toCurrency); - const rate = this.rates.get(key); - if (!rate) { - if (fromCurrency !== 'USD' && toCurrency !== 'USD') { - const fromToUSD = this.getRate(fromCurrency, 'USD', date); - const usdToTo = this.getRate('USD', toCurrency, date); - if (fromToUSD && usdToTo) { - return fromToUSD * usdToTo; - } - } - return null; - } - return rate.rate; - } - convert(amount, fromCurrency, toCurrency, date) { - if (fromCurrency === toCurrency) { - return amount; - } - const rate = this.getRate(fromCurrency, toCurrency, date); - if (rate === null) { - throw new Error(`No exchange rate available for ${fromCurrency} to ${toCurrency}`); - } - const amountDecimal = new Decimal(amount); - const rateDecimal = new Decimal(rate); - return amountDecimal.mul(rateDecimal).toNumber(); - } - getUSDEquivalent(amount, currency, date) { - if (currency === 'USD') { - return amount; - } - return this.convert(amount, currency, 'USD', date); - } -} -let defaultConverter = null; -export function getDefaultConverter() { - if (!defaultConverter) { - defaultConverter = new SimpleCurrencyConverter(); - } - return defaultConverter; -} -export function setDefaultConverter(converter) { - defaultConverter = converter; -} -//# sourceMappingURL=currency.js.map \ No newline at end of file diff --git a/packages/utils/src/currency.js.map b/packages/utils/src/currency.js.map deleted file mode 100644 index 935b27f..0000000 --- a/packages/utils/src/currency.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"currency.js","sourceRoot":"","sources":["currency.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/utils/src/dates.d.ts b/packages/utils/src/dates.d.ts deleted file mode 100644 index f52fa64..0000000 --- a/packages/utils/src/dates.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Date utilities for effective date logic and rolling windows - */ -export declare function isEffectiveDate(date: Date, effectiveDate: Date, expiryDate?: Date): boolean; -export interface RollingWindow { - startDate: Date; - endDate: Date; - days: number; -} -export declare function calculateRollingWindow(referenceDate: Date, windowDays: number): RollingWindow; -export declare function isWithinRollingWindow(date: Date, window: RollingWindow): boolean; -export declare function filterDatesInWindow(dates: Date[], window: RollingWindow): Date[]; -export declare function calculateRetentionExpiry(creationDate: Date, retentionDays: number): Date; -export declare function shouldArchive(creationDate: Date, archivalAfterDays: number, currentDate?: Date): boolean; -export declare function shouldDelete(creationDate: Date, retentionDays: number, currentDate?: Date): boolean; -export declare function formatISO20022Date(date: Date): string; -export declare function formatISO20022DateTime(date: Date): string; -//# sourceMappingURL=dates.d.ts.map \ No newline at end of file diff --git a/packages/utils/src/dates.d.ts.map b/packages/utils/src/dates.d.ts.map deleted file mode 100644 index 335d2a0..0000000 --- a/packages/utils/src/dates.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["dates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,IAAI,GAAG,OAAO,CAQ3F;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,IAAI,EACnB,UAAU,EAAE,MAAM,GACjB,aAAa,CAOf;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,aAAa,GACpB,OAAO,CAKT;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,IAAI,EAAE,EACb,MAAM,EAAE,aAAa,GACpB,IAAI,EAAE,CAER;AAED,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,IAAI,EAClB,aAAa,EAAE,MAAM,GACpB,IAAI,CAEN;AAED,wBAAgB,aAAa,CAC3B,YAAY,EAAE,IAAI,EAClB,iBAAiB,EAAE,MAAM,EACzB,WAAW,GAAE,IAAiB,GAC7B,OAAO,CAGT;AAED,wBAAgB,YAAY,CAC1B,YAAY,EAAE,IAAI,EAClB,aAAa,EAAE,MAAM,EACrB,WAAW,GAAE,IAAiB,GAC7B,OAAO,CAGT;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAErD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEzD"} \ No newline at end of file diff --git a/packages/utils/src/dates.js b/packages/utils/src/dates.js deleted file mode 100644 index 01b0a4b..0000000 --- a/packages/utils/src/dates.js +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Date utilities for effective date logic and rolling windows - */ -import { addDays, isAfter, isBefore, isWithinInterval, subDays } from 'date-fns'; -export function isEffectiveDate(date, effectiveDate, expiryDate) { - if (isBefore(date, effectiveDate)) { - return false; - } - if (expiryDate && isAfter(date, expiryDate)) { - return false; - } - return true; -} -export function calculateRollingWindow(referenceDate, windowDays) { - const startDate = subDays(referenceDate, windowDays); - return { - startDate, - endDate: referenceDate, - days: windowDays, - }; -} -export function isWithinRollingWindow(date, window) { - return isWithinInterval(date, { - start: window.startDate, - end: window.endDate, - }); -} -export function filterDatesInWindow(dates, window) { - return dates.filter((date) => isWithinRollingWindow(date, window)); -} -export function calculateRetentionExpiry(creationDate, retentionDays) { - return addDays(creationDate, retentionDays); -} -export function shouldArchive(creationDate, archivalAfterDays, currentDate = new Date()) { - const archivalDate = addDays(creationDate, archivalAfterDays); - return isAfter(currentDate, archivalDate); -} -export function shouldDelete(creationDate, retentionDays, currentDate = new Date()) { - const expiryDate = calculateRetentionExpiry(creationDate, retentionDays); - return isAfter(currentDate, expiryDate); -} -export function formatISO20022Date(date) { - return date.toISOString().split('T')[0]; -} -export function formatISO20022DateTime(date) { - return date.toISOString().split('.')[0]; -} -//# sourceMappingURL=dates.js.map \ No newline at end of file diff --git a/packages/utils/src/dates.js.map b/packages/utils/src/dates.js.map deleted file mode 100644 index 30166f5..0000000 --- a/packages/utils/src/dates.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"dates.js","sourceRoot":"","sources":["dates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEjF,MAAM,UAAU,eAAe,CAAC,IAAU,EAAE,aAAmB,EAAE,UAAiB;IAChF,IAAI,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,UAAU,IAAI,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAQD,MAAM,UAAU,sBAAsB,CACpC,aAAmB,EACnB,UAAkB;IAElB,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IACrD,OAAO;QACL,SAAS;QACT,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,UAAU;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAAU,EACV,MAAqB;IAErB,OAAO,gBAAgB,CAAC,IAAI,EAAE;QAC5B,KAAK,EAAE,MAAM,CAAC,SAAS;QACvB,GAAG,EAAE,MAAM,CAAC,OAAO;KACpB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,MAAqB;IAErB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,YAAkB,EAClB,aAAqB;IAErB,OAAO,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,YAAkB,EAClB,iBAAyB,EACzB,cAAoB,IAAI,IAAI,EAAE;IAE9B,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAC9D,OAAO,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,YAAkB,EAClB,aAAqB,EACrB,cAAoB,IAAI,IAAI,EAAE;IAE9B,MAAM,UAAU,GAAG,wBAAwB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IACzE,OAAO,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAU;IAC3C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAU;IAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC"} \ No newline at end of file diff --git a/packages/utils/src/eo-uplift.d.ts b/packages/utils/src/eo-uplift.d.ts deleted file mode 100644 index d66745f..0000000 --- a/packages/utils/src/eo-uplift.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Errors & Omissions (E&O) Uplift calculator - * - * E&O uplift is a +10% exposure buffer applied to transaction amounts - * to account for errors and omissions outside of direct operations. - * - * Treatment: Off-balance-sheet, non-booked risk buffer - */ -import type { EOUplift, TransactionEOUplift, BatchEOUplift } from '@brazil-swift-ops/types'; -export declare const DEFAULT_EO_UPLIFT_RATE = 0.1; -/** - * Calculate E&O uplift for a single transaction - */ -export declare function calculateTransactionEOUplift(baseAmount: number, currency: string, upliftRate?: number, usdEquivalent?: number): TransactionEOUplift; -/** - * Calculate E&O uplift for a batch of transactions - */ -export declare function calculateBatchEOUplift(baseAmount: number, currency: string, transactionCount: number, upliftRate?: number, usdEquivalent?: number): BatchEOUplift; -/** - * Calculate E&O uplift for a simple amount (no transaction context) - */ -export declare function calculateEOUplift(baseAmount: number, upliftRate?: number): EOUplift; -/** - * Apply E&O uplift to an array of transaction amounts - */ -export declare function applyEOUpliftToAmounts(amounts: number[], upliftRate?: number): { - baseAmount: number; - upliftAmount: number; - adjustedExposure: number; -}[]; -//# sourceMappingURL=eo-uplift.d.ts.map \ No newline at end of file diff --git a/packages/utils/src/eo-uplift.d.ts.map b/packages/utils/src/eo-uplift.d.ts.map deleted file mode 100644 index d8416d9..0000000 --- a/packages/utils/src/eo-uplift.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"eo-uplift.d.ts","sourceRoot":"","sources":["eo-uplift.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE5F,eAAO,MAAM,sBAAsB,MAAO,CAAC;AAE3C;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,MAA+B,EAC3C,aAAa,CAAC,EAAE,MAAM,GACrB,mBAAmB,CA4BrB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,UAAU,GAAE,MAA+B,EAC3C,aAAa,CAAC,EAAE,MAAM,GACrB,aAAa,CA4Bf;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,MAA+B,GAC1C,QAAQ,CAaV;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EAAE,EACjB,UAAU,GAAE,MAA+B,GAC1C;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,EAAE,CAS1E"} \ No newline at end of file diff --git a/packages/utils/src/eo-uplift.js b/packages/utils/src/eo-uplift.js deleted file mode 100644 index cab1c7a..0000000 --- a/packages/utils/src/eo-uplift.js +++ /dev/null @@ -1,98 +0,0 @@ -/** - * Errors & Omissions (E&O) Uplift calculator - * - * E&O uplift is a +10% exposure buffer applied to transaction amounts - * to account for errors and omissions outside of direct operations. - * - * Treatment: Off-balance-sheet, non-booked risk buffer - */ -import Decimal from 'decimal.js'; -export const DEFAULT_EO_UPLIFT_RATE = 0.10; // 10% -/** - * Calculate E&O uplift for a single transaction - */ -export function calculateTransactionEOUplift(baseAmount, currency, upliftRate = DEFAULT_EO_UPLIFT_RATE, usdEquivalent) { - // Use Decimal.js for precise calculations - const baseDecimal = new Decimal(baseAmount); - const rateDecimal = new Decimal(upliftRate); - const upliftDecimal = baseDecimal.mul(rateDecimal); - const adjustedDecimal = baseDecimal.add(upliftDecimal); - const upliftAmount = upliftDecimal.toNumber(); - const adjustedExposure = adjustedDecimal.toNumber(); - // Calculate USD equivalent for uplift if provided - let upliftUsdEquivalent; - if (usdEquivalent !== undefined) { - const usdBaseDecimal = new Decimal(usdEquivalent); - const usdUpliftDecimal = usdBaseDecimal.mul(rateDecimal); - upliftUsdEquivalent = usdBaseDecimal.add(usdUpliftDecimal).toNumber(); - } - return { - transactionId: '', // Will be set by caller - baseAmount, - currency, - upliftRate, - upliftAmount, - adjustedExposure, - usdEquivalent: upliftUsdEquivalent, - treatment: 'off_balance_sheet', - }; -} -/** - * Calculate E&O uplift for a batch of transactions - */ -export function calculateBatchEOUplift(baseAmount, currency, transactionCount, upliftRate = DEFAULT_EO_UPLIFT_RATE, usdEquivalent) { - const baseDecimal = new Decimal(baseAmount); - const rateDecimal = new Decimal(upliftRate); - const upliftDecimal = baseDecimal.mul(rateDecimal); - const adjustedDecimal = baseDecimal.add(upliftDecimal); - const upliftAmount = upliftDecimal.toNumber(); - const adjustedExposure = adjustedDecimal.toNumber(); - // Calculate USD equivalent for uplift if provided - let upliftUsdEquivalent; - if (usdEquivalent !== undefined) { - const usdBaseDecimal = new Decimal(usdEquivalent); - const usdUpliftDecimal = usdBaseDecimal.mul(rateDecimal); - upliftUsdEquivalent = usdBaseDecimal.add(usdUpliftDecimal).toNumber(); - } - return { - batchId: '', // Will be set by caller - baseAmount, - currency, - transactionCount, - upliftRate, - upliftAmount, - adjustedExposure, - usdEquivalent: upliftUsdEquivalent, - treatment: 'off_balance_sheet', - }; -} -/** - * Calculate E&O uplift for a simple amount (no transaction context) - */ -export function calculateEOUplift(baseAmount, upliftRate = DEFAULT_EO_UPLIFT_RATE) { - const baseDecimal = new Decimal(baseAmount); - const rateDecimal = new Decimal(upliftRate); - const upliftDecimal = baseDecimal.mul(rateDecimal); - const adjustedDecimal = baseDecimal.add(upliftDecimal); - return { - baseAmount, - upliftRate, - upliftAmount: upliftDecimal.toNumber(), - adjustedExposure: adjustedDecimal.toNumber(), - treatment: 'off_balance_sheet', - }; -} -/** - * Apply E&O uplift to an array of transaction amounts - */ -export function applyEOUpliftToAmounts(amounts, upliftRate = DEFAULT_EO_UPLIFT_RATE) { - return amounts.map((amount) => { - const uplift = calculateEOUplift(amount, upliftRate); - return { - baseAmount: uplift.baseAmount, - upliftAmount: uplift.upliftAmount, - adjustedExposure: uplift.adjustedExposure, - }; - }); -} -//# sourceMappingURL=eo-uplift.js.map \ No newline at end of file diff --git a/packages/utils/src/eo-uplift.js.map b/packages/utils/src/eo-uplift.js.map deleted file mode 100644 index 1961476..0000000 --- a/packages/utils/src/eo-uplift.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"eo-uplift.js","sourceRoot":"","sources":["eo-uplift.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,OAAO,MAAM,YAAY,CAAC;AAGjC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,CAAC,MAAM;AAElD;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,UAAkB,EAClB,QAAgB,EAChB,aAAqB,sBAAsB,EAC3C,aAAsB;IAEtB,0CAA0C;IAC1C,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAEvD,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;IAC9C,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC;IAEpD,kDAAkD;IAClD,IAAI,mBAAuC,CAAC;IAC5C,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzD,mBAAmB,GAAG,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxE,CAAC;IAED,OAAO;QACL,aAAa,EAAE,EAAE,EAAE,wBAAwB;QAC3C,UAAU;QACV,QAAQ;QACR,UAAU;QACV,YAAY;QACZ,gBAAgB;QAChB,aAAa,EAAE,mBAAmB;QAClC,SAAS,EAAE,mBAAmB;KAC/B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAkB,EAClB,QAAgB,EAChB,gBAAwB,EACxB,aAAqB,sBAAsB,EAC3C,aAAsB;IAEtB,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAEvD,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;IAC9C,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC;IAEpD,kDAAkD;IAClD,IAAI,mBAAuC,CAAC;IAC5C,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzD,mBAAmB,GAAG,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxE,CAAC;IAED,OAAO;QACL,OAAO,EAAE,EAAE,EAAE,wBAAwB;QACrC,UAAU;QACV,QAAQ;QACR,gBAAgB;QAChB,UAAU;QACV,YAAY;QACZ,gBAAgB;QAChB,aAAa,EAAE,mBAAmB;QAClC,SAAS,EAAE,mBAAmB;KAC/B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,aAAqB,sBAAsB;IAE3C,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAEvD,OAAO;QACL,UAAU;QACV,UAAU;QACV,YAAY,EAAE,aAAa,CAAC,QAAQ,EAAE;QACtC,gBAAgB,EAAE,eAAe,CAAC,QAAQ,EAAE;QAC5C,SAAS,EAAE,mBAAmB;KAC/B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAiB,EACjB,aAAqB,sBAAsB;IAE3C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5B,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACrD,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;SAC1C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"} \ No newline at end of file diff --git a/packages/utils/src/index.d.ts b/packages/utils/src/index.d.ts deleted file mode 100644 index 62eb1ad..0000000 --- a/packages/utils/src/index.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * @brazil-swift-ops/utils - * - * Shared utilities for the Brazil SWIFT Operations Platform - */ -export * from './currency'; -export * from './dates'; -export * from './validation'; -export * from './eo-uplift'; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/utils/src/index.d.ts.map b/packages/utils/src/index.d.ts.map deleted file mode 100644 index 6e0f480..0000000 --- a/packages/utils/src/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"} \ No newline at end of file diff --git a/packages/utils/src/index.js b/packages/utils/src/index.js deleted file mode 100644 index d4b83d0..0000000 --- a/packages/utils/src/index.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * @brazil-swift-ops/utils - * - * Shared utilities for the Brazil SWIFT Operations Platform - */ -export * from './currency'; -export * from './dates'; -export * from './validation'; -export * from './eo-uplift'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/utils/src/index.js.map b/packages/utils/src/index.js.map deleted file mode 100644 index 3c3b17f..0000000 --- a/packages/utils/src/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"} \ No newline at end of file diff --git a/packages/utils/src/validation.d.ts b/packages/utils/src/validation.d.ts deleted file mode 100644 index 1f50800..0000000 --- a/packages/utils/src/validation.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Brazilian ID validation utilities (CPF/CNPJ) - */ -/** - * Validate CPF (Cadastro de Pessoa Física) format and checksum - * CPF format: XXX.XXX.XXX-XX (11 digits) - */ -export declare function validateCPF(cpf: string): { - valid: boolean; - formatted?: string; - error?: string; -}; -/** - * Validate CNPJ (Cadastro Nacional da Pessoa Jurídica) format and checksum - * CNPJ format: XX.XXX.XXX/XXXX-XX (14 digits) - */ -export declare function validateCNPJ(cnpj: string): { - valid: boolean; - formatted?: string; - error?: string; -}; -/** - * Validate Brazilian tax ID (CPF or CNPJ) - */ -export declare function validateBrazilianTaxId(taxId: string): { - valid: boolean; - type?: 'CPF' | 'CNPJ'; - formatted?: string; - error?: string; -}; -/** - * Format tax ID for display (CPF or CNPJ) - */ -export declare function formatTaxId(taxId: string): string; -//# sourceMappingURL=validation.d.ts.map \ No newline at end of file diff --git a/packages/utils/src/validation.d.ts.map b/packages/utils/src/validation.d.ts.map deleted file mode 100644 index dc4246f..0000000 --- a/packages/utils/src/validation.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA2C/F;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAiDjG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG;IACrD,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAqBA;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQjD"} \ No newline at end of file diff --git a/packages/utils/src/validation.js b/packages/utils/src/validation.js deleted file mode 100644 index be4fcf7..0000000 --- a/packages/utils/src/validation.js +++ /dev/null @@ -1,133 +0,0 @@ -/** - * Brazilian ID validation utilities (CPF/CNPJ) - */ -/** - * Validate CPF (Cadastro de Pessoa Física) format and checksum - * CPF format: XXX.XXX.XXX-XX (11 digits) - */ -export function validateCPF(cpf) { - // Remove non-numeric characters - const cleaned = cpf.replace(/\D/g, ''); - // Check length - if (cleaned.length !== 11) { - return { valid: false, error: 'CPF must have 11 digits' }; - } - // Check for invalid patterns (all same digits) - if (/^(\d)\1{10}$/.test(cleaned)) { - return { valid: false, error: 'CPF cannot have all same digits' }; - } - // Validate checksum digits - let sum = 0; - let remainder; - // Validate first check digit - for (let i = 1; i <= 9; i++) { - sum += parseInt(cleaned.substring(i - 1, i)) * (11 - i); - } - remainder = (sum * 10) % 11; - if (remainder === 10 || remainder === 11) - remainder = 0; - if (remainder !== parseInt(cleaned.substring(9, 10))) { - return { valid: false, error: 'Invalid CPF checksum (first digit)' }; - } - // Validate second check digit - sum = 0; - for (let i = 1; i <= 10; i++) { - sum += parseInt(cleaned.substring(i - 1, i)) * (12 - i); - } - remainder = (sum * 10) % 11; - if (remainder === 10 || remainder === 11) - remainder = 0; - if (remainder !== parseInt(cleaned.substring(10, 11))) { - return { valid: false, error: 'Invalid CPF checksum (second digit)' }; - } - // Format CPF - const formatted = `${cleaned.substring(0, 3)}.${cleaned.substring(3, 6)}.${cleaned.substring(6, 9)}-${cleaned.substring(9, 11)}`; - return { valid: true, formatted }; -} -/** - * Validate CNPJ (Cadastro Nacional da Pessoa Jurídica) format and checksum - * CNPJ format: XX.XXX.XXX/XXXX-XX (14 digits) - */ -export function validateCNPJ(cnpj) { - // Remove non-numeric characters - const cleaned = cnpj.replace(/\D/g, ''); - // Check length - if (cleaned.length !== 14) { - return { valid: false, error: 'CNPJ must have 14 digits' }; - } - // Check for invalid patterns (all same digits) - if (/^(\d)\1{13}$/.test(cleaned)) { - return { valid: false, error: 'CNPJ cannot have all same digits' }; - } - // Validate checksum digits - let length = cleaned.length - 2; - let numbers = cleaned.substring(0, length); - const digits = cleaned.substring(length); - let sum = 0; - let pos = length - 7; - // Validate first check digit - for (let i = length; i >= 1; i--) { - sum += parseInt(numbers.charAt(length - i)) * pos--; - if (pos < 2) - pos = 9; - } - let result = sum % 11 < 2 ? 0 : 11 - (sum % 11); - if (result !== parseInt(digits.charAt(0))) { - return { valid: false, error: 'Invalid CNPJ checksum (first digit)' }; - } - // Validate second check digit - length = length + 1; - numbers = cleaned.substring(0, length); - sum = 0; - pos = length - 7; - for (let i = length; i >= 1; i--) { - sum += parseInt(numbers.charAt(length - i)) * pos--; - if (pos < 2) - pos = 9; - } - result = sum % 11 < 2 ? 0 : 11 - (sum % 11); - if (result !== parseInt(digits.charAt(1))) { - return { valid: false, error: 'Invalid CNPJ checksum (second digit)' }; - } - // Format CNPJ - const formatted = `${cleaned.substring(0, 2)}.${cleaned.substring(2, 5)}.${cleaned.substring(5, 8)}/${cleaned.substring(8, 12)}-${cleaned.substring(12, 14)}`; - return { valid: true, formatted }; -} -/** - * Validate Brazilian tax ID (CPF or CNPJ) - */ -export function validateBrazilianTaxId(taxId) { - const cleaned = taxId.replace(/\D/g, ''); - if (cleaned.length === 11) { - const cpfResult = validateCPF(taxId); - return { - ...cpfResult, - type: cpfResult.valid ? 'CPF' : undefined, - }; - } - else if (cleaned.length === 14) { - const cnpjResult = validateCNPJ(taxId); - return { - ...cnpjResult, - type: cnpjResult.valid ? 'CNPJ' : undefined, - }; - } - return { - valid: false, - error: 'Tax ID must be 11 digits (CPF) or 14 digits (CNPJ)', - }; -} -/** - * Format tax ID for display (CPF or CNPJ) - */ -export function formatTaxId(taxId) { - const cleaned = taxId.replace(/\D/g, ''); - if (cleaned.length === 11) { - return `${cleaned.substring(0, 3)}.${cleaned.substring(3, 6)}.${cleaned.substring(6, 9)}-${cleaned.substring(9, 11)}`; - } - else if (cleaned.length === 14) { - return `${cleaned.substring(0, 2)}.${cleaned.substring(2, 5)}.${cleaned.substring(5, 8)}/${cleaned.substring(8, 12)}-${cleaned.substring(12, 14)}`; - } - return taxId; -} -//# sourceMappingURL=validation.js.map \ No newline at end of file diff --git a/packages/utils/src/validation.js.map b/packages/utils/src/validation.js.map deleted file mode 100644 index 8912584..0000000 --- a/packages/utils/src/validation.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"validation.js","sourceRoot":"","sources":["validation.ts"],"names":[],"mappings":"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"} \ No newline at end of file