@avalabs/core-paraswap-sdk 3.1.0-alpha.7 → 3.1.0-alpha.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs ADDED
@@ -0,0 +1 @@
1
+ "use strict";var e=require("big.js"),t=require("bn.js"),n=require("paraswap"),a=require("@avalabs/core-utils-sdk"),r=require("@avalabs/core-chains-sdk"),s=require("web3"),i=require("assert"),o=require("ethers");var p=[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}];const d=new n.ParaSwap(r.ChainId.AVALANCHE_MAINNET_ID,void 0,new s);exports.PARASWAP_RETRYABLE_ERRORS=["Price Timeout","An error has occurred, please try again later or contact our support"],exports.hasParaswapError=e=>"string"==typeof e.error,exports.performSwap=async function({srcTokenAddress:s,isSrcTokenNative:u,destTokenAddress:l,isDestTokenNative:y,priceRoute:c,gasLimit:m,maxFeePerGas:w,maxPriorityFeePerGas:T,slippage:f,activeNetwork:v,provider:A,transactionSend:b,transactionSign:h,userAddress:g,networkGasPrice:E}){i(s,"no source token on request"),i(l,"no destination token on request"),i(c,"request requires the paraswap priceRoute"),i(m,"request requires gas limit from paraswap response"),i(g,"Wallet Error: address not defined"),i(E,"network gas price not defined"),i(v,"Network Init Error: Wrong network"),i(!v.isTestnet,"Network Init Error: Wrong network");const k=await async function(){const e=await fetch(`${d.apiURL}/adapters/contracts?network=${r.ChainId.AVALANCHE_MAINNET_ID}`);return(await e.json()).TokenTransferProxy}(),x=u?n.ETHER_ADDRESS:s,S=y?n.ETHER_ADDRESS:l,R=E;let P;const D=new e(c.destAmount).times(1-f/100).toFixed(0),I=new e(c.srcAmount).times(1+f/100).toFixed(0),q="SELL"===c.side?c.srcAmount:I,M="SELL"===c.side?D:c.destAmount;let N=await A.getTransactionCount(g);if(!u){const e=new o.Contract(x,p,A),[t,n]=await a.resolve(e.allowance(g,k));if(n||null===t)throw new Error(`Allowance Error: ${n}`);if(t<BigInt(q)){const[t]=await a.resolve(e.approve.estimateGas(k,q)),{data:n}=await e.approve.populateTransaction(k,q),[r,s]=await a.resolve(h({nonce:N,chainId:v.chainId,maxFeePerGas:R,gasPrice:R,gasLimit:t||BigInt(m),data:n,to:x}));if(!r||s)throw new Error(`Approve Error: ${s}`);const[o,p]=await a.resolve(b(r));if(p)throw new Error(`Approve Error: ${p}`);i(o,"Tx hash empty"),N++,P=o}else P=void 0}const[L,$]=await a.resolve(a.promiseResolveWithBackoff((()=>async function({network:e,srcToken:t,destToken:n,srcAmount:a,destAmount:r,priceRoute:s,userAddress:i,partner:o,partnerAddress:p,partnerFeeBps:u,receiver:l,options:y,srcDecimals:c,destDecimals:m,permit:w,deadline:T}){const f=new URLSearchParams(y),v=`${d.apiURL}/transactions/${e}/?${f.toString()}`,A={priceRoute:s,srcToken:t,destToken:n,srcAmount:a,destAmount:r,userAddress:i,partner:o,partnerAddress:p,partnerFeeBps:u,receiver:l,srcDecimals:c,destDecimals:m,permit:w,deadline:T},b=await fetch(v,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(A)});return await b.json()}({network:v.chainId.toString(),srcToken:x,destToken:S,srcAmount:q,destAmount:M,priceRoute:c,userAddress:g,partner:"Avalanche",partnerAddress:undefined,partnerFeeBps:undefined,receiver:undefined,options:undefined,srcDecimals:c.srcDecimals,destDecimals:c.destDecimals,permit:undefined,deadline:undefined})),(function(e){return"Server too busy"===e.message||e.error}),0,10));if(!L||$||"message"in L)throw new Error(`Data Error: ${$}`);const[F,_]=await a.resolve(h({nonce:N,chainId:v.chainId,maxFeePerGas:w??R,maxPriorityFeePerGas:T,gasLimit:Number(L.gas),data:L.data,to:L.to,value:u?`0x${new t.BN(q).toString("hex")}`:void 0}));if(!F||_)throw new Error(`Tx Error: ${_}`);const[B,C]=await a.resolve(b(F));if(C)throw new Error(`Tx Error: ${C}`);return i(B,"Tx hash empty"),{swapTxHash:B,approveTxHash:P}};
package/dist/index.d.ts CHANGED
@@ -59,4 +59,5 @@ declare function performSwap({ srcTokenAddress, isSrcTokenNative, destTokenAddre
59
59
  approveTxHash: string | undefined;
60
60
  }>;
61
61
 
62
- export { AvalancheTransactionRequest, BtcTransactionRequest, PARASWAP_RETRYABLE_ERRORS, ParaswapPricesResponse, ParaswapPricesResponseWithError, ParaswapPricesSuccessResponse, PerformSwapParams, SignTransactionRequest, TransactionSender, TransactionSigner, hasParaswapError, performSwap };
62
+ export { PARASWAP_RETRYABLE_ERRORS, hasParaswapError, performSwap };
63
+ export type { AvalancheTransactionRequest, BtcTransactionRequest, ParaswapPricesResponse, ParaswapPricesResponseWithError, ParaswapPricesSuccessResponse, PerformSwapParams, SignTransactionRequest, TransactionSender, TransactionSigner };
@@ -0,0 +1 @@
1
+ var e=[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}];export{e as default};
package/esm/models.d.ts CHANGED
@@ -32,4 +32,5 @@ interface AvalancheTransactionRequest {
32
32
  chain: 'X' | 'P' | 'C';
33
33
  }
