@debridge-finance/borderless-validation-sdk 0.0.0-dev-3dc1a82 → 0.0.1
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/dist/cjs/helpers/address.js +18 -31
- package/dist/cjs/helpers/address.js.map +1 -1
- package/dist/cjs/helpers/constants.js +6 -0
- package/dist/cjs/helpers/constants.js.map +1 -0
- package/dist/cjs/helpers/evm-action.js +3 -3
- package/dist/cjs/helpers/evm-action.js.map +1 -1
- package/dist/cjs/helpers/evm-intent-id.js +1 -1
- package/dist/cjs/helpers/evm-intent-id.js.map +1 -1
- package/dist/cjs/helpers/evm-trade-amounts.js +1 -36
- package/dist/cjs/helpers/evm-trade-amounts.js.map +1 -1
- package/dist/cjs/types/enums.js +2 -26
- package/dist/cjs/types/enums.js.map +1 -1
- package/dist/cjs/types/request.js +2 -25
- package/dist/cjs/types/request.js.map +1 -1
- package/dist/cjs/types/response.js +4 -120
- package/dist/cjs/types/response.js.map +1 -1
- package/dist/cjs/types/validation.js +10 -74
- package/dist/cjs/types/validation.js.map +1 -1
- package/dist/cjs/validations/evm-caveats.js +14 -4
- package/dist/cjs/validations/evm-caveats.js.map +1 -1
- package/dist/cjs/validations/evm-op-budget.js +10 -13
- package/dist/cjs/validations/evm-op-budget.js.map +1 -1
- package/dist/cjs/validations/evm-op-gas-compensation.js +152 -0
- package/dist/cjs/validations/evm-op-gas-compensation.js.map +1 -0
- package/dist/cjs/validations/evm-op-hook.js +3 -410
- package/dist/cjs/validations/evm-op-hook.js.map +1 -1
- package/dist/cjs/validations/evm-op-wrap.js +7 -10
- package/dist/cjs/validations/evm-op-wrap.js.map +1 -1
- package/dist/cjs/validations/evm-required-actions.js +9 -7
- package/dist/cjs/validations/evm-required-actions.js.map +1 -1
- package/dist/cjs/validations/evm-sign712-metamask.js +94 -17
- package/dist/cjs/validations/evm-sign712-metamask.js.map +1 -1
- package/dist/cjs/validations/evm-sign7702.js +22 -34
- package/dist/cjs/validations/evm-sign7702.js.map +1 -1
- package/dist/cjs/validations/hooks-common.js +37 -252
- package/dist/cjs/validations/hooks-common.js.map +1 -1
- package/dist/cjs/validations/required-actions.js +7 -4
- package/dist/cjs/validations/required-actions.js.map +1 -1
- package/dist/cjs/validations/solana-hook.js +18 -32
- package/dist/cjs/validations/solana-hook.js.map +1 -1
- package/dist/cjs/validations/solana-op-budget.js +18 -56
- package/dist/cjs/validations/solana-op-budget.js.map +1 -1
- package/dist/cjs/validations/solana-op-wrap.js +13 -46
- package/dist/cjs/validations/solana-op-wrap.js.map +1 -1
- package/dist/cjs/validations/solana-required-actions.js +3 -3
- package/dist/cjs/validations/solana-required-actions.js.map +1 -1
- package/dist/cjs/validations/solana-transaction.js +5 -5
- package/dist/cjs/validations/solana-transaction.js.map +1 -1
- package/dist/cjs/validations/trade-grouping.js +1 -68
- package/dist/cjs/validations/trade-grouping.js.map +1 -1
- package/dist/cjs/validations/trades.js +37 -59
- package/dist/cjs/validations/trades.js.map +1 -1
- package/dist/cjs/validator.js +16 -11
- package/dist/cjs/validator.js.map +1 -1
- package/dist/cjs/whitelists/environment-config.js +28 -47
- package/dist/cjs/whitelists/environment-config.js.map +1 -1
- package/dist/cjs/whitelists/evm/caveat-enforcers.js +5 -21
- package/dist/cjs/whitelists/evm/caveat-enforcers.js.map +1 -1
- package/dist/cjs/whitelists/evm/delegation-manager.js +2 -7
- package/dist/cjs/whitelists/evm/delegation-manager.js.map +1 -1
- package/dist/cjs/whitelists/evm/eip7702-delegation.js +2 -7
- package/dist/cjs/whitelists/evm/eip7702-delegation.js.map +1 -1
- package/dist/cjs/whitelists/evm/index.js +1 -14
- package/dist/cjs/whitelists/evm/index.js.map +1 -1
- package/dist/cjs/whitelists/evm/permit2.js +12 -16
- package/dist/cjs/whitelists/evm/permit2.js.map +1 -1
- package/dist/cjs/whitelists/evm/weth.js +5 -16
- package/dist/cjs/whitelists/evm/weth.js.map +1 -1
- package/dist/cjs/whitelists/solana/intent-signature.js +1 -0
- package/dist/cjs/whitelists/solana/intent-signature.js.map +1 -1
- package/dist/cjs/whitelists/subscription-to-chain-id.js +0 -10
- package/dist/cjs/whitelists/subscription-to-chain-id.js.map +1 -1
- package/dist/cjs/whitelists/types.js +3 -13
- package/dist/cjs/whitelists/types.js.map +1 -1
- package/dist/esm/helpers/address.js +17 -28
- package/dist/esm/helpers/address.js.map +1 -1
- package/dist/esm/helpers/constants.js +3 -0
- package/dist/esm/helpers/constants.js.map +1 -0
- package/dist/esm/helpers/evm-action.js +3 -3
- package/dist/esm/helpers/evm-action.js.map +1 -1
- package/dist/esm/helpers/evm-intent-id.js +1 -1
- package/dist/esm/helpers/evm-intent-id.js.map +1 -1
- package/dist/esm/helpers/evm-trade-amounts.js +1 -36
- package/dist/esm/helpers/evm-trade-amounts.js.map +1 -1
- package/dist/esm/types/enums.js +1 -25
- package/dist/esm/types/enums.js.map +1 -1
- package/dist/esm/types/request.js +3 -26
- package/dist/esm/types/request.js.map +1 -1
- package/dist/esm/types/response.js +3 -119
- package/dist/esm/types/response.js.map +1 -1
- package/dist/esm/types/validation.js +10 -74
- package/dist/esm/types/validation.js.map +1 -1
- package/dist/esm/validations/evm-caveats.js +14 -4
- package/dist/esm/validations/evm-caveats.js.map +1 -1
- package/dist/esm/validations/evm-op-budget.js +10 -13
- package/dist/esm/validations/evm-op-budget.js.map +1 -1
- package/dist/esm/validations/evm-op-gas-compensation.js +149 -0
- package/dist/esm/validations/evm-op-gas-compensation.js.map +1 -0
- package/dist/esm/validations/evm-op-hook.js +2 -409
- package/dist/esm/validations/evm-op-hook.js.map +1 -1
- package/dist/esm/validations/evm-op-wrap.js +7 -10
- package/dist/esm/validations/evm-op-wrap.js.map +1 -1
- package/dist/esm/validations/evm-required-actions.js +9 -7
- package/dist/esm/validations/evm-required-actions.js.map +1 -1
- package/dist/esm/validations/evm-sign712-metamask.js +94 -17
- package/dist/esm/validations/evm-sign712-metamask.js.map +1 -1
- package/dist/esm/validations/evm-sign7702.js +22 -33
- package/dist/esm/validations/evm-sign7702.js.map +1 -1
- package/dist/esm/validations/hooks-common.js +38 -251
- package/dist/esm/validations/hooks-common.js.map +1 -1
- package/dist/esm/validations/required-actions.js +7 -4
- package/dist/esm/validations/required-actions.js.map +1 -1
- package/dist/esm/validations/solana-hook.js +20 -34
- package/dist/esm/validations/solana-hook.js.map +1 -1
- package/dist/esm/validations/solana-op-budget.js +18 -56
- package/dist/esm/validations/solana-op-budget.js.map +1 -1
- package/dist/esm/validations/solana-op-wrap.js +14 -47
- package/dist/esm/validations/solana-op-wrap.js.map +1 -1
- package/dist/esm/validations/solana-required-actions.js +3 -3
- package/dist/esm/validations/solana-required-actions.js.map +1 -1
- package/dist/esm/validations/solana-transaction.js +7 -7
- package/dist/esm/validations/solana-transaction.js.map +1 -1
- package/dist/esm/validations/trade-grouping.js +1 -68
- package/dist/esm/validations/trade-grouping.js.map +1 -1
- package/dist/esm/validations/trades.js +37 -59
- package/dist/esm/validations/trades.js.map +1 -1
- package/dist/esm/validator.js +16 -11
- package/dist/esm/validator.js.map +1 -1
- package/dist/esm/whitelists/environment-config.js +28 -47
- package/dist/esm/whitelists/environment-config.js.map +1 -1
- package/dist/esm/whitelists/evm/caveat-enforcers.js +4 -20
- package/dist/esm/whitelists/evm/caveat-enforcers.js.map +1 -1
- package/dist/esm/whitelists/evm/delegation-manager.js +1 -6
- package/dist/esm/whitelists/evm/delegation-manager.js.map +1 -1
- package/dist/esm/whitelists/evm/eip7702-delegation.js +1 -6
- package/dist/esm/whitelists/evm/eip7702-delegation.js.map +1 -1
- package/dist/esm/whitelists/evm/index.js +4 -4
- package/dist/esm/whitelists/evm/index.js.map +1 -1
- package/dist/esm/whitelists/evm/permit2.js +5 -9
- package/dist/esm/whitelists/evm/permit2.js.map +1 -1
- package/dist/esm/whitelists/evm/weth.js +5 -16
- package/dist/esm/whitelists/evm/weth.js.map +1 -1
- package/dist/esm/whitelists/solana/intent-signature.js +1 -0
- package/dist/esm/whitelists/solana/intent-signature.js.map +1 -1
- package/dist/esm/whitelists/subscription-to-chain-id.js +0 -9
- package/dist/esm/whitelists/subscription-to-chain-id.js.map +1 -1
- package/dist/esm/whitelists/types.js +5 -14
- package/dist/esm/whitelists/types.js.map +1 -1
- package/dist/types/helpers/address.d.ts +7 -5
- package/dist/types/helpers/address.d.ts.map +1 -1
- package/dist/types/helpers/constants.d.ts +2 -0
- package/dist/types/helpers/constants.d.ts.map +1 -0
- package/dist/types/helpers/evm-trade-amounts.d.ts +2 -2
- package/dist/types/helpers/evm-trade-amounts.d.ts.map +1 -1
- package/dist/types/types/enums.d.ts +1 -19
- package/dist/types/types/enums.d.ts.map +1 -1
- package/dist/types/types/request.d.ts +9 -19
- package/dist/types/types/request.d.ts.map +1 -1
- package/dist/types/types/response.d.ts +11 -367
- package/dist/types/types/response.d.ts.map +1 -1
- package/dist/types/types/validation.d.ts +11 -67
- package/dist/types/types/validation.d.ts.map +1 -1
- package/dist/types/validations/evm-caveats.d.ts.map +1 -1
- package/dist/types/validations/evm-op-budget.d.ts +2 -2
- package/dist/types/validations/evm-op-budget.d.ts.map +1 -1
- package/dist/types/validations/evm-op-gas-compensation.d.ts +3 -0
- package/dist/types/validations/evm-op-gas-compensation.d.ts.map +1 -0
- package/dist/types/validations/evm-op-hook.d.ts +2 -4
- package/dist/types/validations/evm-op-hook.d.ts.map +1 -1
- package/dist/types/validations/evm-op-wrap.d.ts +2 -2
- package/dist/types/validations/evm-op-wrap.d.ts.map +1 -1
- package/dist/types/validations/evm-required-actions.d.ts +2 -2
- package/dist/types/validations/evm-required-actions.d.ts.map +1 -1
- package/dist/types/validations/evm-sign712-metamask.d.ts.map +1 -1
- package/dist/types/validations/evm-sign7702.d.ts +1 -2
- package/dist/types/validations/evm-sign7702.d.ts.map +1 -1
- package/dist/types/validations/hooks-common.d.ts +0 -1
- package/dist/types/validations/hooks-common.d.ts.map +1 -1
- package/dist/types/validations/required-actions.d.ts +1 -2
- package/dist/types/validations/required-actions.d.ts.map +1 -1
- package/dist/types/validations/solana-hook.d.ts +2 -4
- package/dist/types/validations/solana-hook.d.ts.map +1 -1
- package/dist/types/validations/solana-op-budget.d.ts +2 -2
- package/dist/types/validations/solana-op-budget.d.ts.map +1 -1
- package/dist/types/validations/solana-op-wrap.d.ts +2 -2
- package/dist/types/validations/solana-op-wrap.d.ts.map +1 -1
- package/dist/types/validations/solana-required-actions.d.ts +2 -2
- package/dist/types/validations/solana-required-actions.d.ts.map +1 -1
- package/dist/types/validations/solana-transaction.d.ts +3 -3
- package/dist/types/validations/solana-transaction.d.ts.map +1 -1
- package/dist/types/validations/trade-grouping.d.ts +2 -3
- package/dist/types/validations/trade-grouping.d.ts.map +1 -1
- package/dist/types/validator.d.ts.map +1 -1
- package/dist/types/whitelists/environment-config.d.ts.map +1 -1
- package/dist/types/whitelists/evm/caveat-enforcers.d.ts +0 -8
- package/dist/types/whitelists/evm/caveat-enforcers.d.ts.map +1 -1
- package/dist/types/whitelists/evm/delegation-manager.d.ts +0 -2
- package/dist/types/whitelists/evm/delegation-manager.d.ts.map +1 -1
- package/dist/types/whitelists/evm/eip7702-delegation.d.ts +0 -2
- package/dist/types/whitelists/evm/eip7702-delegation.d.ts.map +1 -1
- package/dist/types/whitelists/evm/index.d.ts +4 -4
- package/dist/types/whitelists/evm/index.d.ts.map +1 -1
- package/dist/types/whitelists/evm/permit2.d.ts +0 -1
- package/dist/types/whitelists/evm/permit2.d.ts.map +1 -1
- package/dist/types/whitelists/evm/weth.d.ts.map +1 -1
- package/dist/types/whitelists/solana/intent-signature.d.ts.map +1 -1
- package/dist/types/whitelists/subscription-to-chain-id.d.ts +0 -1
- package/dist/types/whitelists/subscription-to-chain-id.d.ts.map +1 -1
- package/dist/types/whitelists/types.d.ts +1 -1
- package/dist/types/whitelists/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/README.md +0 -164
- package/dist/cjs/helpers/evm-gas-compensation-tx.js +0 -102
- package/dist/cjs/helpers/evm-gas-compensation-tx.js.map +0 -1
- package/dist/cjs/helpers/gas-compensation.js +0 -36
- package/dist/cjs/helpers/gas-compensation.js.map +0 -1
- package/dist/cjs/helpers/placeholder.js +0 -174
- package/dist/cjs/helpers/placeholder.js.map +0 -1
- package/dist/cjs/helpers/sets.js +0 -13
- package/dist/cjs/helpers/sets.js.map +0 -1
- package/dist/cjs/validations/compensation-hook.js +0 -203
- package/dist/cjs/validations/compensation-hook.js.map +0 -1
- package/dist/cjs/validations/evm-sign712-shared.js +0 -116
- package/dist/cjs/validations/evm-sign712-shared.js.map +0 -1
- package/dist/cjs/validations/intent-destinations.js +0 -197
- package/dist/cjs/validations/intent-destinations.js.map +0 -1
- package/dist/cjs/validations/intent-tokens.js +0 -341
- package/dist/cjs/validations/intent-tokens.js.map +0 -1
- package/dist/cjs/validations/intent.js +0 -288
- package/dist/cjs/validations/intent.js.map +0 -1
- package/dist/cjs/whitelists/evm/metamask-delegation-chains.js +0 -16
- package/dist/cjs/whitelists/evm/metamask-delegation-chains.js.map +0 -1
- package/dist/esm/helpers/evm-gas-compensation-tx.js +0 -99
- package/dist/esm/helpers/evm-gas-compensation-tx.js.map +0 -1
- package/dist/esm/helpers/gas-compensation.js +0 -33
- package/dist/esm/helpers/gas-compensation.js.map +0 -1
- package/dist/esm/helpers/placeholder.js +0 -168
- package/dist/esm/helpers/placeholder.js.map +0 -1
- package/dist/esm/helpers/sets.js +0 -10
- package/dist/esm/helpers/sets.js.map +0 -1
- package/dist/esm/validations/compensation-hook.js +0 -200
- package/dist/esm/validations/compensation-hook.js.map +0 -1
- package/dist/esm/validations/evm-sign712-shared.js +0 -110
- package/dist/esm/validations/evm-sign712-shared.js.map +0 -1
- package/dist/esm/validations/intent-destinations.js +0 -194
- package/dist/esm/validations/intent-destinations.js.map +0 -1
- package/dist/esm/validations/intent-tokens.js +0 -338
- package/dist/esm/validations/intent-tokens.js.map +0 -1
- package/dist/esm/validations/intent.js +0 -285
- package/dist/esm/validations/intent.js.map +0 -1
- package/dist/esm/whitelists/evm/metamask-delegation-chains.js +0 -13
- package/dist/esm/whitelists/evm/metamask-delegation-chains.js.map +0 -1
- package/dist/types/helpers/evm-gas-compensation-tx.d.ts +0 -13
- package/dist/types/helpers/evm-gas-compensation-tx.d.ts.map +0 -1
- package/dist/types/helpers/gas-compensation.d.ts +0 -10
- package/dist/types/helpers/gas-compensation.d.ts.map +0 -1
- package/dist/types/helpers/placeholder.d.ts +0 -41
- package/dist/types/helpers/placeholder.d.ts.map +0 -1
- package/dist/types/helpers/sets.d.ts +0 -2
- package/dist/types/helpers/sets.d.ts.map +0 -1
- package/dist/types/validations/compensation-hook.d.ts +0 -3
- package/dist/types/validations/compensation-hook.d.ts.map +0 -1
- package/dist/types/validations/evm-sign712-shared.d.ts +0 -7
- package/dist/types/validations/evm-sign712-shared.d.ts.map +0 -1
- package/dist/types/validations/intent-destinations.d.ts +0 -4
- package/dist/types/validations/intent-destinations.d.ts.map +0 -1
- package/dist/types/validations/intent-tokens.d.ts +0 -4
- package/dist/types/validations/intent-tokens.d.ts.map +0 -1
- package/dist/types/validations/intent.d.ts +0 -5
- package/dist/types/validations/intent.d.ts.map +0 -1
- package/dist/types/whitelists/evm/metamask-delegation-chains.d.ts +0 -3
- package/dist/types/whitelists/evm/metamask-delegation-chains.d.ts.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"intent.js","sourceRoot":"","sources":["../../../src/validations/intent.ts"],"names":[],"mappings":";;AAgBA,0CAUC;AA1BD,+BAA2C;AAC3C,oCAKkB;AAGlB,gDAAqE;AACrE,0CAA4C;AAC5C,4DAA2D;AAC3D,kEAAoE;AACpE,mDAAuD;AACvD,+DAAmE;AAEnE,SAAgB,eAAe,CAC3B,QAAyB,EACzB,SAAkB,EAClB,SAA4B;IAE5B,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,UAAU,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAS,oBAAoB,CACzB,GAAkB,EAClB,SAAkB,EAClB,SAA4B;IAE5B,MAAM,QAAQ,GAAG,oBAAoB,GAAG,CAAC,WAAW,UAAU,CAAC;IAC/D,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC;IACxC,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC;IAE7B,MAAM,UAAU,GAAgB;QAC5B,GAAG,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC;QAChD,GAAG,mCAAmC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;QAC/D,GAAG,IAAA,oCAAoB,EAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;QAChD,GAAG,IAAA,gDAA0B,EAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;KACpE,CAAC;IAEF,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,UAAU,CAAC,IAAI,CACX,GAAG,yBAAyB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,EAChE,GAAG,gCAAgC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,EAC5D,GAAG,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CACvD,CAAC;IACN,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,6FAA6F;AAC7F,0FAA0F;AAC1F,SAAS,yBAAyB,CAC9B,MAAsB,EACtB,KAAiB,EACjB,QAAgB,EAChB,SAA4B;IAE5B,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,MAAM,aAAa,GAAG,KAAK,CAAC,wBAAwB,CAAC;IACrD,MAAM,iBAAiB,GAAG,aAAa,KAAK,SAAS,CAAC;IAEtD,IAAI,iBAAiB;WACd,CAAC,IAAA,uBAAa,EAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,EACzE,CAAC;QACC,UAAU,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,qBAAa,CAAC,mBAAmB;YACvC,OAAO,EAAE,iBAAiB;gBACtB,CAAC,CAAC,mGAAmG;gBACrG,CAAC,CAAC,wDAAwD;YAC9D,IAAI,EAAE,GAAG,QAAQ,cAAc;YAC/B,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,MAAM,CAAC,WAAW;SAC7B,CAAC,CAAC;IACP,CAAC;IAED,IAAI,iBAAiB;WACd,CAAC,IAAA,uBAAa,EAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,EAC7E,CAAC;QACC,UAAU,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,qBAAa,CAAC,uBAAuB;YAC3C,OAAO,EAAE,iBAAiB;gBACtB,CAAC,CAAC,uGAAuG;gBACzG,CAAC,CAAC,4DAA4D;YAClE,IAAI,EAAE,GAAG,QAAQ,kBAAkB;YACnC,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,MAAM,CAAC,eAAe;SACjC,CAAC,CAAC;IACP,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAEhF,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAS,uBAAuB,CAC5B,MAAsB,EACtB,KAAiB,EACjB,QAAgB,EAChB,SAA4B;IAE5B,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACD,QAAQ,GAAG,KAAK,CAAC,WAAW,KAAK,eAAO,CAAC,MAAM;YAC3C,CAAC,CAAC,IAAA,wCAAqB,EAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,mBAAmB,CAAC;YACjF,CAAC,CAAC,IAAA,+BAAe,EAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC;gBACJ,IAAI,EAAE,qBAAa,CAAC,oBAAoB;gBACxC,OAAO,EAAE,+CAA+C;gBACxD,IAAI,EAAE,GAAG,QAAQ,WAAW;gBAC5B,OAAO,EAAE,KAAK;aACjB,CAAC,CAAC;IACP,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC;gBACJ,IAAI,EAAE,qBAAa,CAAC,gBAAgB;gBACpC,OAAO,EAAE,8DAA8D;gBACvE,IAAI,EAAE,GAAG,QAAQ,WAAW;gBAC5B,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAC;IACP,CAAC;IAED,OAAO,EAAE,CAAC;AACd,CAAC;AAED,oEAAoE;AACpE,6DAA6D;AAC7D,4BAA4B;AAC5B,SAAS,gCAAgC,CACrC,MAAsB,EACtB,KAAiB,EACjB,QAAgB;IAEhB,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC;IACjE,MAAM,QAAQ,GAAG,YAAY,IAAI,KAAK,CAAC,wBAAwB,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,CAAC,wBAAwB,CAAC;IAE/C,2EAA2E;IAC3E,qEAAqE;IACrE,mDAAmD;IACnD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CAAC;gBACJ,IAAI,EAAE,qBAAa,CAAC,sCAAsC;gBAC1D,OAAO,EACH,8DAA8D;sBAC5D,uEAAuE;sBACvE,oBAAoB;gBAC1B,IAAI,EAAE,GAAG,QAAQ,2BAA2B;gBAC5C,QAAQ,EAAE,SAAS;gBACnB,MAAM;aACT,CAAC,CAAC;IACP,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,IAAA,uBAAa,EAAC,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC9E,OAAO,CAAC;gBACJ,IAAI,EAAE,qBAAa,CAAC,sCAAsC;gBAC1D,OAAO,EAAE,YAAY,KAAK,SAAS;oBAC/B,CAAC,CAAC,gFAAgF;oBAClF,CAAC,CAAC,4EAA4E;gBAClF,IAAI,EAAE,GAAG,QAAQ,2BAA2B;gBAC5C,QAAQ;gBACR,MAAM;aACT,CAAC,CAAC;IACP,CAAC;IAED,OAAO,EAAE,CAAC;AACd,CAAC;AAED,wEAAwE;AACxE,wEAAwE;AACxE,4EAA4E;AAC5E,iBAAiB;AACjB,SAAS,wBAAwB,CAC7B,MAAsB,EACtB,KAAiB,EACjB,QAAgB;IAEhB,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;SAC5B,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAEjD,+EAA+E;IAC/E,uEAAuE;IACvE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,WAAW,GAAG,IAAI,GAAG,CACvB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAA,0BAAgB,EAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CACnE,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,GAAG,CACrB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAA,0BAAgB,EAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CACpE,CAAC;IAEF,IAAI,CAAC,IAAA,gBAAS,EAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC;gBACJ,IAAI,EAAE,qBAAa,CAAC,8BAA8B;gBAClD,OAAO,EACH,4DAA4D;sBAC1D,iEAAiE;gBACvE,IAAI,EAAE,GAAG,QAAQ,mBAAmB;gBACpC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;gBACjC,MAAM,EAAE,UAAU;aACrB,CAAC,CAAC;IACP,CAAC;IAED,OAAO,EAAE,CAAC;AACd,CAAC;AAED,gFAAgF;AAChF,oFAAoF;AACpF,kFAAkF;AAClF,sCAAsC;AACtC,SAAS,mCAAmC,CACxC,MAAsB,EACtB,KAAiB,EACjB,QAAgB;IAEhB,OAAO;QACH,GAAG,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC;QAC9C,GAAG,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;QAC/C,GAAG,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;KACvD,CAAC;AACN,CAAC;AAED,0EAA0E;AAC1E,+BAA+B;AAC/B,oFAAoF;AACpF,SAAS,yBAAyB,CAC9B,MAAsB,EACtB,QAAgB;IAEhB,IAAI,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpD,OAAO,CAAC;YACJ,IAAI,EAAE,qBAAa,CAAC,+BAA+B;YACnD,OAAO,EAAE,8EAA8E;YACvF,IAAI,EAAE,GAAG,QAAQ,oBAAoB;YACrC,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,MAAM,CAAC,iBAAiB;SACnC,CAAC,CAAC;AACP,CAAC;AAED,gFAAgF;AAChF,+EAA+E;AAC/E,iCAAiC;AACjC,SAAS,mBAAmB,CACxB,MAAsB,EACtB,KAAiB,EACjB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE/C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM;QAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE/D,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAE3D,OAAO,CAAC;YACJ,IAAI,EAAE,qBAAa,CAAC,yBAAyB;YAC7C,OAAO,EACH,gEAAgE;kBAC9D,8BAA8B;YACpC,IAAI,EAAE,GAAG,QAAQ,cAAc;YAC/B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC9B,MAAM,EAAE,MAAM,CAAC,WAAW;SAC7B,CAAC,CAAC;AACP,CAAC;AAED,mFAAmF;AACnF,+EAA+E;AAC/E,4BAA4B;AAC5B,SAAS,wBAAwB,CAC7B,MAAsB,EACtB,KAAiB,EACjB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE/C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/B,QAAQ,CAAC,GAAG,CACR,KAAK,CAAC,OAAO,KAAK,SAAS;YACvB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAA,gBAAS,EAAC,KAAK,CAAC,OAAwB,CAAC,CAClD,CAAC;IACN,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhE,OAAO,CAAC;YACJ,IAAI,EAAE,qBAAa,CAAC,8BAA8B;YAClD,OAAO,EACH,wDAAwD;kBACtD,uDAAuD;YAC7D,IAAI,EAAE,GAAG,QAAQ,mBAAmB;YACpC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC9B,MAAM,EAAE,MAAM,CAAC,gBAAgB;SAClC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,UAAU,CAAC,KAAyB;IACzC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,OAAO,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,eAAQ,CAAC;AAC1D,CAAC;AAED,SAAS,aAAa,CAClB,MAA0B,EAC1B,QAAiC;IAEjC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,CAAqB,EAAE,CAAqB;IAC3D,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrD,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC/C,CAAC;AAED,+DAA+D;AAC/D,SAAS,2BAA2B,CAChC,MAAsB,EACtB,QAAgB;IAEhB,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,MAAM,YAAY,GAAsC;QACpD,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,CAAC,mBAAmB,EAAE;QAClE,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,eAAe,EAAE;KAC7D,CAAC;IAEF,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,YAAY,EAAE,CAAC;QACzC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACZ,UAAU,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,qBAAa,CAAC,0BAA0B;gBAC9C,OAAO,EAAE,UAAU,IAAI,uBAAuB;gBAC9C,IAAI,EAAE,GAAG,QAAQ,IAAI,IAAI,EAAE;gBAC3B,MAAM,EAAE,KAAK;aAChB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAChC,MAAM,CAAC,UAAU,IAAI,EAAE,EACvB,GAAG,QAAQ,aAAa,EACxB,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAC/D,CAAC,CAAC;IACH,UAAU,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAChC,MAAM,CAAC,SAAS,IAAI,EAAE,EACtB,GAAG,QAAQ,YAAY,EACvB,CAAC,WAAW,EAAE,aAAa,CAAC,CAC/B,CAAC,CAAC;IACH,UAAU,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAChC,MAAM,CAAC,SAAS,EAChB,GAAG,QAAQ,YAAY,EACvB,CAAC,WAAW,EAAE,aAAa,CAAC,CAC/B,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACtB,CAAC;AAWD,SAAS,iBAAiB,CACtB,KAAmB,EACnB,QAAgB,EAChB,UAAiD;IAEjD,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAW,CAAC;YAC1C,IAAI,CAAC;gBACD,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;oBACnB,UAAU,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,qBAAa,CAAC,0BAA0B;wBAC9C,OAAO,EAAE,GAAG,QAAQ,IAAI,CAAC,KAAK,SAAS,uBAAuB;wBAC9D,IAAI,EAAE,GAAG,QAAQ,IAAI,CAAC,KAAK,SAAS,EAAE;wBACtC,MAAM,EAAE,GAAG;qBACd,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,UAAU,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,qBAAa,CAAC,yBAAyB;oBAC7C,OAAO,EAAE,GAAG,QAAQ,IAAI,CAAC,KAAK,SAAS,wBAAwB;oBAC/D,IAAI,EAAE,GAAG,QAAQ,IAAI,CAAC,KAAK,SAAS,EAAE;oBACtC,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,KAAK;iBACjB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.METAMASK_DEFAULT_EVM_CHAINS = void 0;
|
|
4
|
-
const enums_1 = require("../../types/enums");
|
|
5
|
-
// Chains where MetaMask Delegation Framework uses the "default" set of contract addresses
|
|
6
|
-
// (DelegationManager, EIP7702StatelessDeleGatorImpl, caveat enforcers).
|
|
7
|
-
// Avalanche has a separate, chain-specific deployment and is handled separately.
|
|
8
|
-
exports.METAMASK_DEFAULT_EVM_CHAINS = [
|
|
9
|
-
enums_1.ChainId.Ethereum,
|
|
10
|
-
enums_1.ChainId.Optimism,
|
|
11
|
-
enums_1.ChainId.BNB,
|
|
12
|
-
enums_1.ChainId.Polygon,
|
|
13
|
-
enums_1.ChainId.Base,
|
|
14
|
-
enums_1.ChainId.Arbitrum,
|
|
15
|
-
];
|
|
16
|
-
//# sourceMappingURL=metamask-delegation-chains.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metamask-delegation-chains.js","sourceRoot":"","sources":["../../../../src/whitelists/evm/metamask-delegation-chains.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE5C,0FAA0F;AAC1F,wEAAwE;AACxE,iFAAiF;AACpE,QAAA,2BAA2B,GAAuB;IAC3D,eAAO,CAAC,QAAQ;IAChB,eAAO,CAAC,QAAQ;IAChB,eAAO,CAAC,GAAG;IACX,eAAO,CAAC,OAAO;IACf,eAAO,CAAC,IAAI;IACZ,eAAO,CAAC,QAAQ;CACV,CAAC"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { decodeTransferCalldata } from "./evm-calldata.js";
|
|
2
|
-
import { isNativeToken } from "./evm-token.js";
|
|
3
|
-
import { normalizeAddress } from "./address.js";
|
|
4
|
-
// Validates an EVM `{to, data, value}` triplet that is expected to encode a
|
|
5
|
-
// gas-compensation transfer. `groups` are the gas-compensation groups
|
|
6
|
-
// associated with this triplet's source (already filtered to the relevant
|
|
7
|
-
// `(chainId, sender)` pair by the caller).
|
|
8
|
-
//
|
|
9
|
-
// Classification: dispatched on `triplet.data`:
|
|
10
|
-
// - `data === "0x"` → native compensation (data="0x", value > 0,
|
|
11
|
-
// and at least one group must carry a native token).
|
|
12
|
-
// - otherwise → ERC20 compensation (`triplet.to` matches some non-native
|
|
13
|
-
// group's tokenAddress, data is `transfer(...)`, value === "0").
|
|
14
|
-
export function validateEvmGasCompensationTx(triplet, groups, realChainId, basePath, codes) {
|
|
15
|
-
if (triplet.data === "0x") {
|
|
16
|
-
return validateNativeCompensation(triplet, groups, basePath, codes);
|
|
17
|
-
}
|
|
18
|
-
return validateErc20Compensation(triplet, groups, realChainId, basePath, codes);
|
|
19
|
-
}
|
|
20
|
-
function validateNativeCompensation(triplet, groups, basePath, codes) {
|
|
21
|
-
const violations = [];
|
|
22
|
-
// CRITICAL: data="0x" implies native — must have at least one native group.
|
|
23
|
-
const hasNativeGroup = groups.some(g => isNativeToken(g.tokenAddress, g.realChainId));
|
|
24
|
-
if (!hasNativeGroup) {
|
|
25
|
-
violations.push({
|
|
26
|
-
code: codes.dataInvalid,
|
|
27
|
-
message: "data=\"0x\" implies native compensation but no group has a native token",
|
|
28
|
-
path: `${basePath}.data`,
|
|
29
|
-
expected: groups.map(g => g.tokenAddress),
|
|
30
|
-
actual: "0x",
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
// HIGH: native compensation value must parse and be > 0.
|
|
34
|
-
violations.push(...validateNativeValue(triplet.value, basePath, codes));
|
|
35
|
-
return violations;
|
|
36
|
-
}
|
|
37
|
-
function validateNativeValue(rawValue, basePath, codes) {
|
|
38
|
-
try {
|
|
39
|
-
if (BigInt(rawValue) <= 0n) {
|
|
40
|
-
return [{
|
|
41
|
-
code: codes.valueInvalid,
|
|
42
|
-
message: "native compensation must have value > 0",
|
|
43
|
-
path: `${basePath}.value`,
|
|
44
|
-
actual: rawValue,
|
|
45
|
-
}];
|
|
46
|
-
}
|
|
47
|
-
return [];
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
return [{
|
|
51
|
-
code: codes.valueInvalid,
|
|
52
|
-
message: "native compensation value is not a valid number",
|
|
53
|
-
path: `${basePath}.value`,
|
|
54
|
-
actual: rawValue,
|
|
55
|
-
details: error,
|
|
56
|
-
}];
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
function validateErc20Compensation(triplet, groups, realChainId, basePath, codes) {
|
|
60
|
-
const violations = [];
|
|
61
|
-
// CRITICAL: `to` must equal some non-native group's tokenAddress.
|
|
62
|
-
const erc20Groups = groups.filter(g => !isNativeToken(g.tokenAddress, g.realChainId));
|
|
63
|
-
const matches = erc20Groups.some(g => normalizeAddress(g.realChainId, g.tokenAddress)
|
|
64
|
-
=== normalizeAddress(realChainId, triplet.to));
|
|
65
|
-
if (!matches) {
|
|
66
|
-
violations.push({
|
|
67
|
-
code: codes.toMismatch,
|
|
68
|
-
message: "ERC20 compensation `to` does not match any group's tokenAddress",
|
|
69
|
-
path: `${basePath}.to`,
|
|
70
|
-
expected: erc20Groups.map(g => g.tokenAddress),
|
|
71
|
-
actual: triplet.to,
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
// CRITICAL: data must be a valid ERC20 transfer calldata.
|
|
75
|
-
try {
|
|
76
|
-
decodeTransferCalldata(triplet.data);
|
|
77
|
-
}
|
|
78
|
-
catch (error) {
|
|
79
|
-
violations.push({
|
|
80
|
-
code: codes.dataInvalid,
|
|
81
|
-
message: "ERC20 compensation data is not a valid transfer calldata",
|
|
82
|
-
path: `${basePath}.data`,
|
|
83
|
-
actual: triplet.data,
|
|
84
|
-
details: error,
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
// HIGH: ERC20 compensation must have value="0".
|
|
88
|
-
if (triplet.value !== "0") {
|
|
89
|
-
violations.push({
|
|
90
|
-
code: codes.valueInvalid,
|
|
91
|
-
message: "ERC20 compensation must have value=\"0\"",
|
|
92
|
-
path: `${basePath}.value`,
|
|
93
|
-
expected: "0",
|
|
94
|
-
actual: triplet.value,
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
return violations;
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=evm-gas-compensation-tx.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evm-gas-compensation-tx.js","sourceRoot":"","sources":["../../../src/helpers/evm-gas-compensation-tx.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { normalizeAddress } from "./address.js";
|
|
2
|
-
import { resolveChainId } from "../whitelists/subscription-to-chain-id.js";
|
|
3
|
-
// Groups `gasCompensationInfo` entries from request.preHooks by
|
|
4
|
-
// (chainId, tokenAddress, sender). One compensation hook per
|
|
5
|
-
// unique group is expected to be appended to response.preHooks.
|
|
6
|
-
// Groups with an unknown subscription chainId are skipped — they'll surface as
|
|
7
|
-
// `UnknownSubscriptionId` via the trade-grouping pass.
|
|
8
|
-
export function extractGasCompensationGroups(request) {
|
|
9
|
-
const seen = new Set();
|
|
10
|
-
const groups = [];
|
|
11
|
-
for (const hook of request.preHooks ?? []) {
|
|
12
|
-
const info = hook.gasCompensationInfo;
|
|
13
|
-
if (!info)
|
|
14
|
-
continue;
|
|
15
|
-
const realChainId = resolveChainId(info.chainId);
|
|
16
|
-
if (realChainId === undefined)
|
|
17
|
-
continue;
|
|
18
|
-
const key = `${realChainId}`
|
|
19
|
-
+ `:${normalizeAddress(realChainId, info.tokenAddress)}`
|
|
20
|
-
+ `:${normalizeAddress(realChainId, info.sender)}`;
|
|
21
|
-
if (seen.has(key))
|
|
22
|
-
continue;
|
|
23
|
-
seen.add(key);
|
|
24
|
-
groups.push({
|
|
25
|
-
chainId: info.chainId,
|
|
26
|
-
realChainId,
|
|
27
|
-
tokenAddress: info.tokenAddress,
|
|
28
|
-
sender: info.sender,
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
return groups;
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=gas-compensation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gas-compensation.js","sourceRoot":"","sources":["../../../src/helpers/gas-compensation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AASxE,gEAAgE;AAChE,6DAA6D;AAC7D,gEAAgE;AAChE,+EAA+E;AAC/E,uDAAuD;AACvD,MAAM,UAAU,4BAA4B,CACxC,OAA8B;IAE9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,WAAW,KAAK,SAAS;YAAE,SAAS;QAExC,MAAM,GAAG,GAAG,GAAG,WAAW,EAAE;cACtB,IAAI,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;cACtD,IAAI,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAEvD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAE5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEd,MAAM,CAAC,IAAI,CAAC;YACR,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW;YACX,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC,CAAC;IACP,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { ChainEngine, PlaceholderType } from "../types/enums.js";
|
|
2
|
-
import { addressEquals, getChainEngine } from "./address.js";
|
|
3
|
-
const MIN_PLACEHOLDER_BYTE_COUNT = 1;
|
|
4
|
-
const MAX_PLACEHOLDER_BYTE_COUNT = 32;
|
|
5
|
-
export const EVM_DEFAULT_PLACEHOLDER_BYTE_COUNT = MAX_PLACEHOLDER_BYTE_COUNT;
|
|
6
|
-
export const SOLANA_DEFAULT_PLACEHOLDER_BYTE_COUNT = 8;
|
|
7
|
-
export var HookMode;
|
|
8
|
-
(function (HookMode) {
|
|
9
|
-
HookMode[HookMode["PreHooks"] = 0] = "PreHooks";
|
|
10
|
-
HookMode[HookMode["PostHooks"] = 1] = "PostHooks";
|
|
11
|
-
})(HookMode || (HookMode = {}));
|
|
12
|
-
export var PlaceholderResolutionErrorReason;
|
|
13
|
-
(function (PlaceholderResolutionErrorReason) {
|
|
14
|
-
PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["MissingTokenOrAddress"] = 0] = "MissingTokenOrAddress";
|
|
15
|
-
PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["NegativeAmount"] = 1] = "NegativeAmount";
|
|
16
|
-
PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["Overflow"] = 2] = "Overflow";
|
|
17
|
-
PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["InvalidByteCount"] = 3] = "InvalidByteCount";
|
|
18
|
-
PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["InvalidAdditionalAmount"] = 4] = "InvalidAdditionalAmount";
|
|
19
|
-
PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["NoMatchingTradeOrAdditional"] = 5] = "NoMatchingTradeOrAdditional";
|
|
20
|
-
})(PlaceholderResolutionErrorReason || (PlaceholderResolutionErrorReason = {}));
|
|
21
|
-
// Encodes a non-negative integer as a zero-padded hex string (no "0x" prefix),
|
|
22
|
-
// fitting exactly `byteCount` bytes, using the chain engine's endianness.
|
|
23
|
-
// Solana: little-endian. EVM/Tron: big-endian.
|
|
24
|
-
// `byteCount` must be an integer in
|
|
25
|
-
// [MIN_PLACEHOLDER_BYTE_COUNT, MAX_PLACEHOLDER_BYTE_COUNT].
|
|
26
|
-
export function encodePlaceholderAmount(amount, byteCount, engine) {
|
|
27
|
-
if (!isValidByteCount(byteCount)) {
|
|
28
|
-
return { ok: false, reason: PlaceholderResolutionErrorReason.InvalidByteCount };
|
|
29
|
-
}
|
|
30
|
-
if (amount < 0n) {
|
|
31
|
-
return { ok: false, reason: PlaceholderResolutionErrorReason.NegativeAmount };
|
|
32
|
-
}
|
|
33
|
-
const maxValue = (1n << BigInt(byteCount * 8)) - 1n;
|
|
34
|
-
if (amount > maxValue) {
|
|
35
|
-
return { ok: false, reason: PlaceholderResolutionErrorReason.Overflow };
|
|
36
|
-
}
|
|
37
|
-
if (engine === ChainEngine.Solana) { // Use little-endian for Solana
|
|
38
|
-
const bytes = [];
|
|
39
|
-
let value = amount;
|
|
40
|
-
for (let i = 0; i < byteCount; i++) {
|
|
41
|
-
bytes.push((value & 0xffn).toString(16).padStart(2, "0"));
|
|
42
|
-
value >>= 8n;
|
|
43
|
-
}
|
|
44
|
-
return { ok: true, hex: bytes.join("") };
|
|
45
|
-
}
|
|
46
|
-
// Use big-endian (EVM/Tron): simple hex conversion with left-padding.
|
|
47
|
-
return { ok: true, hex: amount.toString(16).padStart(byteCount * 2, "0") };
|
|
48
|
-
}
|
|
49
|
-
function isValidByteCount(byteCount) {
|
|
50
|
-
return Number.isInteger(byteCount)
|
|
51
|
-
&& byteCount >= MIN_PLACEHOLDER_BYTE_COUNT
|
|
52
|
-
&& byteCount <= MAX_PLACEHOLDER_BYTE_COUNT;
|
|
53
|
-
}
|
|
54
|
-
// Sums the trade amount matching the placeholder's (chainId, tokenAddress, address).
|
|
55
|
-
// preHooks: sums trade.srcChainTokenIn.amount across trades where
|
|
56
|
-
// trade.srcChainTokenIn.{chainId,address} and trade.srcChainAuthorityAddress match.
|
|
57
|
-
// postHooks: sums trade.dstChainTokenOut.amount across trades where
|
|
58
|
-
// trade.dstChainTokenOut.{chainId,address} and trade.dstChainTokenOutRecipient match.
|
|
59
|
-
// In quote mode authority/recipient is undefined — such trades are skipped.
|
|
60
|
-
export function computeCumulativeTradeAmount(trades, mode, chainId, tokenAddress, address) {
|
|
61
|
-
let sum = 0n;
|
|
62
|
-
let matchCount = 0;
|
|
63
|
-
for (const trade of trades) {
|
|
64
|
-
const tradeChainId = mode === HookMode.PreHooks
|
|
65
|
-
? trade.srcChainTokenIn.chainId
|
|
66
|
-
: trade.dstChainTokenOut.chainId;
|
|
67
|
-
if (tradeChainId !== chainId)
|
|
68
|
-
continue;
|
|
69
|
-
const tradeAuthority = mode === HookMode.PreHooks
|
|
70
|
-
? trade.srcChainAuthorityAddress
|
|
71
|
-
: trade.dstChainTokenOutRecipient;
|
|
72
|
-
if (tradeAuthority === undefined)
|
|
73
|
-
continue;
|
|
74
|
-
const tradeToken = mode === HookMode.PreHooks
|
|
75
|
-
? trade.srcChainTokenIn.address
|
|
76
|
-
: trade.dstChainTokenOut.address;
|
|
77
|
-
if (!addressEquals(chainId, tradeToken, tokenAddress))
|
|
78
|
-
continue;
|
|
79
|
-
if (!addressEquals(chainId, tradeAuthority, address))
|
|
80
|
-
continue;
|
|
81
|
-
const amount = mode === HookMode.PreHooks
|
|
82
|
-
? trade.srcChainTokenIn.amount
|
|
83
|
-
: trade.dstChainTokenOut.amount;
|
|
84
|
-
sum += BigInt(amount);
|
|
85
|
-
matchCount++;
|
|
86
|
-
}
|
|
87
|
-
return { cumulative: sum, matchCount };
|
|
88
|
-
}
|
|
89
|
-
// Applies eager-placeholder substitution to a hex string (calldata or value).
|
|
90
|
-
// Markers: `{name}` or `{name.N}` (N = byte count).
|
|
91
|
-
// Deferred placeholders are not touched — their markers remain in the output.
|
|
92
|
-
// If any eager placeholder cannot be resolved, its marker is left intact and the
|
|
93
|
-
// error is collected into `errors`; callers decide how to report it.
|
|
94
|
-
export function resolveEagerPlaceholders(data, hookChainId, placeholders, trades, mode) {
|
|
95
|
-
const engine = getChainEngine(hookChainId);
|
|
96
|
-
const defaultByteCount = engine === ChainEngine.Solana
|
|
97
|
-
? SOLANA_DEFAULT_PLACEHOLDER_BYTE_COUNT
|
|
98
|
-
: EVM_DEFAULT_PLACEHOLDER_BYTE_COUNT;
|
|
99
|
-
let result = data;
|
|
100
|
-
const errors = [];
|
|
101
|
-
for (const placeholder of placeholders) {
|
|
102
|
-
if (placeholder.type === PlaceholderType.Deferred)
|
|
103
|
-
continue;
|
|
104
|
-
// Eager placeholder — type is either explicitly 'eager' or undefined (default).
|
|
105
|
-
if (placeholder.tokenAddress === undefined
|
|
106
|
-
|| placeholder.address === undefined) {
|
|
107
|
-
// Zod guards this at the schema level; defensive branch for callers
|
|
108
|
-
// that bypass structural validation.
|
|
109
|
-
errors.push({
|
|
110
|
-
nameVariable: placeholder.nameVariable,
|
|
111
|
-
reason: PlaceholderResolutionErrorReason.MissingTokenOrAddress,
|
|
112
|
-
});
|
|
113
|
-
continue;
|
|
114
|
-
}
|
|
115
|
-
let additional = 0n;
|
|
116
|
-
if (placeholder.additionalAmount !== undefined) {
|
|
117
|
-
try {
|
|
118
|
-
additional = BigInt(placeholder.additionalAmount);
|
|
119
|
-
}
|
|
120
|
-
catch (error) {
|
|
121
|
-
errors.push({
|
|
122
|
-
nameVariable: placeholder.nameVariable,
|
|
123
|
-
reason: PlaceholderResolutionErrorReason.InvalidAdditionalAmount,
|
|
124
|
-
details: error,
|
|
125
|
-
});
|
|
126
|
-
continue;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
const { cumulative, matchCount } = computeCumulativeTradeAmount(trades, mode, hookChainId, placeholder.tokenAddress, placeholder.address);
|
|
130
|
-
const expectedAmount = cumulative + additional;
|
|
131
|
-
const nameEscaped = escapeRegex(placeholder.nameVariable);
|
|
132
|
-
const markerRegex = new RegExp(`\\{${nameEscaped}(?:\\.(\\d+))?\\}`, "g");
|
|
133
|
-
// MEDIUM: when no trade matches and no `additionalAmount` is supplied,
|
|
134
|
-
// the API rejects the request. Here we are mirroring this logic.
|
|
135
|
-
if (matchCount === 0
|
|
136
|
-
&& placeholder.additionalAmount === undefined
|
|
137
|
-
&& markerRegex.test(result)) {
|
|
138
|
-
errors.push({
|
|
139
|
-
nameVariable: placeholder.nameVariable,
|
|
140
|
-
reason: PlaceholderResolutionErrorReason.NoMatchingTradeOrAdditional,
|
|
141
|
-
});
|
|
142
|
-
// Reset RegExp.lastIndex before the `replace` below.
|
|
143
|
-
markerRegex.lastIndex = 0;
|
|
144
|
-
// Skip substitution — leave marker in `result` so calldata comparison
|
|
145
|
-
// surfaces any mutated value as a separate violation.
|
|
146
|
-
continue;
|
|
147
|
-
}
|
|
148
|
-
result = result.replace(markerRegex, (match, byteCountStr) => {
|
|
149
|
-
const byteCount = byteCountStr
|
|
150
|
-
? parseInt(byteCountStr, 10)
|
|
151
|
-
: defaultByteCount;
|
|
152
|
-
const encoded = encodePlaceholderAmount(expectedAmount, byteCount, engine);
|
|
153
|
-
if (!encoded.ok) {
|
|
154
|
-
errors.push({
|
|
155
|
-
nameVariable: placeholder.nameVariable,
|
|
156
|
-
reason: encoded.reason,
|
|
157
|
-
});
|
|
158
|
-
return match;
|
|
159
|
-
}
|
|
160
|
-
return encoded.hex;
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
return { resolved: result, errors };
|
|
164
|
-
}
|
|
165
|
-
function escapeRegex(s) {
|
|
166
|
-
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
167
|
-
}
|
|
168
|
-
//# sourceMappingURL=placeholder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"placeholder.js","sourceRoot":"","sources":["../../../src/helpers/placeholder.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/helpers/sets.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sets.js","sourceRoot":"","sources":["../../../src/helpers/sets.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAI,CAAiB,EAAE,CAAiB;IAC7D,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;IACnC,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
import { ViolationCode, BundleHookType, ChainEngine, EvmActionOperation, SolanaActionOperation, } from "../types/index.js";
|
|
2
|
-
import { addressEquals, getChainEngine } from "../helpers/address.js";
|
|
3
|
-
import { extractGasCompensationGroups, } from "../helpers/gas-compensation.js";
|
|
4
|
-
import { validateEvmGasCompensationTx } from "../helpers/evm-gas-compensation-tx.js";
|
|
5
|
-
import { resolveChainIdOrSelf } from "../whitelists/subscription-to-chain-id.js";
|
|
6
|
-
// Validates `response.preHooks[i].hook` for a compensation hook
|
|
7
|
-
// (i.e. `i >= request.preHooks.length`). This is the primary MITM defense for
|
|
8
|
-
// surplus preHooks — `validateHookEcho` cannot help here because there is no
|
|
9
|
-
// matching request entry to compare against.
|
|
10
|
-
export function validateCompensationHookStructure(hookPayload, basePath, request) {
|
|
11
|
-
const hook = hookPayload.hook;
|
|
12
|
-
const hookPath = `${basePath}.hook`;
|
|
13
|
-
// Resolve the hook's subscriptionId into a real chainId once; every
|
|
14
|
-
// chain-aware helper downstream takes real. Fall back to the subscriptionId
|
|
15
|
-
// value for unknown chains.
|
|
16
|
-
const realHookChainId = resolveChainIdOrSelf(hook.chainId);
|
|
17
|
-
const violations = [
|
|
18
|
-
...validateCommonFields(hook, hookPath),
|
|
19
|
-
...validateCompensationRequiredActionsOps(hookPayload, basePath, realHookChainId),
|
|
20
|
-
];
|
|
21
|
-
const allGroups = extractGasCompensationGroups(request);
|
|
22
|
-
const matchingGroups = findGroupsMatchingFrom(hook, realHookChainId, allGroups);
|
|
23
|
-
if (matchingGroups.length === 0) {
|
|
24
|
-
violations.push({
|
|
25
|
-
code: ViolationCode.CompensationHookFromMismatch,
|
|
26
|
-
message: "compensation hook.from does not match any request"
|
|
27
|
-
+ " gasCompensationInfo.sender on the same chain",
|
|
28
|
-
path: `${hookPath}.from`,
|
|
29
|
-
expected: allGroups.map(g => ({ chainId: g.chainId, sender: g.sender })),
|
|
30
|
-
actual: { chainId: hook.chainId, from: hook.from },
|
|
31
|
-
});
|
|
32
|
-
// Without a matching group we cannot meaningfully run chain-specific
|
|
33
|
-
// structural checks (token address comparison, etc.).
|
|
34
|
-
return violations;
|
|
35
|
-
}
|
|
36
|
-
const isSolana = getChainEngine(realHookChainId) === ChainEngine.Solana;
|
|
37
|
-
violations.push(...(isSolana
|
|
38
|
-
? validateSolanaCompensationStructure(hook, matchingGroups, hookPath)
|
|
39
|
-
: validateEvmCompensationStructure(hook, matchingGroups, realHookChainId, hookPath)));
|
|
40
|
-
return violations;
|
|
41
|
-
}
|
|
42
|
-
function validateCommonFields(hook, hookPath) {
|
|
43
|
-
const violations = [];
|
|
44
|
-
// HIGH: compensation hooks always carry empty placeHolders.
|
|
45
|
-
if (hook.placeHolders.length !== 0) {
|
|
46
|
-
violations.push({
|
|
47
|
-
code: ViolationCode.CompensationHookPlaceHoldersNotEmpty,
|
|
48
|
-
message: "compensation hook must have empty placeHolders",
|
|
49
|
-
path: `${hookPath}.placeHolders`,
|
|
50
|
-
expected: [],
|
|
51
|
-
actual: hook.placeHolders,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
// HIGH: API always emits isAtomic=false for compensation hooks.
|
|
55
|
-
if (hook.isAtomic !== false) {
|
|
56
|
-
violations.push({
|
|
57
|
-
code: ViolationCode.CompensationHookIsAtomicInvalid,
|
|
58
|
-
message: "compensation hook must have isAtomic=false",
|
|
59
|
-
path: `${hookPath}.isAtomic`,
|
|
60
|
-
expected: false,
|
|
61
|
-
actual: hook.isAtomic,
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
// MEDIUM: API never sets hook.type='direct' for compensation; delegated or
|
|
65
|
-
// omitted is allowed.
|
|
66
|
-
if (hook.type !== undefined && hook.type !== BundleHookType.Delegated) {
|
|
67
|
-
violations.push({
|
|
68
|
-
code: ViolationCode.CompensationHookTypeInvalid,
|
|
69
|
-
message: "compensation hook must have type=delegated (or omitted)",
|
|
70
|
-
path: `${hookPath}.type`,
|
|
71
|
-
expected: BundleHookType.Delegated,
|
|
72
|
-
actual: hook.type,
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
return violations;
|
|
76
|
-
}
|
|
77
|
-
function findGroupsMatchingFrom(hook, realHookChainId, groups) {
|
|
78
|
-
return groups.filter(g => g.realChainId === realHookChainId
|
|
79
|
-
&& addressEquals(realHookChainId, g.sender, hook.from));
|
|
80
|
-
}
|
|
81
|
-
// CRITICAL: a compensation hook must emit GasCompensation ops and must not
|
|
82
|
-
// emit Hook ops. `validateHookActionsList` already enforces that each action
|
|
83
|
-
// carries exactly one op from {Hook, GasCompensation}; this rule narrows further.
|
|
84
|
-
function validateCompensationRequiredActionsOps(hookPayload, basePath, realHookChainId) {
|
|
85
|
-
const isSolana = getChainEngine(realHookChainId) === ChainEngine.Solana;
|
|
86
|
-
const hookOp = isSolana
|
|
87
|
-
? SolanaActionOperation.Hook
|
|
88
|
-
: EvmActionOperation.Hook;
|
|
89
|
-
const gasCompensationOp = isSolana
|
|
90
|
-
? SolanaActionOperation.GasCompensation
|
|
91
|
-
: EvmActionOperation.GasCompensation;
|
|
92
|
-
const ops = hookPayload.requiredActions
|
|
93
|
-
.flatMap(a => a.actions);
|
|
94
|
-
const violations = [];
|
|
95
|
-
if (ops.includes(hookOp)) {
|
|
96
|
-
violations.push({
|
|
97
|
-
code: ViolationCode.CompensationHookRequiredActionsInvalid,
|
|
98
|
-
message: "compensation hook requiredActions must not contain"
|
|
99
|
-
+ " the `Hook` operation",
|
|
100
|
-
path: `${basePath}.requiredActions`,
|
|
101
|
-
actual: ops,
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
if (!ops.includes(gasCompensationOp)) {
|
|
105
|
-
violations.push({
|
|
106
|
-
code: ViolationCode.CompensationHookRequiredActionsInvalid,
|
|
107
|
-
message: "compensation hook requiredActions must contain at least one"
|
|
108
|
-
+ " `GasCompensation` operation",
|
|
109
|
-
path: `${basePath}.requiredActions`,
|
|
110
|
-
actual: ops,
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
return violations;
|
|
114
|
-
}
|
|
115
|
-
// =============================================
|
|
116
|
-
// EVM compensation hook structure
|
|
117
|
-
// =============================================
|
|
118
|
-
function validateEvmCompensationStructure(hook, groups, realHookChainId, hookPath) {
|
|
119
|
-
const violations = [];
|
|
120
|
-
// MEDIUM: API builds EVM compensation hooks without gasCompensationInfo
|
|
121
|
-
// (only Solana compensation hooks carry it for two-pass grouping).
|
|
122
|
-
if (hook.gasCompensationInfo !== undefined) {
|
|
123
|
-
violations.push({
|
|
124
|
-
code: ViolationCode.CompensationHookEvmGasCompensationInfoPresent,
|
|
125
|
-
message: "EVM compensation hook must not include gasCompensationInfo",
|
|
126
|
-
path: `${hookPath}.gasCompensationInfo`,
|
|
127
|
-
actual: hook.gasCompensationInfo,
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
// HIGH: `to` is required for EVM hooks.
|
|
131
|
-
if (hook.to === undefined) {
|
|
132
|
-
violations.push({
|
|
133
|
-
code: ViolationCode.CompensationHookEvmToMissing,
|
|
134
|
-
message: "EVM compensation hook must have `to`",
|
|
135
|
-
path: `${hookPath}.to`,
|
|
136
|
-
});
|
|
137
|
-
return violations;
|
|
138
|
-
}
|
|
139
|
-
// Native vs ERC20 classification + value/data form is shared with
|
|
140
|
-
// hook-scope `transactionCalls[0]` validation; the helper handles both.
|
|
141
|
-
violations.push(...validateEvmGasCompensationTx({ to: hook.to, data: hook.data, value: hook.value ?? "0" }, groups, realHookChainId, hookPath, {
|
|
142
|
-
toMismatch: ViolationCode.CompensationHookEvmToMismatch,
|
|
143
|
-
dataInvalid: ViolationCode.CompensationHookEvmDataInvalid,
|
|
144
|
-
valueInvalid: ViolationCode.CompensationHookEvmValueInvalid,
|
|
145
|
-
}));
|
|
146
|
-
return violations;
|
|
147
|
-
}
|
|
148
|
-
// =============================================
|
|
149
|
-
// Solana compensation hook structure
|
|
150
|
-
// =============================================
|
|
151
|
-
function validateSolanaCompensationStructure(hook, groups, hookPath) {
|
|
152
|
-
const violations = [];
|
|
153
|
-
// LOW: API deletes `to` and `value` from Solana hook echoes.
|
|
154
|
-
if (hook.to !== undefined) {
|
|
155
|
-
violations.push({
|
|
156
|
-
code: ViolationCode.CompensationHookSolanaToOrValuePresent,
|
|
157
|
-
message: "Solana compensation hook must not include `to`",
|
|
158
|
-
path: `${hookPath}.to`,
|
|
159
|
-
actual: hook.to,
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
if (hook.value !== undefined) {
|
|
163
|
-
violations.push({
|
|
164
|
-
code: ViolationCode.CompensationHookSolanaToOrValuePresent,
|
|
165
|
-
message: "Solana compensation hook must not include `value`",
|
|
166
|
-
path: `${hookPath}.value`,
|
|
167
|
-
actual: hook.value,
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
// HIGH: Solana compensation hooks must carry gasCompensationInfo (API uses
|
|
171
|
-
// it for two-pass grouping to include the comp transaction's own cost).
|
|
172
|
-
const info = hook.gasCompensationInfo;
|
|
173
|
-
if (info === undefined) {
|
|
174
|
-
violations.push({
|
|
175
|
-
code: ViolationCode.CompensationHookSolanaGasCompensationInfoMissing,
|
|
176
|
-
message: "Solana compensation hook must include gasCompensationInfo",
|
|
177
|
-
path: `${hookPath}.gasCompensationInfo`,
|
|
178
|
-
});
|
|
179
|
-
return violations;
|
|
180
|
-
}
|
|
181
|
-
// CRITICAL: all three fields must match some request group.
|
|
182
|
-
const matches = groups.some(g => g.chainId === info.chainId
|
|
183
|
-
&& addressEquals(g.realChainId, g.tokenAddress, info.tokenAddress)
|
|
184
|
-
&& addressEquals(g.realChainId, g.sender, info.sender));
|
|
185
|
-
if (!matches) {
|
|
186
|
-
violations.push({
|
|
187
|
-
code: ViolationCode.CompensationHookSolanaGasCompensationInfoMismatch,
|
|
188
|
-
message: "Solana compensation hook.gasCompensationInfo does not match"
|
|
189
|
-
+ " any request group",
|
|
190
|
-
path: `${hookPath}.gasCompensationInfo`,
|
|
191
|
-
expected: groups,
|
|
192
|
-
actual: info,
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
// Note: the compensation transaction's inner bytes (programs, transfer,
|
|
196
|
-
// fee-payer, etc.) are already validated by validateSolanaGasCompensationAction
|
|
197
|
-
// running against the single [GasCompensation] required action in this hook.
|
|
198
|
-
return violations;
|
|
199
|
-
}
|
|
200
|
-
//# sourceMappingURL=compensation-hook.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compensation-hook.js","sourceRoot":"","sources":["../../../src/validations/compensation-hook.ts"],"names":[],"mappings":"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"}
|