const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../error-handling/get-error.message.cjs`);require(`../../error-handling/index.cjs`);var n=5e4,r=1,i=11,a=15,o=function(e){return e[e.Initial=0]=`Initial`,e[e.Secondary=1]=`Secondary`,e}(o||{}),s=async(e,t)=>{try{let n=await e.getFeeData(),r=t===o.Initial?i:a;return n.gasPrice?n.gasPrice*BigInt(r)/BigInt(10):void 0}catch(e){console.log(`getGasPrice error: `,{err:e});return}},c=(t,n,r,i)=>new Promise((a,o)=>{let s=setTimeout(()=>{o(Error(e.transactionErrorCodes.TRANSACTION_TIMEOUT))},i);t.waitForTransaction(n.hash,r).then(e=>{clearTimeout(s),e?a(e):o(Error(`failed to confirm tx`))}).catch(e=>{clearTimeout(s),o(e)})}),l=async({provider:e,contractFunction:t,args:i,gasPrice:a,gasLimit:o,nonce:s,confirmations:l,waitTime:u})=>await c(e,await t(...i,{type:0,gasLimit:o,gasPrice:a,nonce:s}),l??r,u??n),u=async({provider:n,contractFunction:r,args:i,gasLimit:a,nonce:c,confirmations:u})=>{try{return await l({provider:n,contractFunction:r,args:i,gasPrice:await s(n,o.Initial),gasLimit:a,nonce:c,confirmations:u})}catch(d){let f=t.getErrorMessage(d);if(f===e.UserFriendlyErrorCodes.MAX_FEE_GAS_ERROR||f===e.transactionErrorCodes.TRANSACTION_TIMEOUT)return console.log(`Timeout Hit: Increase gas`),await l({provider:n,contractFunction:r,args:i,gasPrice:await s(n,o.Secondary),gasLimit:a,nonce:c,confirmations:u});throw d}};exports.runContractFunction=u;