34
34
 
35
- export { AvalancheTransactionRequest, BtcTransactionRequest, PARASWAP_RETRYABLE_ERRORS, ParaswapPricesResponse, ParaswapPricesResponseWithError, ParaswapPricesSuccessResponse, SignTransactionRequest, hasParaswapError };
35
+ export { PARASWAP_RETRYABLE_ERRORS, hasParaswapError };
36
+ export type { AvalancheTransactionRequest, BtcTransactionRequest, ParaswapPricesResponse, ParaswapPricesResponseWithError, ParaswapPricesSuccessResponse, SignTransactionRequest };
@@ -26,4 +26,5 @@ declare function performSwap({ srcTokenAddress, isSrcTokenNative, destTokenAddre
26
26
  approveTxHash: string | undefined;
27
27
  }>;
28
28
 
29
- export { PerformSwapParams, performSwap };
29
+ export { performSwap };
30
+ export type { PerformSwapParams };
@@ -1 +1 @@
1
- import e from"@openzeppelin/contracts/build/contracts/ERC20.json";import r from"big.js";import{BN as t}from"bn.js";import{ETHER_ADDRESS as o}from"paraswap";import{resolve as a,promiseResolveWithBackoff as n}from"@avalabs/core-utils-sdk";import{getParaswapSpender as s,buildTx as i}from"./paraswapUtils.js";import d from"assert";import{Contract as c}from"ethers";async function p({srcTokenAddress:p,isSrcTokenNative:m,destTokenAddress:w,isDestTokenNative:u,priceRoute:f,gasLimit:l,maxFeePerGas:h,maxPriorityFeePerGas:g,slippage:E,activeNetwork:k,provider:v,transactionSend:x,transactionSign:A,userAddress:T,networkGasPrice:I}){d(p,"no source token on request"),d(w,"no destination token on request"),d(f,"request requires the paraswap priceRoute"),d(l,"request requires gas limit from paraswap response"),d(T,"Wallet Error: address not defined"),d(I,"network gas price not defined"),d(k,"Network Init Error: Wrong network"),d(!k.isTestnet,"Network Init Error: Wrong network");const P=await s(),F=m?o:p,S=u?o:w,b=I;let G;const L=new r(f.destAmount).times(1-E/100).toFixed(0),$=new r(f.srcAmount).times(1+E/100).toFixed(0),q="SELL"===f.side?f.srcAmount:$,y="SELL"===f.side?L:f.destAmount;let D=await v.getTransactionCount(T);if(!m){const r=new c(F,e.abi,v),[t,o]=await a(r.allowance(T,P));if(o||null===t)throw new Error(`Allowance Error: ${o}`);if(t<BigInt(q)){const[e]=await a(r.approve.estimateGas(P,q)),{data:t}=await r.approve.populateTransaction(P,q),[o,n]=await a(A({nonce:D,chainId:k.chainId,maxFeePerGas:b,gasPrice:b,gasLimit:e||BigInt(l),data:t,to:F}));if(!o||n)throw new Error(`Approve Error: ${n}`);const[s,i]=await a(x(o));if(i)throw new Error(`Approve Error: ${i}`);d(s,"Tx hash empty"),D++,G=s}else G=void 0}const[N,j]=await a(n((()=>i({network:k.chainId.toString(),srcToken:F,destToken:S,srcAmount:q,destAmount:y,priceRoute:f,userAddress:T,partner:"Avalanche",partnerAddress:undefined,partnerFeeBps:undefined,receiver:undefined,options:undefined,srcDecimals:f.srcDecimals,destDecimals:f.destDecimals,permit:undefined,deadline:undefined})),(function(e){return"Server too busy"===e.message||e.error}),0,10));if(!N||j||"message"in N)throw new Error(`Data Error: ${j}`);const[R,B]=await a(A({nonce:D,chainId:k.chainId,maxFeePerGas:h??b,maxPriorityFeePerGas:g,gasLimit:Number(N.gas),data:N.data,to:N.to,value:m?`0x${new t(q).toString("hex")}`:void 0}));if(!R||B)throw new Error(`Tx Error: ${B}`);const[W,C]=await a(x(R));if(C)throw new Error(`Tx Error: ${C}`);return d(W,"Tx hash empty"),{swapTxHash:W,approveTxHash:G}}export{p as performSwap};
1
+ import e from"big.js";import{BN as r}from"bn.js";import{ETHER_ADDRESS as t}from"paraswap";import{resolve as o,promiseResolveWithBackoff as a}from"@avalabs/core-utils-sdk";import s from"./erc20.abi.js";import{getParaswapSpender as n,buildTx as i}from"./paraswapUtils.js";import d from"assert";import{Contract as c}from"ethers";async function p({srcTokenAddress:p,isSrcTokenNative:m,destTokenAddress:w,isDestTokenNative:u,priceRoute:f,gasLimit:l,maxFeePerGas:h,maxPriorityFeePerGas:g,slippage:k,activeNetwork:E,provider:v,transactionSend:x,transactionSign:A,userAddress:T,networkGasPrice:I}){d(p,"no source token on request"),d(w,"no destination token on request"),d(f,"request requires the paraswap priceRoute"),d(l,"request requires gas limit from paraswap response"),d(T,"Wallet Error: address not defined"),d(I,"network gas price not defined"),d(E,"Network Init Error: Wrong network"),d(!E.isTestnet,"Network Init Error: Wrong network");const P=await n(),F=m?t:p,S=u?t:w,G=I;let L;const $=new e(f.destAmount).times(1-k/100).toFixed(0),b=new e(f.srcAmount).times(1+k/100).toFixed(0),q="SELL"===f.side?f.srcAmount:b,y="SELL"===f.side?$:f.destAmount;let D=await v.getTransactionCount(T);if(!m){const e=new c(F,s,v),[r,t]=await o(e.allowance(T,P));if(t||null===r)throw new Error(`Allowance Error: ${t}`);if(r<BigInt(q)){const[r]=await o(e.approve.estimateGas(P,q)),{data:t}=await e.approve.populateTransaction(P,q),[a,s]=await o(A({nonce:D,chainId:E.chainId,maxFeePerGas:G,gasPrice:G,gasLimit:r||BigInt(l),data:t,to:F}));if(!a||s)throw new Error(`Approve Error: ${s}`);const[n,i]=await o(x(a));if(i)throw new Error(`Approve Error: ${i}`);d(n,"Tx hash empty"),D++,L=n}else L=void 0}const[N,j]=await o(a((()=>i({network:E.chainId.toString(),srcToken:F,destToken:S,srcAmount:q,destAmount:y,priceRoute:f,userAddress:T,partner:"Avalanche",partnerAddress:undefined,partnerFeeBps:undefined,receiver:undefined,options:undefined,srcDecimals:f.srcDecimals,destDecimals:f.destDecimals,permit:undefined,deadline:undefined})),(function(e){return"Server too busy"===e.message||e.error}),0,10));if(!N||j||"message"in N)throw new Error(`Data Error: ${j}`);const[B,R]=await o(A({nonce:D,chainId:E.chainId,maxFeePerGas:h??G,maxPriorityFeePerGas:g,gasLimit:Number(N.gas),data:N.data,to:N.to,value:m?`0x${new r(q).toString("hex")}`:void 0}));if(!B||R)throw new Error(`Tx Error: ${R}`);const[W,H]=await o(x(B));if(H)throw new Error(`Tx Error: ${H}`);return d(W,"Tx hash empty"),{swapTxHash:W,approveTxHash:L}}export{p as performSwap};
@@ -1,3 +1,3 @@
1
1
  type TransactionSender = (signedTx: string) => Promise<string>;
2
2
 
3
- export { TransactionSender };
3
+ export type { TransactionSender };
@@ -2,4 +2,4 @@ import { TransactionRequest } from 'ethers';
2
2
 
3
3
  type TransactionSigner = (tx: TransactionRequest) => Promise<string>;
4
4
 
5
- export { TransactionSigner };
5
+ export type { TransactionSigner };
package/package.json CHANGED
@@ -1,11 +1,20 @@
1
1
  {
2
2
  "name": "@avalabs/core-paraswap-sdk",
3
- "version": "3.1.0-alpha.7",
3
+ "version": "3.1.0-alpha.71",
4
4
  "license": "Limited Ecosystem License",
5
5
  "private": false,
6
- "main": "dist/index.js",
6
+ "type": "module",
7
+ "main": "dist/index.cjs",
7
8
  "module": "esm/index.js",
8
9
  "typings": "dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./esm/index.d.ts",
13
+ "import": "./esm/index.js",
14
+ "require": "./dist/index.cjs",
15
+ "default": "./esm/index.js"
16
+ }
17
+ },
9
18
  "files": [
10
19
  "dist",
11
20
  "esm"
@@ -14,7 +23,7 @@
14
23
  "scripts": {
15
24
  "start": "rollup -c --watch",
16
25
  "build": "rollup -c",
17
- "lint": "eslint --fix -c ./.eslintrc.js \"src/**/*.ts*\""
26
+ "lint": "eslint --fix -c ./.eslintrc.cjs \"src/**/*.ts*\""
18
27
  },
19
28
  "devDependencies": {
20
29
  "@types/big.js": "6.1.6",
@@ -23,6 +32,7 @@
23
32
  "@types/react": "18.0.26",
24
33
  "big.js": "6.2.1",
25
34
  "bitcoinjs-lib": "5.2.0",
35
+ "bn.js": "5.2.1",
26
36
  "coinselect": "3.1.13",
27
37
  "ethers": "6.7.1",
28
38
  "jest": "29.7.0",
@@ -32,12 +42,15 @@
32
42
  "ts-jest": "29.0.5"
33
43
  },
34
44
  "dependencies": {
35
- "@avalabs/core-utils-sdk": "3.1.0-alpha.7",
36
- "@avalabs/core-wallets-sdk": "3.1.0-alpha.7"
45
+ "@avalabs/core-chains-sdk": "3.1.0-alpha.71",
46
+ "@avalabs/core-utils-sdk": "3.1.0-alpha.71",
47
+ "@avalabs/core-wallets-sdk": "3.1.0-alpha.71",
48
+ "web3": "4.16.0"
37
49
  },
38
50
  "peerDependencies": {
39
51
  "big.js": "^6.2.1",
40
52
  "bitcoinjs-lib": "^5.2.0",
53
+ "bn.js": "^5.2.1",
41
54
  "coinselect": "^3.1.12",
42
55
  "ethers": "^6.7.1",
43
56
  "paraswap": "5.2.0",
@@ -47,5 +60,5 @@
47
60
  "node": "16.13.1",
48
61
  "yarn": "1.22.17"
49
62
  },
50
- "gitHead": "f76954c87a77cba2ef392e7d7fbe8d09cbf68dfd"
63
+ "gitHead": "00aa0d58bc264ebac22156dd7619f34b96a75424"
51
64
  }
