@lombard.finance/sdk 4.3.1 → 4.3.2
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 +27 -0
- package/dist/btc.cjs +1 -1
- package/dist/btc.js +2 -2
- package/dist/chains/btc/actions/deposit/BtcDeposit.d.ts +3 -2
- package/dist/chains/btc/actions/deposit/BtcDeposit.d.ts.map +1 -1
- package/dist/chains/btc/actions/deposit/types.d.ts +1 -1
- package/dist/chains/btc/actions/deposit/types.d.ts.map +1 -1
- package/dist/chains/btc/actions/depositAndDeploy/BtcDepositAndDeploy.d.ts +3 -2
- package/dist/chains/btc/actions/depositAndDeploy/BtcDepositAndDeploy.d.ts.map +1 -1
- package/dist/chains/btc/actions/depositAndDeploy/types.d.ts +1 -1
- package/dist/chains/btc/actions/depositAndDeploy/types.d.ts.map +1 -1
- package/dist/chains/btc/actions/shared/BaseBtcAction.d.ts +3 -2
- package/dist/chains/btc/actions/shared/BaseBtcAction.d.ts.map +1 -1
- package/dist/chains/btc/actions/stake/BtcStake.d.ts +3 -2
- package/dist/chains/btc/actions/stake/BtcStake.d.ts.map +1 -1
- package/dist/chains/btc/actions/stake/types.d.ts +1 -1
- package/dist/chains/btc/actions/stake/types.d.ts.map +1 -1
- package/dist/chains/btc/actions/stakeAndDeploy/BtcStakeAndDeploy.d.ts +3 -2
- package/dist/chains/btc/actions/stakeAndDeploy/BtcStakeAndDeploy.d.ts.map +1 -1
- package/dist/chains/btc/actions/stakeAndDeploy/types.d.ts +1 -1
- package/dist/chains/btc/actions/stakeAndDeploy/types.d.ts.map +1 -1
- package/dist/chunks/BtcActions-XbVRQEcM.cjs +2 -0
- package/dist/chunks/BtcActions-XbVRQEcM.cjs.map +1 -0
- package/dist/chunks/{BtcActions-1_ZaUpvL.js → BtcActions-k-qs1uO0.js} +83 -79
- package/dist/chunks/BtcActions-k-qs1uO0.js.map +1 -0
- package/dist/chunks/{EvmActions-CjExg-28.cjs → EvmActions-BVzQ3fLK.cjs} +2 -2
- package/dist/chunks/{EvmActions-CjExg-28.cjs.map → EvmActions-BVzQ3fLK.cjs.map} +1 -1
- package/dist/chunks/{EvmActions-fH7CLc6N.js → EvmActions-B_dF42So.js} +2 -2
- package/dist/chunks/{EvmActions-fH7CLc6N.js.map → EvmActions-B_dF42So.js.map} +1 -1
- package/dist/chunks/{events-bwurClEA.js → events-DdV_xi-2.js} +6 -5
- package/dist/chunks/events-DdV_xi-2.js.map +1 -0
- package/dist/chunks/events-DqIJRzJo.cjs +2 -0
- package/dist/chunks/events-DqIJRzJo.cjs.map +1 -0
- package/dist/chunks/{statusConstants-JFhg-q-u.cjs → statusConstants-BLiNBT6s.cjs} +2 -2
- package/dist/chunks/{statusConstants-JFhg-q-u.cjs.map → statusConstants-BLiNBT6s.cjs.map} +1 -1
- package/dist/chunks/{statusConstants-CZi3v4OC.js → statusConstants-DFxMrVob.js} +2 -2
- package/dist/chunks/{statusConstants-CZi3v4OC.js.map → statusConstants-DFxMrVob.js.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 +4 -4
- package/dist/services/ApiService.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/chunks/BtcActions-1_ZaUpvL.js.map +0 -1
- package/dist/chunks/BtcActions-DH_wPOz5.cjs +0 -2
- package/dist/chunks/BtcActions-DH_wPOz5.cjs.map +0 -1
- package/dist/chunks/events-DURabzL2.cjs +0 -2
- package/dist/chunks/events-DURabzL2.cjs.map +0 -1
- package/dist/chunks/events-bwurClEA.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var N=Object.defineProperty;var B=(i,a,e)=>a in i?N(i,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[a]=e;var u=(i,a,e)=>B(i,typeof a!="symbol"?a+"":a,e);const I=require("bignumber.js"),v=require("./unstakeLBTC-H0zdYQa6.cjs"),m=require("./token-addresses-DRBecUa7.cjs"),S=require("./tokens-D_HeVB5p.cjs"),t=require("./statusConstants-JFhg-q-u.cjs"),O=require("./storeNetworkFeeSignature-D7yo6lDV.cjs"),R=require("./fee-requirements-CICSxYYL.cjs"),c=require("./defi-registry-BIRv_zkp.cjs"),r=require("./index-BKzxeh1Y.cjs"),L=require("./numbers-3LtmxfD8.cjs"),l=require("./config-l4ZaZw_g.cjs"),T=require("./withdraw-C1fMFSwy.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(i){return new k(i.env)}}}const M={routes:[{asset:c.AssetId.LBTC,sourceChains:[t.Chain.ETHEREUM],protocols:[c.DefiProtocol.Veda],envs:[r.r.prod]},{asset:c.AssetId.LBTC,sourceChains:[t.Chain.BASE],protocols:[c.DefiProtocol.Veda],envs:[r.r.prod]},{asset:c.AssetId.LBTC,sourceChains:[t.Chain.BSC],protocols:[c.DefiProtocol.Veda],envs:[r.r.prod]},{asset:c.AssetId.LBTC,sourceChains:[t.Chain.CORN],protocols:[c.DefiProtocol.Veda],envs:[r.r.prod]},{asset:c.AssetId.LBTC,sourceChains:[t.Chain.AVALANCHE],protocols:[c.DefiProtocol.Silo],envs:[r.r.prod]}]};class H extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);u(this,"_amount");u(this,"_protocol");u(this,"_needsApproval",!1);u(this,"_txHash");u(this,"_account");u(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 n=await this.ctx.getProvider("evm");if(!n)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const h=(await n.request({method:"eth_accounts"}))[0];if(!h)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this._account=h,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:[h,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],n=await S.getTokenInfo(m.Token.LBTC,this._chainId,this.ctx.env);if(!n)throw t.LombardError.invalidParameter("token","Could not get LBTC token info");const p=new I(this._amount),h=L.toBigInt(S.toBaseDenomination(p,n.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:n.address,abi:n.abi,functionName:"approve",args:[s.vaultContract.address,h]}),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 n=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=n,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,deploying:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:n}},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(n=>n.protocols.includes(e)&&n.envs.includes(this.ctx.env)))throw t.LombardError.invalidParameter("protocol",`Protocol ${e} is not supported in ${this.ctx.env} environment`)}}function V(i,a){return new H(i,a)}const F=[...new Set([...t.getEvmAssetChains(c.AssetId.WBTC,[r.r.prod]),...t.getEvmAssetChains(c.AssetId.BTCb,[r.r.prod])])],q=[...new Set([...t.getEvmAssetChains(c.AssetId.WBTC,[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]),...t.getEvmAssetChains(c.AssetId.BTCb,[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc])])],Y=t.getEvmAssetChains(c.AssetId.LBTC,[r.r.prod]),G=t.getEvmAssetChains(c.AssetId.LBTC,[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]),U={routes:[{assetsIn:[c.AssetId.WBTC,c.AssetId.BTCb],assetOut:c.AssetId.LBTC,sourceChains:F,destChains:Y,envs:[r.r.prod]},{assetsIn:[c.AssetId.WBTC,c.AssetId.BTCb],assetOut:c.AssetId.LBTC,sourceChains:q,destChains:G,envs:[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]}],addressSchema:t.evmAddressSchema};var C=(i=>(i.IDLE="idle",i.NEEDS_APPROVAL="needs-approval",i.READY="ready",i.BRIDGING="bridging",i.COMPLETED="completed",i))(C||{});class W extends t.BaseAction{constructor(e,s){super(C.IDLE);u(this,"_amount");u(this,"_recipient");u(this,"_needsApproval",!1);u(this,"_txHash");u(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 n=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=n,this.emitProgress({status:C.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.COMPLETE,bridging:t.StepStatus.IDLE}}),this.emitCompleted(),{txHash:n}},C.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,recipient:U.addressSchema})}}function z(i,a){return new W(i,a)}const $=t.getEvmAssetChains(c.AssetId.BTCb,[r.r.prod]),Z=t.getEvmAssetChains(c.AssetId.BTCb,[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]),j={routes:[{assetIn:c.AssetId.BTCb,assetOut:c.AssetId.BTC,sourceChains:$,destChain:t.Chain.BITCOIN_MAINNET,envs:[r.r.prod]},{assetIn:c.AssetId.BTCb,assetOut:c.AssetId.BTC,sourceChains:Z,destChain:t.Chain.BITCOIN_SIGNET,envs:[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]}],recipientSchema:t.bitcoinAddressSchema};async function P(i,a,e,s){if(!R.requiresAutoMintFee(i))return{requiresAuth:!1,hasValidSignature:!1,feeInSatoshis:null,feeFormatted:null,expirationDate:null};const n=await S.getTokenContractInfo(s,i,e),p=await O.getNetworkFeeSignature({address:a,chainId:i,env:e,tokenAddress:n.address}),h=p.expirationDate?new Date(Number(p.expirationDate)*1e3)<new Date:!1,d=p.hasSignature&&!h;let o=null,A=null;if(!d){const E=await v.getMintingFee({token:s,chainId:i,env:e});o=BigInt(E.times(1e8).toFixed(0)),A=E.toFixed(8)}return{requiresAuth:!0,hasValidSignature:d,feeInSatoshis:o,feeFormatted:A,expirationDate:p.expirationDate??null}}async function D(i){const{chainId:a,account:e,feeInSatoshis:s,provider:n,env:p,token:h}=i,d=await S.getTokenContractInfo(h,a,p),o=await v.signNetworkFee({fee:s,account:e,chainId:a,provider:n,env:p,token:h});return await O.storeNetworkFeeSignature({signature:o.signature,typedData:o.typedData,address:e,env:p,tokenAddress:d.address}),o}function w(){return{requiresAuth:!1,isAuthorized:!1,feeInSatoshis:null,feeFormatted:null,expirationDate:null}}class K extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);u(this,"_amount");u(this,"_recipient");u(this,"_needsApproval",!1);u(this,"_txHash");u(this,"_feeAuth",w());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 n=t.parseChainIdentifier(this.params.sourceChain),p=await this.ctx.getProvider("evm");if(!p)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const d=(await p.request({method:"eth_accounts"}))[0],o=await P(n,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.emitProgress({status:t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}});return}this._needsApproval=!1,this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})},this._feeAuth.requiresAuth&&!this._feeAuth.isAuthorized?t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION:t.EvmOperationStatus.READY)}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 p=(await s.request({method:"eth_accounts"}))[0];await D({chainId:e,account:p,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 n=(await e.request({method:"eth_accounts"}))[0];if(!n)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const p=t.parseChainIdentifier(this.params.sourceChain);this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.PENDING,releasing:t.StepStatus.IDLE}});const h=await v.redeemToken({provider:e,account:n,amount:this._amount,btcAddress:this._recipient,chainId:p,env:this.ctx.env,tokenIn:m.Token.BTCb,tokenOut:void 0});return this._txHash=h,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:t.StepStatus.PENDING}}),this.emitCompleted(),{txHash:h}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,recipient:j.recipientSchema})}}function Q(i,a){return new K(i,a)}const J=[m.ChainId.avalanche,m.ChainId.avalancheFuji];function X(i){return J.includes(i)}class tt extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);u(this,"_amount");u(this,"_txHash");u(this,"_feeAuth",w());u(this,"_account");u(this,"_needsApproval",!1);u(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 n=await this.ctx.getProvider("evm");if(!n)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const h=(await n.request({method:"eth_accounts"}))[0];if(!h)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this._account=h;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:h,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,h,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),n=await v.approveToken({account:this._account,token:m.Token.BTCb,spender:this._spenderAddress,amount:this._amount,chainId:s,provider:e,env:this.ctx.env}),p=S.makePublicClient({chainId:s,env:this.ctx.env});await v.waitForTransactionReceipt(p,n,"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),p=(await e.request({method:"eth_accounts"}))[0];if(!p)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this.emitProgress({status:t.EvmOperationStatus.READY,steps:{staking:t.StepStatus.PENDING}});const h=await v.depositToken({amount:this._amount,tokenIn:m.Token.BTCb,tokenOut:m.Token.LBTC,account:p,chainId:s,provider:e,env:this.ctx.env});return this._txHash=h,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{staking:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:h}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema})}}function et(i,a){return new tt(i,a)}const st=t.getEvmAssetChains(c.AssetId.LBTC,[r.r.prod]),at=t.getEvmAssetChains(c.AssetId.LBTC,[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]),rt=t.getEvmChainsWithAllAssets([c.AssetId.LBTC,c.AssetId.BTCb],[r.r.prod]),it=t.getEvmChainsWithAllAssets([c.AssetId.LBTC,c.AssetId.BTCb],[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]),nt={routes:[{sourceChains:st,destChain:t.Chain.BITCOIN_MAINNET,envs:[r.r.prod]},{sourceChains:at,destChain:t.Chain.BITCOIN_SIGNET,envs:[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]}],recipientSchema:t.bitcoinAddressSchema},ot={routes:[...rt.map(i=>({sourceChains:[i],destChain:i,envs:[r.r.prod]})),...it.map(i=>({sourceChains:[i],destChain:i,envs:[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]}))],recipientSchema:t.evmAddressSchema};class ct extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);u(this,"_amount");u(this,"_recipient");u(this,"_txHash");u(this,"_feeAuth",w());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===c.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 n=t.parseChainIdentifier(this.params.sourceChain);if(this.isBtcbOutput){const p=await this.ctx.getProvider("evm");if(!p)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const d=(await p.request({method:"eth_accounts"}))[0],o=await P(n,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.emitProgress({status:t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}});return}}this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})},this._feeAuth.requiresAuth&&!this._feeAuth.isAuthorized?t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION:t.EvmOperationStatus.READY)}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 p=(await s.request({method:"eth_accounts"}))[0];await D({chainId:e,account:p,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 n=(await e.request({method:"eth_accounts"}))[0];if(!n)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const p=t.parseChainIdentifier(this.params.sourceChain),h=this.params.assetOut===c.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:h?this._recipient:n,amount:this._amount,btcAddress:h?void 0:this._recipient,chainId:p,env:this.ctx.env,tokenIn:m.Token.LBTC,tokenOut:h?m.Token.BTCb:void 0});return this._txHash=d,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:h?t.StepStatus.COMPLETE:t.StepStatus.PENDING}}),this.emitCompleted(),{txHash:d}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){const e=this.params.assetOut===c.AssetId.BTC?nt:ot;return t.objectType({amount:t.evmAmountSchema,recipient:e.recipientSchema})}}function ut(i,a){return new ct(i,a)}const x={routes:[{sourceChains:[t.Chain.ETHEREUM,t.Chain.BASE,t.Chain.BSC,t.Chain.CORN],protocols:[c.DefiProtocol.Veda],envs:[r.r.prod]}]};class ht extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);u(this,"_txHash");u(this,"_account");u(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 n=(await e.request({method:"eth_accounts"}))[0];if(!n)throw t.LombardError.providerMissing(this.params.chain,"evm");if(this._account=n,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(n=>n.protocols.includes(e)&&n.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);u(this,"_amount");u(this,"_protocol");u(this,"_needsApproval",!1);u(this,"_txHash");u(this,"_account");u(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 n=await this.ctx.getProvider("evm");if(!n)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const h=(await n.request({method:"eth_accounts"}))[0];if(!h)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");if(this._account=h,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:[h,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:[h,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],n=new I(this._amount),p=L.toBigInt(S.toBaseDenomination(n,s.decimals)),h=S.makePublicClient({chainId:this._chainId}),d=m.makeWalletClient({provider:e,chainId:this._chainId}),o=this._chainId,{request:A}=await h.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,p]}),E=await d.writeContract(A);await v.waitForTransactionReceipt(h,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(n=>n.protocols.includes(e)&&n.envs.includes(this.ctx.env)))throw t.LombardError.invalidParameter("protocol",`Protocol ${e} is not supported for withdrawals in ${this.ctx.env} environment`)}}function dt(i,a){return new pt(i,a)}function mt(i,a){return new ht(i,a)}class b{constructor(a){u(this,"ctx");this.ctx=t.createEvmCoreContext(a)}stake(a){return et(this.ctx,a)}unstake(a){return ut(this.ctx,a)}deposit(a){return z(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(i){return new b(i)}exports.EvmActions=b;exports.EvmDepositStatus=C;exports.evmActions=vt;exports.evmModule=y;
|
|
2
|
-
//# sourceMappingURL=EvmActions-
|
|
1
|
+
"use strict";var N=Object.defineProperty;var B=(i,a,e)=>a in i?N(i,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[a]=e;var u=(i,a,e)=>B(i,typeof a!="symbol"?a+"":a,e);const I=require("bignumber.js"),v=require("./unstakeLBTC-H0zdYQa6.cjs"),m=require("./token-addresses-DRBecUa7.cjs"),S=require("./tokens-D_HeVB5p.cjs"),t=require("./statusConstants-BLiNBT6s.cjs"),O=require("./storeNetworkFeeSignature-D7yo6lDV.cjs"),R=require("./fee-requirements-CICSxYYL.cjs"),c=require("./defi-registry-BIRv_zkp.cjs"),r=require("./index-BKzxeh1Y.cjs"),L=require("./numbers-3LtmxfD8.cjs"),l=require("./config-l4ZaZw_g.cjs"),T=require("./withdraw-C1fMFSwy.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(i){return new k(i.env)}}}const M={routes:[{asset:c.AssetId.LBTC,sourceChains:[t.Chain.ETHEREUM],protocols:[c.DefiProtocol.Veda],envs:[r.r.prod]},{asset:c.AssetId.LBTC,sourceChains:[t.Chain.BASE],protocols:[c.DefiProtocol.Veda],envs:[r.r.prod]},{asset:c.AssetId.LBTC,sourceChains:[t.Chain.BSC],protocols:[c.DefiProtocol.Veda],envs:[r.r.prod]},{asset:c.AssetId.LBTC,sourceChains:[t.Chain.CORN],protocols:[c.DefiProtocol.Veda],envs:[r.r.prod]},{asset:c.AssetId.LBTC,sourceChains:[t.Chain.AVALANCHE],protocols:[c.DefiProtocol.Silo],envs:[r.r.prod]}]};class H extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);u(this,"_amount");u(this,"_protocol");u(this,"_needsApproval",!1);u(this,"_txHash");u(this,"_account");u(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 n=await this.ctx.getProvider("evm");if(!n)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const h=(await n.request({method:"eth_accounts"}))[0];if(!h)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this._account=h,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:[h,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],n=await S.getTokenInfo(m.Token.LBTC,this._chainId,this.ctx.env);if(!n)throw t.LombardError.invalidParameter("token","Could not get LBTC token info");const p=new I(this._amount),h=L.toBigInt(S.toBaseDenomination(p,n.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:n.address,abi:n.abi,functionName:"approve",args:[s.vaultContract.address,h]}),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 n=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=n,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,deploying:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:n}},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(n=>n.protocols.includes(e)&&n.envs.includes(this.ctx.env)))throw t.LombardError.invalidParameter("protocol",`Protocol ${e} is not supported in ${this.ctx.env} environment`)}}function V(i,a){return new H(i,a)}const F=[...new Set([...t.getEvmAssetChains(c.AssetId.WBTC,[r.r.prod]),...t.getEvmAssetChains(c.AssetId.BTCb,[r.r.prod])])],q=[...new Set([...t.getEvmAssetChains(c.AssetId.WBTC,[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]),...t.getEvmAssetChains(c.AssetId.BTCb,[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc])])],Y=t.getEvmAssetChains(c.AssetId.LBTC,[r.r.prod]),G=t.getEvmAssetChains(c.AssetId.LBTC,[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]),U={routes:[{assetsIn:[c.AssetId.WBTC,c.AssetId.BTCb],assetOut:c.AssetId.LBTC,sourceChains:F,destChains:Y,envs:[r.r.prod]},{assetsIn:[c.AssetId.WBTC,c.AssetId.BTCb],assetOut:c.AssetId.LBTC,sourceChains:q,destChains:G,envs:[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]}],addressSchema:t.evmAddressSchema};var C=(i=>(i.IDLE="idle",i.NEEDS_APPROVAL="needs-approval",i.READY="ready",i.BRIDGING="bridging",i.COMPLETED="completed",i))(C||{});class W extends t.BaseAction{constructor(e,s){super(C.IDLE);u(this,"_amount");u(this,"_recipient");u(this,"_needsApproval",!1);u(this,"_txHash");u(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 n=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=n,this.emitProgress({status:C.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.COMPLETE,bridging:t.StepStatus.IDLE}}),this.emitCompleted(),{txHash:n}},C.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,recipient:U.addressSchema})}}function z(i,a){return new W(i,a)}const $=t.getEvmAssetChains(c.AssetId.BTCb,[r.r.prod]),Z=t.getEvmAssetChains(c.AssetId.BTCb,[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]),j={routes:[{assetIn:c.AssetId.BTCb,assetOut:c.AssetId.BTC,sourceChains:$,destChain:t.Chain.BITCOIN_MAINNET,envs:[r.r.prod]},{assetIn:c.AssetId.BTCb,assetOut:c.AssetId.BTC,sourceChains:Z,destChain:t.Chain.BITCOIN_SIGNET,envs:[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]}],recipientSchema:t.bitcoinAddressSchema};async function P(i,a,e,s){if(!R.requiresAutoMintFee(i))return{requiresAuth:!1,hasValidSignature:!1,feeInSatoshis:null,feeFormatted:null,expirationDate:null};const n=await S.getTokenContractInfo(s,i,e),p=await O.getNetworkFeeSignature({address:a,chainId:i,env:e,tokenAddress:n.address}),h=p.expirationDate?new Date(Number(p.expirationDate)*1e3)<new Date:!1,d=p.hasSignature&&!h;let o=null,A=null;if(!d){const E=await v.getMintingFee({token:s,chainId:i,env:e});o=BigInt(E.times(1e8).toFixed(0)),A=E.toFixed(8)}return{requiresAuth:!0,hasValidSignature:d,feeInSatoshis:o,feeFormatted:A,expirationDate:p.expirationDate??null}}async function D(i){const{chainId:a,account:e,feeInSatoshis:s,provider:n,env:p,token:h}=i,d=await S.getTokenContractInfo(h,a,p),o=await v.signNetworkFee({fee:s,account:e,chainId:a,provider:n,env:p,token:h});return await O.storeNetworkFeeSignature({signature:o.signature,typedData:o.typedData,address:e,env:p,tokenAddress:d.address}),o}function w(){return{requiresAuth:!1,isAuthorized:!1,feeInSatoshis:null,feeFormatted:null,expirationDate:null}}class K extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);u(this,"_amount");u(this,"_recipient");u(this,"_needsApproval",!1);u(this,"_txHash");u(this,"_feeAuth",w());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 n=t.parseChainIdentifier(this.params.sourceChain),p=await this.ctx.getProvider("evm");if(!p)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const d=(await p.request({method:"eth_accounts"}))[0],o=await P(n,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.emitProgress({status:t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}});return}this._needsApproval=!1,this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})},this._feeAuth.requiresAuth&&!this._feeAuth.isAuthorized?t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION:t.EvmOperationStatus.READY)}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 p=(await s.request({method:"eth_accounts"}))[0];await D({chainId:e,account:p,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 n=(await e.request({method:"eth_accounts"}))[0];if(!n)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const p=t.parseChainIdentifier(this.params.sourceChain);this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.PENDING,releasing:t.StepStatus.IDLE}});const h=await v.redeemToken({provider:e,account:n,amount:this._amount,btcAddress:this._recipient,chainId:p,env:this.ctx.env,tokenIn:m.Token.BTCb,tokenOut:void 0});return this._txHash=h,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:t.StepStatus.PENDING}}),this.emitCompleted(),{txHash:h}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,recipient:j.recipientSchema})}}function Q(i,a){return new K(i,a)}const J=[m.ChainId.avalanche,m.ChainId.avalancheFuji];function X(i){return J.includes(i)}class tt extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);u(this,"_amount");u(this,"_txHash");u(this,"_feeAuth",w());u(this,"_account");u(this,"_needsApproval",!1);u(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 n=await this.ctx.getProvider("evm");if(!n)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const h=(await n.request({method:"eth_accounts"}))[0];if(!h)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this._account=h;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:h,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,h,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),n=await v.approveToken({account:this._account,token:m.Token.BTCb,spender:this._spenderAddress,amount:this._amount,chainId:s,provider:e,env:this.ctx.env}),p=S.makePublicClient({chainId:s,env:this.ctx.env});await v.waitForTransactionReceipt(p,n,"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),p=(await e.request({method:"eth_accounts"}))[0];if(!p)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this.emitProgress({status:t.EvmOperationStatus.READY,steps:{staking:t.StepStatus.PENDING}});const h=await v.depositToken({amount:this._amount,tokenIn:m.Token.BTCb,tokenOut:m.Token.LBTC,account:p,chainId:s,provider:e,env:this.ctx.env});return this._txHash=h,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{staking:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:h}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema})}}function et(i,a){return new tt(i,a)}const st=t.getEvmAssetChains(c.AssetId.LBTC,[r.r.prod]),at=t.getEvmAssetChains(c.AssetId.LBTC,[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]),rt=t.getEvmChainsWithAllAssets([c.AssetId.LBTC,c.AssetId.BTCb],[r.r.prod]),it=t.getEvmChainsWithAllAssets([c.AssetId.LBTC,c.AssetId.BTCb],[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]),nt={routes:[{sourceChains:st,destChain:t.Chain.BITCOIN_MAINNET,envs:[r.r.prod]},{sourceChains:at,destChain:t.Chain.BITCOIN_SIGNET,envs:[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]}],recipientSchema:t.bitcoinAddressSchema},ot={routes:[...rt.map(i=>({sourceChains:[i],destChain:i,envs:[r.r.prod]})),...it.map(i=>({sourceChains:[i],destChain:i,envs:[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]}))],recipientSchema:t.evmAddressSchema};class ct extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);u(this,"_amount");u(this,"_recipient");u(this,"_txHash");u(this,"_feeAuth",w());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===c.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 n=t.parseChainIdentifier(this.params.sourceChain);if(this.isBtcbOutput){const p=await this.ctx.getProvider("evm");if(!p)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const d=(await p.request({method:"eth_accounts"}))[0],o=await P(n,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.emitProgress({status:t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}});return}}this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})},this._feeAuth.requiresAuth&&!this._feeAuth.isAuthorized?t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION:t.EvmOperationStatus.READY)}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 p=(await s.request({method:"eth_accounts"}))[0];await D({chainId:e,account:p,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 n=(await e.request({method:"eth_accounts"}))[0];if(!n)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const p=t.parseChainIdentifier(this.params.sourceChain),h=this.params.assetOut===c.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:h?this._recipient:n,amount:this._amount,btcAddress:h?void 0:this._recipient,chainId:p,env:this.ctx.env,tokenIn:m.Token.LBTC,tokenOut:h?m.Token.BTCb:void 0});return this._txHash=d,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:h?t.StepStatus.COMPLETE:t.StepStatus.PENDING}}),this.emitCompleted(),{txHash:d}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){const e=this.params.assetOut===c.AssetId.BTC?nt:ot;return t.objectType({amount:t.evmAmountSchema,recipient:e.recipientSchema})}}function ut(i,a){return new ct(i,a)}const x={routes:[{sourceChains:[t.Chain.ETHEREUM,t.Chain.BASE,t.Chain.BSC,t.Chain.CORN],protocols:[c.DefiProtocol.Veda],envs:[r.r.prod]}]};class ht extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);u(this,"_txHash");u(this,"_account");u(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 n=(await e.request({method:"eth_accounts"}))[0];if(!n)throw t.LombardError.providerMissing(this.params.chain,"evm");if(this._account=n,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(n=>n.protocols.includes(e)&&n.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);u(this,"_amount");u(this,"_protocol");u(this,"_needsApproval",!1);u(this,"_txHash");u(this,"_account");u(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 n=await this.ctx.getProvider("evm");if(!n)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const h=(await n.request({method:"eth_accounts"}))[0];if(!h)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");if(this._account=h,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:[h,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:[h,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],n=new I(this._amount),p=L.toBigInt(S.toBaseDenomination(n,s.decimals)),h=S.makePublicClient({chainId:this._chainId}),d=m.makeWalletClient({provider:e,chainId:this._chainId}),o=this._chainId,{request:A}=await h.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,p]}),E=await d.writeContract(A);await v.waitForTransactionReceipt(h,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(n=>n.protocols.includes(e)&&n.envs.includes(this.ctx.env)))throw t.LombardError.invalidParameter("protocol",`Protocol ${e} is not supported for withdrawals in ${this.ctx.env} environment`)}}function dt(i,a){return new pt(i,a)}function mt(i,a){return new ht(i,a)}class b{constructor(a){u(this,"ctx");this.ctx=t.createEvmCoreContext(a)}stake(a){return et(this.ctx,a)}unstake(a){return ut(this.ctx,a)}deposit(a){return z(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(i){return new b(i)}exports.EvmActions=b;exports.EvmDepositStatus=C;exports.evmActions=vt;exports.evmModule=y;
|
|
2
|
+
//# sourceMappingURL=EvmActions-BVzQ3fLK.cjs.map
|