What's new in v0.11.0?
The ⚠️ symbol denotes potentially breaking API changes. As per the semantic versioning specification, from v1.0.0 onwards, breaking changes will be released only in major version bumps.
Breaking Changes
⚠️ createExecution
The function now accepts named parameters instead of positional parameters.
- const execution = createExecution(
- "0x..",
- 0n,
- "0x",
- );
+ const execution = createExecution({
+ target: "0x..",
+ value: 0n,
+ callData: "0x",
+ });
⚠️ redeemDelegations
The function is now part of DelegationManager
contract namespace.
- import { DelegationFramework } from "@metamask/delegation-toolkit";
- import { DelegationManager } from "@metamask/delegation-toolkit/contracts";
- const data = DelegationFramework.encode.redeemDelegations({
+ const data = DelegationManager.encode.redeemDelegations({
delegations: [[delegation]],
modes: [SINGLE_DEFAULT_MODE],
executions: [[execution]],
});
⚠️ ExecutionStruct
The target
parameter now accepts a Address
instead of Hex
.
⚠️ Utility exports
Some functions and interfaces have been moved from root to the utils export. Several of them are listed below.
⚠️ overrideDeployedEnvironment
The function has been moved from root export to utils export.
- import { overrideDeployedEnvironment } from "@metamask/delegation-toolkit";
+ import { overrideDeployedEnvironment } from "@metamask/delegation-toolkit/utils";
⚠️ deployDeleGatorEnvironment
The function has been moved from root export to utils export.
- import { deployDeleGatorEnvironment } from "@metamask/delegation-toolkit";
+ import { deployDeleGatorEnvironment } from "@metamask/delegation-toolkit/utils";
⚠️ ExecutionMode
types
The ExecutionMode
types have been moved from root export to utils export.
import {
SINGLE_DEFAULT_MODE,
SINGLE_TRY_MODE,
BATCH_DEFAULT_MODE
- } from "@metamask/delegation-toolkit";
+ } from "@metamask/delegation-toolkit/utils";
⚠️ Contract utility functions
The contract utility functions have been moved from root to the contract exports. Some of them are listed below.
import {
DelegationManager,
MultiSigDeleGator,
HybridDeleGator,
- } from "@metamask/delegation-toolkit";
+ } from "@metamask/delegation-toolkit/contracts";
Enhancements
- Delegation Framework now supports the Unichain, Arbitrum Nova, Berachain, Arbitrum Sepolia, Optimism Sepolia, Binance Smart Chain testnet, Polygon Amoy, and Monad 🎉. See supported networks for more details.
- The
createDelegation
andcreateOpenDelegation
functions now acceptsalt
as a parameter. This helps prevent hash collisions when creating identical delegations. - A new implementation type has been added to
MetaMaskSmartAccount
for externally owned accounts (EOAs) upgraded using EIP-7702. See the EIP-7702 quickstart to learn how to upgrade EOAs and create aMetaMaskSmartAccount
. - New decode functions have been added for delegations.
Contract addresses
The following are the contract addresses for the Delegation Framework version 1.3.0, as used by this version of the toolkit.
Delegation Framework
Contract | Address |
---|---|
EntryPoint | 0x0000000071727De22E5E9d8BAf0edAc6f37da032 |
SimpleFactory | 0x69Aa2f9fe1572F1B640E1bbc512f5c3a734fc77c |
DelegationManager | 0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3 |
MultiSigDeleGatorImpl | 0x56a9EdB16a0105eb5a4C54f4C062e2868844f3A7 |
HybridDeleGatorImpl | 0x48dBe696A4D990079e039489bA2053B36E8FFEC4 |
Caveat enforcers
Enforcer | Address |
---|---|
AllowedCalldataEnforcer | 0xc2b0d624c1c4319760C96503BA27C347F3260f55 |
AllowedMethodsEnforcer | 0x2c21fD0Cb9DC8445CB3fb0DC5E7Bb0Aca01842B5 |
AllowedTargetsEnforcer | 0x7F20f61b1f09b08D970938F6fa563634d65c4EeB |
ArgsEqualityCheckEnforcer | 0x44B8C6ae3C304213c3e298495e12497Ed3E56E41 |
BlockNumberEnforcer | 0x5d9818dF0AE3f66e9c3D0c5029DAF99d1823ca6c |
DeployedEnforcer | 0x24ff2AA430D53a8CD6788018E902E098083dcCd2 |
ERC20BalanceChangeEnforcer | 0xcdF6aB796408598Cea671d79506d7D48E97a5437 |
ERC20TransferAmountEnforcer | 0xf100b0819427117EcF76Ed94B358B1A5b5C6D2Fc |
ERC20PeriodTransferEnforcer | 0x474e3Ae7E169e940607cC624Da8A15Eb120139aB |
ERC20StreamingEnforcer | 0x56c97aE02f233B29fa03502Ecc0457266d9be00e |
ERC721BalanceChangeEnforcer | 0x8aFdf96eDBbe7e1eD3f5Cd89C7E084841e12A09e |
ERC721TransferEnforcer | 0x3790e6B7233f779b09DA74C72b6e94813925b9aF |
ERC1155BalanceChangeEnforcer | 0x63c322732695cAFbbD488Fc6937A0A7B66fC001A |
ExactCalldataBatchEnforcer | 0x982FD5C86BBF425d7d1451f974192d4525113DfD |
ExactCalldataEnforcer | 0x99F2e9bF15ce5eC84685604836F71aB835DBBdED |
ExactExecutionBatchEnforcer | 0x1e141e455d08721Dd5BCDA1BaA6Ea5633Afd5017 |
ExactExecutionEnforcer | 0x146713078D39eCC1F5338309c28405ccf85Abfbb |
IdEnforcer | 0xC8B5D93463c893401094cc70e66A206fb5987997 |
LimitedCallsEnforcer | 0x04658B29F6b82ed55274221a06Fc97D318E25416 |
MultiTokenPeriodEnforcer | 0xFB2f1a9BD76d3701B730E5d69C3219D42D80eBb7 |
NonceEnforcer | 0xDE4f2FAC4B3D87A1d9953Ca5FC09FCa7F366254f |
NativeBalanceChangeEnforcer | 0xbD7B277507723490Cd50b12EaaFe87C616be6880 |
NativeTokenPaymentEnforcer | 0x4803a326ddED6dDBc60e659e5ed12d85c7582811 |
NativeTokenTransferAmountEnforcer | 0xF71af580b9c3078fbc2BBF16FbB8EEd82b330320 |
NativeTokenStreamingEnforcer | 0xD10b97905a320b13a0608f7E9cC506b56747df19 |
NativeTokenPeriodTransferEnforcer | 0x9BC0FAf4Aca5AE429F4c06aEEaC517520CB16BD9 |
OwnershipTransferEnforcer | 0x7EEf9734E7092032B5C56310Eb9BbD1f4A524681 |
RedeemerEnforcer | 0xE144b0b2618071B4E56f746313528a669c7E65c5 |
SpecificActionERC20TransferBatchEnforcer | 0x00e0251aaA263dfE3B3541B758A82D1CBA1c3B6D |
TimestampEnforcer | 0x1046bb45C8d673d4ea75321280DB34899413c069 |
ValueLteEnforcer | 0x92Bf12322527cAA612fd31a0e810472BBB106A8F |