@lombard.finance/sdk 5.0.2 → 5.0.4

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.
Files changed (120) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.d.ts +13 -0
  3. package/dist/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.d.ts.map +1 -1
  4. package/dist/api.cjs +1 -1
  5. package/dist/api.js +12 -11
  6. package/dist/api.js.map +1 -1
  7. package/dist/bridge.cjs +1 -1
  8. package/dist/bridge.js +1 -1
  9. package/dist/btc.cjs +1 -1
  10. package/dist/btc.js +2 -2
  11. package/dist/chains/btc/actions/stake/config/evm.d.ts.map +1 -1
  12. package/dist/chunks/{BtcActions-CJY0V8JC.js → BtcActions-D7HekjRg.js} +236 -217
  13. package/dist/chunks/{BtcActions-CJY0V8JC.js.map → BtcActions-D7HekjRg.js.map} +1 -1
  14. package/dist/chunks/BtcActions-lp4P72ln.cjs +2 -0
  15. package/dist/chunks/{BtcActions-B9KwzjIG.cjs.map → BtcActions-lp4P72ln.cjs.map} +1 -1
  16. package/dist/chunks/EvmActions-CynfSVFq.cjs +7 -0
  17. package/dist/chunks/{EvmActions-DBAcQeMr.cjs.map → EvmActions-CynfSVFq.cjs.map} +1 -1
  18. package/dist/chunks/{EvmActions-BGlhbADC.js → EvmActions-nbR8cSa4.js} +38 -37
  19. package/dist/chunks/{EvmActions-BGlhbADC.js.map → EvmActions-nbR8cSa4.js.map} +1 -1
  20. package/dist/chunks/{ReferralsClient-o-3AUm7s.cjs → ReferralsClient-B65Nsk21.cjs} +2 -2
  21. package/dist/chunks/{ReferralsClient-o-3AUm7s.cjs.map → ReferralsClient-B65Nsk21.cjs.map} +1 -1
  22. package/dist/chunks/{ReferralsClient-BRa26dYS.js → ReferralsClient-BNwB6wO4.js} +2 -2
  23. package/dist/chunks/{ReferralsClient-BRa26dYS.js.map → ReferralsClient-BNwB6wO4.js.map} +1 -1
  24. package/dist/chunks/{approveLBTC-BBl3KcT2.cjs → approveLBTC-B1QepkpF.cjs} +2 -2
  25. package/dist/chunks/{approveLBTC-BBl3KcT2.cjs.map → approveLBTC-B1QepkpF.cjs.map} +1 -1
  26. package/dist/chunks/{approveLBTC-DnCt6ZZF.js → approveLBTC-BFhW5cPX.js} +2 -2
  27. package/dist/chunks/{approveLBTC-DnCt6ZZF.js.map → approveLBTC-BFhW5cPX.js.map} +1 -1
  28. package/dist/chunks/{bridge-DZp5x4Yb.cjs → bridge-CQmXrRKS.cjs} +2 -2
  29. package/dist/chunks/{bridge-DZp5x4Yb.cjs.map → bridge-CQmXrRKS.cjs.map} +1 -1
  30. package/dist/chunks/{bridge-DV4fOcHe.js → bridge-DnDIoRdh.js} +3 -3
  31. package/dist/chunks/{bridge-DV4fOcHe.js.map → bridge-DnDIoRdh.js.map} +1 -1
  32. package/dist/chunks/depositStatus-DUXMloTa.cjs +2 -0
  33. package/dist/chunks/{depositStatus-B9P1YXEU.cjs.map → depositStatus-DUXMloTa.cjs.map} +1 -1
  34. package/dist/chunks/{depositStatus-Cgd_GDUt.js → depositStatus-hmXphYhu.js} +4 -4
  35. package/dist/chunks/{depositStatus-Cgd_GDUt.js.map → depositStatus-hmXphYhu.js.map} +1 -1
  36. package/dist/chunks/{events-od93kR_o.js → events-BP_Ahnsm.js} +47 -45
  37. package/dist/chunks/events-BP_Ahnsm.js.map +1 -0
  38. package/dist/chunks/events-DY2qn8Q0.cjs +2 -0
  39. package/dist/chunks/events-DY2qn8Q0.cjs.map +1 -0
  40. package/dist/chunks/{get-vault-tvl-B6rSrGi_.js → get-vault-tvl-CweOpdGy.js} +58 -55
  41. package/dist/chunks/get-vault-tvl-CweOpdGy.js.map +1 -0
  42. package/dist/chunks/get-vault-tvl-vH_D4tu0.cjs +2 -0
  43. package/dist/chunks/get-vault-tvl-vH_D4tu0.cjs.map +1 -0
  44. package/dist/chunks/{get-vault-withdrawals-W5CgNbqE.js → get-vault-withdrawals-BayGky8y.js} +44 -38
  45. package/dist/chunks/get-vault-withdrawals-BayGky8y.js.map +1 -0
  46. package/dist/chunks/get-vault-withdrawals-GHCAh3wp.cjs +2 -0
  47. package/dist/chunks/get-vault-withdrawals-GHCAh3wp.cjs.map +1 -0
  48. package/dist/chunks/getNetworkFeeSignature-DqKLslZc.cjs +2 -0
  49. package/dist/chunks/getNetworkFeeSignature-DqKLslZc.cjs.map +1 -0
  50. package/dist/chunks/getNetworkFeeSignature-FuDJWrMC.js +38 -0
  51. package/dist/chunks/getNetworkFeeSignature-FuDJWrMC.js.map +1 -0
  52. package/dist/chunks/{getUserStakeAndBakeSignature-BRhWFYyY.js → getUserStakeAndBakeSignature-CQsvL79O.js} +2 -2
  53. package/dist/chunks/{getUserStakeAndBakeSignature-BRhWFYyY.js.map → getUserStakeAndBakeSignature-CQsvL79O.js.map} +1 -1
  54. package/dist/chunks/{getUserStakeAndBakeSignature-VlC_GHmz.cjs → getUserStakeAndBakeSignature-Cwwx89pR.cjs} +2 -2
  55. package/dist/chunks/{getUserStakeAndBakeSignature-VlC_GHmz.cjs.map → getUserStakeAndBakeSignature-Cwwx89pR.cjs.map} +1 -1
  56. package/dist/chunks/statusConstants-D4DN05kK.cjs +2 -0
  57. package/dist/chunks/{statusConstants-CP33VFvI.cjs.map → statusConstants-D4DN05kK.cjs.map} +1 -1
  58. package/dist/chunks/{statusConstants-sPFaTvG2.js → statusConstants-DLrd03gT.js} +3 -3
  59. package/dist/chunks/{statusConstants-sPFaTvG2.js.map → statusConstants-DLrd03gT.js.map} +1 -1
  60. package/dist/chunks/storeNetworkFeeSignature-BaG3AU8U.cjs +2 -0
  61. package/dist/chunks/storeNetworkFeeSignature-BaG3AU8U.cjs.map +1 -0
  62. package/dist/chunks/storeNetworkFeeSignature-sCt4_nHr.js +52 -0
  63. package/dist/chunks/storeNetworkFeeSignature-sCt4_nHr.js.map +1 -0
  64. package/dist/chunks/{tokens-Btl3GXbc.js → tokens-BUrC15ra.js} +5 -5
  65. package/dist/chunks/{tokens-Btl3GXbc.js.map → tokens-BUrC15ra.js.map} +1 -1
  66. package/dist/chunks/{tokens-DEYY7W7O.cjs → tokens-C5rzCTTM.cjs} +2 -2
  67. package/dist/chunks/{tokens-DEYY7W7O.cjs.map → tokens-C5rzCTTM.cjs.map} +1 -1
  68. package/dist/chunks/{unwrapBtceToLbtcv-Cu9KedO1.js → unwrapBtceToLbtcv-BL5bF9y2.js} +3 -3
  69. package/dist/chunks/{unwrapBtceToLbtcv-Cu9KedO1.js.map → unwrapBtceToLbtcv-BL5bF9y2.js.map} +1 -1
  70. package/dist/chunks/{unwrapBtceToLbtcv-BlRUepkS.cjs → unwrapBtceToLbtcv-Chc_QObp.cjs} +2 -2
  71. package/dist/chunks/{unwrapBtceToLbtcv-BlRUepkS.cjs.map → unwrapBtceToLbtcv-Chc_QObp.cjs.map} +1 -1
  72. package/dist/chunks/{withdrawEarn-D835YnBD.js → withdrawEarn-BM_JOe4k.js} +2 -2
  73. package/dist/chunks/{withdrawEarn-D835YnBD.js.map → withdrawEarn-BM_JOe4k.js.map} +1 -1
  74. package/dist/chunks/{withdrawEarn-CVQYjOoY.cjs → withdrawEarn-CXfCmXJl.cjs} +2 -2
  75. package/dist/chunks/{withdrawEarn-CVQYjOoY.cjs.map → withdrawEarn-CXfCmXJl.cjs.map} +1 -1
  76. package/dist/client/ApiNamespace.d.ts.map +1 -1
  77. package/dist/common/chains.d.ts +3 -0
  78. package/dist/common/chains.d.ts.map +1 -1
  79. package/dist/contracts.cjs +1 -1
  80. package/dist/contracts.js +3 -3
  81. package/dist/core.cjs +1 -1
  82. package/dist/core.js +6 -6
  83. package/dist/evm.cjs +1 -1
  84. package/dist/evm.js +3 -3
  85. package/dist/index.cjs +1 -1
  86. package/dist/index.d.ts +1 -1
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +264 -263
  89. package/dist/tokens/tokens.d.ts +1 -1
  90. package/dist/tokens/tokens.d.ts.map +1 -1
  91. package/dist/utils.cjs +1 -1
  92. package/dist/utils.js +1 -1
  93. package/dist/vaults/lib/ops/get-vault-deposits.d.ts +3 -2
  94. package/dist/vaults/lib/ops/get-vault-deposits.d.ts.map +1 -1
  95. package/dist/vaults/lib/ops/get-vault-withdrawals.d.ts +3 -2
  96. package/dist/vaults/lib/ops/get-vault-withdrawals.d.ts.map +1 -1
  97. package/dist/vaults.cjs +1 -1
  98. package/dist/vaults.js +3 -3
  99. package/package.json +1 -1
  100. package/dist/chunks/BtcActions-B9KwzjIG.cjs +0 -2
  101. package/dist/chunks/EvmActions-DBAcQeMr.cjs +0 -7
  102. package/dist/chunks/constants-D1FnS2Z8.js +0 -6
  103. package/dist/chunks/constants-D1FnS2Z8.js.map +0 -1
  104. package/dist/chunks/constants-ueShGH9R.cjs +0 -2
  105. package/dist/chunks/constants-ueShGH9R.cjs.map +0 -1
  106. package/dist/chunks/depositStatus-B9P1YXEU.cjs +0 -2
  107. package/dist/chunks/events-DBUF2B7z.cjs +0 -2
  108. package/dist/chunks/events-DBUF2B7z.cjs.map +0 -1
  109. package/dist/chunks/events-od93kR_o.js.map +0 -1
  110. package/dist/chunks/get-vault-tvl-B6rSrGi_.js.map +0 -1
  111. package/dist/chunks/get-vault-tvl-dvEPPxvT.cjs +0 -2
  112. package/dist/chunks/get-vault-tvl-dvEPPxvT.cjs.map +0 -1
  113. package/dist/chunks/get-vault-withdrawals-Cgx7VsM1.cjs +0 -2
  114. package/dist/chunks/get-vault-withdrawals-Cgx7VsM1.cjs.map +0 -1
  115. package/dist/chunks/get-vault-withdrawals-W5CgNbqE.js.map +0 -1
  116. package/dist/chunks/statusConstants-CP33VFvI.cjs +0 -2
  117. package/dist/chunks/storeNetworkFeeSignature-CY_Z-Wtn.js +0 -65
  118. package/dist/chunks/storeNetworkFeeSignature-CY_Z-Wtn.js.map +0 -1
  119. package/dist/chunks/storeNetworkFeeSignature-DJgBfZp7.cjs +0 -2
  120. package/dist/chunks/storeNetworkFeeSignature-DJgBfZp7.cjs.map +0 -1
