@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,242 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Environment = exports.ViolationCode = void 0;
|
|
4
|
+
var ViolationCode;
|
|
5
|
+
(function (ViolationCode) {
|
|
6
|
+
// Structure
|
|
7
|
+
ViolationCode["InvalidRequestStructure"] = "INVALID_REQUEST_STRUCTURE";
|
|
8
|
+
ViolationCode["InvalidResponseStructure"] = "INVALID_RESPONSE_STRUCTURE";
|
|
9
|
+
// Echo fields
|
|
10
|
+
ViolationCode["RequestIdMismatch"] = "REQUEST_ID_MISMATCH";
|
|
11
|
+
ViolationCode["UserIdMismatch"] = "USER_ID_MISMATCH";
|
|
12
|
+
ViolationCode["IntentExpirationTimestampMismatch"] = "INTENT_EXPIRATION_TIMESTAMP_MISMATCH";
|
|
13
|
+
ViolationCode["ReferralCodeMismatch"] = "REFERRAL_CODE_MISMATCH";
|
|
14
|
+
// Required actions — general
|
|
15
|
+
ViolationCode["DuplicateActionId"] = "DUPLICATE_ACTION_ID";
|
|
16
|
+
ViolationCode["ForbiddenTransactionWithAA"] = "FORBIDDEN_TRANSACTION_WITH_AA";
|
|
17
|
+
ViolationCode["ForbiddenSign7702WithoutAA"] = "FORBIDDEN_SIGN7702_WITHOUT_AA";
|
|
18
|
+
ViolationCode["ForbiddenSign712MetaMaskWithoutAA"] = "FORBIDDEN_SIGN712_METAMASK_WITHOUT_AA";
|
|
19
|
+
ViolationCode["ForbiddenDelegateWithoutAA"] = "FORBIDDEN_DELEGATE_WITHOUT_AA";
|
|
20
|
+
ViolationCode["ForbiddenTransactionCallsWithoutAA"] = "FORBIDDEN_TRANSACTION_CALLS_WITHOUT_AA";
|
|
21
|
+
// Required actions — Sign7702Authorization
|
|
22
|
+
ViolationCode["Sign7702ActionsNotSingleDelegate"] = "SIGN7702_ACTIONS_NOT_SINGLE_DELEGATE";
|
|
23
|
+
ViolationCode["Sign7702ContractAddressNotWhitelisted"] = "SIGN7702_CONTRACT_ADDRESS_NOT_WHITELISTED";
|
|
24
|
+
ViolationCode["DuplicateSign7702Authorization"] = "DUPLICATE_SIGN7702_AUTHORIZATION";
|
|
25
|
+
// Subscription / chain resolution
|
|
26
|
+
ViolationCode["UnknownSubscriptionId"] = "UNKNOWN_SUBSCRIPTION_ID";
|
|
27
|
+
// Required actions — Sign712MetaMask
|
|
28
|
+
ViolationCode["Sign712MetaMaskEmptyTransactionCalls"] = "SIGN712_METAMASK_EMPTY_TRANSACTION_CALLS";
|
|
29
|
+
ViolationCode["Sign712MetaMaskForbiddenAction"] = "SIGN712_METAMASK_FORBIDDEN_ACTION";
|
|
30
|
+
ViolationCode["Sign712MetaMaskChainIdMismatch"] = "SIGN712_METAMASK_CHAIN_ID_MISMATCH";
|
|
31
|
+
ViolationCode["Sign712MetaMaskDomainNameNotDelegationManager"] = "SIGN712_METAMASK_DOMAIN_NAME_NOT_DELEGATION_MANAGER";
|
|
32
|
+
ViolationCode["Sign712MetaMaskVerifyingContractNotWhitelisted"] = "SIGN712_METAMASK_VERIFYING_CONTRACT_NOT_WHITELISTED";
|
|
33
|
+
ViolationCode["Sign712MetaMaskDelegatorMismatch"] = "SIGN712_METAMASK_DELEGATOR_MISMATCH";
|
|
34
|
+
ViolationCode["Sign712MetaMaskCaveatEnforcerNotWhitelisted"] = "SIGN712_METAMASK_CAVEAT_ENFORCER_NOT_WHITELISTED";
|
|
35
|
+
ViolationCode["Sign712MetaMaskMissingExactExecutionCaveat"] = "SIGN712_METAMASK_MISSING_EXACT_EXECUTION_CAVEAT";
|
|
36
|
+
ViolationCode["Sign712MetaMaskMissingExactExecutionBatchCaveat"] = "SIGN712_METAMASK_MISSING_EXACT_EXECUTION_BATCH_CAVEAT";
|
|
37
|
+
ViolationCode["Sign712MetaMaskExactExecutionMismatch"] = "SIGN712_METAMASK_EXACT_EXECUTION_MISMATCH";
|
|
38
|
+
ViolationCode["Sign712MetaMaskExactExecutionBatchMismatch"] = "SIGN712_METAMASK_EXACT_EXECUTION_BATCH_MISMATCH";
|
|
39
|
+
ViolationCode["Sign712MetaMaskCaveatDecodeError"] = "SIGN712_METAMASK_CAVEAT_DECODE_ERROR";
|
|
40
|
+
ViolationCode["Sign712MetaMaskMissingIdEnforcerCaveat"] = "SIGN712_METAMASK_MISSING_ID_ENFORCER_CAVEAT";
|
|
41
|
+
ViolationCode["Sign712MetaMaskIdEnforcerValueMismatch"] = "SIGN712_METAMASK_ID_ENFORCER_VALUE_MISMATCH";
|
|
42
|
+
ViolationCode["Sign712MetaMaskMissingTimestampEnforcerCaveat"] = "SIGN712_METAMASK_MISSING_TIMESTAMP_ENFORCER_CAVEAT";
|
|
43
|
+
ViolationCode["Sign712MetaMaskDuplicateTimestampEnforcerCaveat"] = "SIGN712_METAMASK_DUPLICATE_TIMESTAMP_ENFORCER_CAVEAT";
|
|
44
|
+
ViolationCode["Sign712MetaMaskTimestampBeforeThresholdMismatch"] = "SIGN712_METAMASK_TIMESTAMP_BEFORE_THRESHOLD_MISMATCH";
|
|
45
|
+
// Required actions — Sign712 (Intent)
|
|
46
|
+
ViolationCode["Sign712IntentMissing"] = "SIGN712_INTENT_MISSING";
|
|
47
|
+
ViolationCode["Sign712IntentDuplicate"] = "SIGN712_INTENT_DUPLICATE";
|
|
48
|
+
ViolationCode["Sign712IntentActionsNotSingleIntent"] = "SIGN712_INTENT_ACTIONS_NOT_SINGLE_INTENT";
|
|
49
|
+
ViolationCode["Sign712IntentPrimaryTypeInvalid"] = "SIGN712_INTENT_PRIMARY_TYPE_INVALID";
|
|
50
|
+
ViolationCode["Sign712IntentChainIdMismatch"] = "SIGN712_INTENT_CHAIN_ID_MISMATCH";
|
|
51
|
+
ViolationCode["Sign712IntentDomainNameInvalid"] = "SIGN712_INTENT_DOMAIN_NAME_INVALID";
|
|
52
|
+
ViolationCode["Sign712IntentDomainVersionInvalid"] = "SIGN712_INTENT_DOMAIN_VERSION_INVALID";
|
|
53
|
+
ViolationCode["Sign712IntentVerifyingContractNotWhitelisted"] = "SIGN712_INTENT_VERIFYING_CONTRACT_NOT_WHITELISTED";
|
|
54
|
+
ViolationCode["Sign712IntentIdMismatch"] = "SIGN712_INTENT_ID_MISMATCH";
|
|
55
|
+
ViolationCode["Sign712IntentIdComputeError"] = "SIGN712_INTENT_ID_COMPUTE_ERROR";
|
|
56
|
+
ViolationCode["Sign712IntentTypesInvalid"] = "SIGN712_INTENT_TYPES_INVALID";
|
|
57
|
+
// Required actions — Permit
|
|
58
|
+
ViolationCode["PermitActionsNotSingleBudget"] = "PERMIT_ACTIONS_NOT_SINGLE_BUDGET";
|
|
59
|
+
ViolationCode["PermitPrimaryTypeInvalid"] = "PERMIT_PRIMARY_TYPE_INVALID";
|
|
60
|
+
ViolationCode["PermitChainIdMismatch"] = "PERMIT_CHAIN_ID_MISMATCH";
|
|
61
|
+
ViolationCode["PermitVerifyingContractMismatch"] = "PERMIT_VERIFYING_CONTRACT_MISMATCH";
|
|
62
|
+
ViolationCode["PermitOwnerMismatch"] = "PERMIT_OWNER_MISMATCH";
|
|
63
|
+
ViolationCode["PermitSpenderMissing"] = "PERMIT_SPENDER_MISSING";
|
|
64
|
+
ViolationCode["PermitSpenderNotAllowed"] = "PERMIT_SPENDER_NOT_ALLOWED";
|
|
65
|
+
ViolationCode["PermitDetailsAllowanceHolderMismatch"] = "PERMIT_DETAILS_ALLOWANCE_HOLDER_MISMATCH";
|
|
66
|
+
ViolationCode["PermitDetailsTokenAddressMismatch"] = "PERMIT_DETAILS_TOKEN_ADDRESS_MISMATCH";
|
|
67
|
+
ViolationCode["PermitDetailsMissing"] = "PERMIT_DETAILS_MISSING";
|
|
68
|
+
ViolationCode["PermitForbiddenWithoutPermitMode"] = "PERMIT_FORBIDDEN_WITHOUT_PERMIT_MODE";
|
|
69
|
+
ViolationCode["PermitDomainNameMismatch"] = "PERMIT_DOMAIN_NAME_MISMATCH";
|
|
70
|
+
ViolationCode["PermitDomainVersionMismatch"] = "PERMIT_DOMAIN_VERSION_MISMATCH";
|
|
71
|
+
// Required actions — Permit2
|
|
72
|
+
ViolationCode["Permit2ActionsNotSingleBudget"] = "PERMIT2_ACTIONS_NOT_SINGLE_BUDGET";
|
|
73
|
+
ViolationCode["Permit2PrimaryTypeInvalid"] = "PERMIT2_PRIMARY_TYPE_INVALID";
|
|
74
|
+
ViolationCode["Permit2ChainIdMismatch"] = "PERMIT2_CHAIN_ID_MISMATCH";
|
|
75
|
+
ViolationCode["Permit2VerifyingContractNotWhitelisted"] = "PERMIT2_VERIFYING_CONTRACT_NOT_WHITELISTED";
|
|
76
|
+
ViolationCode["Permit2DomainHasVersion"] = "PERMIT2_DOMAIN_HAS_VERSION";
|
|
77
|
+
ViolationCode["Permit2TypesInvalid"] = "PERMIT2_TYPES_INVALID";
|
|
78
|
+
ViolationCode["Permit2TokenMismatch"] = "PERMIT2_TOKEN_MISMATCH";
|
|
79
|
+
ViolationCode["Permit2AmountNotMaxUint160"] = "PERMIT2_AMOUNT_NOT_MAX_UINT160";
|
|
80
|
+
ViolationCode["Permit2ExpirationMismatch"] = "PERMIT2_EXPIRATION_MISMATCH";
|
|
81
|
+
ViolationCode["Permit2MessageDetailsMissing"] = "PERMIT2_MESSAGE_DETAILS_MISSING";
|
|
82
|
+
ViolationCode["Permit2SpenderMissing"] = "PERMIT2_SPENDER_MISSING";
|
|
83
|
+
ViolationCode["Permit2SpenderNotAllowed"] = "PERMIT2_SPENDER_NOT_ALLOWED";
|
|
84
|
+
ViolationCode["Permit2DetailsAllowanceHolderMismatch"] = "PERMIT2_DETAILS_ALLOWANCE_HOLDER_MISMATCH";
|
|
85
|
+
ViolationCode["Permit2DetailsTokenAddressMismatch"] = "PERMIT2_DETAILS_TOKEN_ADDRESS_MISMATCH";
|
|
86
|
+
ViolationCode["Permit2DetailsPermit2ContractMismatch"] = "PERMIT2_DETAILS_PERMIT2_CONTRACT_MISMATCH";
|
|
87
|
+
ViolationCode["Permit2DetailsMissing"] = "PERMIT2_DETAILS_MISSING";
|
|
88
|
+
ViolationCode["Permit2ForbiddenWithoutPermitMode"] = "PERMIT2_FORBIDDEN_WITHOUT_PERMIT_MODE";
|
|
89
|
+
// Required actions — Transaction
|
|
90
|
+
ViolationCode["TransactionActionsInvalid"] = "TRANSACTION_ACTIONS_INVALID";
|
|
91
|
+
// Operations — Budget
|
|
92
|
+
ViolationCode["BudgetTransactionCallsMissing"] = "BUDGET_TRANSACTION_CALLS_MISSING";
|
|
93
|
+
ViolationCode["BudgetTokenAddressMissing"] = "BUDGET_TOKEN_ADDRESS_MISSING";
|
|
94
|
+
ViolationCode["BudgetForbiddenWithApproveNone"] = "BUDGET_FORBIDDEN_WITH_APPROVE_NONE";
|
|
95
|
+
ViolationCode["BudgetTokenAddressMismatch"] = "BUDGET_TOKEN_ADDRESS_MISMATCH";
|
|
96
|
+
ViolationCode["BudgetTokenAddressZero"] = "BUDGET_TOKEN_ADDRESS_ZERO";
|
|
97
|
+
ViolationCode["BudgetTokenNotInTrades"] = "BUDGET_TOKEN_NOT_IN_TRADES";
|
|
98
|
+
ViolationCode["BudgetTooManyTransactionCalls"] = "BUDGET_TOO_MANY_TRANSACTION_CALLS";
|
|
99
|
+
ViolationCode["BudgetCalldataInvalid"] = "BUDGET_CALLDATA_INVALID";
|
|
100
|
+
ViolationCode["BudgetAmountMismatch"] = "BUDGET_AMOUNT_MISMATCH";
|
|
101
|
+
ViolationCode["BudgetAllowanceHolderMismatch"] = "BUDGET_ALLOWANCE_HOLDER_MISMATCH";
|
|
102
|
+
ViolationCode["BudgetAllowanceHolderNotWhitelisted"] = "BUDGET_ALLOWANCE_HOLDER_NOT_WHITELISTED";
|
|
103
|
+
// Operations — Wrap
|
|
104
|
+
ViolationCode["WrapTransactionCallsMissing"] = "WRAP_TRANSACTION_CALLS_MISSING";
|
|
105
|
+
ViolationCode["WrapTooManyTransactionCalls"] = "WRAP_TOO_MANY_TRANSACTION_CALLS";
|
|
106
|
+
ViolationCode["WrapNativeTokenNotInTrades"] = "WRAP_NATIVE_TOKEN_NOT_IN_TRADES";
|
|
107
|
+
ViolationCode["WrapToNotWeth"] = "WRAP_TO_NOT_WETH";
|
|
108
|
+
ViolationCode["WrapCalldataInvalid"] = "WRAP_CALLDATA_INVALID";
|
|
109
|
+
ViolationCode["WrapAmountMismatch"] = "WRAP_AMOUNT_MISMATCH";
|
|
110
|
+
// Operations — GasCompensation
|
|
111
|
+
ViolationCode["GasCompensationTransactionCallsMissing"] = "GAS_COMPENSATION_TRANSACTION_CALLS_MISSING";
|
|
112
|
+
ViolationCode["GasCompensationTooManyTransactionCalls"] = "GAS_COMPENSATION_TOO_MANY_TRANSACTION_CALLS";
|
|
113
|
+
ViolationCode["GasCompensationNoMatchingPreHook"] = "GAS_COMPENSATION_NO_MATCHING_PRE_HOOK";
|
|
114
|
+
ViolationCode["GasCompensationToMismatch"] = "GAS_COMPENSATION_TO_MISMATCH";
|
|
115
|
+
ViolationCode["GasCompensationCalldataInvalid"] = "GAS_COMPENSATION_CALLDATA_INVALID";
|
|
116
|
+
ViolationCode["GasCompensationNativeValueZero"] = "GAS_COMPENSATION_NATIVE_VALUE_ZERO";
|
|
117
|
+
// Required actions — approval mutual exclusivity
|
|
118
|
+
ViolationCode["ApprovalMutualExclusivity"] = "APPROVAL_MUTUAL_EXCLUSIVITY";
|
|
119
|
+
// Trade validation — amount parsing (used by Budget/Wrap)
|
|
120
|
+
ViolationCode["TradeAmountInvalid"] = "TRADE_AMOUNT_INVALID";
|
|
121
|
+
// Trade validation — structure
|
|
122
|
+
ViolationCode["TradeCountMismatch"] = "TRADE_COUNT_MISMATCH";
|
|
123
|
+
// Trade validation — srcChainTokenIn
|
|
124
|
+
ViolationCode["TradeSrcTokenInChainIdMismatch"] = "TRADE_SRC_TOKEN_IN_CHAIN_ID_MISMATCH";
|
|
125
|
+
ViolationCode["TradeSrcTokenInAddressMismatch"] = "TRADE_SRC_TOKEN_IN_ADDRESS_MISMATCH";
|
|
126
|
+
ViolationCode["TradeSrcTokenInAmountMismatch"] = "TRADE_SRC_TOKEN_IN_AMOUNT_MISMATCH";
|
|
127
|
+
ViolationCode["TradeOperatingExpenseInvalid"] = "TRADE_OPERATING_EXPENSE_INVALID";
|
|
128
|
+
ViolationCode["TradeOperatingExpenseNegative"] = "TRADE_OPERATING_EXPENSE_NEGATIVE";
|
|
129
|
+
ViolationCode["TradeOperatingExpenseExpectedPositive"] = "TRADE_OPERATING_EXPENSE_EXPECTED_POSITIVE";
|
|
130
|
+
ViolationCode["TradeMutatedWithOperatingExpenseMismatch"] = "TRADE_MUTATED_WITH_OPERATING_EXPENSE_MISMATCH";
|
|
131
|
+
// Trade validation — srcChainTokenOut
|
|
132
|
+
ViolationCode["TradeSrcTokenOutChainIdMismatch"] = "TRADE_SRC_TOKEN_OUT_CHAIN_ID_MISMATCH";
|
|
133
|
+
ViolationCode["TradeSrcTokenOutAmountNegative"] = "TRADE_SRC_TOKEN_OUT_AMOUNT_NEGATIVE";
|
|
134
|
+
// Trade validation — dstChainTokenOut
|
|
135
|
+
ViolationCode["TradeDstTokenOutChainIdMismatch"] = "TRADE_DST_TOKEN_OUT_CHAIN_ID_MISMATCH";
|
|
136
|
+
ViolationCode["TradeDstTokenOutAddressMismatch"] = "TRADE_DST_TOKEN_OUT_ADDRESS_MISMATCH";
|
|
137
|
+
ViolationCode["TradeDstTokenOutAmountBelowRequested"] = "TRADE_DST_TOKEN_OUT_AMOUNT_BELOW_REQUESTED";
|
|
138
|
+
ViolationCode["TradeWithoutPartnerFeeAmountTooLow"] = "TRADE_WITHOUT_PARTNER_FEE_AMOUNT_TOO_LOW";
|
|
139
|
+
ViolationCode["TradeWithoutPartnerFeeAmountMismatch"] = "TRADE_WITHOUT_PARTNER_FEE_AMOUNT_MISMATCH";
|
|
140
|
+
// Trade validation — USD values
|
|
141
|
+
ViolationCode["TradeUsdValueNegative"] = "TRADE_USD_VALUE_NEGATIVE";
|
|
142
|
+
// Trade validation — execution-mode echo fields
|
|
143
|
+
ViolationCode["TradeSrcAuthorityAddressMismatch"] = "TRADE_SRC_AUTHORITY_ADDRESS_MISMATCH";
|
|
144
|
+
ViolationCode["TradeDstRecipientMismatch"] = "TRADE_DST_RECIPIENT_MISMATCH";
|
|
145
|
+
ViolationCode["TradeDstAuthorityAddressMismatch"] = "TRADE_DST_AUTHORITY_ADDRESS_MISMATCH";
|
|
146
|
+
// Trade validation — prependedOperatingExpenseCost
|
|
147
|
+
ViolationCode["TradePrependedCostNotZero"] = "TRADE_PREPENDED_COST_NOT_ZERO";
|
|
148
|
+
ViolationCode["TradePrependedCostInvalid"] = "TRADE_PREPENDED_COST_INVALID";
|
|
149
|
+
// Trade validation — relatedIntentId
|
|
150
|
+
ViolationCode["TradeRelatedIntentIdNotFound"] = "TRADE_RELATED_INTENT_ID_NOT_FOUND";
|
|
151
|
+
ViolationCode["TradeRelatedIntentIdChainIdInconsistent"] = "TRADE_RELATED_INTENT_ID_CHAIN_ID_INCONSISTENT";
|
|
152
|
+
ViolationCode["TradeRelatedIntentIdAuthorityInconsistent"] = "TRADE_RELATED_INTENT_ID_AUTHORITY_INCONSISTENT";
|
|
153
|
+
ViolationCode["TradeIntentChainIdMismatch"] = "TRADE_INTENT_CHAIN_ID_MISMATCH";
|
|
154
|
+
// Trade validation — partnerFeeBps
|
|
155
|
+
ViolationCode["TradePartnerFeeBpsMismatch"] = "TRADE_PARTNER_FEE_BPS_MISMATCH";
|
|
156
|
+
// Trade grouping
|
|
157
|
+
ViolationCode["IntentNotMatchedToTradeGroup"] = "INTENT_NOT_MATCHED_TO_TRADE_GROUP";
|
|
158
|
+
ViolationCode["TradeGroupHasNoIntent"] = "TRADE_GROUP_HAS_NO_INTENT";
|
|
159
|
+
ViolationCode["DuplicateIntentsInTradeGroup"] = "DUPLICATE_INTENTS_IN_TRADE_GROUP";
|
|
160
|
+
// Required actions — kind consistency
|
|
161
|
+
ViolationCode["RequiredActionKindInconsistent"] = "REQUIRED_ACTION_KIND_INCONSISTENT";
|
|
162
|
+
// Solana — general required actions
|
|
163
|
+
ViolationCode["SolanaDuplicateActionId"] = "SOLANA_DUPLICATE_ACTION_ID";
|
|
164
|
+
ViolationCode["SolanaRequiredActionsOrder"] = "SOLANA_REQUIRED_ACTIONS_ORDER";
|
|
165
|
+
ViolationCode["SolanaForbiddenTransactionWithAA"] = "SOLANA_FORBIDDEN_TRANSACTION_WITH_AA";
|
|
166
|
+
ViolationCode["SolanaForbiddenSignTransactionWithoutAA"] = "SOLANA_FORBIDDEN_SIGN_TRANSACTION_WITHOUT_AA";
|
|
167
|
+
ViolationCode["SolanaForbiddenOperationAction"] = "SOLANA_FORBIDDEN_OPERATION_ACTION";
|
|
168
|
+
// Solana — Transaction / SignTransaction common
|
|
169
|
+
ViolationCode["SolanaTransactionActionsInvalid"] = "SOLANA_TRANSACTION_ACTIONS_INVALID";
|
|
170
|
+
ViolationCode["SolanaTransactionDecodeError"] = "SOLANA_TRANSACTION_DECODE_ERROR";
|
|
171
|
+
ViolationCode["SolanaTransactionVersionInvalid"] = "SOLANA_TRANSACTION_VERSION_INVALID";
|
|
172
|
+
// Solana — Transaction (AA=false)
|
|
173
|
+
ViolationCode["SolanaTransactionFeePayerMismatch"] = "SOLANA_TRANSACTION_FEE_PAYER_MISMATCH";
|
|
174
|
+
ViolationCode["SolanaTransactionComputeBudgetMissing"] = "SOLANA_TRANSACTION_COMPUTE_BUDGET_MISSING";
|
|
175
|
+
ViolationCode["SolanaTransactionForbiddenInstruction"] = "SOLANA_TRANSACTION_FORBIDDEN_INSTRUCTION";
|
|
176
|
+
// Solana — SignTransaction (AA=true)
|
|
177
|
+
ViolationCode["SolanaSignTransactionFeePayerIsUser"] = "SOLANA_SIGN_TRANSACTION_FEE_PAYER_IS_USER";
|
|
178
|
+
ViolationCode["SolanaSignTransactionForbiddenInstruction"] = "SOLANA_SIGN_TRANSACTION_FORBIDDEN_INSTRUCTION";
|
|
179
|
+
// Solana — Budget (approve) common
|
|
180
|
+
ViolationCode["SolanaBudgetForbiddenWithApproveNone"] = "SOLANA_BUDGET_FORBIDDEN_WITH_APPROVE_NONE";
|
|
181
|
+
ViolationCode["SolanaBudgetNoApproveInstruction"] = "SOLANA_BUDGET_NO_APPROVE_INSTRUCTION";
|
|
182
|
+
// Solana — Budget — Classic SPL Token Approve
|
|
183
|
+
ViolationCode["SolanaBudgetClassicAtaMismatch"] = "SOLANA_BUDGET_CLASSIC_ATA_MISMATCH";
|
|
184
|
+
ViolationCode["SolanaBudgetClassicDelegateNotWhitelisted"] = "SOLANA_BUDGET_CLASSIC_DELEGATE_NOT_WHITELISTED";
|
|
185
|
+
ViolationCode["SolanaBudgetClassicOwnerMismatch"] = "SOLANA_BUDGET_CLASSIC_OWNER_MISMATCH";
|
|
186
|
+
ViolationCode["SolanaBudgetClassicAmountMismatch"] = "SOLANA_BUDGET_CLASSIC_AMOUNT_MISMATCH";
|
|
187
|
+
// Solana — Budget — Custom (approveProtocolTransfers)
|
|
188
|
+
ViolationCode["SolanaBudgetCustomMakerMismatch"] = "SOLANA_BUDGET_CUSTOM_MAKER_MISMATCH";
|
|
189
|
+
ViolationCode["SolanaBudgetCustomStatePdaMismatch"] = "SOLANA_BUDGET_CUSTOM_STATE_PDA_MISMATCH";
|
|
190
|
+
ViolationCode["SolanaBudgetCustomTokenProgramInvalid"] = "SOLANA_BUDGET_CUSTOM_TOKEN_PROGRAM_INVALID";
|
|
191
|
+
ViolationCode["SolanaBudgetCustomAtaMismatch"] = "SOLANA_BUDGET_CUSTOM_ATA_MISMATCH";
|
|
192
|
+
ViolationCode["SolanaBudgetCustomVecLengthMismatch"] = "SOLANA_BUDGET_CUSTOM_VEC_LENGTH_MISMATCH";
|
|
193
|
+
ViolationCode["SolanaBudgetCustomAmountMismatch"] = "SOLANA_BUDGET_CUSTOM_AMOUNT_MISMATCH";
|
|
194
|
+
// Solana — unclassified instruction
|
|
195
|
+
ViolationCode["SolanaUnclassifiedInstruction"] = "SOLANA_UNCLASSIFIED_INSTRUCTION";
|
|
196
|
+
// Solana — Compensation (forbidden)
|
|
197
|
+
ViolationCode["SolanaForbiddenCompensationAction"] = "SOLANA_FORBIDDEN_COMPENSATION_ACTION";
|
|
198
|
+
// Solana — Wrap
|
|
199
|
+
ViolationCode["SolanaWrapNotForNativeToken"] = "SOLANA_WRAP_NOT_FOR_NATIVE_TOKEN";
|
|
200
|
+
ViolationCode["SolanaWrapNoTransferInstruction"] = "SOLANA_WRAP_NO_TRANSFER_INSTRUCTION";
|
|
201
|
+
ViolationCode["SolanaWrapNoSyncNativeInstruction"] = "SOLANA_WRAP_NO_SYNC_NATIVE_INSTRUCTION";
|
|
202
|
+
ViolationCode["SolanaWrapTransferAmountMismatch"] = "SOLANA_WRAP_TRANSFER_AMOUNT_MISMATCH";
|
|
203
|
+
ViolationCode["SolanaWrapTransferToMismatch"] = "SOLANA_WRAP_TRANSFER_TO_MISMATCH";
|
|
204
|
+
ViolationCode["SolanaWrapSyncNativeAccountMismatch"] = "SOLANA_WRAP_SYNC_NATIVE_ACCOUNT_MISMATCH";
|
|
205
|
+
ViolationCode["SolanaWrapCreateAtaOwnerMismatch"] = "SOLANA_WRAP_CREATE_ATA_OWNER_MISMATCH";
|
|
206
|
+
ViolationCode["SolanaWrapCreateAtaMintMismatch"] = "SOLANA_WRAP_CREATE_ATA_MINT_MISMATCH";
|
|
207
|
+
ViolationCode["SolanaWrapCreateAtaAddressMismatch"] = "SOLANA_WRAP_CREATE_ATA_ADDRESS_MISMATCH";
|
|
208
|
+
// Solana — Sign (Intent)
|
|
209
|
+
ViolationCode["SolanaSignIntentMissing"] = "SOLANA_SIGN_INTENT_MISSING";
|
|
210
|
+
ViolationCode["SolanaSignIntentDuplicate"] = "SOLANA_SIGN_INTENT_DUPLICATE";
|
|
211
|
+
ViolationCode["SolanaSignIntentActionsInvalid"] = "SOLANA_SIGN_INTENT_ACTIONS_INVALID";
|
|
212
|
+
ViolationCode["SolanaSignIntentDataInvalid"] = "SOLANA_SIGN_INTENT_DATA_INVALID";
|
|
213
|
+
ViolationCode["SolanaSignIntentIdMismatch"] = "SOLANA_SIGN_INTENT_ID_MISMATCH";
|
|
214
|
+
ViolationCode["SolanaSignIntentIdComputeError"] = "SOLANA_SIGN_INTENT_ID_COMPUTE_ERROR";
|
|
215
|
+
// Hooks — common (chain-agnostic)
|
|
216
|
+
ViolationCode["HookEchoMismatch"] = "HOOK_ECHO_MISMATCH";
|
|
217
|
+
ViolationCode["HookCountMismatch"] = "HOOK_COUNT_MISMATCH";
|
|
218
|
+
ViolationCode["NonEmptyHooksWithoutAA"] = "NON_EMPTY_HOOKS_WITHOUT_AA";
|
|
219
|
+
ViolationCode["HookActionsInvalid"] = "HOOK_ACTIONS_INVALID";
|
|
220
|
+
ViolationCode["HookGasCompensationWithoutInfo"] = "HOOK_GAS_COMPENSATION_WITHOUT_INFO";
|
|
221
|
+
ViolationCode["HookDuplicateActionId"] = "HOOK_DUPLICATE_ACTION_ID";
|
|
222
|
+
// Hooks — Solana
|
|
223
|
+
ViolationCode["SolanaHookDataMismatch"] = "SOLANA_HOOK_DATA_MISMATCH";
|
|
224
|
+
ViolationCode["SolanaHookDecodeError"] = "SOLANA_HOOK_DECODE_ERROR";
|
|
225
|
+
ViolationCode["SolanaGasCompensationDecodeError"] = "SOLANA_GAS_COMPENSATION_DECODE_ERROR";
|
|
226
|
+
ViolationCode["SolanaGasCompensationForbiddenProgram"] = "SOLANA_GAS_COMPENSATION_FORBIDDEN_PROGRAM";
|
|
227
|
+
ViolationCode["SolanaGasCompensationTransferMissing"] = "SOLANA_GAS_COMPENSATION_TRANSFER_MISSING";
|
|
228
|
+
ViolationCode["SolanaGasCompensationTooManyTransfers"] = "SOLANA_GAS_COMPENSATION_TOO_MANY_TRANSFERS";
|
|
229
|
+
ViolationCode["SolanaGasCompensationRecipientNotWhitelisted"] = "SOLANA_GAS_COMPENSATION_RECIPIENT_NOT_WHITELISTED";
|
|
230
|
+
ViolationCode["SolanaGasCompensationTokenMismatch"] = "SOLANA_GAS_COMPENSATION_TOKEN_MISMATCH";
|
|
231
|
+
ViolationCode["SolanaGasCompensationFeePayerIsUser"] = "SOLANA_GAS_COMPENSATION_FEE_PAYER_IS_USER";
|
|
232
|
+
ViolationCode["SolanaGasCompensationUnexpectedInstruction"] = "SOLANA_GAS_COMPENSATION_UNEXPECTED_INSTRUCTION";
|
|
233
|
+
ViolationCode["UrlNotWhitelisted"] = "URL_NOT_WHITELISTED";
|
|
234
|
+
})(ViolationCode || (exports.ViolationCode = ViolationCode = {}));
|
|
235
|
+
var Environment;
|
|
236
|
+
(function (Environment) {
|
|
237
|
+
Environment[Environment["Prod"] = 0] = "Prod";
|
|
238
|
+
Environment[Environment["Hanoi"] = 1] = "Hanoi";
|
|
239
|
+
Environment[Environment["Dubai"] = 2] = "Dubai";
|
|
240
|
+
Environment[Environment["Madrid"] = 3] = "Madrid";
|
|
241
|
+
})(Environment || (exports.Environment = Environment = {}));
|
|
242
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/types/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateEchoFields = validateEchoFields;
|
|
4
|
+
const types_1 = require("../types");
|
|
5
|
+
function validateEchoFields(request, response) {
|
|
6
|
+
return [
|
|
7
|
+
...validateRequestId(request, response),
|
|
8
|
+
...validateUserId(request, response),
|
|
9
|
+
...validateExpirationTimestamp(request, response),
|
|
10
|
+
...validateReferralCode(request, response),
|
|
11
|
+
];
|
|
12
|
+
}
|
|
13
|
+
function validateRequestId(request, response) {
|
|
14
|
+
if (request.requestId === response.requestId)
|
|
15
|
+
return [];
|
|
16
|
+
return [{
|
|
17
|
+
code: types_1.ViolationCode.RequestIdMismatch,
|
|
18
|
+
message: `response.requestId does not match request.requestId`,
|
|
19
|
+
path: "response.requestId",
|
|
20
|
+
expected: request.requestId,
|
|
21
|
+
actual: response.requestId,
|
|
22
|
+
}];
|
|
23
|
+
}
|
|
24
|
+
function validateUserId(request, response) {
|
|
25
|
+
if (request.userId === response.userId)
|
|
26
|
+
return [];
|
|
27
|
+
return [{
|
|
28
|
+
code: types_1.ViolationCode.UserIdMismatch,
|
|
29
|
+
message: `response.userId does not match request.userId`,
|
|
30
|
+
path: "response.userId",
|
|
31
|
+
expected: request.userId,
|
|
32
|
+
actual: response.userId,
|
|
33
|
+
}];
|
|
34
|
+
}
|
|
35
|
+
// TODO: move to a separate validation (specifically for intents)?
|
|
36
|
+
function validateExpirationTimestamp(request, response) {
|
|
37
|
+
const violations = [];
|
|
38
|
+
for (let i = 0; i < response.intents.length; i++) {
|
|
39
|
+
const intent = response.intents[i].intent;
|
|
40
|
+
violations.push(...validateIntentExpirationTimestamp(request.expirationTimestamp, intent, i));
|
|
41
|
+
}
|
|
42
|
+
return violations;
|
|
43
|
+
}
|
|
44
|
+
// TODO: move to a separate validation (specifically for intents)?
|
|
45
|
+
function validateIntentExpirationTimestamp(expected, intent, intentIndex) {
|
|
46
|
+
if (expected === intent.expirationTimestamp)
|
|
47
|
+
return [];
|
|
48
|
+
return [{
|
|
49
|
+
code: types_1.ViolationCode.IntentExpirationTimestampMismatch,
|
|
50
|
+
message: `intent "${intent.intentId}" expirationTimestamp does not match request.expirationTimestamp`,
|
|
51
|
+
path: `response.intents[${intentIndex}].intent.expirationTimestamp`,
|
|
52
|
+
expected,
|
|
53
|
+
actual: intent.expirationTimestamp,
|
|
54
|
+
}];
|
|
55
|
+
}
|
|
56
|
+
function validateReferralCode(request, response) {
|
|
57
|
+
if (request.referralCode === response.referralCode)
|
|
58
|
+
return [];
|
|
59
|
+
return [{
|
|
60
|
+
code: types_1.ViolationCode.ReferralCodeMismatch,
|
|
61
|
+
message: `response.referralCode does not match request.referralCode`,
|
|
62
|
+
path: "response.referralCode",
|
|
63
|
+
expected: request.referralCode,
|
|
64
|
+
actual: response.referralCode,
|
|
65
|
+
}];
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=echo-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"echo-fields.js","sourceRoot":"","sources":["../../../src/validations/echo-fields.ts"],"names":[],"mappings":";;AAQA,gDAUC;AAlBD,oCAMkB;AAElB,SAAgB,kBAAkB,CAC9B,OAA8B,EAC9B,QAAgC;IAEhC,OAAO;QACH,GAAG,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC;QACvC,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC;QACpC,GAAG,2BAA2B,CAAC,OAAO,EAAE,QAAQ,CAAC;QACjD,GAAG,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC7C,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CACtB,OAA8B,EAC9B,QAAgC;IAEhC,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAExD,OAAO,CAAC;YACJ,IAAI,EAAE,qBAAa,CAAC,iBAAiB;YACrC,OAAO,EAAE,qDAAqD;YAC9D,IAAI,EAAE,oBAAoB;YAC1B,QAAQ,EAAE,OAAO,CAAC,SAAS;YAC3B,MAAM,EAAE,QAAQ,CAAC,SAAS;SAC7B,CAAC,CAAC;AACP,CAAC;AAED,SAAS,cAAc,CACnB,OAA8B,EAC9B,QAAgC;IAEhC,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAElD,OAAO,CAAC;YACJ,IAAI,EAAE,qBAAa,CAAC,cAAc;YAClC,OAAO,EAAE,+CAA+C;YACxD,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,OAAO,CAAC,MAAM;YACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;SAC1B,CAAC,CAAC;AACP,CAAC;AAED,kEAAkE;AAClE,SAAS,2BAA2B,CAChC,OAA8B,EAC9B,QAAgC;IAEhC,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1C,UAAU,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAClG,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,kEAAkE;AAClE,SAAS,iCAAiC,CACtC,QAAgB,EAChB,MAAsB,EACtB,WAAmB;IAEnB,IAAI,QAAQ,KAAK,MAAM,CAAC,mBAAmB;QAAE,OAAO,EAAE,CAAC;IAEvD,OAAO,CAAC;YACJ,IAAI,EAAE,qBAAa,CAAC,iCAAiC;YACrD,OAAO,EAAE,WAAW,MAAM,CAAC,QAAQ,kEAAkE;YACrG,IAAI,EAAE,oBAAoB,WAAW,8BAA8B;YACnE,QAAQ;YACR,MAAM,EAAE,MAAM,CAAC,mBAAmB;SACrC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,oBAAoB,CACzB,OAA8B,EAC9B,QAAgC;IAEhC,IAAI,OAAO,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAE9D,OAAO,CAAC;YACJ,IAAI,EAAE,qBAAa,CAAC,oBAAoB;YACxC,OAAO,EAAE,2DAA2D;YACpE,IAAI,EAAE,uBAAuB;YAC7B,QAAQ,EAAE,OAAO,CAAC,YAAY;YAC9B,MAAM,EAAE,QAAQ,CAAC,YAAY;SAChC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CaveatKind = void 0;
|
|
4
|
+
exports.classifyCaveats = classifyCaveats;
|
|
5
|
+
exports.validateExactExecutionPresence = validateExactExecutionPresence;
|
|
6
|
+
exports.validateExactExecutionContent = validateExactExecutionContent;
|
|
7
|
+
exports.validateTimestampEnforcerValue = validateTimestampEnforcerValue;
|
|
8
|
+
const types_1 = require("../types");
|
|
9
|
+
const types_2 = require("../whitelists/types");
|
|
10
|
+
const evm_1 = require("../whitelists/evm");
|
|
11
|
+
const caveat_decoder_1 = require("../helpers/caveat-decoder");
|
|
12
|
+
var CaveatKind;
|
|
13
|
+
(function (CaveatKind) {
|
|
14
|
+
CaveatKind[CaveatKind["Unknown"] = 0] = "Unknown";
|
|
15
|
+
CaveatKind[CaveatKind["ExactExec"] = 1] = "ExactExec";
|
|
16
|
+
CaveatKind[CaveatKind["ExactExecBatch"] = 2] = "ExactExecBatch";
|
|
17
|
+
CaveatKind[CaveatKind["IdEnforcer"] = 3] = "IdEnforcer";
|
|
18
|
+
CaveatKind[CaveatKind["Timestamp"] = 4] = "Timestamp";
|
|
19
|
+
})(CaveatKind || (exports.CaveatKind = CaveatKind = {}));
|
|
20
|
+
function classifyCaveats(caveats, actionId, actionPath, realChainId, violations) {
|
|
21
|
+
const result = {
|
|
22
|
+
hasIdEnforcer: false,
|
|
23
|
+
timestampCount: 0,
|
|
24
|
+
};
|
|
25
|
+
for (let i = 0; i < caveats.length; i++) {
|
|
26
|
+
const caveat = caveats[i];
|
|
27
|
+
const path = `${actionPath}.data.message.caveats[${i}]`;
|
|
28
|
+
const kind = classifySingleCaveat(caveat, realChainId);
|
|
29
|
+
// CRITICAL: each caveat.enforcer must be in one of the allowed whitelists
|
|
30
|
+
if (kind === CaveatKind.Unknown) {
|
|
31
|
+
violations.push({
|
|
32
|
+
code: types_1.ViolationCode.Sign712MetaMaskCaveatEnforcerNotWhitelisted,
|
|
33
|
+
message: `Sign712MetaMask caveat enforcer is not in any whitelist`,
|
|
34
|
+
path: `${path}.enforcer`,
|
|
35
|
+
actual: caveat.enforcer,
|
|
36
|
+
});
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (kind === CaveatKind.ExactExec)
|
|
40
|
+
result.exactExec = { caveat, index: i };
|
|
41
|
+
if (kind === CaveatKind.ExactExecBatch)
|
|
42
|
+
result.exactExecBatch = { caveat, index: i };
|
|
43
|
+
if (kind === CaveatKind.IdEnforcer) {
|
|
44
|
+
result.hasIdEnforcer = true;
|
|
45
|
+
// CRITICAL: IdEnforcer ID must equal Number(actionId)
|
|
46
|
+
validateIdEnforcerValue(caveat, actionId, path, violations);
|
|
47
|
+
}
|
|
48
|
+
// CRITICAL: exactly one TimestampEnforcer per action
|
|
49
|
+
if (kind === CaveatKind.Timestamp) {
|
|
50
|
+
result.timestampCount++;
|
|
51
|
+
if (result.timestampCount === 1) {
|
|
52
|
+
result.firstTimestamp = { caveat, index: i };
|
|
53
|
+
}
|
|
54
|
+
else if (result.timestampCount === 2) {
|
|
55
|
+
violations.push({
|
|
56
|
+
code: types_1.ViolationCode.Sign712MetaMaskDuplicateTimestampEnforcerCaveat,
|
|
57
|
+
message: `Sign712MetaMask must have exactly one TimestampEnforcer`,
|
|
58
|
+
path: `${path}.enforcer`,
|
|
59
|
+
expected: 1,
|
|
60
|
+
actual: result.timestampCount,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
function classifySingleCaveat(caveat, realChainId) {
|
|
68
|
+
if ((0, types_2.isWhitelisted)(evm_1.EXACT_EXECUTION_ENFORCER_CONTRACTS, realChainId, caveat.enforcer))
|
|
69
|
+
return CaveatKind.ExactExec;
|
|
70
|
+
if ((0, types_2.isWhitelisted)(evm_1.EXACT_EXECUTION_BATCH_ENFORCER_CONTRACTS, realChainId, caveat.enforcer))
|
|
71
|
+
return CaveatKind.ExactExecBatch;
|
|
72
|
+
if ((0, types_2.isWhitelisted)(evm_1.ID_ENFORCER_CONTRACTS, realChainId, caveat.enforcer))
|
|
73
|
+
return CaveatKind.IdEnforcer;
|
|
74
|
+
if ((0, types_2.isWhitelisted)(evm_1.TIMESTAMP_ENFORCER_CONTRACTS, realChainId, caveat.enforcer))
|
|
75
|
+
return CaveatKind.Timestamp;
|
|
76
|
+
return CaveatKind.Unknown;
|
|
77
|
+
}
|
|
78
|
+
// CRITICAL: single transactionCall requires ExactExecution caveat,
|
|
79
|
+
// multiple transactionCalls require ExactExecutionBatch caveat
|
|
80
|
+
function validateExactExecutionPresence(classified, txCalls, actionPath) {
|
|
81
|
+
if (txCalls.length === 1 && !classified.exactExec) {
|
|
82
|
+
return [{
|
|
83
|
+
code: types_1.ViolationCode.Sign712MetaMaskMissingExactExecutionCaveat,
|
|
84
|
+
message: `Sign712MetaMask must have an ExactExecution caveat for a single transactionCall`,
|
|
85
|
+
path: `${actionPath}.data.message.caveats`,
|
|
86
|
+
}];
|
|
87
|
+
}
|
|
88
|
+
if (txCalls.length > 1 && !classified.exactExecBatch) {
|
|
89
|
+
return [{
|
|
90
|
+
code: types_1.ViolationCode.Sign712MetaMaskMissingExactExecutionBatchCaveat,
|
|
91
|
+
message: `Sign712MetaMask must have an ExactExecutionBatch caveat for multiple transactionCalls`,
|
|
92
|
+
path: `${actionPath}.data.message.caveats`,
|
|
93
|
+
expected: txCalls.length,
|
|
94
|
+
actual: 0,
|
|
95
|
+
}];
|
|
96
|
+
}
|
|
97
|
+
return [];
|
|
98
|
+
}
|
|
99
|
+
// CRITICAL: decoded caveat terms must match transactionCalls[]
|
|
100
|
+
function validateExactExecutionContent(classified, txCalls, actionPath, violations) {
|
|
101
|
+
if (txCalls.length === 1 && classified.exactExec) {
|
|
102
|
+
validateExactExecutionTerms(classified.exactExec.caveat, txCalls[0], classified.exactExec.index, actionPath, violations);
|
|
103
|
+
}
|
|
104
|
+
else if (txCalls.length > 1 && classified.exactExecBatch) {
|
|
105
|
+
validateExactExecutionBatchTerms(classified.exactExecBatch.caveat, txCalls, classified.exactExecBatch.index, actionPath, violations);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
function validateExactExecutionTerms(caveat, txCall, caveatIndex, actionPath, violations) {
|
|
109
|
+
const caveatPath = `${actionPath}.data.message.caveats[${caveatIndex}]`;
|
|
110
|
+
let decoded;
|
|
111
|
+
try {
|
|
112
|
+
decoded = (0, caveat_decoder_1.decodeExactExecution)(caveat.terms);
|
|
113
|
+
}
|
|
114
|
+
catch (e) {
|
|
115
|
+
violations.push({
|
|
116
|
+
code: types_1.ViolationCode.Sign712MetaMaskCaveatDecodeError,
|
|
117
|
+
message: `failed to decode ExactExecution caveat terms`,
|
|
118
|
+
path: `${caveatPath}.terms`,
|
|
119
|
+
actual: caveat.terms,
|
|
120
|
+
details: e,
|
|
121
|
+
});
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (!executionMatchesTxCall(decoded, txCall)) {
|
|
125
|
+
violations.push({
|
|
126
|
+
code: types_1.ViolationCode.Sign712MetaMaskExactExecutionMismatch,
|
|
127
|
+
message: `ExactExecution caveat terms do not match transactionCalls[0]`,
|
|
128
|
+
path: `${caveatPath}.terms`,
|
|
129
|
+
expected: txCall,
|
|
130
|
+
actual: decoded,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function validateExactExecutionBatchTerms(caveat, txCalls, caveatIndex, actionPath, violations) {
|
|
135
|
+
const caveatPath = `${actionPath}.data.message.caveats[${caveatIndex}]`;
|
|
136
|
+
let decoded;
|
|
137
|
+
try {
|
|
138
|
+
decoded = (0, caveat_decoder_1.decodeExactExecutionBatch)(caveat.terms);
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
violations.push({
|
|
142
|
+
code: types_1.ViolationCode.Sign712MetaMaskCaveatDecodeError,
|
|
143
|
+
message: `failed to decode ExactExecutionBatch caveat terms`,
|
|
144
|
+
path: `${caveatPath}.terms`,
|
|
145
|
+
actual: caveat.terms,
|
|
146
|
+
details: e,
|
|
147
|
+
});
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (decoded.length !== txCalls.length) {
|
|
151
|
+
violations.push({
|
|
152
|
+
code: types_1.ViolationCode.Sign712MetaMaskExactExecutionBatchMismatch,
|
|
153
|
+
message: `ExactExecutionBatch decoded ${decoded.length} executions but transactionCalls has ${txCalls.length}`,
|
|
154
|
+
path: `${caveatPath}.terms`,
|
|
155
|
+
expected: txCalls.length,
|
|
156
|
+
actual: decoded.length,
|
|
157
|
+
});
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
for (let i = 0; i < txCalls.length; i++) {
|
|
161
|
+
if (!executionMatchesTxCall(decoded[i], txCalls[i])) {
|
|
162
|
+
violations.push({
|
|
163
|
+
code: types_1.ViolationCode.Sign712MetaMaskExactExecutionBatchMismatch,
|
|
164
|
+
message: `ExactExecutionBatch caveat terms[${i}] do not match transactionCalls[${i}]`,
|
|
165
|
+
path: `${caveatPath}.terms`,
|
|
166
|
+
expected: txCalls[i],
|
|
167
|
+
actual: decoded[i],
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
function executionMatchesTxCall(decoded, txCall) {
|
|
173
|
+
return (decoded.to.toLowerCase() === txCall.to.toLowerCase() &&
|
|
174
|
+
decoded.value === txCall.value &&
|
|
175
|
+
decoded.data.toLowerCase() === txCall.data.toLowerCase());
|
|
176
|
+
}
|
|
177
|
+
// Decodes IdEnforcer terms (ABI-encoded uint256) and checks it equals the actionId UUID.
|
|
178
|
+
// actionId is a UUID string like "ea675851-d810-4e1a-b438-044ec80840a3";
|
|
179
|
+
// caveat.terms is ABI-encoded uint256 (hex-padded to 32 bytes).
|
|
180
|
+
function validateIdEnforcerValue(caveat, actionId, caveatPath, violations) {
|
|
181
|
+
try {
|
|
182
|
+
const decodedId = BigInt(caveat.terms);
|
|
183
|
+
const expectedId = actionIdToBigInt(actionId);
|
|
184
|
+
if (decodedId !== expectedId) {
|
|
185
|
+
violations.push({
|
|
186
|
+
code: types_1.ViolationCode.Sign712MetaMaskIdEnforcerValueMismatch,
|
|
187
|
+
message: `IdEnforcer ID does not match actionId`,
|
|
188
|
+
path: `${caveatPath}.terms`,
|
|
189
|
+
expected: { actionId, numeric: expectedId.toString() },
|
|
190
|
+
actual: { numeric: decodedId.toString() },
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
violations.push({
|
|
196
|
+
code: types_1.ViolationCode.Sign712MetaMaskIdEnforcerValueMismatch,
|
|
197
|
+
message: `IdEnforcer terms cannot be decoded as uint256`,
|
|
198
|
+
path: `${caveatPath}.terms`,
|
|
199
|
+
expected: actionId,
|
|
200
|
+
actual: caveat.terms,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
function actionIdToBigInt(actionId) {
|
|
205
|
+
if (actionId.includes("-")) {
|
|
206
|
+
return BigInt("0x" + actionId.replace(/-/g, ""));
|
|
207
|
+
}
|
|
208
|
+
return BigInt(actionId);
|
|
209
|
+
}
|
|
210
|
+
// CRITICAL: beforeThreshold must equal request.expirationTimestamp
|
|
211
|
+
function validateTimestampEnforcerValue(caveat, expirationTimestamp, caveatIndex, actionPath, violations) {
|
|
212
|
+
const caveatPath = `${actionPath}.data.message.caveats[${caveatIndex}]`;
|
|
213
|
+
try {
|
|
214
|
+
const decoded = (0, caveat_decoder_1.decodeTimestampEnforcer)(caveat.terms);
|
|
215
|
+
if (decoded.beforeThreshold !== BigInt(expirationTimestamp)) {
|
|
216
|
+
violations.push({
|
|
217
|
+
code: types_1.ViolationCode.Sign712MetaMaskTimestampBeforeThresholdMismatch,
|
|
218
|
+
message: `TimestampEnforcer beforeThreshold does not match request.expirationTimestamp`,
|
|
219
|
+
path: `${caveatPath}.terms`,
|
|
220
|
+
expected: expirationTimestamp,
|
|
221
|
+
actual: Number(decoded.beforeThreshold),
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
catch (e) {
|
|
226
|
+
violations.push({
|
|
227
|
+
code: types_1.ViolationCode.Sign712MetaMaskCaveatDecodeError,
|
|
228
|
+
message: `failed to decode TimestampEnforcer caveat terms`,
|
|
229
|
+
path: `${caveatPath}.terms`,
|
|
230
|
+
actual: caveat.terms,
|
|
231
|
+
details: e,
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=evm-caveats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evm-caveats.js","sourceRoot":"","sources":["../../../src/validations/evm-caveats.ts"],"names":[],"mappings":"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"}
|