@lombard.finance/sdk 4.2.0 → 4.3.0
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 +0 -94
- package/README.md +10 -59
- package/dist/api.cjs +1 -1
- package/dist/api.js +5 -5
- package/dist/bridge/lib/ccip-config.d.ts.map +1 -1
- package/dist/bridge/lib/config.d.ts +3 -3
- package/dist/bridge/lib/config.d.ts.map +1 -1
- package/dist/bridge.cjs +1 -1
- package/dist/bridge.js +1 -1
- package/dist/btc.cjs +1 -1
- package/dist/btc.js +2 -2
- package/dist/chunks/{BtcActions-D9eBmDj6.cjs → BtcActions-ByhBml_1.cjs} +2 -2
- package/dist/chunks/{BtcActions-D9eBmDj6.cjs.map → BtcActions-ByhBml_1.cjs.map} +1 -1
- package/dist/chunks/{BtcActions-DGqmtxjd.js → BtcActions-C_A1dUQ0.js} +20 -20
- package/dist/chunks/{BtcActions-DGqmtxjd.js.map → BtcActions-C_A1dUQ0.js.map} +1 -1
- package/dist/chunks/{EvmActions-BOwYPThp.cjs → EvmActions-DoYIhj61.cjs} +2 -2
- package/dist/chunks/{EvmActions-BOwYPThp.cjs.map → EvmActions-DoYIhj61.cjs.map} +1 -1
- package/dist/chunks/{EvmActions-MW5mNmqs.js → EvmActions-DucgT60w.js} +45 -45
- package/dist/chunks/{EvmActions-MW5mNmqs.js.map → EvmActions-DucgT60w.js.map} +1 -1
- package/dist/chunks/{ReferralsClient-DUwyIUe3.cjs → ReferralsClient-BC-1wT1q.cjs} +2 -2
- package/dist/chunks/{ReferralsClient-DUwyIUe3.cjs.map → ReferralsClient-BC-1wT1q.cjs.map} +1 -1
- package/dist/chunks/{ReferralsClient-JjWLlIO4.js → ReferralsClient-DbFWWtVi.js} +20 -20
- package/dist/chunks/{ReferralsClient-JjWLlIO4.js.map → ReferralsClient-DbFWWtVi.js.map} +1 -1
- package/dist/chunks/approveLBTC-B5-ZWqct.js +26 -0
- package/dist/chunks/{approveLBTC-DOP0wsm3.js.map → approveLBTC-B5-ZWqct.js.map} +1 -1
- package/dist/chunks/{approveLBTC-CN6rJF6_.cjs → approveLBTC-CZiZmdcX.cjs} +2 -2
- package/dist/chunks/{approveLBTC-CN6rJF6_.cjs.map → approveLBTC-CZiZmdcX.cjs.map} +1 -1
- package/dist/chunks/blockchain-identifier-BmadkNtK.js +113 -0
- package/dist/chunks/blockchain-identifier-BmadkNtK.js.map +1 -0
- package/dist/chunks/{blockchain-identifier-DtIGGlIi.cjs → blockchain-identifier-BzMQWh-C.cjs} +2 -2
- package/dist/chunks/blockchain-identifier-BzMQWh-C.cjs.map +1 -0
- package/dist/chunks/bridge-BzRlY9pP.cjs +12 -0
- package/dist/chunks/bridge-BzRlY9pP.cjs.map +1 -0
- package/dist/chunks/{bridge-DyAiDpxD.js → bridge-CTsiodO1.js} +72 -95
- package/dist/chunks/bridge-CTsiodO1.js.map +1 -0
- package/dist/chunks/{config-_8X_2sG4.js → config-hFKqUyg3.js} +2 -2
- package/dist/chunks/{config-_8X_2sG4.js.map → config-hFKqUyg3.js.map} +1 -1
- package/dist/chunks/{config-DqbLaiRi.cjs → config-l4ZaZw_g.cjs} +2 -2
- package/dist/chunks/{config-DqbLaiRi.cjs.map → config-l4ZaZw_g.cjs.map} +1 -1
- package/dist/chunks/{defi-registry-NGWlyxAY.cjs → defi-registry-BIRv_zkp.cjs} +2 -2
- package/dist/chunks/{defi-registry-NGWlyxAY.cjs.map → defi-registry-BIRv_zkp.cjs.map} +1 -1
- package/dist/chunks/{defi-registry-dhrQMy94.js → defi-registry-wNFN3qyB.js} +7 -7
- package/dist/chunks/{defi-registry-dhrQMy94.js.map → defi-registry-wNFN3qyB.js.map} +1 -1
- package/dist/chunks/{depositStatus-K6gky8zH.cjs → depositStatus-C3-EgT2a.cjs} +2 -2
- package/dist/chunks/{depositStatus-K6gky8zH.cjs.map → depositStatus-C3-EgT2a.cjs.map} +1 -1
- package/dist/chunks/{depositStatus-DeCO-K5Q.js → depositStatus-DM7fRmbN.js} +8 -8
- package/dist/chunks/{depositStatus-DeCO-K5Q.js.map → depositStatus-DM7fRmbN.js.map} +1 -1
- package/dist/chunks/{events-DIKZG4SZ.cjs → events-BTtwgCev.cjs} +2 -2
- package/dist/chunks/{events-DIKZG4SZ.cjs.map → events-BTtwgCev.cjs.map} +1 -1
- package/dist/chunks/{events-CLVUaKQS.js → events-DPi6MDRA.js} +35 -35
- package/dist/chunks/{events-CLVUaKQS.js.map → events-DPi6MDRA.js.map} +1 -1
- package/dist/chunks/{get-exchange-ratio-CM8W0jTw.cjs → get-exchange-ratio-C-7DadfD.cjs} +2 -2
- package/dist/chunks/{get-exchange-ratio-CM8W0jTw.cjs.map → get-exchange-ratio-C-7DadfD.cjs.map} +1 -1
- package/dist/chunks/get-exchange-ratio-NtnkG1kZ.js +20 -0
- package/dist/chunks/{get-exchange-ratio-B0CNEGOB.js.map → get-exchange-ratio-NtnkG1kZ.js.map} +1 -1
- package/dist/chunks/{get-positions-summary-Cled5YPA.js → get-positions-summary-B_MmGHLv.js} +4 -4
- package/dist/chunks/{get-positions-summary-Cled5YPA.js.map → get-positions-summary-B_MmGHLv.js.map} +1 -1
- package/dist/chunks/{get-positions-summary-Co7RZBiK.cjs → get-positions-summary-DkZZYbGP.cjs} +2 -2
- package/dist/chunks/{get-positions-summary-Co7RZBiK.cjs.map → get-positions-summary-DkZZYbGP.cjs.map} +1 -1
- package/dist/chunks/{get-vault-tvl-Bydlvlrv.cjs → get-vault-tvl-DmTUbOY7.cjs} +2 -2
- package/dist/chunks/{get-vault-tvl-Bydlvlrv.cjs.map → get-vault-tvl-DmTUbOY7.cjs.map} +1 -1
- package/dist/chunks/{get-vault-tvl-DxjO9xDs.js → get-vault-tvl-YAXePAW3.js} +4 -4
- package/dist/chunks/{get-vault-tvl-DxjO9xDs.js.map → get-vault-tvl-YAXePAW3.js.map} +1 -1
- package/dist/chunks/{get-vault-withdrawals-CSQqKFB8.js → get-vault-withdrawals-BrpZlt6s.js} +3 -3
- package/dist/chunks/{get-vault-withdrawals-CSQqKFB8.js.map → get-vault-withdrawals-BrpZlt6s.js.map} +1 -1
- package/dist/chunks/{get-vault-withdrawals-DBA3ok0m.cjs → get-vault-withdrawals-CWcYy_sH.cjs} +2 -2
- package/dist/chunks/{get-vault-withdrawals-DBA3ok0m.cjs.map → get-vault-withdrawals-CWcYy_sH.cjs.map} +1 -1
- package/dist/chunks/{getSharesByAddress-De7as74h.cjs → getSharesByAddress-U48H_ygt.cjs} +2 -2
- package/dist/chunks/{getSharesByAddress-De7as74h.cjs.map → getSharesByAddress-U48H_ygt.cjs.map} +1 -1
- package/dist/chunks/{getSharesByAddress-CK2q7gBI.js → getSharesByAddress-cUtkrKTq.js} +14 -14
- package/dist/chunks/{getSharesByAddress-CK2q7gBI.js.map → getSharesByAddress-cUtkrKTq.js.map} +1 -1
- package/dist/chunks/{getUserStakeAndBakeSignature--XsK93Lb.cjs → getUserStakeAndBakeSignature-BxRq2cI1.cjs} +2 -2
- package/dist/chunks/{getUserStakeAndBakeSignature--XsK93Lb.cjs.map → getUserStakeAndBakeSignature-BxRq2cI1.cjs.map} +1 -1
- package/dist/chunks/{getUserStakeAndBakeSignature-2xPkL9v_.js → getUserStakeAndBakeSignature-NGGblnJl.js} +11 -11
- package/dist/chunks/{getUserStakeAndBakeSignature-2xPkL9v_.js.map → getUserStakeAndBakeSignature-NGGblnJl.js.map} +1 -1
- package/dist/chunks/index-BKzxeh1Y.cjs.map +1 -1
- package/dist/chunks/index-CfcQ_g3t.js.map +1 -1
- package/dist/chunks/{lbtc-addresses-NHg9Gk5y.js → lbtc-addresses-BLRmtR3c.js} +2 -2
- package/dist/chunks/{lbtc-addresses-NHg9Gk5y.js.map → lbtc-addresses-BLRmtR3c.js.map} +1 -1
- package/dist/chunks/{lbtc-addresses-bj--zuK9.cjs → lbtc-addresses-xyTYV7hx.cjs} +2 -2
- package/dist/chunks/{lbtc-addresses-bj--zuK9.cjs.map → lbtc-addresses-xyTYV7hx.cjs.map} +1 -1
- package/dist/chunks/{statusConstants-ZJia15m2.js → statusConstants-CJk6vOiM.js} +844 -853
- package/dist/chunks/statusConstants-CJk6vOiM.js.map +1 -0
- package/dist/chunks/statusConstants-fmtIEEEM.cjs +2 -0
- package/dist/chunks/statusConstants-fmtIEEEM.cjs.map +1 -0
- package/dist/chunks/{storeNetworkFeeSignature-BZUZOxns.js → storeNetworkFeeSignature-BZGL2Zn_.js} +8 -8
- package/dist/chunks/{storeNetworkFeeSignature-BZUZOxns.js.map → storeNetworkFeeSignature-BZGL2Zn_.js.map} +1 -1
- package/dist/chunks/{storeNetworkFeeSignature-pV7xUOSo.cjs → storeNetworkFeeSignature-D7yo6lDV.cjs} +2 -2
- package/dist/chunks/{storeNetworkFeeSignature-pV7xUOSo.cjs.map → storeNetworkFeeSignature-D7yo6lDV.cjs.map} +1 -1
- package/dist/chunks/token-addresses-DRBecUa7.cjs +2 -0
- package/dist/chunks/token-addresses-DRBecUa7.cjs.map +1 -0
- package/dist/chunks/token-addresses-FKpA3uc4.js +541 -0
- package/dist/chunks/token-addresses-FKpA3uc4.js.map +1 -0
- package/dist/chunks/{tokens-Bw35TZqd.js → tokens-C6qZHzph.js} +28 -30
- package/dist/chunks/tokens-C6qZHzph.js.map +1 -0
- package/dist/chunks/tokens-D_HeVB5p.cjs +2 -0
- package/dist/chunks/tokens-D_HeVB5p.cjs.map +1 -0
- package/dist/chunks/{unstakeLBTC-Huy_ncVl.js → unstakeLBTC-B4Rwf65e.js} +141 -129
- package/dist/chunks/unstakeLBTC-B4Rwf65e.js.map +1 -0
- package/dist/chunks/unstakeLBTC-Wlfi14de.cjs +2 -0
- package/dist/chunks/unstakeLBTC-Wlfi14de.cjs.map +1 -0
- package/dist/chunks/{withdraw-Z77x7Hj4.cjs → withdraw-C1fMFSwy.cjs} +2 -2
- package/dist/chunks/{withdraw-Z77x7Hj4.cjs.map → withdraw-C1fMFSwy.cjs.map} +1 -1
- package/dist/chunks/{withdraw-CVNVJ7-x.js → withdraw-hHueI2p7.js} +9 -9
- package/dist/chunks/{withdraw-CVNVJ7-x.js.map → withdraw-hHueI2p7.js.map} +1 -1
- package/dist/clients/rpc-url-config.d.ts.map +1 -1
- package/dist/common/chains.d.ts +343 -112
- package/dist/common/chains.d.ts.map +1 -1
- package/dist/common/feature-config.d.ts.map +1 -1
- package/dist/contract-functions/getLBTCMintingFee/getLBTCMintingFee.d.ts +27 -0
- package/dist/contract-functions/getLBTCMintingFee/getLBTCMintingFee.d.ts.map +1 -1
- package/dist/contract-functions/signLbtcDestionationAddr/signLbtcDestinationAddr.d.ts +26 -0
- package/dist/contract-functions/signLbtcDestionationAddr/signLbtcDestinationAddr.d.ts.map +1 -1
- package/dist/contracts.cjs +1 -1
- package/dist/contracts.js +26 -24
- package/dist/core/chains/catalog.d.ts.map +1 -1
- package/dist/core/chains/types.d.ts +0 -1
- package/dist/core/chains/types.d.ts.map +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.js +29 -29
- package/dist/defi.cjs +1 -1
- package/dist/defi.js +3 -3
- package/dist/entries/contracts.d.ts +2 -2
- package/dist/entries/contracts.d.ts.map +1 -1
- package/dist/entries/evm.d.ts +1 -1
- package/dist/entries/evm.d.ts.map +1 -1
- package/dist/entries/utils.d.ts +1 -1
- package/dist/entries/utils.d.ts.map +1 -1
- package/dist/evm.cjs +1 -1
- package/dist/evm.js +34 -35
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +188 -187
- package/dist/metrics.cjs +1 -1
- package/dist/metrics.js +1 -1
- package/dist/stories/components/decorators/wagmi-decorator.d.ts.map +1 -1
- package/dist/tokens/token-addresses.d.ts.map +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +48 -49
- package/dist/vaults.cjs +1 -1
- package/dist/vaults.js +15 -15
- package/package.json +2 -2
- package/dist/chunks/approveLBTC-DOP0wsm3.js +0 -26
- package/dist/chunks/blockchain-identifier-DtIGGlIi.cjs.map +0 -1
- package/dist/chunks/blockchain-identifier-PNEhu-QU.js +0 -113
- package/dist/chunks/blockchain-identifier-PNEhu-QU.js.map +0 -1
- package/dist/chunks/bridge-DkZMwO7c.cjs +0 -12
- package/dist/chunks/bridge-DkZMwO7c.cjs.map +0 -1
- package/dist/chunks/bridge-DyAiDpxD.js.map +0 -1
- package/dist/chunks/get-exchange-ratio-B0CNEGOB.js +0 -20
- package/dist/chunks/statusConstants-DTDi_4Go.cjs +0 -2
- package/dist/chunks/statusConstants-DTDi_4Go.cjs.map +0 -1
- package/dist/chunks/statusConstants-ZJia15m2.js.map +0 -1
- package/dist/chunks/token-addresses-D859i6tX.cjs +0 -2
- package/dist/chunks/token-addresses-D859i6tX.cjs.map +0 -1
- package/dist/chunks/token-addresses-DmAr89jP.js +0 -579
- package/dist/chunks/token-addresses-DmAr89jP.js.map +0 -1
- package/dist/chunks/tokens-Bw35TZqd.js.map +0 -1
- package/dist/chunks/tokens-DLGMNeqZ.cjs +0 -2
- package/dist/chunks/tokens-DLGMNeqZ.cjs.map +0 -1
- package/dist/chunks/unstakeLBTC-CqZzj9WL.cjs +0 -2
- package/dist/chunks/unstakeLBTC-CqZzj9WL.cjs.map +0 -1
- package/dist/chunks/unstakeLBTC-Huy_ncVl.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"),S=require("./unstakeLBTC-CqZzj9WL.cjs"),m=require("./token-addresses-D859i6tX.cjs"),t=require("./statusConstants-DTDi_4Go.cjs"),v=require("./tokens-DLGMNeqZ.cjs"),w=require("./storeNetworkFeeSignature-pV7xUOSo.cjs"),R=require("./fee-requirements-CICSxYYL.cjs"),c=require("./defi-registry-NGWlyxAY.cjs"),r=require("./index-BKzxeh1Y.cjs"),L=require("./numbers-3LtmxfD8.cjs"),E=require("./config-DqbLaiRi.cjs"),T=require("./withdraw-Z77x7Hj4.cjs");class k{constructor(a){this.env=a}async getMintingFee(a,e){return(await S.getMintingFee({token:e||m.Token.LBTC,chainId:a,env:this.env})).toString()}async signNetworkFee(a){const e=await S.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 S.getStakeAndBakeFee({chainId:a,protocol:e})).toString()}async signStakeAndBake(a){const e=await S.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 S.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=E.VAULTS[E.Vault.Veda],o=await v.getTokenInfo(m.Token.LBTC,this._chainId,this.ctx.env);if(!o)throw t.LombardError.invalidParameter("token","Could not get LBTC token info");const C=await v.makePublicClient({chainId:this._chainId}).readContract({address:o.address,abi:o.abi,functionName:"allowance",args:[h,d.vaultContract.address]}),g=new I(s.amount),_=v.toBaseDenomination(g,o.decimals),f=new I(String(C));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=E.VAULTS[E.Vault.Veda],n=await v.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(v.toBaseDenomination(p,n.decimals)),d=v.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]});await o.writeContract(A),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",E.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 q=[...new Set([...t.getEvmAssetChains(c.AssetId.WBTC,[r.r.prod]),...t.getEvmAssetChains(c.AssetId.BTCb,[r.r.prod])])],F=[...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:q,destChains:Y,envs:[r.r.prod]},{assetsIn:[c.AssetId.WBTC,c.AssetId.BTCb],assetOut:c.AssetId.LBTC,sourceChains:F,destChains:G,envs:[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]}],addressSchema:t.evmAddressSchema};var l=(i=>(i.IDLE="idle",i.NEEDS_APPROVAL="needs-approval",i.READY="ready",i.BRIDGING="bridging",i.COMPLETED="completed",i))(l||{});class W extends t.BaseAction{constructor(e,s){super(l.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(l.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:l.READY,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.IDLE,bridging:t.StepStatus.IDLE}})},l.READY)}async approve(){return this.assertStatus(l.NEEDS_APPROVAL,"approve"),this.act(async()=>{this._needsApproval=!1},l.READY)}async execute(){if(this.assertStatus(l.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:l.READY,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.PENDING,bridging:t.StepStatus.IDLE}});const n=await S.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:l.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.COMPLETE,bridging:t.StepStatus.IDLE}}),this.emitCompleted(),{txHash:n}},l.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 v.getTokenContractInfo(s,i,e),p=await w.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 C=await S.getMintingFee({token:s,chainId:i,env:e});o=BigInt(C.times(1e8).toFixed(0)),A=C.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 v.getTokenContractInfo(h,a,p),o=await S.signNetworkFee({fee:s,account:e,chainId:a,provider:n,env:p,token:h});return await w.storeNetworkFeeSignature({signature:o.signature,typedData:o.typedData,address:e,env:p,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);u(this,"_amount");u(this,"_recipient");u(this,"_needsApproval",!1);u(this,"_txHash");u(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 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 S.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",O());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 C=await v.getTokenContractInfo(m.Token.BTCb,d,this.ctx.env,m.AddressKind.Adapter);this._spenderAddress=C.address;const g=await S.getTokenAllowance({token:m.Token.BTCb,owner:h,spender:C.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);await S.approveToken({account:this._account,token:m.Token.BTCb,spender:this._spenderAddress,amount:this._amount,chainId:s,provider:e,env:this.ctx.env}),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 S.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",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===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 S.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),!E.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:E.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),!E.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=E.VAULTS[E.Vault.Veda],o=v.makePublicClient({chainId:this._chainId}),A=await o.readContract({address:d.lensContract.address,abi:d.lensContract.abi,functionName:"balanceOf",args:[h,d.vaultContract.address]}),C=v.fromBaseDenomination(String(A),d.decimals),g=new I(s.amount);if(g.isGreaterThan(C))throw new t.LombardError(t.WithdrawErrorCode.INSUFFICIENT_SHARES,`Insufficient vault shares. Requested: ${g.toFixed()}, Available: ${C.toFixed()}`,{requested:g.toFixed(),available:C.toFixed()});const _=await o.readContract({address:d.vaultContract.address,abi:d.vaultContract.abi,functionName:"allowance",args:[h,d.withdrawQueueContracts[this._chainId].address]}),f=v.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=E.VAULTS[E.Vault.Veda],n=new I(this._amount),p=L.toBigInt(v.toBaseDenomination(n,s.decimals)),h=v.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]});await d.writeContract(A),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:E.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=l;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"),S=require("./unstakeLBTC-Wlfi14de.cjs"),m=require("./token-addresses-DRBecUa7.cjs"),t=require("./statusConstants-fmtIEEEM.cjs"),v=require("./tokens-D_HeVB5p.cjs"),w=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"),E=require("./config-l4ZaZw_g.cjs"),T=require("./withdraw-C1fMFSwy.cjs");class k{constructor(a){this.env=a}async getMintingFee(a,e){return(await S.getMintingFee({token:e||m.Token.LBTC,chainId:a,env:this.env})).toString()}async signNetworkFee(a){const e=await S.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 S.getStakeAndBakeFee({chainId:a,protocol:e})).toString()}async signStakeAndBake(a){const e=await S.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 S.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=E.VAULTS[E.Vault.Veda],o=await v.getTokenInfo(m.Token.LBTC,this._chainId,this.ctx.env);if(!o)throw t.LombardError.invalidParameter("token","Could not get LBTC token info");const C=await v.makePublicClient({chainId:this._chainId}).readContract({address:o.address,abi:o.abi,functionName:"allowance",args:[h,d.vaultContract.address]}),g=new I(s.amount),_=v.toBaseDenomination(g,o.decimals),f=new I(String(C));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=E.VAULTS[E.Vault.Veda],n=await v.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(v.toBaseDenomination(p,n.decimals)),d=v.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]});await o.writeContract(A),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",E.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 q=[...new Set([...t.getEvmAssetChains(c.AssetId.WBTC,[r.r.prod]),...t.getEvmAssetChains(c.AssetId.BTCb,[r.r.prod])])],F=[...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:q,destChains:Y,envs:[r.r.prod]},{assetsIn:[c.AssetId.WBTC,c.AssetId.BTCb],assetOut:c.AssetId.LBTC,sourceChains:F,destChains:G,envs:[r.r.testnet,r.r.stage,r.r.dev,r.r.ibc]}],addressSchema:t.evmAddressSchema};var l=(i=>(i.IDLE="idle",i.NEEDS_APPROVAL="needs-approval",i.READY="ready",i.BRIDGING="bridging",i.COMPLETED="completed",i))(l||{});class W extends t.BaseAction{constructor(e,s){super(l.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(l.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:l.READY,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.IDLE,bridging:t.StepStatus.IDLE}})},l.READY)}async approve(){return this.assertStatus(l.NEEDS_APPROVAL,"approve"),this.act(async()=>{this._needsApproval=!1},l.READY)}async execute(){if(this.assertStatus(l.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:l.READY,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.PENDING,bridging:t.StepStatus.IDLE}});const n=await S.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:l.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.COMPLETE,bridging:t.StepStatus.IDLE}}),this.emitCompleted(),{txHash:n}},l.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 v.getTokenContractInfo(s,i,e),p=await w.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 C=await S.getMintingFee({token:s,chainId:i,env:e});o=BigInt(C.times(1e8).toFixed(0)),A=C.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 v.getTokenContractInfo(h,a,p),o=await S.signNetworkFee({fee:s,account:e,chainId:a,provider:n,env:p,token:h});return await w.storeNetworkFeeSignature({signature:o.signature,typedData:o.typedData,address:e,env:p,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);u(this,"_amount");u(this,"_recipient");u(this,"_needsApproval",!1);u(this,"_txHash");u(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 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 S.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",O());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 C=await v.getTokenContractInfo(m.Token.BTCb,d,this.ctx.env,m.AddressKind.Adapter);this._spenderAddress=C.address;const g=await S.getTokenAllowance({token:m.Token.BTCb,owner:h,spender:C.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);await S.approveToken({account:this._account,token:m.Token.BTCb,spender:this._spenderAddress,amount:this._amount,chainId:s,provider:e,env:this.ctx.env}),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 S.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",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===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 S.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),!E.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:E.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),!E.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=E.VAULTS[E.Vault.Veda],o=v.makePublicClient({chainId:this._chainId}),A=await o.readContract({address:d.lensContract.address,abi:d.lensContract.abi,functionName:"balanceOf",args:[h,d.vaultContract.address]}),C=v.fromBaseDenomination(String(A),d.decimals),g=new I(s.amount);if(g.isGreaterThan(C))throw new t.LombardError(t.WithdrawErrorCode.INSUFFICIENT_SHARES,`Insufficient vault shares. Requested: ${g.toFixed()}, Available: ${C.toFixed()}`,{requested:g.toFixed(),available:C.toFixed()});const _=await o.readContract({address:d.vaultContract.address,abi:d.vaultContract.abi,functionName:"allowance",args:[h,d.withdrawQueueContracts[this._chainId].address]}),f=v.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=E.VAULTS[E.Vault.Veda],n=new I(this._amount),p=L.toBigInt(v.toBaseDenomination(n,s.decimals)),h=v.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]});await d.writeContract(A),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:E.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=l;exports.evmActions=vt;exports.evmModule=y;
|
|
2
|
+
//# sourceMappingURL=EvmActions-DoYIhj61.cjs.map
|