diff --git a/.github/workflows/test-evm.yaml b/.github/workflows/test-evm.yaml index 60a18739..7bbafc7e 100644 --- a/.github/workflows/test-evm.yaml +++ b/.github/workflows/test-evm.yaml @@ -137,6 +137,9 @@ jobs: - name: InterchainTokenFactory register custom token run: node evm/interchainTokenFactory.js --action registerCustomToken --tokenAddress 0x49c06259B42540a025A73a32eF2Fd183c0FDB1D2 --tokenManagerType 4 --operator 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --salt "salt" -y + - name: Transfer mintership of token to token manager + run: node evm/its.js --action transferMintership --tokenAddress 0x49c06259B42540a025A73a32eF2Fd183c0FDB1D2 --minter 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 -y + - name: InterchainTokenFactory link token run: node evm/interchainTokenFactory.js --action linkToken --destinationChain remote --destinationTokenAddress "0x1234" --tokenManagerType 4 --linkParams "0x5678" --salt "salt" -y diff --git a/evm/its.js b/evm/its.js index c33700a5..3d50de11 100644 --- a/evm/its.js +++ b/evm/its.js @@ -27,6 +27,7 @@ const { } = require('./utils'); const { getWallet } = require('./sign-utils'); const IInterchainTokenService = getContractJSON('IInterchainTokenService'); +const IMinter = getContractJSON('IMinter'); const InterchainTokenService = getContractJSON('InterchainTokenService'); const InterchainTokenFactory = getContractJSON('InterchainTokenFactory'); const IInterchainTokenDeployer = getContractJSON('IInterchainTokenDeployer'); @@ -620,6 +621,19 @@ async function processCommand(config, chain, options) { break; } + case 'transferMintership': { + const { tokenAddress, minter } = options; + + validateParameters({ isValidAddress: { tokenAddress, minter } }); + + const token = new Contract(tokenAddress, IMinter.abi, wallet); + const tx = await token.transferMintership(minter); + + await handleTx(tx, chain, token, options.action, 'RolesRemoved', 'RolesAdded'); + + break; + } + default: { throw new Error(`Unknown action ${action}`); } @@ -662,6 +676,7 @@ if (require.main === module) { 'checks', 'migrateInterchainToken', 'registerTokenMetadata', + 'transferMintership', ]) .makeOptionMandatory(true), ); diff --git a/package-lock.json b/package-lock.json index 8f68b805..1340d81a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@axelar-network/axelar-cgp-solidity": "6.4.0", "@axelar-network/axelar-cgp-sui": "1.0.3", "@axelar-network/axelar-gmp-sdk-solidity": "6.0.4", - "@axelar-network/interchain-token-service": "0.0.0-snapshot.d61ef1b", + "@axelar-network/interchain-token-service": "2.1.0", "@cosmjs/cosmwasm-stargate": "^0.32.1", "@ledgerhq/hw-app-eth": "6.32.2", "@mysten/ledgerjs-hw-app-sui": "^0.4.1", @@ -170,9 +170,9 @@ } }, "node_modules/@axelar-network/interchain-token-service": { - "version": "0.0.0-snapshot.d61ef1b", - "resolved": "https://registry.npmjs.org/@axelar-network/interchain-token-service/-/interchain-token-service-0.0.0-snapshot.d61ef1b.tgz", - "integrity": "sha512-5JhD1FhrMUIawJTYwGxmRjH870lDWpJs/JUH5anoM4WToZLFgJDjPlMfuv5tqqBNAVb9ea61RQC1MmcJBp4BXg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@axelar-network/interchain-token-service/-/interchain-token-service-2.1.0.tgz", + "integrity": "sha512-eRaDL7otxqZixzsSu3rYtMkFQ1buopNGAmc8fEHvJPPD1WYiRARx24z+61OTJjCHcRygBljl9oIlqmqiM6SAYg==", "dependencies": { "@axelar-network/axelar-cgp-solidity": "6.4.0", "@axelar-network/axelar-gmp-sdk-solidity": "6.0.4" diff --git a/package.json b/package.json index 3e1a5153..eb84d1f2 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@axelar-network/axelar-cgp-solidity": "6.4.0", "@axelar-network/axelar-cgp-sui": "1.0.3", "@axelar-network/axelar-gmp-sdk-solidity": "6.0.4", - "@axelar-network/interchain-token-service": "0.0.0-snapshot.d61ef1b", + "@axelar-network/interchain-token-service": "2.1.0", "@cosmjs/cosmwasm-stargate": "^0.32.1", "@ledgerhq/hw-app-eth": "6.32.2", "@mysten/ledgerjs-hw-app-sui": "^0.4.1",