@@ -11,16 +11,43 @@ export async function connect_metamask() {
1111 return await signer . getAddress ( ) ;
1212}
1313
14- export async function wrap_tokens ( contractAddress , underlying , amount ) {
15- const abi = [ "function wrap(address underlying, uint256 amount) external" ] ;
16- const contract = new ethers . Contract ( contractAddress , abi , signer ) ;
17- const tx = await contract . wrap ( underlying , amount ) ;
18- return tx . wait ( ) ;
14+ export async function wrap_tokens ( contractAddress , dToken , amount , cAsset ) {
15+ try {
16+ const abi = [ "function wrap(address dTokent, uint256 amount, address cAsset) external" ] ;
17+ const approveAbi = [ "function approve(address spender, uint256 amount) external returns (bool)" ] ;
18+ console . log ( "contractAddress:" , contractAddress , " dToken:" , dToken , " Amount:" , amount , " cAsset:" , cAsset ) ;
19+ const erc20_contract = new ethers . Contract ( dToken , approveAbi , signer ) ;
20+ const erc20_connected = erc20_contract . connect ( signer ) ;
21+ const approve_tx = await erc20_connected . approve ( contractAddress , amount ) ;
22+ await approve_tx . wait ( ) ;
23+ const contract = new ethers . Contract ( contractAddress , abi , signer ) ;
24+ const connected = contract . connect ( signer ) ;
25+ const tx = await connected . wrap ( dToken , amount , cAsset ) ;
26+ await tx . wait ( ) ;
27+ return "Transaction successful" ;
28+ } catch ( err ) {
29+ console . error ( err ) ;
30+ return `Error: ${ err . reason || err . message } ` ;
31+ }
32+
1933}
2034
21- export async function unwrap_tokens ( contractAddress , wrapped , amount ) {
22- const abi = [ "function unwrap(address wrapped, uint256 amount) external" ] ;
23- const contract = new ethers . Contract ( contractAddress , abi , signer ) ;
24- const tx = await contract . unwrap ( wrapped , amount ) ;
25- return tx . wait ( ) ;
35+ export async function unwrap_tokens ( contractAddress , cAsset , amount , dToken ) {
36+ try {
37+ const abi = [ "function unwrap(address cAsset, uint256 amount, address dToken) external" ] ;
38+ const approveAbi = [ "function approve(address spender, uint256 amount) external returns (bool)" ] ;
39+ console . log ( "contractAddress:" , contractAddress , " cAsset:" , cAsset , " Amount:" , amount , " dToken:" , dToken ) ;
40+ const erc20_contract = new ethers . Contract ( cAsset , approveAbi , signer ) ;
41+ const erc20_connected = erc20_contract . connect ( signer ) ;
42+ const approve_tx = await erc20_connected . approve ( contractAddress , amount ) ;
43+ await approve_tx . wait ( ) ;
44+ const contract = new ethers . Contract ( contractAddress , abi , signer ) ;
45+ const connected = contract . connect ( signer ) ;
46+ const tx = await connected . unwrap ( cAsset , amount , dToken ) ;
47+ await tx . wait ( ) ;
48+ return "Transaction successful" ;
49+ } catch ( err ) {
50+ console . error ( err ) ;
51+ return `Error: ${ err . reason || err . message } ` ;
52+ }
2653}
0 commit comments