agentwallet-sdk 3.1.0 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -10
- package/dist/flash/executor.d.ts +119 -0
- package/dist/flash/executor.d.ts.map +1 -0
- package/dist/flash/executor.js +195 -0
- package/dist/flash/executor.js.map +1 -0
- package/dist/flash/index.d.ts +28 -0
- package/dist/flash/index.d.ts.map +1 -0
- package/dist/flash/index.js +25 -0
- package/dist/flash/index.js.map +1 -0
- package/dist/flash/scanner.d.ts +133 -0
- package/dist/flash/scanner.d.ts.map +1 -0
- package/dist/flash/scanner.js +212 -0
- package/dist/flash/scanner.js.map +1 -0
- package/dist/flash/types.d.ts +136 -0
- package/dist/flash/types.d.ts.map +1 -0
- package/dist/flash/types.js +23 -0
- package/dist/flash/types.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -1
- package/dist/mev/index.d.ts +4 -0
- package/dist/mev/index.d.ts.map +1 -0
- package/dist/mev/index.js +4 -0
- package/dist/mev/index.js.map +1 -0
- package/dist/mev/protection.d.ts +54 -0
- package/dist/mev/protection.d.ts.map +1 -0
- package/dist/mev/protection.js +185 -0
- package/dist/mev/protection.js.map +1 -0
- package/dist/mev/risk.d.ts +19 -0
- package/dist/mev/risk.d.ts.map +1 -0
- package/dist/mev/risk.js +95 -0
- package/dist/mev/risk.js.map +1 -0
- package/dist/mev/types.d.ts +49 -0
- package/dist/mev/types.d.ts.map +1 -0
- package/dist/mev/types.js +2 -0
- package/dist/mev/types.js.map +1 -0
- package/dist/solver/adapter.d.ts +47 -0
- package/dist/solver/adapter.d.ts.map +1 -0
- package/dist/solver/adapter.js +138 -0
- package/dist/solver/adapter.js.map +1 -0
- package/dist/solver/analyzer.d.ts +48 -0
- package/dist/solver/analyzer.d.ts.map +1 -0
- package/dist/solver/analyzer.js +89 -0
- package/dist/solver/analyzer.js.map +1 -0
- package/dist/solver/builder.d.ts +31 -0
- package/dist/solver/builder.d.ts.map +1 -0
- package/dist/solver/builder.js +60 -0
- package/dist/solver/builder.js.map +1 -0
- package/dist/solver/index.d.ts +22 -0
- package/dist/solver/index.d.ts.map +1 -0
- package/dist/solver/index.js +21 -0
- package/dist/solver/index.js.map +1 -0
- package/dist/solver/types.d.ts +115 -0
- package/dist/solver/types.d.ts.map +1 -0
- package/dist/solver/types.js +10 -0
- package/dist/solver/types.js.map +1 -0
- package/dist/tax/engine.d.ts +131 -0
- package/dist/tax/engine.d.ts.map +1 -0
- package/dist/tax/engine.js +307 -0
- package/dist/tax/engine.js.map +1 -0
- package/dist/tax/index.d.ts +9 -0
- package/dist/tax/index.d.ts.map +1 -0
- package/dist/tax/index.js +8 -0
- package/dist/tax/index.js.map +1 -0
- package/dist/tax/lots.d.ts +60 -0
- package/dist/tax/lots.d.ts.map +1 -0
- package/dist/tax/lots.js +129 -0
- package/dist/tax/lots.js.map +1 -0
- package/dist/tax/types.d.ts +113 -0
- package/dist/tax/types.d.ts.map +1 -0
- package/dist/tax/types.js +18 -0
- package/dist/tax/types.js.map +1 -0
- package/dist/x402/client.d.ts.map +1 -1
- package/dist/x402/client.js +2 -1
- package/dist/x402/client.js.map +1 -1
- package/dist/yield/index.d.ts +26 -0
- package/dist/yield/index.d.ts.map +1 -0
- package/dist/yield/index.js +25 -0
- package/dist/yield/index.js.map +1 -0
- package/dist/yield/rates.d.ts +114 -0
- package/dist/yield/rates.d.ts.map +1 -0
- package/dist/yield/rates.js +351 -0
- package/dist/yield/rates.js.map +1 -0
- package/dist/yield/types.d.ts +134 -0
- package/dist/yield/types.d.ts.map +1 -0
- package/dist/yield/types.js +24 -0
- package/dist/yield/types.js.map +1 -0
- package/dist/yield/vault.d.ts +112 -0
- package/dist/yield/vault.d.ts.map +1 -0
- package/dist/yield/vault.js +264 -0
- package/dist/yield/vault.js.map +1 -0
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -377,7 +377,25 @@ export function onTransactionExecuted(wallet, callback) {
|
|
|
377
377
|
},
|
|
378
378
|
});
|
|
379
379
|
}
|
|
380
|
+
// [MAX-ADDED] MEV Protection — shields agent swaps from frontrunning, sandwich attacks, backrunning
|
|
381
|
+
export { MEVProtection, MEVRiskAssessor } from './mev/index.js';
|
|
380
382
|
// [MAX-ADDED] Fiat Onramp — optional fiat-to-crypto module (OPT-IN ONLY, requires KYC with provider)
|
|
381
383
|
// Users who fund via direct crypto transfer or bridge are NOT affected by this module.
|
|
382
384
|
export { FiatOnramp } from './fiat/index.js';
|
|
385
|
+
// [MAX-ADDED] Yield Vault — deploy idle capital to DeFi vaults and RWA tokens
|
|
386
|
+
// Supports: Aave V3, Compound V3, Morpho Blue, USDY, USYC, wUSTB (and more)
|
|
387
|
+
// ⚠️ BUIDL: $1M minimum deposit, KYC required — not for general agent use
|
|
388
|
+
// ⚠️ buildDepositTx/buildWithdrawTx generate calldata only — agent signs and sends
|
|
389
|
+
export { YieldVault, YieldRateFetcher, PROTOCOL_ADDRESSES } from './yield/index.js';
|
|
390
|
+
// [MAX-ADDED] Tax / P&L Engine — cost basis tracking, realized gains, IRS-compatible CSV export
|
|
391
|
+
// ⚠️ For informational purposes only — consult a tax professional before filing
|
|
392
|
+
export { TaxEngine, LotManager } from './tax/index.js';
|
|
393
|
+
// [MAX-ADDED] Flash Loan Module — Aave V3 flash loan execution + opportunity scanning
|
|
394
|
+
// Supports: DEX arbitrage, liquidations, collateral swaps, self-liquidation
|
|
395
|
+
// ⚠️ PRODUCTION: Requires deployed FlashLoanExecutor.sol — see src/flash/contracts/
|
|
396
|
+
export { FlashLoanExecutor, AAVE_POOL_ABI, FLASH_EXECUTOR_ABI, AAVE_POOL_ADDRESSES } from './flash/index.js';
|
|
397
|
+
export { FlashOpportunityScanner } from './flash/index.js';
|
|
398
|
+
// [MAX-ADDED] CowSwap Solver — compete in CowSwap auctions as a solver
|
|
399
|
+
// Shadow competition is FREE (no registration/KYC). Production requires DAO bonding pool approval.
|
|
400
|
+
export { CowSolverAdapter, AuctionAnalyzer, SolutionBuilder } from './solver/index.js';
|
|
383
401
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAElB,IAAI,EACJ,WAAW,EASX,WAAW,GAEZ,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAmBvE,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAEvE,iEAAiE;AACjE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,WAAW;AACX,0CAA0C;AAC1C,aAAa,EACb,eAAe,GAChB,MAAM,aAAa,CAAC;AAGrB,yFAAyF;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAS5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,2FAA2F;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAS3D,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAE/B,0FAA0F;AAC1F,kDAAkD;AAClD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,EAC5B,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAc3B,iDAAiD;AACjD,OAAO,EACL,aAAa,EACb,0BAA0B,EAC1B,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAa/B,uFAAuF;AACvF,OAAO,EACL,UAAU,EACV,UAAU,EACV,eAAe,EACf,aAAa,EACb,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAQzB,2CAA2C;AAC3C,OAAO,EACL,eAAe,EACf,UAAU,EACV,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACrB,UAAU,EACV,SAAS,EACT,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAmBzB,oCAAoC;AACpC,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAYzB,yEAAyE;AACzE,OAAO,EACL,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAe3B,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEjG,6DAA6D;AAC7D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAQ5B,MAAM,MAAM,GAA0B;IACpC,IAAI;IACJ,cAAc,EAAE,WAAW;IAC3B,QAAQ,EAAE,OAAO;IACjB,QAAQ;IACR,QAAQ;IACR,OAAO;CACR,CAAC;AAEF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,YAAY,GAAY,WAAW,CAAC;AAEjD,6BAA6B;AAE7B;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAA0D;IACrF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAElE,MAAM,YAAY,GAAG,kBAAkB,CAAC;QACtC,KAAK;QACL,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;KAC/B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC,cAAc;QAC9B,GAAG,EAAE,iBAAiB;QACtB,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE;KAC9D,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,cAAc;QAC9B,QAAQ;QACR,YAAY;QACZ,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,KAAK;KACN,CAAC;AACJ,CAAC;AAID;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,MAAmB;IAEnB,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC;IAElD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC;QACtD,MAAM,CAAC,KAAK;QACZ,MAAM,CAAC,UAAU;QACjB,MAAM,CAAC,WAAW;QAClB,MAAM,CAAC,YAAY,CAAC;KACrB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAEnE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,MAAmD;IAEnD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;IAEjC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;QACpD,MAAM,CAAC,EAAE;QACT,KAAK;QACL,IAAI;KACL,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAE1E,2EAA2E;IAC3E,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9E,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CACjC,CAAC,GAAyB,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,8BAA8B;KACrF,CAAC;IAEF,6DAA6D;IAC7D,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAE/D,OAAO;QACL,QAAQ,EAAE,IAAI,EAAE,8CAA8C;QAC9D,MAAM,EAAE,IAAI;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,QAAiB,YAAY;IAE7B,MAAM,CAAC,UAAU,EAAE,iBAAiB,CAAC,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAE5F,OAAO;QACL,KAAK;QACL,UAAU;QACV,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAc,EACd,SAAiB,EAAE,EACnB,IAAa;IAEb,MAAM,KAAK,GAAG,IAAI,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAChE,MAAM,OAAO,GAAgB,EAAE,CAAC;IAEhC,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,GAC9D,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,CAAC;gBACP,EAAE;gBACF,KAAK;gBACL,IAAI,EAAE,IAAI,EAAE,uCAAuC;gBACnD,KAAK;gBACL,MAAM;gBACN,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;gBAC5B,QAAQ;gBACR,SAAS;aACV,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAc,EACd,IAAY;IAEZ,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACtH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAc,EACd,IAAY;IAEZ,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACrH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,QAAiB,EACjB,UAAmB;IAEnB,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACnI,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAc,EACd,MAAuD;IAEvD,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC;QAC9C,MAAM,CAAC,KAAK;QACZ,MAAM,CAAC,EAAE;QACT,MAAM,CAAC,MAAM;KACd,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,sCAAsC;AAEtC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAOlC;IACC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAElE,MAAM,YAAY,GAAG,kBAAkB,CAAC;QACtC,KAAK;QACL,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;KAC/B,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,WAAW,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC,cAAc;QAC9B,GAAG,EAAE,wBAAwB;QAC7B,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE;KAC9D,CAAC,CAAC;IAEH,kCAAkC;IAClC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;QAClD,MAAM,CAAC,aAAa;QACpB,MAAM,CAAC,OAAO;KACf,CAAY,CAAC;IAEd,SAAS;IACT,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;QAC/C,MAAM,CAAC,aAAa;QACpB,MAAM,CAAC,OAAO;KACf,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAErD,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,uBAAuB;AAElD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAMtC;IACC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAElE,MAAM,YAAY,GAAG,kBAAkB,CAAC;QACtC,KAAK;QACL,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;KAC/B,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,WAAW,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC,cAAc;QAC9B,GAAG,EAAE,wBAAwB;QAC7B,MAAM,EAAE,YAAY;KACrB,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,CAAqB,CAAC;AAC7F,CAAC;AAED,6DAA6D;AAE7D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAc,EACd,QAAiB,YAAY,EAC7B,GAAY;IAEZ,MAAM,CAAC,UAAU,EAAE,iBAAiB,CAAC,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5F,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,GACtE,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpD,MAAM,WAAW,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC,CAAC;IAC/D,MAAM,kBAAkB,GAAG,WAAW,GAAG,EAAE;QACzC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC;QAC5C,CAAC,CAAC,CAAC,CAAC;IAEN,OAAO;QACL,KAAK;QACL,UAAU;QACV,iBAAiB;QACjB,WAAW;QACX,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC;QAClC,WAAW;QACX,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;QAChC,iBAAiB;QACjB,kBAAkB;KACnB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,mBAA8B,EAAE,EAChC,gBAA2B,CAAC,YAAY,CAAC,EACzC,GAAY;IAEZ,uBAAuB;IACvB,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAChE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE;QACpC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE;QAC9B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE;KACrC,CAAC,CAAC;IAEH,wBAAwB;IACxB,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CACvC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACpC,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAY;KACvE,CAAC,CAAC,CACJ,CAAC;IAEF,4BAA4B;IAC5B,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAY,CAAC;IACzE,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,EAAE,AAAD,EAAG,AAAD,EAAG,AAAD,EAAG,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAmD,CAAC;QAC9I,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,IAAI,SAAS,GAAG,EAAE;YAAE,iBAAiB,EAAE,CAAC;IACrE,CAAC;IAED,wCAAwC;IACxC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAC5D,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,aAAa,EAAE,aAAwB;QACvC,OAAO,EAAE,OAAiB;QAC1B,aAAa,EAAE,aAAuB;QACtC,eAAe;QACf,iBAAiB;QACjB,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAc,EACd,SAA0B;IAE1B,MAAM,MAAM,GAAW,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CACzD,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EACzB,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAC/D,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAc,EACd,UAAoD,EAAE;IAEtD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,QAAe,CAAC;IAEnD,MAAM,YAAY,GAAG;QACnB,EAAE,SAAS,EAAE,qBAA8B,EAAE,IAAI,EAAE,WAAoB,EAAE;QACzE,EAAE,SAAS,EAAE,mBAA4B,EAAE,IAAI,EAAE,QAAiB,EAAE;QACpE,EAAE,SAAS,EAAE,qBAA8B,EAAE,IAAI,EAAE,UAAmB,EAAE;QACxE,EAAE,SAAS,EAAE,sBAA+B,EAAE,IAAI,EAAE,WAAoB,EAAE;QAC1E,EAAE,SAAS,EAAE,oBAA6B,EAAE,IAAI,EAAE,eAAwB,EAAE;QAC5E,EAAE,SAAS,EAAE,iBAA0B,EAAE,IAAI,EAAE,iBAA0B,EAAE;KAC5E,CAAC;IAEF,MAAM,UAAU,GAAoB,EAAE,CAAC;IAEvC,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,YAAY,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,iBAAiB,CAAC;YACvD,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,GAAG,EAAE,iBAAiB;YACtB,SAAS;YACT,SAAS;YACT,OAAO;SACR,CAAC,CAAC;QAEH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI;gBACJ,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;gBAClC,eAAe,EAAE,GAAG,CAAC,eAAe,IAAK,IAAa;gBACtD,IAAI,EAAG,GAAW,CAAC,IAAI,IAAI,EAAE;aAC9B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IACjE,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,0BAA0B;AAE1B;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAc,EACd,QAAsC;IAEtC,OAAO,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC;QAC5C,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,GAAG,EAAE,iBAAiB;QACtB,SAAS,EAAE,mBAAmB;QAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACf,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAI,GAAW,CAAC,IAAI,CAAC;gBAC/B,QAAQ,CAAC;oBACP,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,eAAe,EAAE,GAAG,CAAC,eAAe;iBACrC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAc,EACd,QAAuG;IAEvG,OAAO,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC;QAC5C,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,GAAG,EAAE,iBAAiB;QACtB,SAAS,EAAE,qBAAqB;QAChC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACf,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAI,GAAW,CAAC,IAAI,CAAC;gBAC/B,QAAQ,CAAC;oBACP,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,eAAe,EAAE,GAAG,CAAC,eAAgB;iBACtC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAGD,qGAAqG;AACrG,uFAAuF;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { MEVRiskAssessor } from './risk.js';
|
|
2
|
+
export { MEVProtection } from './protection.js';
|
|
3
|
+
export type { MEVRiskLevel, ProtectionMethod, MEVRiskAssessment, MEVProtectionConfig, ProtectedSwapResult, FlashbotsBundle, } from './types.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mev/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,GAChB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mev/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ethers } from 'ethers';
|
|
2
|
+
import type { MEVProtectionConfig, MEVRiskAssessment, ProtectedSwapResult, ProtectionMethod } from './types.js';
|
|
3
|
+
export declare class MEVProtection {
|
|
4
|
+
private config;
|
|
5
|
+
private assessor;
|
|
6
|
+
/** Injectable provider factory — override in tests to avoid live RPC calls */
|
|
7
|
+
protected _createProvider: (url: string) => ethers.JsonRpcProvider;
|
|
8
|
+
constructor(config: MEVProtectionConfig);
|
|
9
|
+
/**
|
|
10
|
+
* Assess MEV risk for a proposed swap.
|
|
11
|
+
* Fetches live gas price from provider if available.
|
|
12
|
+
*/
|
|
13
|
+
assessRisk(params: {
|
|
14
|
+
fromToken: string;
|
|
15
|
+
toToken: string;
|
|
16
|
+
amountUsd: number;
|
|
17
|
+
slippageBps: number;
|
|
18
|
+
chain: string;
|
|
19
|
+
provider?: ethers.JsonRpcProvider;
|
|
20
|
+
}): Promise<MEVRiskAssessment>;
|
|
21
|
+
/**
|
|
22
|
+
* Get the protected RPC URL for a given protection method.
|
|
23
|
+
*/
|
|
24
|
+
getProtectedRpc(method: ProtectionMethod): string;
|
|
25
|
+
/**
|
|
26
|
+
* Submit a signed transaction through the appropriate protected route.
|
|
27
|
+
* Main API called by SmartSwapRouter.
|
|
28
|
+
*/
|
|
29
|
+
submitProtected(params: {
|
|
30
|
+
signedTx: string;
|
|
31
|
+
assessment: MEVRiskAssessment;
|
|
32
|
+
provider: ethers.JsonRpcProvider;
|
|
33
|
+
targetBlock?: number;
|
|
34
|
+
}): Promise<ProtectedSwapResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Flashbots Protect: broadcast via rpc.flashbots.net.
|
|
37
|
+
* No bundle auth required. Best for most users.
|
|
38
|
+
*/
|
|
39
|
+
private submitViaFlashbotsProtect;
|
|
40
|
+
/**
|
|
41
|
+
* Flashbots Bundle: maximum protection for critical-risk swaps.
|
|
42
|
+
* Falls back to Flashbots Protect RPC if no bundle signing key configured.
|
|
43
|
+
*/
|
|
44
|
+
private submitViaFlashbotsBundle;
|
|
45
|
+
/**
|
|
46
|
+
* MEV Blocker: alternative private RPC by CoW Protocol.
|
|
47
|
+
*/
|
|
48
|
+
private submitViaMEVBlocker;
|
|
49
|
+
/**
|
|
50
|
+
* Public mempool fallback for low-risk swaps.
|
|
51
|
+
*/
|
|
52
|
+
private submitPublic;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=protection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protection.d.ts","sourceRoot":"","sources":["../../src/mev/protection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAWpB,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,QAAQ,CAAkB;IAClC,8EAA8E;IAC9E,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,eAAe,CAAC;gBAEvD,MAAM,EAAE,mBAAmB;IAavC;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC;KACnC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwB9B;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;IAcjD;;;OAGG;IACG,eAAe,CAAC,MAAM,EAAE;QAC5B,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,iBAAiB,CAAC;QAC9B,QAAQ,EAAE,MAAM,CAAC,eAAe,CAAC;QACjC,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAiChC;;;OAGG;YACW,yBAAyB;IAqBvC;;;OAGG;YACW,wBAAwB;IA4DtC;;OAEG;YACW,mBAAmB;IAqBjC;;OAEG;YACW,YAAY;CAiB3B"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { ethers } from 'ethers';
|
|
2
|
+
import { MEVRiskAssessor } from './risk.js';
|
|
3
|
+
const DEFAULTS = {
|
|
4
|
+
autoProtectAboveRisk: 'medium',
|
|
5
|
+
flashbotsRpcUrl: 'https://rpc.flashbots.net',
|
|
6
|
+
mevBlockerRpcUrl: 'https://rpc.mevblocker.io',
|
|
7
|
+
maxProtectionLatencyMs: 5000,
|
|
8
|
+
minSwapUsdForProtection: 100,
|
|
9
|
+
};
|
|
10
|
+
export class MEVProtection {
|
|
11
|
+
constructor(config) {
|
|
12
|
+
this.config = {
|
|
13
|
+
enabled: config.enabled,
|
|
14
|
+
autoProtectAboveRisk: config.autoProtectAboveRisk ?? DEFAULTS.autoProtectAboveRisk,
|
|
15
|
+
flashbotsRpcUrl: config.flashbotsRpcUrl ?? DEFAULTS.flashbotsRpcUrl,
|
|
16
|
+
mevBlockerRpcUrl: config.mevBlockerRpcUrl ?? DEFAULTS.mevBlockerRpcUrl,
|
|
17
|
+
maxProtectionLatencyMs: config.maxProtectionLatencyMs ?? DEFAULTS.maxProtectionLatencyMs,
|
|
18
|
+
minSwapUsdForProtection: config.minSwapUsdForProtection ?? DEFAULTS.minSwapUsdForProtection,
|
|
19
|
+
};
|
|
20
|
+
this.assessor = new MEVRiskAssessor();
|
|
21
|
+
this._createProvider = (url) => new ethers.JsonRpcProvider(url);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Assess MEV risk for a proposed swap.
|
|
25
|
+
* Fetches live gas price from provider if available.
|
|
26
|
+
*/
|
|
27
|
+
async assessRisk(params) {
|
|
28
|
+
let gasPriceGwei = 20; // sensible default
|
|
29
|
+
if (params.provider) {
|
|
30
|
+
try {
|
|
31
|
+
const feeData = await params.provider.getFeeData();
|
|
32
|
+
if (feeData.gasPrice) {
|
|
33
|
+
gasPriceGwei = Number(ethers.formatUnits(feeData.gasPrice, 'gwei'));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// fallback to default
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return this.assessor.assess({
|
|
41
|
+
fromToken: params.fromToken,
|
|
42
|
+
toToken: params.toToken,
|
|
43
|
+
amountUsd: params.amountUsd,
|
|
44
|
+
slippageBps: params.slippageBps,
|
|
45
|
+
gasPriceGwei,
|
|
46
|
+
chain: params.chain,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get the protected RPC URL for a given protection method.
|
|
51
|
+
*/
|
|
52
|
+
getProtectedRpc(method) {
|
|
53
|
+
switch (method) {
|
|
54
|
+
case 'flashbots-protect':
|
|
55
|
+
return this.config.flashbotsRpcUrl;
|
|
56
|
+
case 'private-rpc':
|
|
57
|
+
return this.config.mevBlockerRpcUrl;
|
|
58
|
+
case 'flashbots-bundle':
|
|
59
|
+
case 'cowswap-order':
|
|
60
|
+
case 'none':
|
|
61
|
+
default:
|
|
62
|
+
return '';
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Submit a signed transaction through the appropriate protected route.
|
|
67
|
+
* Main API called by SmartSwapRouter.
|
|
68
|
+
*/
|
|
69
|
+
async submitProtected(params) {
|
|
70
|
+
const startTime = Date.now();
|
|
71
|
+
switch (params.assessment.recommendedMethod) {
|
|
72
|
+
case 'flashbots-protect':
|
|
73
|
+
return this.submitViaFlashbotsProtect(params.signedTx, params.provider, startTime, params.assessment);
|
|
74
|
+
case 'flashbots-bundle':
|
|
75
|
+
return this.submitViaFlashbotsBundle(params.signedTx, params.targetBlock, startTime, params.assessment);
|
|
76
|
+
case 'private-rpc':
|
|
77
|
+
return this.submitViaMEVBlocker(params.signedTx, params.provider, startTime, params.assessment);
|
|
78
|
+
default:
|
|
79
|
+
return this.submitPublic(params.signedTx, params.provider, startTime, params.assessment);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Flashbots Protect: broadcast via rpc.flashbots.net.
|
|
84
|
+
* No bundle auth required. Best for most users.
|
|
85
|
+
*/
|
|
86
|
+
async submitViaFlashbotsProtect(signedTx, _provider, startTime, assessment) {
|
|
87
|
+
const protectedProvider = this._createProvider(this.config.flashbotsRpcUrl);
|
|
88
|
+
const txResponse = await protectedProvider.broadcastTransaction(signedTx);
|
|
89
|
+
const receipt = await txResponse.wait(1);
|
|
90
|
+
return {
|
|
91
|
+
success: receipt?.status === 1,
|
|
92
|
+
txHash: receipt?.hash,
|
|
93
|
+
protectionMethod: 'flashbots-protect',
|
|
94
|
+
riskAssessment: assessment,
|
|
95
|
+
mevSavedUsd: assessment.estimatedSavingsUsd,
|
|
96
|
+
blockNumber: receipt?.blockNumber,
|
|
97
|
+
latencyMs: Date.now() - startTime,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Flashbots Bundle: maximum protection for critical-risk swaps.
|
|
102
|
+
* Falls back to Flashbots Protect RPC if no bundle signing key configured.
|
|
103
|
+
*/
|
|
104
|
+
async submitViaFlashbotsBundle(signedTx, targetBlock, startTime, assessment) {
|
|
105
|
+
// Full bundle submission requires a Flashbots signing key (ECDSA).
|
|
106
|
+
// Without one, we fall back to Flashbots Protect RPC which still gives
|
|
107
|
+
// strong protection for most users.
|
|
108
|
+
const protectedProvider = this._createProvider(this.config.flashbotsRpcUrl);
|
|
109
|
+
try {
|
|
110
|
+
// Attempt bundle submission via relay
|
|
111
|
+
const currentBlock = await protectedProvider.getBlockNumber();
|
|
112
|
+
const blockTarget = targetBlock ?? currentBlock + 2;
|
|
113
|
+
const blockHex = `0x${blockTarget.toString(16)}`;
|
|
114
|
+
const response = await fetch('https://relay.flashbots.net', {
|
|
115
|
+
method: 'POST',
|
|
116
|
+
headers: { 'Content-Type': 'application/json' },
|
|
117
|
+
body: JSON.stringify({
|
|
118
|
+
jsonrpc: '2.0',
|
|
119
|
+
id: 1,
|
|
120
|
+
method: 'eth_sendBundle',
|
|
121
|
+
params: [{ txs: [signedTx], blockNumber: blockHex }],
|
|
122
|
+
}),
|
|
123
|
+
});
|
|
124
|
+
if (response.ok) {
|
|
125
|
+
const json = await response.json();
|
|
126
|
+
const bundleHash = json.result?.bundleHash;
|
|
127
|
+
return {
|
|
128
|
+
success: true,
|
|
129
|
+
protectionMethod: 'flashbots-bundle',
|
|
130
|
+
bundleHash,
|
|
131
|
+
riskAssessment: assessment,
|
|
132
|
+
mevSavedUsd: assessment.estimatedSavingsUsd,
|
|
133
|
+
latencyMs: Date.now() - startTime,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
// Bundle submission failed — fall through to Protect RPC fallback
|
|
139
|
+
}
|
|
140
|
+
// Fallback: broadcast via Flashbots Protect RPC
|
|
141
|
+
const txResponse = await protectedProvider.broadcastTransaction(signedTx);
|
|
142
|
+
const receipt = await txResponse.wait(1);
|
|
143
|
+
return {
|
|
144
|
+
success: receipt?.status === 1,
|
|
145
|
+
txHash: receipt?.hash,
|
|
146
|
+
protectionMethod: 'flashbots-bundle',
|
|
147
|
+
riskAssessment: assessment,
|
|
148
|
+
mevSavedUsd: assessment.estimatedSavingsUsd,
|
|
149
|
+
blockNumber: receipt?.blockNumber,
|
|
150
|
+
latencyMs: Date.now() - startTime,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* MEV Blocker: alternative private RPC by CoW Protocol.
|
|
155
|
+
*/
|
|
156
|
+
async submitViaMEVBlocker(signedTx, _provider, startTime, assessment) {
|
|
157
|
+
const mevBlockerProvider = this._createProvider(this.config.mevBlockerRpcUrl);
|
|
158
|
+
const txResponse = await mevBlockerProvider.broadcastTransaction(signedTx);
|
|
159
|
+
const receipt = await txResponse.wait(1);
|
|
160
|
+
return {
|
|
161
|
+
success: receipt?.status === 1,
|
|
162
|
+
txHash: receipt?.hash,
|
|
163
|
+
protectionMethod: 'private-rpc',
|
|
164
|
+
riskAssessment: assessment,
|
|
165
|
+
mevSavedUsd: assessment.estimatedSavingsUsd,
|
|
166
|
+
blockNumber: receipt?.blockNumber,
|
|
167
|
+
latencyMs: Date.now() - startTime,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Public mempool fallback for low-risk swaps.
|
|
172
|
+
*/
|
|
173
|
+
async submitPublic(signedTx, provider, startTime, assessment) {
|
|
174
|
+
const txResponse = await provider.broadcastTransaction(signedTx);
|
|
175
|
+
const receipt = await txResponse.wait(1);
|
|
176
|
+
return {
|
|
177
|
+
success: receipt?.status === 1,
|
|
178
|
+
txHash: receipt?.hash,
|
|
179
|
+
protectionMethod: 'none',
|
|
180
|
+
riskAssessment: assessment,
|
|
181
|
+
latencyMs: Date.now() - startTime,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=protection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protection.js","sourceRoot":"","sources":["../../src/mev/protection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { MEVRiskAssessment } from './types.js';
|
|
2
|
+
/** Deterministic MEV risk scorer — no external calls required */
|
|
3
|
+
export declare class MEVRiskAssessor {
|
|
4
|
+
/**
|
|
5
|
+
* Assess MEV risk for a proposed swap.
|
|
6
|
+
* Scoring model produces a 0-100 risk score mapped to a risk level.
|
|
7
|
+
*/
|
|
8
|
+
assess(params: {
|
|
9
|
+
fromToken: string;
|
|
10
|
+
toToken: string;
|
|
11
|
+
amountUsd: number;
|
|
12
|
+
slippageBps: number;
|
|
13
|
+
gasPriceGwei: number;
|
|
14
|
+
chain: string;
|
|
15
|
+
}): MEVRiskAssessment;
|
|
16
|
+
/** Check if a token pair is "popular" (highly watched by MEV bots) */
|
|
17
|
+
isPopularPair(fromToken: string, toToken: string): boolean;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=risk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"risk.d.ts","sourceRoot":"","sources":["../../src/mev/risk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAkC,MAAM,YAAY,CAAC;AAOpF,iEAAiE;AACjE,qBAAa,eAAe;IAC1B;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,iBAAiB;IA6ErB,sEAAsE;IACtE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;CAG3D"}
|
package/dist/mev/risk.js
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/** Popular tokens that are heavily watched by MEV bots */
|
|
2
|
+
const POPULAR_TOKENS = new Set([
|
|
3
|
+
'ETH', 'WETH', 'USDC', 'USDT', 'DAI', 'WBTC', 'SOL', 'WSOL',
|
|
4
|
+
]);
|
|
5
|
+
/** Deterministic MEV risk scorer — no external calls required */
|
|
6
|
+
export class MEVRiskAssessor {
|
|
7
|
+
/**
|
|
8
|
+
* Assess MEV risk for a proposed swap.
|
|
9
|
+
* Scoring model produces a 0-100 risk score mapped to a risk level.
|
|
10
|
+
*/
|
|
11
|
+
assess(params) {
|
|
12
|
+
const { fromToken, toToken, amountUsd, slippageBps, gasPriceGwei, chain } = params;
|
|
13
|
+
let score = 0;
|
|
14
|
+
// 1. Size risk
|
|
15
|
+
if (amountUsd >= 10000)
|
|
16
|
+
score += 40;
|
|
17
|
+
else if (amountUsd >= 1000)
|
|
18
|
+
score += 20;
|
|
19
|
+
else if (amountUsd >= 100)
|
|
20
|
+
score += 10;
|
|
21
|
+
// < $100 = 0 pts
|
|
22
|
+
// 2. Slippage risk (high slippage = easy sandwich)
|
|
23
|
+
if (slippageBps > 200)
|
|
24
|
+
score += 20;
|
|
25
|
+
else if (slippageBps >= 50)
|
|
26
|
+
score += 10;
|
|
27
|
+
// 3. Popular pair risk (heavily watched by bots)
|
|
28
|
+
if (this.isPopularPair(fromToken, toToken))
|
|
29
|
+
score += 15;
|
|
30
|
+
// 4. Gas spike risk (high gas = bots are active)
|
|
31
|
+
if (gasPriceGwei > 100)
|
|
32
|
+
score += 25;
|
|
33
|
+
else if (gasPriceGwei > 50)
|
|
34
|
+
score += 15;
|
|
35
|
+
// 5. Chain risk
|
|
36
|
+
const chainLower = chain.toLowerCase();
|
|
37
|
+
if (chainLower === 'ethereum' || chainLower === 'mainnet')
|
|
38
|
+
score += 10;
|
|
39
|
+
else if (chainLower === 'arbitrum')
|
|
40
|
+
score += 5;
|
|
41
|
+
else if (chainLower === 'base')
|
|
42
|
+
score += 3;
|
|
43
|
+
// Cap at 100
|
|
44
|
+
score = Math.min(100, score);
|
|
45
|
+
// Map score to risk level
|
|
46
|
+
let riskLevel;
|
|
47
|
+
if (score >= 76)
|
|
48
|
+
riskLevel = 'critical';
|
|
49
|
+
else if (score >= 51)
|
|
50
|
+
riskLevel = 'high';
|
|
51
|
+
else if (score >= 26)
|
|
52
|
+
riskLevel = 'medium';
|
|
53
|
+
else
|
|
54
|
+
riskLevel = 'low';
|
|
55
|
+
// Recommended method by risk level
|
|
56
|
+
let recommendedMethod;
|
|
57
|
+
if (riskLevel === 'critical')
|
|
58
|
+
recommendedMethod = 'flashbots-bundle';
|
|
59
|
+
else if (riskLevel === 'high')
|
|
60
|
+
recommendedMethod = 'flashbots-protect';
|
|
61
|
+
else if (riskLevel === 'medium')
|
|
62
|
+
recommendedMethod = 'private-rpc';
|
|
63
|
+
else
|
|
64
|
+
recommendedMethod = 'none';
|
|
65
|
+
// Estimated savings: risk-weighted sandwich loss model
|
|
66
|
+
// ~0.5-2% of swap size; simplified: amountUsd * riskScore/100 * 0.01
|
|
67
|
+
const estimatedSavingsUsd = amountUsd * (score / 100) * 0.01;
|
|
68
|
+
// Derive factor labels
|
|
69
|
+
const gasPrice = gasPriceGwei > 100 ? 'spike' :
|
|
70
|
+
gasPriceGwei > 50 ? 'high' :
|
|
71
|
+
gasPriceGwei > 20 ? 'normal' : 'low';
|
|
72
|
+
const tokenPairLiquidity = this.isPopularPair(fromToken, toToken) ? 'high' : 'low';
|
|
73
|
+
const marketVolatility = gasPriceGwei > 100 ? 'extreme' :
|
|
74
|
+
gasPriceGwei > 50 ? 'volatile' : 'stable';
|
|
75
|
+
return {
|
|
76
|
+
riskLevel,
|
|
77
|
+
riskScore: score,
|
|
78
|
+
factors: {
|
|
79
|
+
swapSizeUsd: amountUsd,
|
|
80
|
+
slippageBps,
|
|
81
|
+
tokenPairLiquidity,
|
|
82
|
+
marketVolatility,
|
|
83
|
+
gasPrice,
|
|
84
|
+
isPopularPair: this.isPopularPair(fromToken, toToken),
|
|
85
|
+
},
|
|
86
|
+
recommendedMethod,
|
|
87
|
+
estimatedSavingsUsd,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/** Check if a token pair is "popular" (highly watched by MEV bots) */
|
|
91
|
+
isPopularPair(fromToken, toToken) {
|
|
92
|
+
return POPULAR_TOKENS.has(fromToken.toUpperCase()) && POPULAR_TOKENS.has(toToken.toUpperCase());
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=risk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"risk.js","sourceRoot":"","sources":["../../src/mev/risk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export type MEVRiskLevel = 'low' | 'medium' | 'high' | 'critical';
|
|
2
|
+
export type ProtectionMethod = 'flashbots-protect' | 'flashbots-bundle' | 'cowswap-order' | 'private-rpc' | 'none';
|
|
3
|
+
export interface MEVRiskAssessment {
|
|
4
|
+
riskLevel: MEVRiskLevel;
|
|
5
|
+
riskScore: number;
|
|
6
|
+
factors: {
|
|
7
|
+
swapSizeUsd: number;
|
|
8
|
+
slippageBps: number;
|
|
9
|
+
tokenPairLiquidity: 'high' | 'medium' | 'low';
|
|
10
|
+
marketVolatility: 'stable' | 'volatile' | 'extreme';
|
|
11
|
+
gasPrice: 'low' | 'normal' | 'high' | 'spike';
|
|
12
|
+
isPopularPair: boolean;
|
|
13
|
+
};
|
|
14
|
+
recommendedMethod: ProtectionMethod;
|
|
15
|
+
estimatedSavingsUsd: number;
|
|
16
|
+
}
|
|
17
|
+
export interface MEVProtectionConfig {
|
|
18
|
+
enabled: boolean;
|
|
19
|
+
/** Risk threshold above which protection is auto-applied */
|
|
20
|
+
autoProtectAboveRisk?: MEVRiskLevel;
|
|
21
|
+
/** Flashbots RPC endpoint */
|
|
22
|
+
flashbotsRpcUrl?: string;
|
|
23
|
+
/** MEV Blocker RPC (alternative) */
|
|
24
|
+
mevBlockerRpcUrl?: string;
|
|
25
|
+
/** Max extra latency accepted for protection (ms) */
|
|
26
|
+
maxProtectionLatencyMs?: number;
|
|
27
|
+
/** Minimum swap USD value to trigger protection */
|
|
28
|
+
minSwapUsdForProtection?: number;
|
|
29
|
+
}
|
|
30
|
+
export interface ProtectedSwapResult {
|
|
31
|
+
success: boolean;
|
|
32
|
+
txHash?: string;
|
|
33
|
+
protectionMethod: ProtectionMethod;
|
|
34
|
+
bundleHash?: string;
|
|
35
|
+
riskAssessment: MEVRiskAssessment;
|
|
36
|
+
/** Gas saved vs public mempool (estimated) */
|
|
37
|
+
gasSavedGwei?: number;
|
|
38
|
+
/** MEV loss avoided (estimated USD) */
|
|
39
|
+
mevSavedUsd?: number;
|
|
40
|
+
blockNumber?: number;
|
|
41
|
+
latencyMs: number;
|
|
42
|
+
}
|
|
43
|
+
export interface FlashbotsBundle {
|
|
44
|
+
transactions: string[];
|
|
45
|
+
blockNumber: string;
|
|
46
|
+
minTimestamp?: number;
|
|
47
|
+
maxTimestamp?: number;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mev/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAElE,MAAM,MAAM,gBAAgB,GACxB,mBAAmB,GACnB,kBAAkB,GAClB,eAAe,GACf,aAAa,GACb,MAAM,CAAC;AAEX,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,YAAY,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;QAC9C,gBAAgB,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;QACpD,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;QAC9C,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,iBAAiB,EAAE,gBAAgB,CAAC;IACpC,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,4DAA4D;IAC5D,oBAAoB,CAAC,EAAE,YAAY,CAAC;IACpC,6BAA6B;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mDAAmD;IACnD,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,iBAAiB,CAAC;IAClC,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mev/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CowSolverAdapter — Main entry point for the CowSwap solver integration.
|
|
3
|
+
*
|
|
4
|
+
* ⚠️ IMPORTANT: Shadow competition is FREE and requires no registration or KYC.
|
|
5
|
+
* Production solver requires CowSwap DAO bonding pool approval and KYC.
|
|
6
|
+
* This adapter defaults to 'shadow' mode — never assume production credentials.
|
|
7
|
+
*
|
|
8
|
+
* Flow:
|
|
9
|
+
* 1. CowSwap broadcasts an auction batch to all registered solvers.
|
|
10
|
+
* 2. We call processAuction() — must return within ~30 seconds.
|
|
11
|
+
* 3. We detect CoW (Coincidence of Wants) first — zero DEX fees.
|
|
12
|
+
* 4. Remaining orders are routed through SmartSwapRouter (7 DEXes in parallel).
|
|
13
|
+
* 5. We call submitSolution() with the best settlement we can construct.
|
|
14
|
+
* 6. If we win, we earn the surplus above user limit prices.
|
|
15
|
+
*/
|
|
16
|
+
import type { SmartSwapRouter } from '../swap/router/router.js';
|
|
17
|
+
import type { CowAuctionBatch, SolverConfig, SolverSolution, SolverStats, SolutionSubmissionResult } from './types.js';
|
|
18
|
+
export declare class CowSolverAdapter {
|
|
19
|
+
private config;
|
|
20
|
+
private analyzer;
|
|
21
|
+
private builder;
|
|
22
|
+
private stats;
|
|
23
|
+
/** CowSwap competition API endpoints */
|
|
24
|
+
private readonly ENDPOINTS;
|
|
25
|
+
constructor(config: SolverConfig, router?: SmartSwapRouter);
|
|
26
|
+
/**
|
|
27
|
+
* Process an auction batch and return our best settlement solution.
|
|
28
|
+
*
|
|
29
|
+
* Called when CowSwap sends us an auction. Must respond within 30 seconds.
|
|
30
|
+
* Returns null if we have nothing viable to submit.
|
|
31
|
+
*/
|
|
32
|
+
processAuction(batch: CowAuctionBatch): Promise<SolverSolution | null>;
|
|
33
|
+
/**
|
|
34
|
+
* Submit a solution to CowSwap.
|
|
35
|
+
*
|
|
36
|
+
* In shadow mode, the solution is evaluated but never executed on-chain —
|
|
37
|
+
* useful for measuring competitiveness before applying for the production
|
|
38
|
+
* bonding pool.
|
|
39
|
+
*/
|
|
40
|
+
submitSolution(solution: SolverSolution): Promise<SolutionSubmissionResult>;
|
|
41
|
+
/** Get current solver performance statistics */
|
|
42
|
+
getStats(): SolverStats;
|
|
43
|
+
/** Get the CowSwap API base URL for the configured environment */
|
|
44
|
+
getApiUrl(): string;
|
|
45
|
+
private getChainId;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/solver/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,EACX,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAIpB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,KAAK,CAAc;IAE3B,wCAAwC;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAIxB;gBAEU,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,eAAe;IAyB1D;;;;;OAKG;IACG,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAmD5E;;;;;;OAMG;IACG,cAAc,CAClB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,wBAAwB,CAAC;IAgDpC,gDAAgD;IAChD,QAAQ,IAAI,WAAW;IAIvB,kEAAkE;IAClE,SAAS,IAAI,MAAM;IAInB,OAAO,CAAC,UAAU;CASnB"}
|