package/dist/index.js DELETED
@@ -1 +0,0 @@
1
- "use strict";var e=require("@openzeppelin/contracts/build/contracts/ERC20.json"),r=require("big.js"),t=require("bn.js"),s=require("paraswap"),a=require("@avalabs/core-utils-sdk"),n=require("@avalabs/core-chains-sdk"),o=require("web3"),i=require("assert"),c=require("ethers");const d=new s.ParaSwap(n.ChainId.AVALANCHE_MAINNET_ID,void 0,new o);exports.PARASWAP_RETRYABLE_ERRORS=["Price Timeout","An error has occurred, please try again later or contact our support"],exports.hasParaswapError=e=>"string"==typeof e.error,exports.performSwap=async function({srcTokenAddress:o,isSrcTokenNative:p,destTokenAddress:u,isDestTokenNative:w,priceRoute:m,gasLimit:l,maxFeePerGas:A,maxPriorityFeePerGas:h,slippage:E,activeNetwork:f,provider:v,transactionSend:T,transactionSign:k,userAddress:g,networkGasPrice:R}){i(o,"no source token on request"),i(u,"no destination token on request"),i(m,"request requires the paraswap priceRoute"),i(l,"request requires gas limit from paraswap response"),i(g,"Wallet Error: address not defined"),i(R,"network gas price not defined"),i(f,"Network Init Error: Wrong network"),i(!f.isTestnet,"Network Init Error: Wrong network");const S=await async function(){const e=await fetch(`${d.apiURL}/adapters/contracts?network=${n.ChainId.AVALANCHE_MAINNET_ID}`);return(await e.json()).TokenTransferProxy}(),x=p?s.ETHER_ADDRESS:o,P=w?s.ETHER_ADDRESS:u,D=R;let q;const I=new r(m.destAmount).times(1-E/100).toFixed(0),y=new r(m.srcAmount).times(1+E/100).toFixed(0),N="SELL"===m.side?m.srcAmount:y,L="SELL"===m.side?I:m.destAmount;let $=await v.getTransactionCount(g);if(!p){const r=new c.Contract(x,e.abi,v),[t,s]=await a.resolve(r.allowance(g,S));if(s||null===t)throw new Error(`Allowance Error: ${s}`);if(t<BigInt(N)){const[e]=await a.resolve(r.approve.estimateGas(S,N)),{data:t}=await r.approve.populateTransaction(S,N),[s,n]=await a.resolve(k({nonce:$,chainId:f.chainId,maxFeePerGas:D,gasPrice:D,gasLimit:e||BigInt(l),data:t,to:x}));if(!s||n)throw new Error(`Approve Error: ${n}`);const[o,c]=await a.resolve(T(s));if(c)throw new Error(`Approve Error: ${c}`);i(o,"Tx hash empty"),$++,q=o}else q=void 0}const[b,F]=await a.resolve(a.promiseResolveWithBackoff((()=>async function({network:e,srcToken:r,destToken:t,srcAmount:s,destAmount:a,priceRoute:n,userAddress:o,partner:i,partnerAddress:c,partnerFeeBps:p,receiver:u,options:w,srcDecimals:m,destDecimals:l,permit:A,deadline:h}){const E=new URLSearchParams(w),f=`${d.apiURL}/transactions/${e}/?${E.toString()}`,v={priceRoute:n,srcToken:r,destToken:t,srcAmount:s,destAmount:a,userAddress:o,partner:i,partnerAddress:c,partnerFeeBps:p,receiver:u,srcDecimals:m,destDecimals:l,permit:A,deadline:h},T=await fetch(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(v)});return await T.json()}({network:f.chainId.toString(),srcToken:x,destToken:P,srcAmount:N,destAmount:L,priceRoute:m,userAddress:g,partner:"Avalanche",partnerAddress:undefined,partnerFeeBps:undefined,receiver:undefined,options:undefined,srcDecimals:m.srcDecimals,destDecimals:m.destDecimals,permit:undefined,deadline:undefined})),(function(e){return"Server too busy"===e.message||e.error}),0,10));if(!b||F||"message"in b)throw new Error(`Data Error: ${F}`);const[B,C]=await a.resolve(k({nonce:$,chainId:f.chainId,maxFeePerGas:A??D,maxPriorityFeePerGas:h,gasLimit:Number(b.gas),data:b.data,to:b.to,value:p?`0x${new t.BN(N).toString("hex")}`:void 0}));if(!B||C)throw new Error(`Tx Error: ${C}`);const[_,G]=await a.resolve(T(B));if(G)throw new Error(`Tx Error: ${G}`);return i(_,"Tx hash empty"),{swapTxHash:_,approveTxHash:q}};