@lombard.finance/sdk 4.4.0 → 4.4.1
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/CHANGELOG.md +8 -0
- package/dist/api-functions/getDepositsByAddress/getDepositsByAddress.d.ts +13 -1
- package/dist/api-functions/getDepositsByAddress/getDepositsByAddress.d.ts.map +1 -1
- package/dist/api.cjs +1 -1
- package/dist/api.js +1 -1
- package/dist/btc.cjs +1 -1
- package/dist/btc.js +2 -2
- package/dist/chunks/{BtcActions-BOVJrdTI.cjs → BtcActions-BIBsbYIt.cjs} +2 -2
- package/dist/chunks/{BtcActions-BOVJrdTI.cjs.map → BtcActions-BIBsbYIt.cjs.map} +1 -1
- package/dist/chunks/{BtcActions-_a8r3Q7c.js → BtcActions-Df41lbsb.js} +2 -2
- package/dist/chunks/{BtcActions-_a8r3Q7c.js.map → BtcActions-Df41lbsb.js.map} +1 -1
- package/dist/chunks/{EvmActions-D4vFpbYk.js → EvmActions-5lPqhRaM.js} +2 -2
- package/dist/chunks/{EvmActions-D4vFpbYk.js.map → EvmActions-5lPqhRaM.js.map} +1 -1
- package/dist/chunks/{EvmActions-VrDbgMDy.cjs → EvmActions-BY_18gTg.cjs} +2 -2
- package/dist/chunks/{EvmActions-VrDbgMDy.cjs.map → EvmActions-BY_18gTg.cjs.map} +1 -1
- package/dist/chunks/ReferralsClient-Cmrjo9bN.cjs.map +1 -1
- package/dist/chunks/ReferralsClient-DvEsA3II.js.map +1 -1
- package/dist/chunks/depositStatus-CFo5jW89.cjs +2 -0
- package/dist/chunks/depositStatus-CFo5jW89.cjs.map +1 -0
- package/dist/chunks/{depositStatus-05_X7FVs.js → depositStatus-DTc01ZoZ.js} +42 -40
- package/dist/chunks/depositStatus-DTc01ZoZ.js.map +1 -0
- package/dist/chunks/{events-5c8IHjEF.cjs → events-6PV6NP-o.cjs} +2 -2
- package/dist/chunks/{events-5c8IHjEF.cjs.map → events-6PV6NP-o.cjs.map} +1 -1
- package/dist/chunks/{events-rgJZNpHd.js → events-BvRwXePq.js} +4 -4
- package/dist/chunks/{events-rgJZNpHd.js.map → events-BvRwXePq.js.map} +1 -1
- package/dist/chunks/{statusConstants-Zii1786K.js → statusConstants-C4YNx2q0.js} +2 -2
- package/dist/chunks/{statusConstants-Zii1786K.js.map → statusConstants-C4YNx2q0.js.map} +1 -1
- package/dist/chunks/{statusConstants-Cri7yswV.cjs → statusConstants-DlM2oPfW.cjs} +2 -2
- package/dist/chunks/{statusConstants-Cri7yswV.cjs.map → statusConstants-DlM2oPfW.cjs.map} +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.js +4 -4
- package/dist/evm.cjs +1 -1
- package/dist/evm.js +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.js +5 -5
- package/dist/shared/deposits/depositStatus.d.ts +9 -5
- package/dist/shared/deposits/depositStatus.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/depositStatus-05_X7FVs.js.map +0 -1
- package/dist/chunks/depositStatus-CUjHpXFJ.cjs +0 -2
- package/dist/chunks/depositStatus-CUjHpXFJ.cjs.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var N=Object.defineProperty;var B=(r,a,e)=>a in r?N(r,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[a]=e;var c=(r,a,e)=>B(r,typeof a!="symbol"?a+"":a,e);const I=require("bignumber.js"),v=require("./unstakeLBTC-CmoCaGX9.cjs"),m=require("./token-addresses-nzvTOi24.cjs"),S=require("./tokens-BkvA0Gp1.cjs"),t=require("./statusConstants-Cri7yswV.cjs"),w=require("./storeNetworkFeeSignature-Buk4091C.cjs"),R=require("./fee-requirements-CICSxYYL.cjs"),p=require("./defi-registry-DDNavtO1.cjs"),n=require("./index-BKzxeh1Y.cjs"),L=require("./numbers-3LtmxfD8.cjs"),l=require("./config-DmCmanM_.cjs"),T=require("./withdraw-i0AueZ_C.cjs");class k{constructor(a){this.env=a}async getMintingFee(a,e){return(await v.getMintingFee({token:e||m.Token.LBTC,chainId:a,env:this.env})).toString()}async signNetworkFee(a){const e=await v.signNetworkFee({fee:new I(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 v.getStakeAndBakeFee({chainId:a,protocol:e})).toString()}async signStakeAndBake(a){const e=await v.signStakeAndBake({value:new I(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 v.signLbtcDestinationAddr({account:a.address,chainId:a.chainId,provider:a.provider})}}}function y(){return{id:"evm",chain:"evm",register(r){return new k(r.env)}}}const M={routes:[{asset:p.AssetId.LBTC,sourceChains:[t.Chain.ETHEREUM],protocols:[p.DefiProtocol.Veda],envs:[n.r.prod]},{asset:p.AssetId.LBTC,sourceChains:[t.Chain.BASE],protocols:[p.DefiProtocol.Veda],envs:[n.r.prod]},{asset:p.AssetId.LBTC,sourceChains:[t.Chain.BSC],protocols:[p.DefiProtocol.Veda],envs:[n.r.prod]},{asset:p.AssetId.LBTC,sourceChains:[t.Chain.CORN],protocols:[p.DefiProtocol.Veda],envs:[n.r.prod]},{asset:p.AssetId.LBTC,sourceChains:[t.Chain.AVALANCHE],protocols:[p.DefiProtocol.Silo],envs:[n.r.prod]}]};class H extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);c(this,"_amount");c(this,"_protocol");c(this,"_needsApproval",!1);c(this,"_txHash");c(this,"_account");c(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=e.protocol,this.validateProtocol(e.protocol);const i=await this.ctx.getProvider("evm");if(!i)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const u=(await i.request({method:"eth_accounts"}))[0];if(!u)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this._account=u,this._chainId=t.parseChainIdentifier(this.params.sourceChain);const d=l.VAULTS[l.Vault.Veda],o=await S.getTokenInfo(m.Token.LBTC,this._chainId,this.ctx.env);if(!o)throw t.LombardError.invalidParameter("token","Could not get LBTC token info");const E=await S.makePublicClient({chainId:this._chainId}).readContract({address:o.address,abi:o.abi,functionName:"allowance",args:[u,d.vaultContract.address]}),g=new I(s.amount),_=S.toBaseDenomination(g,o.decimals),f=new I(String(E));this._needsApproval=_.isGreaterThan(f),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=l.VAULTS[l.Vault.Veda],i=await S.getTokenInfo(m.Token.LBTC,this._chainId,this.ctx.env);if(!i)throw t.LombardError.invalidParameter("token","Could not get LBTC token info");const h=new I(this._amount),u=L.toBigInt(S.toBaseDenomination(h,i.decimals)),d=S.makePublicClient({chainId:this._chainId}),o=m.makeWalletClient({provider:e,chainId:this._chainId}),{request:A}=await d.simulateContract({account:this._account,chain:m.CHAIN_ID_TO_VIEM_CHAIN_MAP[this._chainId],address:i.address,abi:i.abi,functionName:"approve",args:[s.vaultContract.address,u]}),E=await o.writeContract(A);await v.waitForTransactionReceipt(d,E,"LBTC vault 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");const s=(this._protocol==="veda",l.Vault.Veda);this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,deploying:t.StepStatus.PENDING}});const i=await T.deposit({amount:this._amount,approve:!1,token:m.Token.LBTC,vaultKey:s,account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env});return this._txHash=i,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,deploying:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:i}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,protocol:t.stringType().min(1,"Protocol is required")})}validateProtocol(e){if(!M.routes.some(i=>i.protocols.includes(e)&&i.envs.includes(this.ctx.env)))throw t.LombardError.invalidParameter("protocol",`Protocol ${e} is not supported in ${this.ctx.env} environment`)}}function V(r,a){return new H(r,a)}const F=t.getEvmAssetChains(p.AssetId.BTCb,[n.r.prod]),q=t.getEvmAssetChains(p.AssetId.BTCb,[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),Y=t.getEvmAssetChains(p.AssetId.LBTC,[n.r.prod]),G=t.getEvmAssetChains(p.AssetId.LBTC,[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),U={routes:[{assetsIn:[p.AssetId.BTCb],assetOut:p.AssetId.LBTC,sourceChains:F,destChains:Y,envs:[n.r.prod]},{assetsIn:[p.AssetId.BTCb],assetOut:p.AssetId.LBTC,sourceChains:q,destChains:G,envs:[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]}],addressSchema:t.evmAddressSchema};var C=(r=>(r.IDLE="idle",r.NEEDS_APPROVAL="needs-approval",r.READY="ready",r.BRIDGING="bridging",r.COMPLETED="completed",r))(C||{});class z extends t.BaseAction{constructor(e,s){super(C.IDLE);c(this,"_amount");c(this,"_recipient");c(this,"_needsApproval",!1);c(this,"_txHash");c(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(C.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:C.READY,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.IDLE,bridging:t.StepStatus.IDLE}})},C.READY)}async approve(){return this.assertStatus(C.NEEDS_APPROVAL,"approve"),this.act(async()=>{this._needsApproval=!1},C.READY)}async execute(){if(this.assertStatus(C.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:C.READY,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.PENDING,bridging:t.StepStatus.IDLE}});const i=await v.claimLBTC({provider:e,account:this._recipient,data:this._claimData.data,proofSignature:this._claimData.proofSignature,chainId:s,env:this.ctx.env});return this._txHash=i,this.emitProgress({status:C.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.COMPLETE,bridging:t.StepStatus.IDLE}}),this.emitCompleted(),{txHash:i}},C.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,recipient:U.addressSchema})}}function W(r,a){return new z(r,a)}const $=t.getEvmAssetChains(p.AssetId.BTCb,[n.r.prod]),Z=t.getEvmAssetChains(p.AssetId.BTCb,[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),j={routes:[{assetIn:p.AssetId.BTCb,assetOut:p.AssetId.BTC,sourceChains:$,destChain:t.Chain.BITCOIN_MAINNET,envs:[n.r.prod]},{assetIn:p.AssetId.BTCb,assetOut:p.AssetId.BTC,sourceChains:Z,destChain:t.Chain.BITCOIN_SIGNET,envs:[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]}],recipientSchema:t.bitcoinAddressSchema};async function P(r,a,e,s){if(!R.requiresAutoMintFee(r))return{requiresAuth:!1,hasValidSignature:!1,feeInSatoshis:null,feeFormatted:null,expirationDate:null};const i=await S.getTokenContractInfo(s,r,e),h=await w.getNetworkFeeSignature({address:a,chainId:r,env:e,tokenAddress:i.address}),u=h.expirationDate?new Date(Number(h.expirationDate)*1e3)<new Date:!1,d=h.hasSignature&&!u;let o=null,A=null;if(!d){const E=await v.getMintingFee({token:s,chainId:r,env:e});o=BigInt(E.times(1e8).toFixed(0)),A=E.toFixed(8)}return{requiresAuth:!0,hasValidSignature:d,feeInSatoshis:o,feeFormatted:A,expirationDate:h.expirationDate??null}}async function D(r){const{chainId:a,account:e,feeInSatoshis:s,provider:i,env:h,token:u}=r,d=await S.getTokenContractInfo(u,a,h),o=await v.signNetworkFee({fee:s,account:e,chainId:a,provider:i,env:h,token:u});return await w.storeNetworkFeeSignature({signature:o.signature,typedData:o.typedData,address:e,env:h,tokenAddress:d.address}),o}function O(){return{requiresAuth:!1,isAuthorized:!1,feeInSatoshis:null,feeFormatted:null,expirationDate:null}}class K extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);c(this,"_amount");c(this,"_recipient");c(this,"_needsApproval",!1);c(this,"_txHash");c(this,"_feeAuth",O());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 i=t.parseChainIdentifier(this.params.sourceChain),h=await this.ctx.getProvider("evm");if(!h)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const d=(await h.request({method:"eth_accounts"}))[0],o=await P(i,d,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 h=(await s.request({method:"eth_accounts"}))[0];await D({chainId:e,account:h,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 i=(await e.request({method:"eth_accounts"}))[0];if(!i)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const h=t.parseChainIdentifier(this.params.sourceChain);this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.PENDING,releasing:t.StepStatus.IDLE}});const u=await v.redeemToken({provider:e,account:i,amount:this._amount,btcAddress:this._recipient,chainId:h,env:this.ctx.env,tokenIn:m.Token.BTCb,tokenOut:void 0});return this._txHash=u,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:t.StepStatus.PENDING}}),this.emitCompleted(),{txHash:u}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,recipient:j.recipientSchema})}}function Q(r,a){return new K(r,a)}const J=[m.ChainId.avalanche,m.ChainId.avalancheFuji];function X(r){return J.includes(r)}class tt extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);c(this,"_amount");c(this,"_txHash");c(this,"_feeAuth",O());c(this,"_account");c(this,"_needsApproval",!1);c(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 i=await this.ctx.getProvider("evm");if(!i)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const u=(await i.request({method:"eth_accounts"}))[0];if(!u)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this._account=u;const d=t.parseChainIdentifier(this.params.sourceChain);if(X(d)){const E=await S.getTokenContractInfo(m.Token.BTCb,d,this.ctx.env,m.AddressKind.Adapter);this._spenderAddress=E.address;const g=await v.getTokenAllowance({token:m.Token.BTCb,owner:u,spender:E.address,chainId:d,env:this.ctx.env}),_=new I(s.amount);if(this._needsApproval=g.isLessThan(_),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 P(d,u,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),i=await v.approveToken({account:this._account,token:m.Token.BTCb,spender:this._spenderAddress,amount:this._amount,chainId:s,provider:e,env:this.ctx.env}),h=S.makePublicClient({chainId:s,env:this.ctx.env});await v.waitForTransactionReceipt(h,i,"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 D({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),h=(await e.request({method:"eth_accounts"}))[0];if(!h)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this.emitProgress({status:t.EvmOperationStatus.READY,steps:{staking:t.StepStatus.PENDING}});const u=await v.depositToken({amount:this._amount,tokenIn:m.Token.BTCb,tokenOut:m.Token.LBTC,account:h,chainId:s,provider:e,env:this.ctx.env});return this._txHash=u,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{staking:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:u}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema})}}function et(r,a){return new tt(r,a)}const st=t.getEvmAssetChains(p.AssetId.LBTC,[n.r.prod]),at=t.getEvmAssetChains(p.AssetId.LBTC,[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),rt=t.getEvmChainsWithAllAssets([p.AssetId.LBTC,p.AssetId.BTCb],[n.r.prod]),it=t.getEvmChainsWithAllAssets([p.AssetId.LBTC,p.AssetId.BTCb],[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),nt={routes:[{sourceChains:st,destChain:t.Chain.BITCOIN_MAINNET,envs:[n.r.prod]},{sourceChains:at,destChain:t.Chain.BITCOIN_SIGNET,envs:[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]}],recipientSchema:t.bitcoinAddressSchema},ot={routes:[...rt.map(r=>({sourceChains:[r],destChain:r,envs:[n.r.prod]})),...it.map(r=>({sourceChains:[r],destChain:r,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);c(this,"_amount");c(this,"_recipient");c(this,"_txHash");c(this,"_feeAuth",O());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===p.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 i=t.parseChainIdentifier(this.params.sourceChain);if(this.isBtcbOutput){const h=await this.ctx.getProvider("evm");if(!h)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const d=(await h.request({method:"eth_accounts"}))[0],o=await P(i,d,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 h=(await s.request({method:"eth_accounts"}))[0];await D({chainId:e,account:h,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 i=(await e.request({method:"eth_accounts"}))[0];if(!i)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const h=t.parseChainIdentifier(this.params.sourceChain),u=this.params.assetOut===p.AssetId.BTCb;this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.PENDING,releasing:t.StepStatus.IDLE}});const d=await v.redeemToken({provider:e,account:u?this._recipient:i,amount:this._amount,btcAddress:u?void 0:this._recipient,chainId:h,env:this.ctx.env,tokenIn:m.Token.LBTC,tokenOut:u?m.Token.BTCb:void 0});return this._txHash=d,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:u?t.StepStatus.COMPLETE:t.StepStatus.PENDING}}),this.emitCompleted(),{txHash:d}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){const e=this.params.assetOut===p.AssetId.BTC?nt:ot;return t.objectType({amount:t.evmAmountSchema,recipient:e.recipientSchema})}}function ut(r,a){return new ct(r,a)}const x={routes:[{sourceChains:[t.Chain.ETHEREUM,t.Chain.BASE,t.Chain.BSC,t.Chain.CORN],protocols:[p.DefiProtocol.Veda],envs:[n.r.prod]}]};class ht extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);c(this,"_txHash");c(this,"_account");c(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 i=(await e.request({method:"eth_accounts"}))[0];if(!i)throw t.LombardError.providerMissing(this.params.chain,"evm");if(this._account=i,this._chainId=t.parseChainIdentifier(this.params.chain),!l.isVedaVaultChain(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 T.cancelWithdraw({vaultKey:l.Vault.Veda,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(!x.routes.some(i=>i.protocols.includes(e)&&i.envs.includes(this.ctx.env)))throw t.LombardError.invalidParameter("protocol",`Protocol ${e} is not supported for withdrawals in ${this.ctx.env} environment`)}}class pt extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);c(this,"_amount");c(this,"_protocol");c(this,"_needsApproval",!1);c(this,"_txHash");c(this,"_account");c(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 i=await this.ctx.getProvider("evm");if(!i)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const u=(await i.request({method:"eth_accounts"}))[0];if(!u)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");if(this._account=u,this._chainId=t.parseChainIdentifier(this.params.sourceChain),!l.isVedaVaultChain(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 d=l.VAULTS[l.Vault.Veda],o=S.makePublicClient({chainId:this._chainId}),A=await o.readContract({address:d.lensContract.address,abi:d.lensContract.abi,functionName:"balanceOf",args:[u,d.vaultContract.address]}),E=S.fromBaseDenomination(String(A),d.decimals),g=new I(s.amount);if(g.isGreaterThan(E))throw new t.LombardError(t.WithdrawErrorCode.INSUFFICIENT_SHARES,`Insufficient vault shares. Requested: ${g.toFixed()}, Available: ${E.toFixed()}`,{requested:g.toFixed(),available:E.toFixed()});const _=await o.readContract({address:d.vaultContract.address,abi:d.vaultContract.abi,functionName:"allowance",args:[u,d.withdrawQueueContracts[this._chainId].address]}),f=S.fromBaseDenomination(String(_),d.decimals);this._needsApproval=g.isGreaterThan(f),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=l.VAULTS[l.Vault.Veda],i=new I(this._amount),h=L.toBigInt(S.toBaseDenomination(i,s.decimals)),u=S.makePublicClient({chainId:this._chainId}),d=m.makeWalletClient({provider:e,chainId:this._chainId}),o=this._chainId,{request:A}=await u.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,h]}),E=await d.writeContract(A);await v.waitForTransactionReceipt(u,E,"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}});const s=await T.queueWithdraw({amount:this._amount,approve:!1,vaultKey:l.Vault.Veda,account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env});return 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(!x.routes.some(i=>i.protocols.includes(e)&&i.envs.includes(this.ctx.env)))throw t.LombardError.invalidParameter("protocol",`Protocol ${e} is not supported for withdrawals in ${this.ctx.env} environment`)}}function dt(r,a){return new pt(r,a)}function mt(r,a){return new ht(r,a)}class b{constructor(a){c(this,"ctx");this.ctx=t.createEvmCoreContext(a)}stake(a){return et(this.ctx,a)}unstake(a){return ut(this.ctx,a)}deposit(a){return W(this.ctx,a)}deploy(a){return V(this.ctx,a)}withdraw(a){return dt(this.ctx,a)}cancelWithdraw(a){return mt(this.ctx,a)}redeem(a){return Q(this.ctx,a)}}function vt(r){return new b(r)}exports.EvmActions=b;exports.EvmDepositStatus=C;exports.evmActions=vt;exports.evmModule=y;
|
|
2
|
-
//# sourceMappingURL=EvmActions-
|
|
1
|
+
"use strict";var N=Object.defineProperty;var B=(r,a,e)=>a in r?N(r,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[a]=e;var c=(r,a,e)=>B(r,typeof a!="symbol"?a+"":a,e);const I=require("bignumber.js"),v=require("./unstakeLBTC-CmoCaGX9.cjs"),m=require("./token-addresses-nzvTOi24.cjs"),S=require("./tokens-BkvA0Gp1.cjs"),t=require("./statusConstants-DlM2oPfW.cjs"),w=require("./storeNetworkFeeSignature-Buk4091C.cjs"),R=require("./fee-requirements-CICSxYYL.cjs"),p=require("./defi-registry-DDNavtO1.cjs"),n=require("./index-BKzxeh1Y.cjs"),L=require("./numbers-3LtmxfD8.cjs"),l=require("./config-DmCmanM_.cjs"),T=require("./withdraw-i0AueZ_C.cjs");class k{constructor(a){this.env=a}async getMintingFee(a,e){return(await v.getMintingFee({token:e||m.Token.LBTC,chainId:a,env:this.env})).toString()}async signNetworkFee(a){const e=await v.signNetworkFee({fee:new I(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 v.getStakeAndBakeFee({chainId:a,protocol:e})).toString()}async signStakeAndBake(a){const e=await v.signStakeAndBake({value:new I(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 v.signLbtcDestinationAddr({account:a.address,chainId:a.chainId,provider:a.provider})}}}function y(){return{id:"evm",chain:"evm",register(r){return new k(r.env)}}}const M={routes:[{asset:p.AssetId.LBTC,sourceChains:[t.Chain.ETHEREUM],protocols:[p.DefiProtocol.Veda],envs:[n.r.prod]},{asset:p.AssetId.LBTC,sourceChains:[t.Chain.BASE],protocols:[p.DefiProtocol.Veda],envs:[n.r.prod]},{asset:p.AssetId.LBTC,sourceChains:[t.Chain.BSC],protocols:[p.DefiProtocol.Veda],envs:[n.r.prod]},{asset:p.AssetId.LBTC,sourceChains:[t.Chain.CORN],protocols:[p.DefiProtocol.Veda],envs:[n.r.prod]},{asset:p.AssetId.LBTC,sourceChains:[t.Chain.AVALANCHE],protocols:[p.DefiProtocol.Silo],envs:[n.r.prod]}]};class H extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);c(this,"_amount");c(this,"_protocol");c(this,"_needsApproval",!1);c(this,"_txHash");c(this,"_account");c(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=e.protocol,this.validateProtocol(e.protocol);const i=await this.ctx.getProvider("evm");if(!i)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const u=(await i.request({method:"eth_accounts"}))[0];if(!u)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this._account=u,this._chainId=t.parseChainIdentifier(this.params.sourceChain);const d=l.VAULTS[l.Vault.Veda],o=await S.getTokenInfo(m.Token.LBTC,this._chainId,this.ctx.env);if(!o)throw t.LombardError.invalidParameter("token","Could not get LBTC token info");const E=await S.makePublicClient({chainId:this._chainId}).readContract({address:o.address,abi:o.abi,functionName:"allowance",args:[u,d.vaultContract.address]}),g=new I(s.amount),_=S.toBaseDenomination(g,o.decimals),f=new I(String(E));this._needsApproval=_.isGreaterThan(f),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=l.VAULTS[l.Vault.Veda],i=await S.getTokenInfo(m.Token.LBTC,this._chainId,this.ctx.env);if(!i)throw t.LombardError.invalidParameter("token","Could not get LBTC token info");const h=new I(this._amount),u=L.toBigInt(S.toBaseDenomination(h,i.decimals)),d=S.makePublicClient({chainId:this._chainId}),o=m.makeWalletClient({provider:e,chainId:this._chainId}),{request:A}=await d.simulateContract({account:this._account,chain:m.CHAIN_ID_TO_VIEM_CHAIN_MAP[this._chainId],address:i.address,abi:i.abi,functionName:"approve",args:[s.vaultContract.address,u]}),E=await o.writeContract(A);await v.waitForTransactionReceipt(d,E,"LBTC vault 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");const s=(this._protocol==="veda",l.Vault.Veda);this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,deploying:t.StepStatus.PENDING}});const i=await T.deposit({amount:this._amount,approve:!1,token:m.Token.LBTC,vaultKey:s,account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env});return this._txHash=i,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,deploying:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:i}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,protocol:t.stringType().min(1,"Protocol is required")})}validateProtocol(e){if(!M.routes.some(i=>i.protocols.includes(e)&&i.envs.includes(this.ctx.env)))throw t.LombardError.invalidParameter("protocol",`Protocol ${e} is not supported in ${this.ctx.env} environment`)}}function V(r,a){return new H(r,a)}const F=t.getEvmAssetChains(p.AssetId.BTCb,[n.r.prod]),q=t.getEvmAssetChains(p.AssetId.BTCb,[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),Y=t.getEvmAssetChains(p.AssetId.LBTC,[n.r.prod]),G=t.getEvmAssetChains(p.AssetId.LBTC,[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),U={routes:[{assetsIn:[p.AssetId.BTCb],assetOut:p.AssetId.LBTC,sourceChains:F,destChains:Y,envs:[n.r.prod]},{assetsIn:[p.AssetId.BTCb],assetOut:p.AssetId.LBTC,sourceChains:q,destChains:G,envs:[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]}],addressSchema:t.evmAddressSchema};var C=(r=>(r.IDLE="idle",r.NEEDS_APPROVAL="needs-approval",r.READY="ready",r.BRIDGING="bridging",r.COMPLETED="completed",r))(C||{});class z extends t.BaseAction{constructor(e,s){super(C.IDLE);c(this,"_amount");c(this,"_recipient");c(this,"_needsApproval",!1);c(this,"_txHash");c(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(C.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:C.READY,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.IDLE,bridging:t.StepStatus.IDLE}})},C.READY)}async approve(){return this.assertStatus(C.NEEDS_APPROVAL,"approve"),this.act(async()=>{this._needsApproval=!1},C.READY)}async execute(){if(this.assertStatus(C.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:C.READY,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.PENDING,bridging:t.StepStatus.IDLE}});const i=await v.claimLBTC({provider:e,account:this._recipient,data:this._claimData.data,proofSignature:this._claimData.proofSignature,chainId:s,env:this.ctx.env});return this._txHash=i,this.emitProgress({status:C.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.COMPLETE,bridging:t.StepStatus.IDLE}}),this.emitCompleted(),{txHash:i}},C.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,recipient:U.addressSchema})}}function W(r,a){return new z(r,a)}const $=t.getEvmAssetChains(p.AssetId.BTCb,[n.r.prod]),Z=t.getEvmAssetChains(p.AssetId.BTCb,[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),j={routes:[{assetIn:p.AssetId.BTCb,assetOut:p.AssetId.BTC,sourceChains:$,destChain:t.Chain.BITCOIN_MAINNET,envs:[n.r.prod]},{assetIn:p.AssetId.BTCb,assetOut:p.AssetId.BTC,sourceChains:Z,destChain:t.Chain.BITCOIN_SIGNET,envs:[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]}],recipientSchema:t.bitcoinAddressSchema};async function P(r,a,e,s){if(!R.requiresAutoMintFee(r))return{requiresAuth:!1,hasValidSignature:!1,feeInSatoshis:null,feeFormatted:null,expirationDate:null};const i=await S.getTokenContractInfo(s,r,e),h=await w.getNetworkFeeSignature({address:a,chainId:r,env:e,tokenAddress:i.address}),u=h.expirationDate?new Date(Number(h.expirationDate)*1e3)<new Date:!1,d=h.hasSignature&&!u;let o=null,A=null;if(!d){const E=await v.getMintingFee({token:s,chainId:r,env:e});o=BigInt(E.times(1e8).toFixed(0)),A=E.toFixed(8)}return{requiresAuth:!0,hasValidSignature:d,feeInSatoshis:o,feeFormatted:A,expirationDate:h.expirationDate??null}}async function D(r){const{chainId:a,account:e,feeInSatoshis:s,provider:i,env:h,token:u}=r,d=await S.getTokenContractInfo(u,a,h),o=await v.signNetworkFee({fee:s,account:e,chainId:a,provider:i,env:h,token:u});return await w.storeNetworkFeeSignature({signature:o.signature,typedData:o.typedData,address:e,env:h,tokenAddress:d.address}),o}function O(){return{requiresAuth:!1,isAuthorized:!1,feeInSatoshis:null,feeFormatted:null,expirationDate:null}}class K extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);c(this,"_amount");c(this,"_recipient");c(this,"_needsApproval",!1);c(this,"_txHash");c(this,"_feeAuth",O());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 i=t.parseChainIdentifier(this.params.sourceChain),h=await this.ctx.getProvider("evm");if(!h)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const d=(await h.request({method:"eth_accounts"}))[0],o=await P(i,d,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 h=(await s.request({method:"eth_accounts"}))[0];await D({chainId:e,account:h,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 i=(await e.request({method:"eth_accounts"}))[0];if(!i)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const h=t.parseChainIdentifier(this.params.sourceChain);this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.PENDING,releasing:t.StepStatus.IDLE}});const u=await v.redeemToken({provider:e,account:i,amount:this._amount,btcAddress:this._recipient,chainId:h,env:this.ctx.env,tokenIn:m.Token.BTCb,tokenOut:void 0});return this._txHash=u,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:t.StepStatus.PENDING}}),this.emitCompleted(),{txHash:u}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,recipient:j.recipientSchema})}}function Q(r,a){return new K(r,a)}const J=[m.ChainId.avalanche,m.ChainId.avalancheFuji];function X(r){return J.includes(r)}class tt extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);c(this,"_amount");c(this,"_txHash");c(this,"_feeAuth",O());c(this,"_account");c(this,"_needsApproval",!1);c(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 i=await this.ctx.getProvider("evm");if(!i)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const u=(await i.request({method:"eth_accounts"}))[0];if(!u)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this._account=u;const d=t.parseChainIdentifier(this.params.sourceChain);if(X(d)){const E=await S.getTokenContractInfo(m.Token.BTCb,d,this.ctx.env,m.AddressKind.Adapter);this._spenderAddress=E.address;const g=await v.getTokenAllowance({token:m.Token.BTCb,owner:u,spender:E.address,chainId:d,env:this.ctx.env}),_=new I(s.amount);if(this._needsApproval=g.isLessThan(_),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 P(d,u,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),i=await v.approveToken({account:this._account,token:m.Token.BTCb,spender:this._spenderAddress,amount:this._amount,chainId:s,provider:e,env:this.ctx.env}),h=S.makePublicClient({chainId:s,env:this.ctx.env});await v.waitForTransactionReceipt(h,i,"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 D({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),h=(await e.request({method:"eth_accounts"}))[0];if(!h)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this.emitProgress({status:t.EvmOperationStatus.READY,steps:{staking:t.StepStatus.PENDING}});const u=await v.depositToken({amount:this._amount,tokenIn:m.Token.BTCb,tokenOut:m.Token.LBTC,account:h,chainId:s,provider:e,env:this.ctx.env});return this._txHash=u,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{staking:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:u}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema})}}function et(r,a){return new tt(r,a)}const st=t.getEvmAssetChains(p.AssetId.LBTC,[n.r.prod]),at=t.getEvmAssetChains(p.AssetId.LBTC,[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),rt=t.getEvmChainsWithAllAssets([p.AssetId.LBTC,p.AssetId.BTCb],[n.r.prod]),it=t.getEvmChainsWithAllAssets([p.AssetId.LBTC,p.AssetId.BTCb],[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),nt={routes:[{sourceChains:st,destChain:t.Chain.BITCOIN_MAINNET,envs:[n.r.prod]},{sourceChains:at,destChain:t.Chain.BITCOIN_SIGNET,envs:[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]}],recipientSchema:t.bitcoinAddressSchema},ot={routes:[...rt.map(r=>({sourceChains:[r],destChain:r,envs:[n.r.prod]})),...it.map(r=>({sourceChains:[r],destChain:r,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);c(this,"_amount");c(this,"_recipient");c(this,"_txHash");c(this,"_feeAuth",O());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===p.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 i=t.parseChainIdentifier(this.params.sourceChain);if(this.isBtcbOutput){const h=await this.ctx.getProvider("evm");if(!h)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const d=(await h.request({method:"eth_accounts"}))[0],o=await P(i,d,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 h=(await s.request({method:"eth_accounts"}))[0];await D({chainId:e,account:h,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 i=(await e.request({method:"eth_accounts"}))[0];if(!i)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const h=t.parseChainIdentifier(this.params.sourceChain),u=this.params.assetOut===p.AssetId.BTCb;this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.PENDING,releasing:t.StepStatus.IDLE}});const d=await v.redeemToken({provider:e,account:u?this._recipient:i,amount:this._amount,btcAddress:u?void 0:this._recipient,chainId:h,env:this.ctx.env,tokenIn:m.Token.LBTC,tokenOut:u?m.Token.BTCb:void 0});return this._txHash=d,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:u?t.StepStatus.COMPLETE:t.StepStatus.PENDING}}),this.emitCompleted(),{txHash:d}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){const e=this.params.assetOut===p.AssetId.BTC?nt:ot;return t.objectType({amount:t.evmAmountSchema,recipient:e.recipientSchema})}}function ut(r,a){return new ct(r,a)}const x={routes:[{sourceChains:[t.Chain.ETHEREUM,t.Chain.BASE,t.Chain.BSC,t.Chain.CORN],protocols:[p.DefiProtocol.Veda],envs:[n.r.prod]}]};class ht extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);c(this,"_txHash");c(this,"_account");c(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 i=(await e.request({method:"eth_accounts"}))[0];if(!i)throw t.LombardError.providerMissing(this.params.chain,"evm");if(this._account=i,this._chainId=t.parseChainIdentifier(this.params.chain),!l.isVedaVaultChain(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 T.cancelWithdraw({vaultKey:l.Vault.Veda,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(!x.routes.some(i=>i.protocols.includes(e)&&i.envs.includes(this.ctx.env)))throw t.LombardError.invalidParameter("protocol",`Protocol ${e} is not supported for withdrawals in ${this.ctx.env} environment`)}}class pt extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);c(this,"_amount");c(this,"_protocol");c(this,"_needsApproval",!1);c(this,"_txHash");c(this,"_account");c(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 i=await this.ctx.getProvider("evm");if(!i)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const u=(await i.request({method:"eth_accounts"}))[0];if(!u)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");if(this._account=u,this._chainId=t.parseChainIdentifier(this.params.sourceChain),!l.isVedaVaultChain(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 d=l.VAULTS[l.Vault.Veda],o=S.makePublicClient({chainId:this._chainId}),A=await o.readContract({address:d.lensContract.address,abi:d.lensContract.abi,functionName:"balanceOf",args:[u,d.vaultContract.address]}),E=S.fromBaseDenomination(String(A),d.decimals),g=new I(s.amount);if(g.isGreaterThan(E))throw new t.LombardError(t.WithdrawErrorCode.INSUFFICIENT_SHARES,`Insufficient vault shares. Requested: ${g.toFixed()}, Available: ${E.toFixed()}`,{requested:g.toFixed(),available:E.toFixed()});const _=await o.readContract({address:d.vaultContract.address,abi:d.vaultContract.abi,functionName:"allowance",args:[u,d.withdrawQueueContracts[this._chainId].address]}),f=S.fromBaseDenomination(String(_),d.decimals);this._needsApproval=g.isGreaterThan(f),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=l.VAULTS[l.Vault.Veda],i=new I(this._amount),h=L.toBigInt(S.toBaseDenomination(i,s.decimals)),u=S.makePublicClient({chainId:this._chainId}),d=m.makeWalletClient({provider:e,chainId:this._chainId}),o=this._chainId,{request:A}=await u.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,h]}),E=await d.writeContract(A);await v.waitForTransactionReceipt(u,E,"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}});const s=await T.queueWithdraw({amount:this._amount,approve:!1,vaultKey:l.Vault.Veda,account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env});return 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(!x.routes.some(i=>i.protocols.includes(e)&&i.envs.includes(this.ctx.env)))throw t.LombardError.invalidParameter("protocol",`Protocol ${e} is not supported for withdrawals in ${this.ctx.env} environment`)}}function dt(r,a){return new pt(r,a)}function mt(r,a){return new ht(r,a)}class b{constructor(a){c(this,"ctx");this.ctx=t.createEvmCoreContext(a)}stake(a){return et(this.ctx,a)}unstake(a){return ut(this.ctx,a)}deposit(a){return W(this.ctx,a)}deploy(a){return V(this.ctx,a)}withdraw(a){return dt(this.ctx,a)}cancelWithdraw(a){return mt(this.ctx,a)}redeem(a){return Q(this.ctx,a)}}function vt(r){return new b(r)}exports.EvmActions=b;exports.EvmDepositStatus=C;exports.evmActions=vt;exports.evmModule=y;
|
|
2
|
+
//# sourceMappingURL=EvmActions-BY_18gTg.cjs.map
|