From 127b3ce8cb8d774756c7d14b04006ba10ac4b97d Mon Sep 17 00:00:00 2001 From: sednaoui Date: Thu, 24 Apr 2025 15:48:18 +0200 Subject: [PATCH] include fetchSupportedERC20TokensAndPaymasterMetadata method in pay gas in erc-20 token example --- .../src/index.ts | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/examples/SafeAccountExamples/CreateAccountAndSendTransactionUsingTokenPaymaster/src/index.ts b/examples/SafeAccountExamples/CreateAccountAndSendTransactionUsingTokenPaymaster/src/index.ts index 9c49bf1..3ab530f 100644 --- a/examples/SafeAccountExamples/CreateAccountAndSendTransactionUsingTokenPaymaster/src/index.ts +++ b/examples/SafeAccountExamples/CreateAccountAndSendTransactionUsingTokenPaymaster/src/index.ts @@ -80,26 +80,31 @@ async function main(): Promise { paymasterRPC, ) - userOperation = await paymaster.createTokenPaymasterUserOperation( - smartAccount, - userOperation, - paymasterTokenAddress, - bundlerUrl, - ) + const tokensSupported = await paymaster.fetchSupportedERC20TokensAndPaymasterMetadata(); + const tokenSelected = tokensSupported.tokens.find(token => token.address.toLocaleLowerCase() === paymasterTokenAddress.toLowerCase()); - const cost = await paymaster.calculateUserOperationErc20TokenMaxGasCost( - userOperation, - paymasterTokenAddress - ) - console.log("This useroperation may cost upto : " + cost + " wei in CTT token") - console.log( - "Please fund the sender account : " + - userOperation.sender + - " with more than "+ cost + " wei CTT token" - ) - console.log("This example uses a Candide token paymaster.") - console.log("Please visit https://dashboard.candide.dev/ to get a token paymaster url.") - console.log("Please visit our Discord to get some CTT token for testing") + console.log("This example uses Candide Token Paymaster"); + console.log("Please visit https://dashboard.candide.dev/ to get a Paymaster URL"); + console.log("Visit our Discord to get some CTT token for testing"); + + if (tokenSelected) { + userOperation = await paymaster.createTokenPaymasterUserOperation( + smartAccount, + userOperation, + tokenSelected.address, + bundlerUrl, + ) + const cost = await paymaster.calculateUserOperationErc20TokenMaxGasCost( + userOperation, + tokenSelected.address, + ) + console.log("This useroperation may cost upto : " + cost + " wei in CTT token") + console.log( + "Please fund the sender account : " + + userOperation.sender + + " with more than " + cost + " wei CTT token" + ) + } //Safe is a multisig that can have multiple owners/signers //signUserOperation will create a signature for the provided