@@ -0,0 +1,7 @@
1
+ "use strict";var F=Object.defineProperty;var q=(i,a,e)=>a in i?F(i,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[a]=e;var p=(i,a,e)=>q(i,typeof a!="symbol"?a+"":a,e);const w=require("bignumber.js"),l=require("./withdrawEarn-CXfCmXJl.cjs"),m=require("./token-addresses-C7H9E4qz.cjs"),v=require("./tokens-C5rzCTTM.cjs"),t=require("./statusConstants-D4DN05kK.cjs"),V=require("./storeNetworkFeeSignature-BaG3AU8U.cjs"),Y=require("./fee-requirements-CICSxYYL.cjs"),U=require("./getNetworkFeeSignature-DqKLslZc.cjs"),d=require("./defi-registry-CyMKVT3z.cjs"),n=require("./index-BKzxeh1Y.cjs"),k=require("viem"),L=require("./numbers-3LtmxfD8.cjs"),A=require("./config-BfX8lrdO.cjs");class ${constructor(a){this.env=a}async getMintingFee(a,e){return(await l.getMintingFee({token:e||m.Token.LBTC,chainId:a,env:this.env})).toString()}async signNetworkFee(a){const e=await l.signNetworkFee({fee:new w(a.fee),account:a.account,chainId:a.chainId,provider:a.provider,env:this.env,token:a.token??m.Token.LBTC});return{signature:e.signature,typedData:e.typedData}}async getStakeAndBakeFee(a,e){return(await l.getStakeAndBakeFee({chainId:a,protocol:e})).toString()}async signStakeAndBake(a){const e=await l.signStakeAndBake({value:new w(a.value),account:a.account,chainId:a.chainId,provider:a.provider,env:this.env,vaultKey:a.vaultKey,token:a.token});return{signature:e.signature,typedData:e.typedData}}async signLbtcDestination(a){return{signature:await l.signLbtcDestinationAddr({account:a.address,chainId:a.chainId,provider:a.provider})}}}function G(){return{id:"evm",chain:"evm",register(i){return new $(i.env)}}}const W={routes:[{asset:d.AssetId.LBTC,sourceChains:[t.Chain.ETHEREUM],protocols:[d.DefiProtocol.Veda],envs:[n.r.prod]},{asset:d.AssetId.LBTC,sourceChains:[t.Chain.BASE],protocols:[d.DefiProtocol.Veda],envs:[n.r.prod]},{asset:d.AssetId.LBTC,sourceChains:[t.Chain.BSC],protocols:[d.DefiProtocol.Veda],envs:[n.r.prod]},{asset:d.AssetId.LBTC,sourceChains:[t.Chain.CORN],protocols:[d.DefiProtocol.Veda],envs:[n.r.prod]},{asset:d.AssetId.LBTC,sourceChains:[t.Chain.AVALANCHE],protocols:[d.DefiProtocol.Silo],envs:[n.r.prod]}]};async function z({amount:i,approve:a=!0,token:e=m.Token.LBTC,account:s,chainId:r,provider:u,rpcUrl:c,env:h}){const o=A.EARN_VAULT;if(!A.isEarnChain(r))throw new Error(`Unsupported chain id: ${r}. Please switch to one of the supported chains: ${o.chains.join(", ")}`);const C=v.makePublicClient({chainId:r,rpcUrl:c}),_=m.makeWalletClient({provider:u,chainId:r}),E=await v.getTokenInfo(e,r,h,c);if(!E)throw new Error(`Unknown deposit token: ${e}`);const S=w(i),g=L.toBigInt(v.toBaseDenomination(S,E.decimals)),T=await C.readContract({address:E.address,abi:E.abi,functionName:"allowance",args:[s,o.vaultContract.address]}),f=v.fromBaseDenomination(String(T),E.decimals),P=await C.readContract({address:E.address,abi:E.abi,functionName:"balanceOf",args:[s]}),B=v.fromBaseDenomination(String(P),E.decimals);if(S.isGreaterThan(B))throw new Error(`The deposit amount exceeds the account's balance.
2
+ Deposit amount: ${S.toFixed()}
3
+ Balance: ${B.toFixed()}`);if(S.isGreaterThan(f)){const R=`The deposit amount exceeds allowance.
4
+ Deposit amount: ${S.toFixed()}
5
+ Allowance: ${f.toFixed()}`;if(!a)throw new Error(R);console.info(R);try{console.info(`Trying to approve ${g}`);const{request:D}=await C.simulateContract({account:s,chain:m.CHAIN_ID_TO_VIEM_CHAIN_MAP[r],address:E.address,abi:E.abi,functionName:"approve",args:[o.vaultContract.address,g]}),O=await _.writeContract(D);console.info(`Approve tx hash: ${O}`),console.info(`Approved ${g} for ${o.vaultContract.address}`)}catch(D){const O=v.getErrorMessage(D);throw new Error(`Could not approve ${g} for ${o.vaultContract.address}.
6
+ Reason: ${O}`)}}const{request:H}=await C.simulateContract({account:s,chain:m.CHAIN_ID_TO_VIEM_CHAIN_MAP[r],address:o.tellerContracts[r].address,abi:o.tellerContracts[r].abi,functionName:"deposit",args:[E.address,g,0n]});return await _.writeContract(H)}class Z extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);p(this,"_amount");p(this,"_protocol");p(this,"_needsApproval",!1);p(this,"_txHash");p(this,"_account");p(this,"_chainId");this.ctx=e,this.params=s}get amount(){return this._amount}get protocol(){return this._protocol}get needsApproval(){return this._needsApproval}get txHash(){return this._txHash}isVedaBtcePath(){return this._protocol===d.DefiProtocol.Veda&&this._chainId!==void 0&&A.isBtceVaultChain(this._chainId)}getSpenderAddress(){return this.isVedaBtcePath()?A.BTCE_VAULT.contracts[this._chainId]:A.EARN_VAULT.vaultContract.address}async prepare(e){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const s=t.validatePrepareParams(this.prepareSchema,e);this._amount=s.amount,this._protocol=e.protocol,this.validateProtocol(e.protocol);const r=await this.ctx.getProvider("evm");if(!r)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const c=(await r.request({method:"eth_accounts"}))[0];if(!c)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this._account=c,this._chainId=t.parseChainIdentifier(this.params.sourceChain);const h=await v.getTokenInfo(m.Token.LBTC,this._chainId,this.ctx.env);if(!h)throw t.LombardError.invalidParameter("token","Could not get LBTC token info");const o=this.getSpenderAddress(),_=await v.makePublicClient({chainId:this._chainId}).readContract({address:h.address,abi:k.erc20Abi,functionName:"allowance",args:[c,o]}),E=new w(s.amount),S=v.toBaseDenomination(E,h.decimals),g=new w(String(_));this._needsApproval=S.isGreaterThan(g),this._needsApproval?(this.emitProgress({status:t.EvmOperationStatus.NEEDS_APPROVAL,steps:{approval:t.StepStatus.PENDING,deploying:t.StepStatus.IDLE}}),this.updateStatus(t.EvmOperationStatus.NEEDS_APPROVAL)):(this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,deploying:t.StepStatus.PENDING}}),this.updateStatus(t.EvmOperationStatus.READY))})}async approve(){return this.assertStatus(t.EvmOperationStatus.NEEDS_APPROVAL,"approve"),this.act(async()=>{if(!this._account||!this._chainId||!this._amount)throw t.LombardError.missingParameter("account, chainId, or amount");const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const s=await v.getTokenInfo(m.Token.LBTC,this._chainId,this.ctx.env);if(!s)throw t.LombardError.invalidParameter("token","Could not get LBTC token info");const r=new w(this._amount),u=L.toBigInt(v.toBaseDenomination(r,s.decimals)),c=this.getSpenderAddress(),h=v.makePublicClient({chainId:this._chainId}),o=m.makeWalletClient({provider:e,chainId:this._chainId}),{request:C}=await h.simulateContract({account:this._account,chain:m.CHAIN_ID_TO_VIEM_CHAIN_MAP[this._chainId],address:s.address,abi:k.erc20Abi,functionName:"approve",args:[c,u]}),_=await o.writeContract(C);await l.waitForTransactionReceipt(h,_,"LBTC deposit approval"),this._needsApproval=!1,this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,deploying:t.StepStatus.PENDING}})},t.EvmOperationStatus.READY)}async execute(){return this.assertStatus(t.EvmOperationStatus.READY,"execute"),this.act(async()=>{const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");if(!this._account||!this._chainId)throw t.LombardError.missingParameter("account or chainId");this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,deploying:t.StepStatus.PENDING}});let s;return this.isVedaBtcePath()?s=await l.depositEarn({token:m.Token.LBTC,amount:this._amount,receiver:this.params.recipient,approve:!1,account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env}):s=await z({amount:this._amount,approve:!1,token:m.Token.LBTC,account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env}),this._txHash=s,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,deploying:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:s}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,protocol:t.stringType().min(1,"Protocol is required")})}validateProtocol(e){if(!W.routes.some(r=>r.protocols.includes(e)&&r.envs.includes(this.ctx.env)))throw t.LombardError.invalidParameter("protocol",`Protocol ${e} is not supported in ${this.ctx.env} environment`)}}function j(i,a){return new Z(i,a)}const K=t.getEvmAssetChains(d.AssetId.BTCb,[n.r.prod]),Q=t.getEvmAssetChains(d.AssetId.BTCb,[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),J=t.getEvmAssetChains(d.AssetId.LBTC,[n.r.prod]),X=t.getEvmAssetChains(d.AssetId.LBTC,[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),tt={routes:[{assetsIn:[d.AssetId.BTCb],assetOut:d.AssetId.LBTC,sourceChains:K,destChains:J,envs:[n.r.prod]},{assetsIn:[d.AssetId.BTCb],assetOut:d.AssetId.LBTC,sourceChains:Q,destChains:X,envs:[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]}],addressSchema:t.evmAddressSchema};var I=(i=>(i.IDLE="idle",i.NEEDS_APPROVAL="needs-approval",i.READY="ready",i.BRIDGING="bridging",i.COMPLETED="completed",i))(I||{});class et extends t.BaseAction{constructor(e,s){super(I.IDLE);p(this,"_amount");p(this,"_recipient");p(this,"_needsApproval",!1);p(this,"_txHash");p(this,"_claimData");this.ctx=e,this.params=s}get amount(){return this._amount}get recipient(){return this._recipient}get needsApproval(){return this._needsApproval}get txHash(){return this._txHash}setClaimData(e,s){this._claimData={data:e,proofSignature:s}}async prepare(e){return this.assertStatus(I.IDLE,"prepare"),this.act(async()=>{const s=t.validatePrepareParams(this.prepareSchema,e,{destChain:this.params.destChain});this._amount=s.amount,this._recipient=s.recipient,this._needsApproval=!1,this.emitProgress({status:I.READY,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.IDLE,bridging:t.StepStatus.IDLE}})},I.READY)}async approve(){return this.assertStatus(I.NEEDS_APPROVAL,"approve"),this.act(async()=>{this._needsApproval=!1},I.READY)}async execute(){if(this.assertStatus(I.READY,"execute"),!this._claimData)throw t.LombardError.missingParameter("claimData");return this.act(async()=>{const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const s=t.parseChainIdentifier(this.params.destChain);this.emitProgress({status:I.READY,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.PENDING,bridging:t.StepStatus.IDLE}});const r=await l.claimLBTC({provider:e,account:this._recipient,data:this._claimData.data,proofSignature:this._claimData.proofSignature,chainId:s,env:this.ctx.env});return this._txHash=r,this.emitProgress({status:I.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.COMPLETE,bridging:t.StepStatus.IDLE}}),this.emitCompleted(),{txHash:r}},I.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,recipient:tt.addressSchema})}}function st(i,a){return new et(i,a)}const at=t.getEvmAssetChains(d.AssetId.BTCb,[n.r.prod]),rt=t.getEvmAssetChains(d.AssetId.BTCb,[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),it={routes:[{assetIn:d.AssetId.BTCb,assetOut:d.AssetId.BTC,sourceChains:at,destChain:t.Chain.BITCOIN_MAINNET,envs:[n.r.prod]},{assetIn:d.AssetId.BTCb,assetOut:d.AssetId.BTC,sourceChains:rt,destChain:t.Chain.BITCOIN_SIGNET,envs:[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]}],recipientSchema:t.bitcoinAddressSchema};async function b(i,a,e,s){if(!Y.requiresAutoMintFee(i))return{requiresAuth:!1,hasValidSignature:!1,feeInSatoshis:null,feeFormatted:null,expirationDate:null};const r=await v.getTokenContractInfo(s,i,e),u=await U.getNetworkFeeSignature({address:a,chainId:i,env:e,tokenAddress:r.address}),c=u.expirationDate?new Date(Number(u.expirationDate)*1e3)<new Date:!1,h=u.hasSignature&&!c;let o=null,C=null;if(!h){const _=await l.getMintingFee({token:s,chainId:i,env:e});o=BigInt(_.times(1e8).toFixed(0)),C=_.toFixed(8)}return{requiresAuth:!0,hasValidSignature:h,feeInSatoshis:o,feeFormatted:C,expirationDate:u.expirationDate??null}}async function x(i){const{chainId:a,account:e,feeInSatoshis:s,provider:r,env:u,token:c}=i,h=await v.getTokenContractInfo(c,a,u),o=await l.signNetworkFee({fee:s,account:e,chainId:a,provider:r,env:u,token:c});return await V.storeNetworkFeeSignature({signature:o.signature,typedData:o.typedData,address:e,env:u,tokenAddress:h.address}),o}function N(){return{requiresAuth:!1,isAuthorized:!1,feeInSatoshis:null,feeFormatted:null,expirationDate:null}}class nt extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);p(this,"_amount");p(this,"_recipient");p(this,"_needsApproval",!1);p(this,"_txHash");p(this,"_feeAuth",N());this.ctx=e,this.params=s}get amount(){return this._amount}get recipient(){return this._recipient}get needsApproval(){return this._needsApproval}get txHash(){return this._txHash}get feeAuth(){return this._feeAuth}async prepare(e){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const s=t.validatePrepareParams(this.prepareSchema,e,{destChain:this.params.destChain});this._amount=s.amount,this._recipient=s.recipient;const r=t.parseChainIdentifier(this.params.sourceChain),u=await this.ctx.getProvider("evm");if(!u)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const h=(await u.request({method:"eth_accounts"}))[0],o=await b(r,h,this.ctx.env,m.Token.BTCb);if(this._feeAuth={requiresAuth:o.requiresAuth,isAuthorized:o.hasValidSignature,feeInSatoshis:o.feeInSatoshis,feeFormatted:o.feeFormatted,expirationDate:o.expirationDate},o.requiresAuth&&!o.hasValidSignature){this.updateStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION),this.emitProgress({status:t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}});return}this._needsApproval=!1,this.updateStatus(t.EvmOperationStatus.READY),this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})})}async authorizeFee(){if(this.assertStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,"authorizeFee"),!this._feeAuth.feeInSatoshis)throw t.LombardError.missingParameter("feeInSatoshis");return this.act(async()=>{const e=t.parseChainIdentifier(this.params.sourceChain),s=await this.ctx.getProvider("evm");if(!s)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const u=(await s.request({method:"eth_accounts"}))[0];await x({chainId:e,account:u,feeInSatoshis:this._feeAuth.feeInSatoshis,provider:s,env:this.ctx.env,token:m.Token.BTCb}),this._feeAuth.isAuthorized=!0,this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})},t.EvmOperationStatus.READY)}async approve(){return this.assertStatus(t.EvmOperationStatus.NEEDS_APPROVAL,"approve"),this.act(async()=>{this._needsApproval=!1,this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})},t.EvmOperationStatus.READY)}async execute(){return this.assertStatus(t.EvmOperationStatus.READY,"execute"),this.act(async()=>{const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const r=(await e.request({method:"eth_accounts"}))[0];if(!r)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const u=t.parseChainIdentifier(this.params.sourceChain);this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.PENDING,releasing:t.StepStatus.IDLE}});const c=await l.redeemToken({provider:e,account:r,amount:this._amount,btcAddress:this._recipient,chainId:u,env:this.ctx.env,tokenIn:m.Token.BTCb,tokenOut:void 0});return this._txHash=c,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:t.StepStatus.PENDING}}),this.emitCompleted(),{txHash:c}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,recipient:it.recipientSchema})}}function ot(i,a){return new nt(i,a)}const ct=[m.ChainId.avalanche,m.ChainId.avalancheFuji];function ut(i){return ct.includes(i)}class ht extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);p(this,"_amount");p(this,"_txHash");p(this,"_feeAuth",N());p(this,"_account");p(this,"_needsApproval",!1);p(this,"_spenderAddress");this.ctx=e,this.params=s}get amount(){return this._amount}get txHash(){return this._txHash}get feeAuth(){return this._feeAuth}get needsApproval(){return this._needsApproval}async prepare(e){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const s=t.validatePrepareParams(this.prepareSchema,e);this._amount=s.amount;const r=await this.ctx.getProvider("evm");if(!r)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const c=(await r.request({method:"eth_accounts"}))[0];if(!c)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this._account=c;const h=t.parseChainIdentifier(this.params.sourceChain);if(ut(h)){const _=await v.getTokenContractInfo(m.Token.BTCb,h,this.ctx.env,m.AddressKind.Adapter);this._spenderAddress=_.address;const E=await l.getTokenAllowance({token:m.Token.BTCb,owner:c,spender:_.address,chainId:h,env:this.ctx.env}),S=new w(s.amount);if(this._needsApproval=E.isLessThan(S),this._needsApproval){this.emitProgress({status:t.EvmOperationStatus.NEEDS_APPROVAL,steps:{approval:t.StepStatus.PENDING,staking:t.StepStatus.IDLE}}),this.updateStatus(t.EvmOperationStatus.NEEDS_APPROVAL);return}}const o=await b(h,c,this.ctx.env,m.Token.LBTC);this._feeAuth={requiresAuth:o.requiresAuth,isAuthorized:o.hasValidSignature,feeInSatoshis:o.feeInSatoshis,feeFormatted:o.feeFormatted,expirationDate:o.expirationDate},o.requiresAuth&&!o.hasValidSignature?(this.emitProgress({status:t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,steps:{staking:t.StepStatus.IDLE}}),this.updateStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION)):(this.emitProgress({status:t.EvmOperationStatus.READY,steps:{staking:t.StepStatus.PENDING}}),this.updateStatus(t.EvmOperationStatus.READY))})}async approve(){return this.assertStatus(t.EvmOperationStatus.NEEDS_APPROVAL,"approve"),this.act(async()=>{if(!this._account||!this._spenderAddress||!this._amount)throw t.LombardError.missingParameter("account, spenderAddress, or amount");const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const s=t.parseChainIdentifier(this.params.sourceChain),r=await l.approveToken({account:this._account,token:m.Token.BTCb,spender:this._spenderAddress,amount:this._amount,chainId:s,provider:e,env:this.ctx.env}),u=v.makePublicClient({chainId:s,env:this.ctx.env});await l.waitForTransactionReceipt(u,r,"BTC.b approval"),this._needsApproval=!1,this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,staking:t.StepStatus.PENDING}})},t.EvmOperationStatus.READY)}async authorizeFee(){return this.assertStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,"authorizeFee"),this.act(async()=>{if(!this._feeAuth.feeInSatoshis)throw t.LombardError.missingParameter("feeInSatoshis");const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const s=t.parseChainIdentifier(this.params.sourceChain);await x({chainId:s,account:this._account,feeInSatoshis:this._feeAuth.feeInSatoshis,provider:e,env:this.ctx.env,token:m.Token.LBTC}),this._feeAuth={...this._feeAuth,isAuthorized:!0},this.emitProgress({status:t.EvmOperationStatus.READY,steps:{staking:t.StepStatus.PENDING}})},t.EvmOperationStatus.READY)}async execute(){return this.assertStatus(t.EvmOperationStatus.READY,"execute"),this.act(async()=>{const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const s=t.parseChainIdentifier(this.params.sourceChain),u=(await e.request({method:"eth_accounts"}))[0];if(!u)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this.emitProgress({status:t.EvmOperationStatus.READY,steps:{staking:t.StepStatus.PENDING}});const c=await l.depositToken({amount:this._amount,tokenIn:m.Token.BTCb,tokenOut:m.Token.LBTC,account:u,chainId:s,provider:e,env:this.ctx.env});return this._txHash=c,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{staking:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:c}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema})}}function pt(i,a){return new ht(i,a)}const dt=t.getEvmAssetChains(d.AssetId.LBTC,[n.r.prod]),mt=t.getEvmAssetChains(d.AssetId.LBTC,[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),vt=t.getEvmChainsWithAllAssets([d.AssetId.LBTC,d.AssetId.BTCb],[n.r.prod]),Et=t.getEvmChainsWithAllAssets([d.AssetId.LBTC,d.AssetId.BTCb],[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),lt={routes:[{sourceChains:dt,destChain:t.Chain.BITCOIN_MAINNET,envs:[n.r.prod]},{sourceChains:mt,destChain:t.Chain.BITCOIN_SIGNET,envs:[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]}],recipientSchema:t.bitcoinAddressSchema},St={routes:[...vt.map(i=>({sourceChains:[i],destChain:i,envs:[n.r.prod]})),...Et.map(i=>({sourceChains:[i],destChain:i,envs:[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]}))],recipientSchema:t.evmAddressSchema};class Ct extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);p(this,"_amount");p(this,"_recipient");p(this,"_txHash");p(this,"_feeAuth",N());this.ctx=e,this.params=s}get amount(){return this._amount}get recipient(){return this._recipient}get txHash(){return this._txHash}get feeAuth(){return this._feeAuth}get isBtcbOutput(){return this.params.assetOut===d.AssetId.BTCb}async prepare(e){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const s=t.validatePrepareParams(this.prepareSchema,e,{destChain:this.params.destChain});this._amount=s.amount,this._recipient=s.recipient;const r=t.parseChainIdentifier(this.params.sourceChain);if(this.isBtcbOutput){const u=await this.ctx.getProvider("evm");if(!u)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const h=(await u.request({method:"eth_accounts"}))[0],o=await b(r,h,this.ctx.env,m.Token.BTCb);if(this._feeAuth={requiresAuth:o.requiresAuth,isAuthorized:o.hasValidSignature,feeInSatoshis:o.feeInSatoshis,feeFormatted:o.feeFormatted,expirationDate:o.expirationDate},o.requiresAuth&&!o.hasValidSignature){this.updateStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION),this.emitProgress({status:t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}});return}}this.updateStatus(t.EvmOperationStatus.READY),this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})})}async authorizeFee(){if(this.assertStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,"authorizeFee"),!this._feeAuth.feeInSatoshis)throw t.LombardError.missingParameter("feeInSatoshis");return this.act(async()=>{const e=t.parseChainIdentifier(this.params.sourceChain),s=await this.ctx.getProvider("evm");if(!s)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const u=(await s.request({method:"eth_accounts"}))[0];await x({chainId:e,account:u,feeInSatoshis:this._feeAuth.feeInSatoshis,provider:s,env:this.ctx.env,token:m.Token.BTCb}),this._feeAuth.isAuthorized=!0,this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})},t.EvmOperationStatus.READY)}async execute(){return this.assertStatus(t.EvmOperationStatus.READY,"execute"),this.act(async()=>{const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const r=(await e.request({method:"eth_accounts"}))[0];if(!r)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const u=t.parseChainIdentifier(this.params.sourceChain),c=this.params.assetOut===d.AssetId.BTCb;this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.PENDING,releasing:t.StepStatus.IDLE}});const h=await l.redeemToken({provider:e,account:c?this._recipient:r,amount:this._amount,btcAddress:c?void 0:this._recipient,chainId:u,env:this.ctx.env,tokenIn:m.Token.LBTC,tokenOut:c?m.Token.BTCb:void 0});return this._txHash=h,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:c?t.StepStatus.COMPLETE:t.StepStatus.PENDING}}),this.emitCompleted(),{txHash:h}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){const e=this.params.assetOut===d.AssetId.BTC?lt:St;return t.objectType({amount:t.evmAmountSchema,recipient:e.recipientSchema})}}function At(i,a){return new Ct(i,a)}const M={routes:[{sourceChains:[t.Chain.ETHEREUM,t.Chain.BASE,t.Chain.BSC,t.Chain.CORN],protocols:[d.DefiProtocol.Veda],envs:[n.r.prod]}]};class _t extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);p(this,"_txHash");p(this,"_account");p(this,"_chainId");this.ctx=e,this.params=s}get txHash(){return this._txHash}async prepare(){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{this.validateProtocol(this.params.protocol);const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.chain,"evm");const r=(await e.request({method:"eth_accounts"}))[0];if(!r)throw t.LombardError.providerMissing(this.params.chain,"evm");if(this._account=r,this._chainId=t.parseChainIdentifier(this.params.chain),!A.isEarnChain(this._chainId))throw new t.LombardError(t.WithdrawErrorCode.PROTOCOL_NOT_SUPPORTED,`Chain ${this.params.chain} does not support Veda vault withdrawals`,{chain:this.params.chain,protocol:this.params.protocol});this.emitProgress({status:t.EvmOperationStatus.READY,steps:{cancelling:t.StepStatus.PENDING}}),this.updateStatus(t.EvmOperationStatus.READY)})}async execute(){return this.assertStatus(t.EvmOperationStatus.READY,"execute"),this.act(async()=>{const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.chain,"evm");if(!this._account||!this._chainId)throw t.LombardError.missingParameter("account or chainId");this.emitProgress({status:t.EvmOperationStatus.READY,steps:{cancelling:t.StepStatus.PENDING}});const s=await l.cancelWithdrawInternal({account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env});return this._txHash=s,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{cancelling:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:s}},t.EvmOperationStatus.COMPLETED)}validateProtocol(e){if(!M.routes.some(r=>r.protocols.includes(e)&&r.envs.includes(this.ctx.env)))throw t.LombardError.invalidParameter("protocol",`Protocol ${e} is not supported for withdrawals in ${this.ctx.env} environment`)}}class gt extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);p(this,"_amount");p(this,"_protocol");p(this,"_needsApproval",!1);p(this,"_txHash");p(this,"_account");p(this,"_chainId");this.ctx=e,this.params=s}get amount(){return this._amount}get protocol(){return this._protocol}get needsApproval(){return this._needsApproval}get txHash(){return this._txHash}async prepare(e){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const s=t.validatePrepareParams(this.prepareSchema,e);this._amount=s.amount,this._protocol=this.params.protocol,this.validateProtocol(this.params.protocol);const r=await this.ctx.getProvider("evm");if(!r)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const c=(await r.request({method:"eth_accounts"}))[0];if(!c)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");if(this._account=c,this._chainId=t.parseChainIdentifier(this.params.sourceChain),!A.isEarnChain(this._chainId))throw new t.LombardError(t.WithdrawErrorCode.PROTOCOL_NOT_SUPPORTED,`Chain ${this.params.sourceChain} does not support Veda vault withdrawals`,{chain:this.params.sourceChain,protocol:this._protocol});const h=A.EARN_VAULT,o=v.makePublicClient({chainId:this._chainId}),C=new w(s.amount),_=await o.readContract({address:h.lensContract.address,abi:h.lensContract.abi,functionName:"balanceOf",args:[c,h.vaultContract.address]}),E=v.fromBaseDenomination(String(_),h.decimals);let S=E;if(A.isBtceVaultChain(this._chainId)){const f=await o.readContract({address:A.BTCE_VAULT.contracts[this._chainId],abi:A.BTCE_VAULT.abi,functionName:"balanceOf",args:[c]}),P=v.fromBaseDenomination(String(f),h.decimals);S=E.plus(P)}if(C.isGreaterThan(S))throw new t.LombardError(t.WithdrawErrorCode.INSUFFICIENT_SHARES,`Insufficient vault shares. Requested: ${C.toFixed()}, Available: ${S.toFixed()}`,{requested:C.toFixed(),available:S.toFixed()});const g=await o.readContract({address:h.vaultContract.address,abi:h.vaultContract.abi,functionName:"allowance",args:[c,h.withdrawQueueContracts[this._chainId].address]}),T=v.fromBaseDenomination(String(g),h.decimals);this._needsApproval=C.isGreaterThan(T),this._needsApproval?(this.emitProgress({status:t.EvmOperationStatus.NEEDS_APPROVAL,steps:{approval:t.StepStatus.PENDING,queueing:t.StepStatus.IDLE}}),this.updateStatus(t.EvmOperationStatus.NEEDS_APPROVAL)):(this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,queueing:t.StepStatus.PENDING}}),this.updateStatus(t.EvmOperationStatus.READY))})}async approve(){return this.assertStatus(t.EvmOperationStatus.NEEDS_APPROVAL,"approve"),this.act(async()=>{if(!this._account||!this._chainId||!this._amount)throw t.LombardError.missingParameter("account, chainId, or amount");const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const s=A.EARN_VAULT,r=new w(this._amount),u=L.toBigInt(v.toBaseDenomination(r,s.decimals)),c=v.makePublicClient({chainId:this._chainId}),h=m.makeWalletClient({provider:e,chainId:this._chainId}),o=this._chainId;if(A.isBtceVaultChain(this._chainId)){const E=await c.readContract({address:s.lensContract.address,abi:s.lensContract.abi,functionName:"balanceOf",args:[this._account,s.vaultContract.address]});if(E<u){const S=u-E,g=await c.readContract({address:A.BTCE_VAULT.contracts[this._chainId],abi:A.BTCE_VAULT.abi,functionName:"maxWithdraw",args:[this._account]});if(g<S)throw new t.LombardError(t.WithdrawErrorCode.INSUFFICIENT_SHARES,`BTCe wrapper cannot cover the required unwrap. needed=${S.toString()}, maxWithdraw=${g.toString()}.`,{needed:S.toString(),maxWithdraw:g.toString()});const{request:T}=await c.simulateContract({account:this._account,chain:m.CHAIN_ID_TO_VIEM_CHAIN_MAP[this._chainId],address:A.BTCE_VAULT.contracts[this._chainId],abi:A.BTCE_VAULT.abi,functionName:"withdraw",args:[S,this._account,this._account]}),f=await h.writeContract(T);await l.waitForTransactionReceipt(c,f,"BTCe unwrap")}}const{request:C}=await c.simulateContract({account:this._account,chain:m.CHAIN_ID_TO_VIEM_CHAIN_MAP[this._chainId],address:s.vaultContract.address,abi:s.vaultContract.abi,functionName:"approve",args:[s.withdrawQueueContracts[o].address,u]}),_=await h.writeContract(C);await l.waitForTransactionReceipt(c,_,"vault share approval"),this._needsApproval=!1,this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,queueing:t.StepStatus.PENDING}})},t.EvmOperationStatus.READY)}async execute(){return this.assertStatus(t.EvmOperationStatus.READY,"execute"),this.act(async()=>{const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");if(!this._account||!this._chainId||!this._amount)throw t.LombardError.missingParameter("account, chainId, or amount");this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,queueing:t.StepStatus.PENDING}});let s;return A.isBtceVaultChain(this._chainId)?s=(await l.withdrawEarn({amount:this._amount,account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env})).queueTxHash:s=await l.queueWithdrawInternal({amount:this._amount,approve:!1,account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env}),this._txHash=s,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,queueing:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:s}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema})}validateProtocol(e){if(!M.routes.some(r=>r.protocols.includes(e)&&r.envs.includes(this.ctx.env)))throw t.LombardError.invalidParameter("protocol",`Protocol ${e} is not supported for withdrawals in ${this.ctx.env} environment`)}}function It(i,a){return new gt(i,a)}function wt(i,a){return new _t(i,a)}class y{constructor(a){p(this,"ctx");this.ctx=t.createEvmCoreContext(a)}stake(a){return pt(this.ctx,a)}unstake(a){return At(this.ctx,a)}deposit(a){return st(this.ctx,a)}deploy(a){return j(this.ctx,a)}withdraw(a){return It(this.ctx,a)}cancelWithdraw(a){return wt(this.ctx,a)}redeem(a){return ot(this.ctx,a)}}function ft(i){return new y(i)}exports.EvmActions=y;exports.EvmDepositStatus=I;exports.evmActions=ft;exports.evmModule=G;
7
+ //# sourceMappingURL=EvmActions-CynfSVFq.cjs.map