@debridge-finance/borderless-validation-sdk 0.0.0-dev-dee2389
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/graylists/evm/token-permit-metadata.js +28 -0
- package/dist/cjs/graylists/evm/token-permit-metadata.js.map +1 -0
- package/dist/cjs/helpers/address.js +75 -0
- package/dist/cjs/helpers/address.js.map +1 -0
- package/dist/cjs/helpers/caveat-decoder.js +60 -0
- package/dist/cjs/helpers/caveat-decoder.js.map +1 -0
- package/dist/cjs/helpers/constants.js +6 -0
- package/dist/cjs/helpers/constants.js.map +1 -0
- package/dist/cjs/helpers/evm-action.js +20 -0
- package/dist/cjs/helpers/evm-action.js.map +1 -0
- package/dist/cjs/helpers/evm-calldata.js +45 -0
- package/dist/cjs/helpers/evm-calldata.js.map +1 -0
- package/dist/cjs/helpers/evm-intent-id-abi.js +67 -0
- package/dist/cjs/helpers/evm-intent-id-abi.js.map +1 -0
- package/dist/cjs/helpers/evm-intent-id.js +70 -0
- package/dist/cjs/helpers/evm-intent-id.js.map +1 -0
- package/dist/cjs/helpers/evm-token.js +30 -0
- package/dist/cjs/helpers/evm-token.js.map +1 -0
- package/dist/cjs/helpers/evm-trade-amounts.js +42 -0
- package/dist/cjs/helpers/evm-trade-amounts.js.map +1 -0
- package/dist/cjs/helpers/solana-instruction.js +160 -0
- package/dist/cjs/helpers/solana-instruction.js.map +1 -0
- package/dist/cjs/helpers/solana-intent-id.js +460 -0
- package/dist/cjs/helpers/solana-intent-id.js.map +1 -0
- package/dist/cjs/helpers/solana-transaction-decode.js +58 -0
- package/dist/cjs/helpers/solana-transaction-decode.js.map +1 -0
- package/dist/cjs/helpers/zod.js +12 -0
- package/dist/cjs/helpers/zod.js.map +1 -0
- package/dist/cjs/index.js +9 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/types/enums.js +137 -0
- package/dist/cjs/types/enums.js.map +1 -0
- package/dist/cjs/types/index.js +21 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/request.js +65 -0
- package/dist/cjs/types/request.js.map +1 -0
- package/dist/cjs/types/response.js +252 -0
- package/dist/cjs/types/response.js.map +1 -0
- package/dist/cjs/types/validation.js +242 -0
- package/dist/cjs/types/validation.js.map +1 -0
- package/dist/cjs/validations/echo-fields.js +67 -0
- package/dist/cjs/validations/echo-fields.js.map +1 -0
- package/dist/cjs/validations/evm-caveats.js +235 -0
- package/dist/cjs/validations/evm-caveats.js.map +1 -0
- package/dist/cjs/validations/evm-op-budget.js +261 -0
- package/dist/cjs/validations/evm-op-budget.js.map +1 -0
- 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 +8 -0
- package/dist/cjs/validations/evm-op-hook.js.map +1 -0
- package/dist/cjs/validations/evm-op-wrap.js +112 -0
- package/dist/cjs/validations/evm-op-wrap.js.map +1 -0
- package/dist/cjs/validations/evm-permit.js +224 -0
- package/dist/cjs/validations/evm-permit.js.map +1 -0
- package/dist/cjs/validations/evm-permit2.js +361 -0
- package/dist/cjs/validations/evm-permit2.js.map +1 -0
- package/dist/cjs/validations/evm-required-actions.js +184 -0
- package/dist/cjs/validations/evm-required-actions.js.map +1 -0
- package/dist/cjs/validations/evm-sign712-metamask.js +147 -0
- package/dist/cjs/validations/evm-sign712-metamask.js.map +1 -0
- package/dist/cjs/validations/evm-sign712.js +203 -0
- package/dist/cjs/validations/evm-sign712.js.map +1 -0
- package/dist/cjs/validations/evm-sign7702.js +59 -0
- package/dist/cjs/validations/evm-sign7702.js.map +1 -0
- package/dist/cjs/validations/evm-transaction.js +38 -0
- package/dist/cjs/validations/evm-transaction.js.map +1 -0
- package/dist/cjs/validations/hooks-common.js +207 -0
- package/dist/cjs/validations/hooks-common.js.map +1 -0
- package/dist/cjs/validations/required-actions.js +69 -0
- package/dist/cjs/validations/required-actions.js.map +1 -0
- package/dist/cjs/validations/solana-hook.js +225 -0
- package/dist/cjs/validations/solana-hook.js.map +1 -0
- package/dist/cjs/validations/solana-op-budget.js +293 -0
- package/dist/cjs/validations/solana-op-budget.js.map +1 -0
- package/dist/cjs/validations/solana-op-wrap.js +191 -0
- package/dist/cjs/validations/solana-op-wrap.js.map +1 -0
- package/dist/cjs/validations/solana-required-actions.js +122 -0
- package/dist/cjs/validations/solana-required-actions.js.map +1 -0
- package/dist/cjs/validations/solana-sign.js +171 -0
- package/dist/cjs/validations/solana-sign.js.map +1 -0
- package/dist/cjs/validations/solana-transaction.js +238 -0
- package/dist/cjs/validations/solana-transaction.js.map +1 -0
- package/dist/cjs/validations/trade-grouping.js +165 -0
- package/dist/cjs/validations/trade-grouping.js.map +1 -0
- package/dist/cjs/validations/trade-intent-consistency.js +104 -0
- package/dist/cjs/validations/trade-intent-consistency.js.map +1 -0
- package/dist/cjs/validations/trades.js +517 -0
- package/dist/cjs/validations/trades.js.map +1 -0
- package/dist/cjs/validator.js +75 -0
- package/dist/cjs/validator.js.map +1 -0
- package/dist/cjs/whitelists/environment-config.js +118 -0
- package/dist/cjs/whitelists/environment-config.js.map +1 -0
- package/dist/cjs/whitelists/evm/caveat-enforcers.js +18 -0
- package/dist/cjs/whitelists/evm/caveat-enforcers.js.map +1 -0
- package/dist/cjs/whitelists/evm/delegation-manager.js +9 -0
- package/dist/cjs/whitelists/evm/delegation-manager.js.map +1 -0
- package/dist/cjs/whitelists/evm/eip7702-delegation.js +8 -0
- package/dist/cjs/whitelists/evm/eip7702-delegation.js.map +1 -0
- package/dist/cjs/whitelists/evm/index.js +17 -0
- package/dist/cjs/whitelists/evm/index.js.map +1 -0
- package/dist/cjs/whitelists/evm/permit2.js +18 -0
- package/dist/cjs/whitelists/evm/permit2.js.map +1 -0
- package/dist/cjs/whitelists/evm/weth.js +19 -0
- package/dist/cjs/whitelists/evm/weth.js.map +1 -0
- package/dist/cjs/whitelists/solana/index.js +19 -0
- package/dist/cjs/whitelists/solana/index.js.map +1 -0
- package/dist/cjs/whitelists/solana/intent-signature.js +25 -0
- package/dist/cjs/whitelists/solana/intent-signature.js.map +1 -0
- package/dist/cjs/whitelists/solana/programs.js +19 -0
- package/dist/cjs/whitelists/solana/programs.js.map +1 -0
- package/dist/cjs/whitelists/subscription-to-chain-id.js +36 -0
- package/dist/cjs/whitelists/subscription-to-chain-id.js.map +1 -0
- package/dist/cjs/whitelists/types.js +29 -0
- package/dist/cjs/whitelists/types.js.map +1 -0
- package/dist/esm/graylists/evm/token-permit-metadata.js +24 -0
- package/dist/esm/graylists/evm/token-permit-metadata.js.map +1 -0
- package/dist/esm/helpers/address.js +63 -0
- package/dist/esm/helpers/address.js.map +1 -0
- package/dist/esm/helpers/caveat-decoder.js +55 -0
- package/dist/esm/helpers/caveat-decoder.js.map +1 -0
- package/dist/esm/helpers/constants.js +3 -0
- package/dist/esm/helpers/constants.js.map +1 -0
- package/dist/esm/helpers/evm-action.js +16 -0
- package/dist/esm/helpers/evm-action.js.map +1 -0
- package/dist/esm/helpers/evm-calldata.js +39 -0
- package/dist/esm/helpers/evm-calldata.js.map +1 -0
- package/dist/esm/helpers/evm-intent-id-abi.js +64 -0
- package/dist/esm/helpers/evm-intent-id-abi.js.map +1 -0
- package/dist/esm/helpers/evm-intent-id.js +67 -0
- package/dist/esm/helpers/evm-intent-id.js.map +1 -0
- package/dist/esm/helpers/evm-token.js +25 -0
- package/dist/esm/helpers/evm-token.js.map +1 -0
- package/dist/esm/helpers/evm-trade-amounts.js +39 -0
- package/dist/esm/helpers/evm-trade-amounts.js.map +1 -0
- package/dist/esm/helpers/solana-instruction.js +146 -0
- package/dist/esm/helpers/solana-instruction.js.map +1 -0
- package/dist/esm/helpers/solana-intent-id.js +457 -0
- package/dist/esm/helpers/solana-intent-id.js.map +1 -0
- package/dist/esm/helpers/solana-transaction-decode.js +55 -0
- package/dist/esm/helpers/solana-transaction-decode.js.map +1 -0
- package/dist/esm/helpers/zod.js +9 -0
- package/dist/esm/helpers/zod.js.map +1 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/types/enums.js +134 -0
- package/dist/esm/types/enums.js.map +1 -0
- package/dist/esm/types/index.js +5 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/request.js +62 -0
- package/dist/esm/types/request.js.map +1 -0
- package/dist/esm/types/response.js +249 -0
- package/dist/esm/types/response.js.map +1 -0
- package/dist/esm/types/validation.js +239 -0
- package/dist/esm/types/validation.js.map +1 -0
- package/dist/esm/validations/echo-fields.js +64 -0
- package/dist/esm/validations/echo-fields.js.map +1 -0
- package/dist/esm/validations/evm-caveats.js +228 -0
- package/dist/esm/validations/evm-caveats.js.map +1 -0
- package/dist/esm/validations/evm-op-budget.js +258 -0
- package/dist/esm/validations/evm-op-budget.js.map +1 -0
- 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 +5 -0
- package/dist/esm/validations/evm-op-hook.js.map +1 -0
- package/dist/esm/validations/evm-op-wrap.js +109 -0
- package/dist/esm/validations/evm-op-wrap.js.map +1 -0
- package/dist/esm/validations/evm-permit.js +221 -0
- package/dist/esm/validations/evm-permit.js.map +1 -0
- package/dist/esm/validations/evm-permit2.js +358 -0
- package/dist/esm/validations/evm-permit2.js.map +1 -0
- package/dist/esm/validations/evm-required-actions.js +181 -0
- package/dist/esm/validations/evm-required-actions.js.map +1 -0
- package/dist/esm/validations/evm-sign712-metamask.js +144 -0
- package/dist/esm/validations/evm-sign712-metamask.js.map +1 -0
- package/dist/esm/validations/evm-sign712.js +200 -0
- package/dist/esm/validations/evm-sign712.js.map +1 -0
- package/dist/esm/validations/evm-sign7702.js +56 -0
- package/dist/esm/validations/evm-sign7702.js.map +1 -0
- package/dist/esm/validations/evm-transaction.js +35 -0
- package/dist/esm/validations/evm-transaction.js.map +1 -0
- package/dist/esm/validations/hooks-common.js +204 -0
- package/dist/esm/validations/hooks-common.js.map +1 -0
- package/dist/esm/validations/required-actions.js +66 -0
- package/dist/esm/validations/required-actions.js.map +1 -0
- package/dist/esm/validations/solana-hook.js +222 -0
- package/dist/esm/validations/solana-hook.js.map +1 -0
- package/dist/esm/validations/solana-op-budget.js +290 -0
- package/dist/esm/validations/solana-op-budget.js.map +1 -0
- package/dist/esm/validations/solana-op-wrap.js +188 -0
- package/dist/esm/validations/solana-op-wrap.js.map +1 -0
- package/dist/esm/validations/solana-required-actions.js +119 -0
- package/dist/esm/validations/solana-required-actions.js.map +1 -0
- package/dist/esm/validations/solana-sign.js +168 -0
- package/dist/esm/validations/solana-sign.js.map +1 -0
- package/dist/esm/validations/solana-transaction.js +234 -0
- package/dist/esm/validations/solana-transaction.js.map +1 -0
- package/dist/esm/validations/trade-grouping.js +161 -0
- package/dist/esm/validations/trade-grouping.js.map +1 -0
- package/dist/esm/validations/trade-intent-consistency.js +101 -0
- package/dist/esm/validations/trade-intent-consistency.js.map +1 -0
- package/dist/esm/validations/trades.js +514 -0
- package/dist/esm/validations/trades.js.map +1 -0
- package/dist/esm/validator.js +72 -0
- package/dist/esm/validator.js.map +1 -0
- package/dist/esm/whitelists/environment-config.js +115 -0
- package/dist/esm/whitelists/environment-config.js.map +1 -0
- package/dist/esm/whitelists/evm/caveat-enforcers.js +15 -0
- package/dist/esm/whitelists/evm/caveat-enforcers.js.map +1 -0
- package/dist/esm/whitelists/evm/delegation-manager.js +6 -0
- package/dist/esm/whitelists/evm/delegation-manager.js.map +1 -0
- package/dist/esm/whitelists/evm/eip7702-delegation.js +5 -0
- package/dist/esm/whitelists/evm/eip7702-delegation.js.map +1 -0
- package/dist/esm/whitelists/evm/index.js +6 -0
- package/dist/esm/whitelists/evm/index.js.map +1 -0
- package/dist/esm/whitelists/evm/permit2.js +15 -0
- package/dist/esm/whitelists/evm/permit2.js.map +1 -0
- package/dist/esm/whitelists/evm/weth.js +16 -0
- package/dist/esm/whitelists/evm/weth.js.map +1 -0
- package/dist/esm/whitelists/solana/index.js +3 -0
- package/dist/esm/whitelists/solana/index.js.map +1 -0
- package/dist/esm/whitelists/solana/intent-signature.js +22 -0
- package/dist/esm/whitelists/solana/intent-signature.js.map +1 -0
- package/dist/esm/whitelists/solana/programs.js +16 -0
- package/dist/esm/whitelists/solana/programs.js.map +1 -0
- package/dist/esm/whitelists/subscription-to-chain-id.js +32 -0
- package/dist/esm/whitelists/subscription-to-chain-id.js.map +1 -0
- package/dist/esm/whitelists/types.js +26 -0
- package/dist/esm/whitelists/types.js.map +1 -0
- package/dist/types/graylists/evm/token-permit-metadata.d.ts +11 -0
- package/dist/types/graylists/evm/token-permit-metadata.d.ts.map +1 -0
- package/dist/types/helpers/address.d.ts +13 -0
- package/dist/types/helpers/address.d.ts.map +1 -0
- package/dist/types/helpers/caveat-decoder.d.ts +13 -0
- package/dist/types/helpers/caveat-decoder.d.ts.map +1 -0
- package/dist/types/helpers/constants.d.ts +2 -0
- package/dist/types/helpers/constants.d.ts.map +1 -0
- package/dist/types/helpers/evm-action.d.ts +4 -0
- package/dist/types/helpers/evm-action.d.ts.map +1 -0
- package/dist/types/helpers/evm-calldata.d.ts +15 -0
- package/dist/types/helpers/evm-calldata.d.ts.map +1 -0
- package/dist/types/helpers/evm-intent-id-abi.d.ts +106 -0
- package/dist/types/helpers/evm-intent-id-abi.d.ts.map +1 -0
- package/dist/types/helpers/evm-intent-id.d.ts +3 -0
- package/dist/types/helpers/evm-intent-id.d.ts.map +1 -0
- package/dist/types/helpers/evm-token.d.ts +4 -0
- package/dist/types/helpers/evm-token.d.ts.map +1 -0
- package/dist/types/helpers/evm-trade-amounts.d.ts +16 -0
- package/dist/types/helpers/evm-trade-amounts.d.ts.map +1 -0
- package/dist/types/helpers/solana-instruction.d.ts +44 -0
- package/dist/types/helpers/solana-instruction.d.ts.map +1 -0
- package/dist/types/helpers/solana-intent-id.d.ts +3 -0
- package/dist/types/helpers/solana-intent-id.d.ts.map +1 -0
- package/dist/types/helpers/solana-transaction-decode.d.ts +18 -0
- package/dist/types/helpers/solana-transaction-decode.d.ts.map +1 -0
- package/dist/types/helpers/zod.d.ts +2 -0
- package/dist/types/helpers/zod.d.ts.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/types/enums.d.ts +112 -0
- package/dist/types/types/enums.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +5 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/request.d.ts +134 -0
- package/dist/types/types/request.d.ts.map +1 -0
- package/dist/types/types/response.d.ts +1140 -0
- package/dist/types/types/response.d.ts.map +1 -0
- package/dist/types/types/validation.d.ts +216 -0
- package/dist/types/types/validation.d.ts.map +1 -0
- package/dist/types/validations/echo-fields.d.ts +3 -0
- package/dist/types/validations/echo-fields.d.ts.map +1 -0
- package/dist/types/validations/evm-caveats.d.ts +33 -0
- package/dist/types/validations/evm-caveats.d.ts.map +1 -0
- package/dist/types/validations/evm-op-budget.d.ts +4 -0
- package/dist/types/validations/evm-op-budget.d.ts.map +1 -0
- 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 +3 -0
- package/dist/types/validations/evm-op-hook.d.ts.map +1 -0
- package/dist/types/validations/evm-op-wrap.d.ts +3 -0
- package/dist/types/validations/evm-op-wrap.d.ts.map +1 -0
- package/dist/types/validations/evm-permit.d.ts +4 -0
- package/dist/types/validations/evm-permit.d.ts.map +1 -0
- package/dist/types/validations/evm-permit2.d.ts +4 -0
- package/dist/types/validations/evm-permit2.d.ts.map +1 -0
- package/dist/types/validations/evm-required-actions.d.ts +4 -0
- package/dist/types/validations/evm-required-actions.d.ts.map +1 -0
- package/dist/types/validations/evm-sign712-metamask.d.ts +3 -0
- package/dist/types/validations/evm-sign712-metamask.d.ts.map +1 -0
- package/dist/types/validations/evm-sign712.d.ts +4 -0
- package/dist/types/validations/evm-sign712.d.ts.map +1 -0
- package/dist/types/validations/evm-sign7702.d.ts +3 -0
- package/dist/types/validations/evm-sign7702.d.ts.map +1 -0
- package/dist/types/validations/evm-transaction.d.ts +3 -0
- package/dist/types/validations/evm-transaction.d.ts.map +1 -0
- package/dist/types/validations/hooks-common.d.ts +3 -0
- package/dist/types/validations/hooks-common.d.ts.map +1 -0
- package/dist/types/validations/required-actions.d.ts +4 -0
- package/dist/types/validations/required-actions.d.ts.map +1 -0
- package/dist/types/validations/solana-hook.d.ts +4 -0
- package/dist/types/validations/solana-hook.d.ts.map +1 -0
- package/dist/types/validations/solana-op-budget.d.ts +5 -0
- package/dist/types/validations/solana-op-budget.d.ts.map +1 -0
- package/dist/types/validations/solana-op-wrap.d.ts +4 -0
- package/dist/types/validations/solana-op-wrap.d.ts.map +1 -0
- package/dist/types/validations/solana-required-actions.d.ts +4 -0
- package/dist/types/validations/solana-required-actions.d.ts.map +1 -0
- package/dist/types/validations/solana-sign.d.ts +4 -0
- package/dist/types/validations/solana-sign.d.ts.map +1 -0
- package/dist/types/validations/solana-transaction.d.ts +5 -0
- package/dist/types/validations/solana-transaction.d.ts.map +1 -0
- package/dist/types/validations/trade-grouping.d.ts +22 -0
- package/dist/types/validations/trade-grouping.d.ts.map +1 -0
- package/dist/types/validations/trade-intent-consistency.d.ts +3 -0
- package/dist/types/validations/trade-intent-consistency.d.ts.map +1 -0
- package/dist/types/validations/trades.d.ts +3 -0
- package/dist/types/validations/trades.d.ts.map +1 -0
- package/dist/types/validator.d.ts +3 -0
- package/dist/types/validator.d.ts.map +1 -0
- package/dist/types/whitelists/environment-config.d.ts +4 -0
- package/dist/types/whitelists/environment-config.d.ts.map +1 -0
- package/dist/types/whitelists/evm/caveat-enforcers.d.ts +6 -0
- package/dist/types/whitelists/evm/caveat-enforcers.d.ts.map +1 -0
- package/dist/types/whitelists/evm/delegation-manager.d.ts +3 -0
- package/dist/types/whitelists/evm/delegation-manager.d.ts.map +1 -0
- package/dist/types/whitelists/evm/eip7702-delegation.d.ts +3 -0
- package/dist/types/whitelists/evm/eip7702-delegation.d.ts.map +1 -0
- package/dist/types/whitelists/evm/index.d.ts +6 -0
- package/dist/types/whitelists/evm/index.d.ts.map +1 -0
- package/dist/types/whitelists/evm/permit2.d.ts +3 -0
- package/dist/types/whitelists/evm/permit2.d.ts.map +1 -0
- package/dist/types/whitelists/evm/weth.d.ts +3 -0
- package/dist/types/whitelists/evm/weth.d.ts.map +1 -0
- package/dist/types/whitelists/solana/index.d.ts +3 -0
- package/dist/types/whitelists/solana/index.d.ts.map +1 -0
- package/dist/types/whitelists/solana/intent-signature.d.ts +9 -0
- package/dist/types/whitelists/solana/intent-signature.d.ts.map +1 -0
- package/dist/types/whitelists/solana/programs.d.ts +9 -0
- package/dist/types/whitelists/solana/programs.d.ts.map +1 -0
- package/dist/types/whitelists/subscription-to-chain-id.d.ts +4 -0
- package/dist/types/whitelists/subscription-to-chain-id.d.ts.map +1 -0
- package/dist/types/whitelists/types.d.ts +18 -0
- package/dist/types/whitelists/types.d.ts.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// "Graylists" are hardcoded lookup tables for known values that are NOT
|
|
3
|
+
// security-critical whitelists. They are used for informational or
|
|
4
|
+
// best-effort validation. If a value is absent from a graylist, the
|
|
5
|
+
// corresponding check is skipped rather than producing a violation.
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.TOKEN_PERMIT_METADATA = void 0;
|
|
8
|
+
exports.getTokenPermitMetadata = getTokenPermitMetadata;
|
|
9
|
+
// Note: addresses in this map MUST be lowercased.
|
|
10
|
+
const enums_1 = require("../../types/enums");
|
|
11
|
+
exports.TOKEN_PERMIT_METADATA = {
|
|
12
|
+
// TODO: verify this list. At the moment it contains TEST values.
|
|
13
|
+
[enums_1.ChainId.Ethereum]: {
|
|
14
|
+
"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48": { name: "USD Coin", version: "2" }, // USDC
|
|
15
|
+
"0x6b175474e89094c44da98b954eedeac495271d0f": { name: "Dai Stablecoin", version: "1" }, // DAI
|
|
16
|
+
"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9": { name: "Aave Token", version: "1" }, // AAVE
|
|
17
|
+
},
|
|
18
|
+
[enums_1.ChainId.Arbitrum]: {
|
|
19
|
+
"0xaf88d065e77c8cc2239327c5edb3a432268e5831": { name: "USD Coin", version: "2" }, // USDC
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
function getTokenPermitMetadata(realChainId, tokenAddress) {
|
|
23
|
+
const chain = exports.TOKEN_PERMIT_METADATA[realChainId];
|
|
24
|
+
if (!chain)
|
|
25
|
+
return undefined;
|
|
26
|
+
return chain[tokenAddress.toLowerCase()];
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=token-permit-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-permit-metadata.js","sourceRoot":"","sources":["../../../../src/graylists/evm/token-permit-metadata.ts"],"names":[],"mappings":";AAAA,wEAAwE;AACxE,mEAAmE;AACnE,oEAAoE;AACpE,oEAAoE;;;AA+BpE,wDAOC;AAtBD,kDAAkD;AAClD,6CAA4C;AAE/B,QAAA,qBAAqB,GAA2B;IACzD,iEAAiE;IACjE,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,4CAA4C,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,OAAO;QACzF,4CAA4C,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM;QAC9F,4CAA4C,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,OAAO;KAC9F;IACD,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,4CAA4C,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,OAAO;KAC5F;CACJ,CAAC;AAEF,SAAgB,sBAAsB,CAClC,WAAoB,EACpB,YAAoB;IAEpB,MAAM,KAAK,GAAG,6BAAqB,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AddressFormat = exports.TRON_NATIVE_ADDRESS = void 0;
|
|
7
|
+
exports.getAddressFormat = getAddressFormat;
|
|
8
|
+
exports.isTronAddress = isTronAddress;
|
|
9
|
+
exports.tronAddressToEvmHex = tronAddressToEvmHex;
|
|
10
|
+
exports.normalizeAddress = normalizeAddress;
|
|
11
|
+
exports.addressEquals = addressEquals;
|
|
12
|
+
exports.isNativeToken = isNativeToken;
|
|
13
|
+
const viem_1 = require("viem");
|
|
14
|
+
const bs58_1 = __importDefault(require("bs58"));
|
|
15
|
+
const enums_1 = require("../types/enums");
|
|
16
|
+
const solana_1 = require("../whitelists/solana");
|
|
17
|
+
// Tron-specific addresses (Base58Check format)
|
|
18
|
+
exports.TRON_NATIVE_ADDRESS = "T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb";
|
|
19
|
+
var AddressFormat;
|
|
20
|
+
(function (AddressFormat) {
|
|
21
|
+
AddressFormat[AddressFormat["EVM"] = 0] = "EVM";
|
|
22
|
+
AddressFormat[AddressFormat["Tron"] = 1] = "Tron";
|
|
23
|
+
AddressFormat[AddressFormat["Solana"] = 2] = "Solana";
|
|
24
|
+
})(AddressFormat || (exports.AddressFormat = AddressFormat = {}));
|
|
25
|
+
function getAddressFormat(chainId) {
|
|
26
|
+
if (chainId === enums_1.ChainId.Tron)
|
|
27
|
+
return AddressFormat.Tron;
|
|
28
|
+
if (chainId === enums_1.ChainId.Solana)
|
|
29
|
+
return AddressFormat.Solana;
|
|
30
|
+
return AddressFormat.EVM;
|
|
31
|
+
}
|
|
32
|
+
function isTronAddress(address) {
|
|
33
|
+
if (!address)
|
|
34
|
+
return false;
|
|
35
|
+
if (address.startsWith("0x"))
|
|
36
|
+
return false;
|
|
37
|
+
if (!address.startsWith("T"))
|
|
38
|
+
return false;
|
|
39
|
+
if (address.length !== 34)
|
|
40
|
+
return false;
|
|
41
|
+
// AI: TODO: add Base58Check checksum verification if needed
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
// Converts Tron Base58Check address to EVM hex format (0x...)
|
|
45
|
+
// Tron address = 0x41 (1 byte prefix) + 20 bytes address + 4 bytes checksum
|
|
46
|
+
// We extract the 20-byte address part and return as 0x-prefixed hex
|
|
47
|
+
function tronAddressToEvmHex(tronAddress) {
|
|
48
|
+
const decoded = bs58_1.default.decode(tronAddress);
|
|
49
|
+
// Skip first byte (0x41 prefix) and last 4 bytes (checksum)
|
|
50
|
+
const addressBytes = decoded.slice(1, 21);
|
|
51
|
+
return (0, viem_1.bytesToHex)(addressBytes);
|
|
52
|
+
}
|
|
53
|
+
// Normalizes address for comparison based on chain format
|
|
54
|
+
function normalizeAddress(chainId, address) {
|
|
55
|
+
const format = getAddressFormat(chainId);
|
|
56
|
+
if (format === AddressFormat.Tron || format === AddressFormat.Solana) {
|
|
57
|
+
return address; // case-sensitive
|
|
58
|
+
}
|
|
59
|
+
return address.toLowerCase(); // EVM: case-insensitive
|
|
60
|
+
}
|
|
61
|
+
// Compares two addresses with chain-aware normalization
|
|
62
|
+
function addressEquals(chainId, a, b) {
|
|
63
|
+
return normalizeAddress(chainId, a) === normalizeAddress(chainId, b);
|
|
64
|
+
}
|
|
65
|
+
// Checks if address is native token for the given chain
|
|
66
|
+
function isNativeToken(address, chainId) {
|
|
67
|
+
if (chainId === enums_1.ChainId.Tron) {
|
|
68
|
+
return address === exports.TRON_NATIVE_ADDRESS;
|
|
69
|
+
}
|
|
70
|
+
if (chainId === enums_1.ChainId.Solana) {
|
|
71
|
+
return address === solana_1.SYSTEM_PROGRAM;
|
|
72
|
+
}
|
|
73
|
+
return address.toLowerCase() === viem_1.zeroAddress;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=address.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/helpers/address.ts"],"names":[],"mappings":";;;;;;AAcA,4CAIC;AAED,sCAOC;AAKD,kDAKC;AAGD,4CAMC;AAGD,sCAEC;AAGD,sCAQC;AA9DD,+BAA+C;AAC/C,gDAAwB;AACxB,0CAAyC;AACzC,iDAAsD;AAEtD,+CAA+C;AAClC,QAAA,mBAAmB,GAAG,oCAAoC,CAAC;AAExE,IAAY,aAIX;AAJD,WAAY,aAAa;IACrB,+CAAG,CAAA;IACH,iDAAI,CAAA;IACJ,qDAAM,CAAA;AACV,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB;AAED,SAAgB,gBAAgB,CAAC,OAAe;IAC5C,IAAI,OAAO,KAAK,eAAO,CAAC,IAAI;QAAE,OAAO,aAAa,CAAC,IAAI,CAAC;IACxD,IAAI,OAAO,KAAK,eAAO,CAAC,MAAM;QAAE,OAAO,aAAa,CAAC,MAAM,CAAC;IAC5D,OAAO,aAAa,CAAC,GAAG,CAAC;AAC7B,CAAC;AAED,SAAgB,aAAa,CAAC,OAAe;IACzC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACxC,4DAA4D;IAC5D,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,8DAA8D;AAC9D,4EAA4E;AAC5E,oEAAoE;AACpE,SAAgB,mBAAmB,CAAC,WAAmB;IACnD,MAAM,OAAO,GAAG,cAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACzC,4DAA4D;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1C,OAAO,IAAA,iBAAU,EAAC,YAAY,CAAC,CAAC;AACpC,CAAC;AAED,0DAA0D;AAC1D,SAAgB,gBAAgB,CAAC,OAAe,EAAE,OAAe;IAC7D,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,aAAa,CAAC,IAAI,IAAI,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;QACnE,OAAO,OAAO,CAAC,CAAC,iBAAiB;IACrC,CAAC;IACD,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,wBAAwB;AAC1D,CAAC;AAED,wDAAwD;AACxD,SAAgB,aAAa,CAAC,OAAe,EAAE,CAAS,EAAE,CAAS;IAC/D,OAAO,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,wDAAwD;AACxD,SAAgB,aAAa,CAAC,OAAe,EAAE,OAAgB;IAC3D,IAAI,OAAO,KAAK,eAAO,CAAC,IAAI,EAAE,CAAC;QAC3B,OAAO,OAAO,KAAK,2BAAmB,CAAC;IAC3C,CAAC;IACD,IAAI,OAAO,KAAK,eAAO,CAAC,MAAM,EAAE,CAAC;QAC7B,OAAO,OAAO,KAAK,uBAAc,CAAC;IACtC,CAAC;IACD,OAAO,OAAO,CAAC,WAAW,EAAE,KAAK,kBAAW,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.decodeExactExecution = decodeExactExecution;
|
|
4
|
+
exports.decodeExactExecutionBatch = decodeExactExecutionBatch;
|
|
5
|
+
exports.decodeTimestampEnforcer = decodeTimestampEnforcer;
|
|
6
|
+
const viem_1 = require("viem");
|
|
7
|
+
// ExactExecutionEnforcer uses packed encoding:
|
|
8
|
+
// bytes [0:20] — address target
|
|
9
|
+
// bytes [20:52] — uint256 value
|
|
10
|
+
// bytes [52:] — bytes callData
|
|
11
|
+
// See: https://docs.metamask.io/smart-accounts-kit/reference/delegation/caveats#exactexecution
|
|
12
|
+
function decodeExactExecution(terms) {
|
|
13
|
+
const hex = strip0x(terms);
|
|
14
|
+
if (hex.length < 104) { // 52 bytes minimum (20 + 32 + 0)
|
|
15
|
+
// This exception will be caught and reported as a violation in the validation logic
|
|
16
|
+
throw new Error(`ExactExecution terms too short: ${hex.length / 2} bytes`);
|
|
17
|
+
}
|
|
18
|
+
const to = "0x" + hex.slice(0, 40);
|
|
19
|
+
const value = BigInt("0x" + hex.slice(40, 104)).toString();
|
|
20
|
+
const data = "0x" + hex.slice(104);
|
|
21
|
+
return { to, value, data };
|
|
22
|
+
}
|
|
23
|
+
// ExactExecutionBatchEnforcer uses abi.encode(Execution[]):
|
|
24
|
+
// Execution = (address target, uint256 value, bytes callData)
|
|
25
|
+
// See: https://docs.metamask.io/smart-accounts-kit/reference/delegation/caveats#exactexecutionbatch
|
|
26
|
+
function decodeExactExecutionBatch(terms) {
|
|
27
|
+
const decoded = (0, viem_1.decodeAbiParameters)([
|
|
28
|
+
{
|
|
29
|
+
type: "tuple[]",
|
|
30
|
+
components: [
|
|
31
|
+
{ name: "target", type: "address" },
|
|
32
|
+
{ name: "value", type: "uint256" },
|
|
33
|
+
{ name: "callData", type: "bytes" },
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
], terms);
|
|
37
|
+
const executions = decoded[0];
|
|
38
|
+
return executions.map(e => ({
|
|
39
|
+
to: e.target.toLowerCase(),
|
|
40
|
+
value: e.value.toString(),
|
|
41
|
+
data: e.callData,
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
// TimestampEnforcer uses packed encoding:
|
|
45
|
+
// bytes [0:16] — uint128 afterThreshold
|
|
46
|
+
// bytes [16:32] — uint128 beforeThreshold
|
|
47
|
+
// See: https://docs.metamask.io/smart-accounts-kit/reference/delegation/caveats#timestamp
|
|
48
|
+
function decodeTimestampEnforcer(terms) {
|
|
49
|
+
const hex = strip0x(terms);
|
|
50
|
+
if (hex.length < 64) { // 32 bytes minimum (16 + 16)
|
|
51
|
+
throw new Error(`TimestampEnforcer terms too short: ${hex.length / 2} bytes`);
|
|
52
|
+
}
|
|
53
|
+
const afterThreshold = BigInt("0x" + hex.slice(0, 32));
|
|
54
|
+
const beforeThreshold = BigInt("0x" + hex.slice(32, 64));
|
|
55
|
+
return { afterThreshold, beforeThreshold };
|
|
56
|
+
}
|
|
57
|
+
function strip0x(hex) {
|
|
58
|
+
return hex.startsWith("0x") ? hex.slice(2) : hex;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=caveat-decoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caveat-decoder.js","sourceRoot":"","sources":["../../../src/helpers/caveat-decoder.ts"],"names":[],"mappings":";;AAaA,oDAaC;AAKD,8DAsBC;AAWD,0DAWC;AA3ED,+BAA2C;AAQ3C,+CAA+C;AAC/C,mCAAmC;AACnC,kCAAkC;AAClC,mCAAmC;AACnC,+FAA+F;AAC/F,SAAgB,oBAAoB,CAAC,KAAa;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE3B,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,iCAAiC;QACrD,oFAAoF;QACpF,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC3D,MAAM,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEnC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,4DAA4D;AAC5D,gEAAgE;AAChE,oGAAoG;AACpG,SAAgB,yBAAyB,CAAC,KAAa;IACnD,MAAM,OAAO,GAAG,IAAA,0BAAmB,EAC/B;QACI;YACI,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;gBACnC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;aACtC;SACJ;KACJ,EACD,KAAsB,CACzB,CAAC;IAEF,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAmE,CAAC;IAEhG,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE;QAC1B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE;QACzB,IAAI,EAAE,CAAC,CAAC,QAAQ;KACnB,CAAC,CAAC,CAAC;AACR,CAAC;AAOD,0CAA0C;AAC1C,2CAA2C;AAC3C,4CAA4C;AAC5C,0FAA0F;AAC1F,SAAgB,uBAAuB,CAAC,KAAa;IACjD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE3B,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC,6BAA6B;QAChD,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAEzD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,OAAO,CAAC,GAAW;IACxB,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/helpers/constants.ts"],"names":[],"mappings":";;;AAAA,8DAA8D;AACjD,QAAA,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.actionUsesTransactionCalls = actionUsesTransactionCalls;
|
|
4
|
+
exports.getTransactionCalls = getTransactionCalls;
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
// Transaction and Sign712MetaMask actions carry transactionCalls;
|
|
7
|
+
// Sign712 (Permit/Permit2) and Sign7702Authorization do not.
|
|
8
|
+
function actionUsesTransactionCalls(action) {
|
|
9
|
+
return action.type === types_1.EvmActionKind.Transaction
|
|
10
|
+
|| action.type === types_1.EvmActionKind.Sign712MetaMask;
|
|
11
|
+
}
|
|
12
|
+
// For Transaction-type actions (non-AA), the call is in action.data directly.
|
|
13
|
+
// For Sign712MetaMask-type actions (AA), the calls are in details.transactionCalls.
|
|
14
|
+
function getTransactionCalls(action) {
|
|
15
|
+
if (action.type === types_1.EvmActionKind.Transaction) {
|
|
16
|
+
return [action.data];
|
|
17
|
+
}
|
|
18
|
+
return action.details?.transactionCalls ?? [];
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=evm-action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evm-action.js","sourceRoot":"","sources":["../../../src/helpers/evm-action.ts"],"names":[],"mappings":";;AAIA,gEAGC;AAID,kDAKC;AAhBD,oCAAgF;AAEhF,kEAAkE;AAClE,6DAA6D;AAC7D,SAAgB,0BAA0B,CAAC,MAAyB;IAChE,OAAO,MAAM,CAAC,IAAI,KAAK,qBAAa,CAAC,WAAW;WACzC,MAAM,CAAC,IAAI,KAAK,qBAAa,CAAC,eAAe,CAAC;AACzD,CAAC;AAED,8EAA8E;AAC9E,oFAAoF;AACpF,SAAgB,mBAAmB,CAAC,MAAyB;IACzD,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAa,CAAC,WAAW,EAAE,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAC,IAA0B,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,EAAE,gBAAgB,IAAI,EAAE,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TRANSFER_SELECTOR = exports.DEPOSIT_SELECTOR = exports.APPROVE_SELECTOR = void 0;
|
|
4
|
+
exports.decodeApproveCalldata = decodeApproveCalldata;
|
|
5
|
+
exports.isDepositCalldata = isDepositCalldata;
|
|
6
|
+
exports.decodeTransferCalldata = decodeTransferCalldata;
|
|
7
|
+
const viem_1 = require("viem");
|
|
8
|
+
exports.APPROVE_SELECTOR = "0x095ea7b3";
|
|
9
|
+
exports.DEPOSIT_SELECTOR = "0xd0e30db0";
|
|
10
|
+
exports.TRANSFER_SELECTOR = "0xa9059cbb";
|
|
11
|
+
function decodeApproveCalldata(data) {
|
|
12
|
+
if (!data.toLowerCase().startsWith(exports.APPROVE_SELECTOR)) {
|
|
13
|
+
throw new Error(`expected approve selector ${exports.APPROVE_SELECTOR}, got ${data.slice(0, 10)}`);
|
|
14
|
+
}
|
|
15
|
+
const decoded = (0, viem_1.decodeFunctionData)({
|
|
16
|
+
abi: viem_1.erc20Abi,
|
|
17
|
+
data: data,
|
|
18
|
+
});
|
|
19
|
+
if (decoded.functionName !== "approve") {
|
|
20
|
+
throw new Error(`unexpected function: ${decoded.functionName}`);
|
|
21
|
+
}
|
|
22
|
+
const [spender, amount] = decoded.args;
|
|
23
|
+
return { spender: spender.toLowerCase(), amount };
|
|
24
|
+
}
|
|
25
|
+
function isDepositCalldata(data) {
|
|
26
|
+
const normalized = data.toLowerCase();
|
|
27
|
+
return (normalized === exports.DEPOSIT_SELECTOR || // only selector
|
|
28
|
+
normalized === exports.DEPOSIT_SELECTOR + "0".repeat(56) // selector + padding
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
function decodeTransferCalldata(data) {
|
|
32
|
+
if (!data.toLowerCase().startsWith(exports.TRANSFER_SELECTOR)) {
|
|
33
|
+
throw new Error(`expected transfer selector ${exports.TRANSFER_SELECTOR}, got ${data.slice(0, 10)}`);
|
|
34
|
+
}
|
|
35
|
+
const decoded = (0, viem_1.decodeFunctionData)({
|
|
36
|
+
abi: viem_1.erc20Abi,
|
|
37
|
+
data: data,
|
|
38
|
+
});
|
|
39
|
+
if (decoded.functionName !== "transfer") {
|
|
40
|
+
throw new Error(`unexpected function: ${decoded.functionName}`);
|
|
41
|
+
}
|
|
42
|
+
const [to, amount] = decoded.args;
|
|
43
|
+
return { to: to.toLowerCase(), amount };
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=evm-calldata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evm-calldata.js","sourceRoot":"","sources":["../../../src/helpers/evm-calldata.ts"],"names":[],"mappings":";;;AAgBA,sDAkBC;AAED,8CAMC;AAED,wDAkBC;AA9DD,+BAAoD;AAEvC,QAAA,gBAAgB,GAAG,YAAY,CAAC;AAChC,QAAA,gBAAgB,GAAG,YAAY,CAAC;AAChC,QAAA,iBAAiB,GAAG,YAAY,CAAC;AAY9C,SAAgB,qBAAqB,CAAC,IAAY;IAC9C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,wBAAgB,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACX,6BAA6B,wBAAgB,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAC5E,CAAC;IACN,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,yBAAkB,EAAC;QAC/B,GAAG,EAAE,eAAQ;QACb,IAAI,EAAE,IAAqB;KAC9B,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACvC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC;AACtD,CAAC;AAED,SAAgB,iBAAiB,CAAC,IAAY;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACtC,OAAO,CACH,UAAU,KAAK,wBAAgB,IAAI,gBAAgB;QACnD,UAAU,KAAK,wBAAgB,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,qBAAqB;KACzE,CAAC;AACN,CAAC;AAED,SAAgB,sBAAsB,CAAC,IAAY;IAC/C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,yBAAiB,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACX,8BAA8B,yBAAiB,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAC9E,CAAC;IACN,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,yBAAkB,EAAC;QAC/B,GAAG,EAAE,eAAQ;QACb,IAAI,EAAE,IAAqB;KAC9B,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAClC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ABI parameter definition for DeBridgeIntentManager.submitIntent(_intent)
|
|
3
|
+
// Extracted from the on-chain contract ABI — used for encoding the intent
|
|
4
|
+
// struct before hashing to compute intentId.
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SUBMIT_INTENT_ABI_PARAMS = void 0;
|
|
7
|
+
const allowedAddressTuple = {
|
|
8
|
+
type: "tuple[]",
|
|
9
|
+
components: [
|
|
10
|
+
{ name: "allowedAddress", type: "bytes" },
|
|
11
|
+
{ name: "chains", type: "uint32[]" },
|
|
12
|
+
{ name: "isAnyChain", type: "bool" },
|
|
13
|
+
],
|
|
14
|
+
};
|
|
15
|
+
exports.SUBMIT_INTENT_ABI_PARAMS = [
|
|
16
|
+
{
|
|
17
|
+
type: "tuple",
|
|
18
|
+
components: [
|
|
19
|
+
{ name: "intentChainId", type: "uint32" },
|
|
20
|
+
{ name: "intentOwner", type: "address" },
|
|
21
|
+
{ ...allowedAddressTuple, name: "receiverDetails" },
|
|
22
|
+
{
|
|
23
|
+
type: "tuple[]",
|
|
24
|
+
name: "inputToken",
|
|
25
|
+
components: [
|
|
26
|
+
{ name: "token", type: "address" },
|
|
27
|
+
{ name: "minPartialAmount", type: "uint256" },
|
|
28
|
+
{ name: "maxPartialAmount", type: "uint256" },
|
|
29
|
+
{ name: "budget", type: "uint256" },
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
type: "tuple[]",
|
|
34
|
+
name: "giveToken",
|
|
35
|
+
components: [
|
|
36
|
+
{ name: "inputToken", type: "address" },
|
|
37
|
+
{ name: "giveToken", type: "address" },
|
|
38
|
+
{ name: "numerator", type: "uint256" },
|
|
39
|
+
{ name: "denominator", type: "uint8" },
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
type: "tuple[]",
|
|
44
|
+
name: "takeToken",
|
|
45
|
+
components: [
|
|
46
|
+
{ name: "giveToken", type: "address" },
|
|
47
|
+
{ name: "takeTokenChain", type: "uint32" },
|
|
48
|
+
{ name: "takeToken", type: "bytes" },
|
|
49
|
+
{ name: "numerator", type: "uint256" },
|
|
50
|
+
{ name: "denominator", type: "uint8" },
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
{ name: "expirationTimestamp", type: "uint64" },
|
|
54
|
+
{ name: "intentTimestamp", type: "uint64" },
|
|
55
|
+
{ name: "srcAllowedSender", type: "address[]" },
|
|
56
|
+
{ name: "executionMetadata", type: "bytes" },
|
|
57
|
+
{ name: "isAnyDlnMetadataAllowed", type: "bool" },
|
|
58
|
+
{ name: "dlnMetadata", type: "bytes" },
|
|
59
|
+
{ name: "externalCallHash", type: "bytes32" },
|
|
60
|
+
{ name: "combinedInteractions", type: "bytes" },
|
|
61
|
+
{ name: "allowedCancelBeneficiary", type: "address" },
|
|
62
|
+
{ ...allowedAddressTuple, name: "dstAuthorityAddress" },
|
|
63
|
+
{ name: "intentAuthority", type: "address" },
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
//# sourceMappingURL=evm-intent-id-abi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evm-intent-id-abi.js","sourceRoot":"","sources":["../../../src/helpers/evm-intent-id-abi.ts"],"names":[],"mappings":";AAAA,2EAA2E;AAC3E,0EAA0E;AAC1E,6CAA6C;;;AAE7C,MAAM,mBAAmB,GAAG;IACxB,IAAI,EAAE,SAAkB;IACxB,UAAU,EAAE;QACR,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;QACzC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE;QACpC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE;KACvC;CACJ,CAAC;AAEW,QAAA,wBAAwB,GAAG;IACpC;QACI,IAAI,EAAE,OAAgB;QACtB,UAAU,EAAE;YACR,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;YACxC,EAAE,GAAG,mBAAmB,EAAE,IAAI,EAAE,iBAAiB,EAAE;YACnD;gBACI,IAAI,EAAE,SAAkB;gBACxB,IAAI,EAAE,YAAY;gBAClB,UAAU,EAAE;oBACR,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;oBAClC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC7C,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC7C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;iBACtC;aACJ;YACD;gBACI,IAAI,EAAE,SAAkB;gBACxB,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE;oBACR,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;oBACvC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;oBACtC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;oBACtC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;iBACzC;aACJ;YACD;gBACI,IAAI,EAAE,SAAkB;gBACxB,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE;oBACR,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;oBACtC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1C,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE;oBACpC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;oBACtC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;iBACzC;aACJ;YACD,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC/C,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3C,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE;YAC/C,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,EAAE;YAC5C,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,MAAM,EAAE;YACjD,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;YACtC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE;YAC7C,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAO,EAAE;YAC/C,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,SAAS,EAAE;YACrD,EAAE,GAAG,mBAAmB,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACvD,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE;SAC/C;KACJ;CACK,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.computeIntentId = computeIntentId;
|
|
4
|
+
const viem_1 = require("viem");
|
|
5
|
+
const evm_intent_id_abi_1 = require("./evm-intent-id-abi");
|
|
6
|
+
function computeIntentId(intent) {
|
|
7
|
+
const struct = convertToIntentStruct(intent);
|
|
8
|
+
const encoded = (0, viem_1.encodeAbiParameters)(evm_intent_id_abi_1.SUBMIT_INTENT_ABI_PARAMS, [struct]);
|
|
9
|
+
return (0, viem_1.keccak256)(encoded);
|
|
10
|
+
}
|
|
11
|
+
function convertToIntentStruct(intent) {
|
|
12
|
+
return {
|
|
13
|
+
intentChainId: intent.intentChainId,
|
|
14
|
+
intentOwner: intent.intentOwner,
|
|
15
|
+
receiverDetails: convertAllowedAddresses(intent.receiverDetails),
|
|
16
|
+
inputToken: convertInputTokens(intent.inputToken),
|
|
17
|
+
giveToken: convertGiveTokens(intent.giveToken),
|
|
18
|
+
takeToken: convertTakeTokens(intent.takeToken),
|
|
19
|
+
expirationTimestamp: BigInt(intent.expirationTimestamp),
|
|
20
|
+
intentTimestamp: BigInt(intent.intentTimestamp),
|
|
21
|
+
srcAllowedSender: (intent.srcAllowedSender ?? []),
|
|
22
|
+
executionMetadata: (intent.executionMetadata ?? viem_1.zeroHash),
|
|
23
|
+
isAnyDlnMetadataAllowed: true,
|
|
24
|
+
dlnMetadata: (intent.dlnMetadata ?? "0x"),
|
|
25
|
+
externalCallHash: (intent.externalCallHash ?? viem_1.zeroHash),
|
|
26
|
+
combinedInteractions: "0x",
|
|
27
|
+
allowedCancelBeneficiary: (intent.allowedCancelBeneficiary ?? viem_1.zeroAddress),
|
|
28
|
+
dstAuthorityAddress: convertAllowedAddresses(intent.dstAuthorityAddress),
|
|
29
|
+
intentAuthority: intent.intentAuthority,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function convertAllowedAddresses(details) {
|
|
33
|
+
if (!details)
|
|
34
|
+
return [];
|
|
35
|
+
return details.map(d => ({
|
|
36
|
+
allowedAddress: d.address,
|
|
37
|
+
chains: d.destinationChainIds === "any" ? [] : d.destinationChainIds,
|
|
38
|
+
isAnyChain: d.destinationChainIds === "any",
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
function convertInputTokens(tokens) {
|
|
42
|
+
if (!tokens)
|
|
43
|
+
return [];
|
|
44
|
+
return tokens.map(t => ({
|
|
45
|
+
token: t.address,
|
|
46
|
+
minPartialAmount: BigInt(t.minPartialAmount),
|
|
47
|
+
maxPartialAmount: BigInt(t.maxPartialAmount),
|
|
48
|
+
budget: BigInt(t.constraintBudget),
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
function convertGiveTokens(tokens) {
|
|
52
|
+
if (!tokens)
|
|
53
|
+
return [];
|
|
54
|
+
return tokens.map(t => ({
|
|
55
|
+
inputToken: t.inputTokenAddress,
|
|
56
|
+
giveToken: t.giveTokenAddress,
|
|
57
|
+
numerator: BigInt(t.numerator),
|
|
58
|
+
denominator: Number(t.denominator),
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
function convertTakeTokens(tokens) {
|
|
62
|
+
return tokens.map(t => ({
|
|
63
|
+
giveToken: t.fromTokenAddress,
|
|
64
|
+
takeTokenChain: t.takeTokenChainId,
|
|
65
|
+
takeToken: t.takeTokenAddress,
|
|
66
|
+
numerator: BigInt(t.numerator),
|
|
67
|
+
denominator: Number(t.denominator),
|
|
68
|
+
}));
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=evm-intent-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evm-intent-id.js","sourceRoot":"","sources":["../../../src/helpers/evm-intent-id.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isNativeToken = void 0;
|
|
4
|
+
exports.resolveWrappedTokenAddress = resolveWrappedTokenAddress;
|
|
5
|
+
const evm_1 = require("../whitelists/evm");
|
|
6
|
+
const programs_1 = require("../whitelists/solana/programs");
|
|
7
|
+
const enums_1 = require("../types/enums");
|
|
8
|
+
const address_1 = require("./address");
|
|
9
|
+
// Re-export for convenience — callers that only need isNativeToken
|
|
10
|
+
// don't have to know about address.ts
|
|
11
|
+
var address_2 = require("./address");
|
|
12
|
+
Object.defineProperty(exports, "isNativeToken", { enumerable: true, get: function () { return address_2.isNativeToken; } });
|
|
13
|
+
// Returns the wrapped token address for native tokens, or the token address as-is for non-native.
|
|
14
|
+
// For EVM native (0x000...0) → WETH address for the given chain.
|
|
15
|
+
// For Tron native (T9yD14N...) → WTRX (0x891... in EVM hex).
|
|
16
|
+
// For Solana native (111...1) → WSOL (SPL_NATIVE_MINT).
|
|
17
|
+
// For non-native tokens → the address unchanged.
|
|
18
|
+
function resolveWrappedTokenAddress(tokenAddress, realChainId) {
|
|
19
|
+
if (!(0, address_1.isNativeToken)(tokenAddress, realChainId)) {
|
|
20
|
+
return tokenAddress;
|
|
21
|
+
}
|
|
22
|
+
if (realChainId === enums_1.ChainId.Solana) {
|
|
23
|
+
return programs_1.SPL_NATIVE_MINT;
|
|
24
|
+
}
|
|
25
|
+
const wethAddresses = evm_1.WETH_CONTRACTS[realChainId] ?? evm_1.WETH_CONTRACTS[enums_1.ChainId.Wildcard];
|
|
26
|
+
if (!wethAddresses || wethAddresses.length === 0)
|
|
27
|
+
return undefined;
|
|
28
|
+
return wethAddresses[0];
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=evm-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evm-token.js","sourceRoot":"","sources":["../../../src/helpers/evm-token.ts"],"names":[],"mappings":";;;AAcA,gEAaC;AA3BD,2CAAmD;AACnD,4DAAgE;AAChE,0CAAyC;AACzC,uCAA0C;AAE1C,mEAAmE;AACnE,sCAAsC;AACtC,qCAA0C;AAAjC,wGAAA,aAAa,OAAA;AAEtB,kGAAkG;AAClG,iEAAiE;AACjE,6DAA6D;AAC7D,wDAAwD;AACxD,iDAAiD;AACjD,SAAgB,0BAA0B,CACtC,YAAoB,EACpB,WAAoB;IAEpB,IAAI,CAAC,IAAA,uBAAa,EAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;QAC5C,OAAO,YAAY,CAAC;IACxB,CAAC;IACD,IAAI,WAAW,KAAK,eAAO,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,0BAAe,CAAC;IAC3B,CAAC;IACD,MAAM,aAAa,GAAG,oBAAc,CAAC,WAAW,CAAC,IAAI,oBAAc,CAAC,eAAO,CAAC,QAAQ,CAAC,CAAC;IACtF,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACnE,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sumTradeAmounts = sumTradeAmounts;
|
|
4
|
+
const types_1 = require("../types");
|
|
5
|
+
const address_1 = require("./address");
|
|
6
|
+
const evm_token_1 = require("./evm-token");
|
|
7
|
+
// Sums srcChainTokenInAmount for trades matching a given token address.
|
|
8
|
+
// Returns skip=true if any matching trade has max/auto amount.
|
|
9
|
+
// Returns violations if any matching trade has an invalid (non-numeric) amount.
|
|
10
|
+
function sumTradeAmounts(trades, tokenAddress, realChainId) {
|
|
11
|
+
let sum = 0n;
|
|
12
|
+
// Resolve native → WETH so Budget for WETH matches trades with native input (and vice versa)
|
|
13
|
+
const resolvedToken = (0, evm_token_1.resolveWrappedTokenAddress)(tokenAddress, realChainId) ?? tokenAddress;
|
|
14
|
+
const normalized = (0, address_1.normalizeAddress)(realChainId, resolvedToken);
|
|
15
|
+
for (let i = 0; i < trades.length; i++) {
|
|
16
|
+
const trade = trades[i];
|
|
17
|
+
const resolvedTradeToken = (0, evm_token_1.resolveWrappedTokenAddress)(trade.srcChainTokenIn, realChainId);
|
|
18
|
+
const normalizedTradeToken = (0, address_1.normalizeAddress)(realChainId, resolvedTradeToken ?? trade.srcChainTokenIn);
|
|
19
|
+
if (normalizedTradeToken !== normalized) {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
const amount = trade.srcChainTokenInAmount;
|
|
23
|
+
if (amount === types_1.SpecialAmount.Max || amount === types_1.SpecialAmount.Auto) {
|
|
24
|
+
return { skip: true };
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
sum += BigInt(amount);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return {
|
|
31
|
+
violations: [{
|
|
32
|
+
code: types_1.ViolationCode.TradeAmountInvalid,
|
|
33
|
+
message: `trade srcChainTokenInAmount is not a valid number`,
|
|
34
|
+
path: `request.trades[${i}].srcChainTokenInAmount`,
|
|
35
|
+
actual: amount,
|
|
36
|
+
}],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return { sum };
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=evm-trade-amounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evm-trade-amounts.js","sourceRoot":"","sources":["../../../src/helpers/evm-trade-amounts.ts"],"names":[],"mappings":";;AAkBA,0CAuCC;AAzDD,oCAMkB;AAClB,uCAA6C;AAC7C,2CAAyD;AAOzD,wEAAwE;AACxE,+DAA+D;AAC/D,gFAAgF;AAChF,SAAgB,eAAe,CAC3B,MAAsB,EACtB,YAAoB,EACpB,WAAoB;IAEpB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,6FAA6F;IAC7F,MAAM,aAAa,GAAG,IAAA,sCAA0B,EAAC,YAAY,EAAE,WAAW,CAAC,IAAI,YAAY,CAAC;IAC5F,MAAM,UAAU,GAAG,IAAA,0BAAgB,EAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAEhE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,kBAAkB,GAAG,IAAA,sCAA0B,EAAC,KAAK,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QAC1F,MAAM,oBAAoB,GAAG,IAAA,0BAAgB,EACzC,WAAW,EAAE,kBAAkB,IAAI,KAAK,CAAC,eAAe,CAC3D,CAAC;QACF,IAAI,oBAAoB,KAAK,UAAU,EAAE,CAAC;YACtC,SAAS;QACb,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,qBAAqB,CAAC;QAC3C,IAAI,MAAM,KAAK,qBAAa,CAAC,GAAG,IAAI,MAAM,KAAK,qBAAa,CAAC,IAAI,EAAE,CAAC;YAChE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC;YACD,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACL,OAAO;gBACH,UAAU,EAAE,CAAC;wBACT,IAAI,EAAE,qBAAa,CAAC,kBAAkB;wBACtC,OAAO,EAAE,mDAAmD;wBAC5D,IAAI,EAAE,kBAAkB,CAAC,yBAAyB;wBAClD,MAAM,EAAE,MAAM;qBACjB,CAAC;aACL,CAAC;QACN,CAAC;IACL,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,CAAC;AACnB,CAAC"}
|