Execute a Staking and Withdrawal Transaction
Once you have selected a route, you can execute your staking transaction.
If you don't already have a route, follow these steps.
Start the transfer
Use the same transfer parameters you used when finding a route. This will handle the entire transfer process for you, including prompting the wallet for any required actions.
const transferParams = {
type: 'deposit',
fromChain: 'ethereum',
toChain: 'ethereum',
fromToken: 'SWING',
toToken: 'aEthWETH',
amount: '10',
fromUserAddress: '0x018c15DA1239B84b08283799B89045CD476BBbBb',
toUserAddress: '0x018c15DA1239B84b08283799B89045CD476BBbBb',
};
await swingSDK.transfer(transferRoute, transferParams);Receive status updates
Use these events to update your UI with helpful information for your users.
swingSDK.on('TRANSFER', (transfer) => {
switch (transfer.status) {
case 'PENDING':
console.log(`Creating a transaction for the ${transfer.step} step`);
break;
case 'CHAIN_SWITCH_REQUIRED':
// Handle switching chains or alert the user to do it manually
break;
case 'ACTION_REQUIRED':
console.log('Please complete the required action within your connected wallet');
break;
case 'CONFIRMING':
console.log(`Waiting for the transaction from the ${transfer.step} step to complete`);
break;
case 'SUCCESS':
console.log(`Transfer has completed the ${transfer.step} step`);
break;
case 'FAILED':
console.log(`Transfer failed at the ${transfer.step} step:`, transfer.error);
break;
}Withdraw Funds
You can withdraw funds from a staking position (unstake) by changing the type from deposit to withdraw in the transferParams. This will handle the entire withdrawal process for you, including prompting the wallet for any required actions.
const transferParams = {
type: 'withdraw',
fromChain: 'ethereum',
toChain: 'ethereum',
fromToken: 'SWING',
toToken: 'SWING',
amount: '100',
fromUserAddress: '0x018c15DA1239B84b08283799B89045CD476BBbBb',
toUserAddress: '0x018c15DA1239B84b08283799B89045CD476BBbBb',
};
await swingSDK.transfer(transferRoute, transferParams);