@lombard.finance/sdk 5.0.0 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/btc.cjs +1 -1
- package/dist/btc.js +2 -2
- package/dist/chunks/{BtcActions-DJJmmyzi.cjs → BtcActions-7QjAN6OW.cjs} +2 -2
- package/dist/chunks/{BtcActions-DJJmmyzi.cjs.map → BtcActions-7QjAN6OW.cjs.map} +1 -1
- package/dist/chunks/{BtcActions-CFGiDxtv.js → BtcActions-z1Jcw0cF.js} +2 -2
- package/dist/chunks/{BtcActions-CFGiDxtv.js.map → BtcActions-z1Jcw0cF.js.map} +1 -1
- package/dist/chunks/{EvmActions-CUKBeiUw.js → EvmActions-CtCvQNt7.js} +3 -3
- package/dist/chunks/{EvmActions-CUKBeiUw.js.map → EvmActions-CtCvQNt7.js.map} +1 -1
- package/dist/chunks/{EvmActions-CxipDb7X.cjs → EvmActions-D9yTiCR0.cjs} +2 -2
- package/dist/chunks/{EvmActions-CxipDb7X.cjs.map → EvmActions-D9yTiCR0.cjs.map} +1 -1
- package/dist/chunks/{events-B9b3YdgM.cjs → events-CnxJdwys.cjs} +2 -2
- package/dist/chunks/{events-B9b3YdgM.cjs.map → events-CnxJdwys.cjs.map} +1 -1
- package/dist/chunks/{events-DU2wYlt_.js → events-d7K-dotA.js} +4 -4
- package/dist/chunks/{events-DU2wYlt_.js.map → events-d7K-dotA.js.map} +1 -1
- package/dist/chunks/{statusConstants-B-7VEYgO.cjs → statusConstants-B9JY-9Dm.cjs} +2 -2
- package/dist/chunks/{statusConstants-B-7VEYgO.cjs.map → statusConstants-B9JY-9Dm.cjs.map} +1 -1
- package/dist/chunks/{statusConstants-C3JHNUTC.js → statusConstants-BVOiQJFn.js} +2 -2
- package/dist/chunks/{statusConstants-C3JHNUTC.js.map → statusConstants-BVOiQJFn.js.map} +1 -1
- package/dist/chunks/{unwrapBtceToLbtcv-Dg-yUGpg.cjs → unwrapBtceToLbtcv-BlRUepkS.cjs} +2 -2
- package/dist/chunks/{unwrapBtceToLbtcv-Dg-yUGpg.cjs.map → unwrapBtceToLbtcv-BlRUepkS.cjs.map} +1 -1
- package/dist/chunks/{unwrapBtceToLbtcv-C4OxoVVU.js → unwrapBtceToLbtcv-Cu9KedO1.js} +3 -3
- package/dist/chunks/{unwrapBtceToLbtcv-C4OxoVVU.js.map → unwrapBtceToLbtcv-Cu9KedO1.js.map} +1 -1
- package/dist/chunks/{withdrawEarn-CTtVruit.cjs → withdrawEarn-CVQYjOoY.cjs} +3 -3
- package/dist/chunks/{withdrawEarn-CTtVruit.cjs.map → withdrawEarn-CVQYjOoY.cjs.map} +1 -1
- package/dist/chunks/{withdrawEarn-QFaMhs0t.js → withdrawEarn-D835YnBD.js} +36 -36
- package/dist/chunks/{withdrawEarn-QFaMhs0t.js.map → withdrawEarn-D835YnBD.js.map} +1 -1
- package/dist/contract-functions/previewWithdrawEarn/previewWithdrawEarn.d.ts.map +1 -1
- package/dist/contract-functions/withdrawEarn/withdrawEarn.d.ts +8 -4
- package/dist/contract-functions/withdrawEarn/withdrawEarn.d.ts.map +1 -1
- package/dist/contracts.cjs +1 -1
- package/dist/contracts.js +2 -2
- package/dist/core.cjs +1 -1
- package/dist/core.js +5 -5
- package/dist/evm.cjs +1 -1
- package/dist/evm.js +3 -3
- package/dist/index.cjs +1 -1
- package/dist/index.js +6 -6
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";var q=Object.defineProperty;var V=(i,a,e)=>a in i?q(i,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[a]=e;var h=(i,a,e)=>V(i,typeof a!="symbol"?a+"":a,e);const f=require("bignumber.js"),E=require("./withdrawEarn-
|
|
1
|
+
"use strict";var q=Object.defineProperty;var V=(i,a,e)=>a in i?q(i,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[a]=e;var h=(i,a,e)=>V(i,typeof a!="symbol"?a+"":a,e);const f=require("bignumber.js"),E=require("./withdrawEarn-CVQYjOoY.cjs"),m=require("./token-addresses-C7H9E4qz.cjs"),v=require("./tokens-DEYY7W7O.cjs"),t=require("./statusConstants-B9JY-9Dm.cjs"),M=require("./storeNetworkFeeSignature-DJgBfZp7.cjs"),Y=require("./fee-requirements-CICSxYYL.cjs"),d=require("./defi-registry-CyMKVT3z.cjs"),n=require("./index-BKzxeh1Y.cjs"),k=require("viem"),L=require("./numbers-3LtmxfD8.cjs"),_=require("./config-BfX8lrdO.cjs");class G{constructor(a){this.env=a}async getMintingFee(a,e){return(await E.getMintingFee({token:e||m.Token.LBTC,chainId:a,env:this.env})).toString()}async signNetworkFee(a){const e=await E.signNetworkFee({fee:new f(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 E.getStakeAndBakeFee({chainId:a,protocol:e})).toString()}async signStakeAndBake(a){const e=await E.signStakeAndBake({value:new f(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 E.signLbtcDestinationAddr({account:a.address,chainId:a.chainId,provider:a.provider})}}}function $(){return{id:"evm",chain:"evm",register(i){return new G(i.env)}}}const U={routes:[{asset:d.AssetId.LBTC,sourceChains:[t.Chain.ETHEREUM],protocols:[d.DefiProtocol.Veda],envs:[n.r.prod]},{asset:d.AssetId.LBTC,sourceChains:[t.Chain.BASE],protocols:[d.DefiProtocol.Veda],envs:[n.r.prod]},{asset:d.AssetId.LBTC,sourceChains:[t.Chain.BSC],protocols:[d.DefiProtocol.Veda],envs:[n.r.prod]},{asset:d.AssetId.LBTC,sourceChains:[t.Chain.CORN],protocols:[d.DefiProtocol.Veda],envs:[n.r.prod]},{asset:d.AssetId.LBTC,sourceChains:[t.Chain.AVALANCHE],protocols:[d.DefiProtocol.Silo],envs:[n.r.prod]}]};async function W({amount:i,approve:a=!0,token:e=m.Token.LBTC,account:s,chainId:r,provider:p,rpcUrl:c,env:u}){const o=_.EARN_VAULT;if(!_.isEarnChain(r))throw new Error(`Unsupported chain id: ${r}. Please switch to one of the supported chains: ${o.chains.join(", ")}`);const l=v.makePublicClient({chainId:r,rpcUrl:c}),C=m.makeWalletClient({provider:p,chainId:r}),S=await v.getTokenInfo(e,r,u,c);if(!S)throw new Error(`Unknown deposit token: ${e}`);const A=f(i),I=L.toBigInt(v.toBaseDenomination(A,S.decimals)),T=await l.readContract({address:S.address,abi:S.abi,functionName:"allowance",args:[s,o.vaultContract.address]}),w=v.fromBaseDenomination(String(T),S.decimals),P=await l.readContract({address:S.address,abi:S.abi,functionName:"balanceOf",args:[s]}),B=v.fromBaseDenomination(String(P),S.decimals);if(A.isGreaterThan(B))throw new Error(`The deposit amount exceeds the account's balance.
|
|
2
2
|
Deposit amount: ${A.toFixed()}
|
|
3
3
|
Balance: ${B.toFixed()}`);if(A.isGreaterThan(w)){const R=`The deposit amount exceeds allowance.
|
|
4
4
|
Deposit amount: ${A.toFixed()}
|
|
5
5
|
Allowance: ${w.toFixed()}`;if(!a)throw new Error(R);console.info(R);try{console.info(`Trying to approve ${I}`);const{request:D}=await l.simulateContract({account:s,chain:m.CHAIN_ID_TO_VIEM_CHAIN_MAP[r],address:S.address,abi:S.abi,functionName:"approve",args:[o.vaultContract.address,I]}),O=await C.writeContract(D);console.info(`Approve tx hash: ${O}`),console.info(`Approved ${I} for ${o.vaultContract.address}`)}catch(D){const O=v.getErrorMessage(D);throw new Error(`Could not approve ${I} for ${o.vaultContract.address}.
|
|
6
6
|
Reason: ${O}`)}}const{request:F}=await l.simulateContract({account:s,chain:m.CHAIN_ID_TO_VIEM_CHAIN_MAP[r],address:o.tellerContracts[r].address,abi:o.tellerContracts[r].abi,functionName:"deposit",args:[S.address,I,0n]});return await C.writeContract(F)}class z extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);h(this,"_amount");h(this,"_protocol");h(this,"_needsApproval",!1);h(this,"_txHash");h(this,"_account");h(this,"_chainId");this.ctx=e,this.params=s}get amount(){return this._amount}get protocol(){return this._protocol}get needsApproval(){return this._needsApproval}get txHash(){return this._txHash}isVedaBtcePath(){return this._protocol===d.DefiProtocol.Veda&&this._chainId!==void 0&&_.isBtceVaultChain(this._chainId)}getSpenderAddress(){return this.isVedaBtcePath()?_.BTCE_VAULT.contracts[this._chainId]:_.EARN_VAULT.vaultContract.address}async prepare(e){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const s=t.validatePrepareParams(this.prepareSchema,e);this._amount=s.amount,this._protocol=e.protocol,this.validateProtocol(e.protocol);const r=await this.ctx.getProvider("evm");if(!r)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const c=(await r.request({method:"eth_accounts"}))[0];if(!c)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this._account=c,this._chainId=t.parseChainIdentifier(this.params.sourceChain);const u=await v.getTokenInfo(m.Token.LBTC,this._chainId,this.ctx.env);if(!u)throw t.LombardError.invalidParameter("token","Could not get LBTC token info");const o=this.getSpenderAddress(),C=await v.makePublicClient({chainId:this._chainId}).readContract({address:u.address,abi:k.erc20Abi,functionName:"allowance",args:[c,o]}),S=new f(s.amount),A=v.toBaseDenomination(S,u.decimals),I=new f(String(C));this._needsApproval=A.isGreaterThan(I),this._needsApproval?(this.emitProgress({status:t.EvmOperationStatus.NEEDS_APPROVAL,steps:{approval:t.StepStatus.PENDING,deploying:t.StepStatus.IDLE}}),this.updateStatus(t.EvmOperationStatus.NEEDS_APPROVAL)):(this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,deploying:t.StepStatus.PENDING}}),this.updateStatus(t.EvmOperationStatus.READY))})}async approve(){return this.assertStatus(t.EvmOperationStatus.NEEDS_APPROVAL,"approve"),this.act(async()=>{if(!this._account||!this._chainId||!this._amount)throw t.LombardError.missingParameter("account, chainId, or amount");const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const s=await v.getTokenInfo(m.Token.LBTC,this._chainId,this.ctx.env);if(!s)throw t.LombardError.invalidParameter("token","Could not get LBTC token info");const r=new f(this._amount),p=L.toBigInt(v.toBaseDenomination(r,s.decimals)),c=this.getSpenderAddress(),u=v.makePublicClient({chainId:this._chainId}),o=m.makeWalletClient({provider:e,chainId:this._chainId}),{request:l}=await u.simulateContract({account:this._account,chain:m.CHAIN_ID_TO_VIEM_CHAIN_MAP[this._chainId],address:s.address,abi:k.erc20Abi,functionName:"approve",args:[c,p]}),C=await o.writeContract(l);await E.waitForTransactionReceipt(u,C,"LBTC deposit approval"),this._needsApproval=!1,this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,deploying:t.StepStatus.PENDING}})},t.EvmOperationStatus.READY)}async execute(){return this.assertStatus(t.EvmOperationStatus.READY,"execute"),this.act(async()=>{const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");if(!this._account||!this._chainId)throw t.LombardError.missingParameter("account or chainId");this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,deploying:t.StepStatus.PENDING}});let s;return this.isVedaBtcePath()?s=await E.depositEarn({token:m.Token.LBTC,amount:this._amount,receiver:this.params.recipient,approve:!1,account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env}):s=await W({amount:this._amount,approve:!1,token:m.Token.LBTC,account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env}),this._txHash=s,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,deploying:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:s}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,protocol:t.stringType().min(1,"Protocol is required")})}validateProtocol(e){if(!U.routes.some(r=>r.protocols.includes(e)&&r.envs.includes(this.ctx.env)))throw t.LombardError.invalidParameter("protocol",`Protocol ${e} is not supported in ${this.ctx.env} environment`)}}function Z(i,a){return new z(i,a)}const j=t.getEvmAssetChains(d.AssetId.BTCb,[n.r.prod]),K=t.getEvmAssetChains(d.AssetId.BTCb,[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),Q=t.getEvmAssetChains(d.AssetId.LBTC,[n.r.prod]),J=t.getEvmAssetChains(d.AssetId.LBTC,[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),X={routes:[{assetsIn:[d.AssetId.BTCb],assetOut:d.AssetId.LBTC,sourceChains:j,destChains:Q,envs:[n.r.prod]},{assetsIn:[d.AssetId.BTCb],assetOut:d.AssetId.LBTC,sourceChains:K,destChains:J,envs:[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]}],addressSchema:t.evmAddressSchema};var g=(i=>(i.IDLE="idle",i.NEEDS_APPROVAL="needs-approval",i.READY="ready",i.BRIDGING="bridging",i.COMPLETED="completed",i))(g||{});class tt extends t.BaseAction{constructor(e,s){super(g.IDLE);h(this,"_amount");h(this,"_recipient");h(this,"_needsApproval",!1);h(this,"_txHash");h(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(g.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:g.READY,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.IDLE,bridging:t.StepStatus.IDLE}})},g.READY)}async approve(){return this.assertStatus(g.NEEDS_APPROVAL,"approve"),this.act(async()=>{this._needsApproval=!1},g.READY)}async execute(){if(this.assertStatus(g.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:g.READY,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.PENDING,bridging:t.StepStatus.IDLE}});const r=await E.claimLBTC({provider:e,account:this._recipient,data:this._claimData.data,proofSignature:this._claimData.proofSignature,chainId:s,env:this.ctx.env});return this._txHash=r,this.emitProgress({status:g.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.COMPLETE,bridging:t.StepStatus.IDLE}}),this.emitCompleted(),{txHash:r}},g.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,recipient:X.addressSchema})}}function et(i,a){return new tt(i,a)}const st=t.getEvmAssetChains(d.AssetId.BTCb,[n.r.prod]),at=t.getEvmAssetChains(d.AssetId.BTCb,[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),rt={routes:[{assetIn:d.AssetId.BTCb,assetOut:d.AssetId.BTC,sourceChains:st,destChain:t.Chain.BITCOIN_MAINNET,envs:[n.r.prod]},{assetIn:d.AssetId.BTCb,assetOut:d.AssetId.BTC,sourceChains:at,destChain:t.Chain.BITCOIN_SIGNET,envs:[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]}],recipientSchema:t.bitcoinAddressSchema};async function x(i,a,e,s){if(!Y.requiresAutoMintFee(i))return{requiresAuth:!1,hasValidSignature:!1,feeInSatoshis:null,feeFormatted:null,expirationDate:null};const r=await v.getTokenContractInfo(s,i,e),p=await M.getNetworkFeeSignature({address:a,chainId:i,env:e,tokenAddress:r.address}),c=p.expirationDate?new Date(Number(p.expirationDate)*1e3)<new Date:!1,u=p.hasSignature&&!c;let o=null,l=null;if(!u){const C=await E.getMintingFee({token:s,chainId:i,env:e});o=BigInt(C.times(1e8).toFixed(0)),l=C.toFixed(8)}return{requiresAuth:!0,hasValidSignature:u,feeInSatoshis:o,feeFormatted:l,expirationDate:p.expirationDate??null}}async function b(i){const{chainId:a,account:e,feeInSatoshis:s,provider:r,env:p,token:c}=i,u=await v.getTokenContractInfo(c,a,p),o=await E.signNetworkFee({fee:s,account:e,chainId:a,provider:r,env:p,token:c});return await M.storeNetworkFeeSignature({signature:o.signature,typedData:o.typedData,address:e,env:p,tokenAddress:u.address}),o}function N(){return{requiresAuth:!1,isAuthorized:!1,feeInSatoshis:null,feeFormatted:null,expirationDate:null}}class it extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);h(this,"_amount");h(this,"_recipient");h(this,"_needsApproval",!1);h(this,"_txHash");h(this,"_feeAuth",N());this.ctx=e,this.params=s}get amount(){return this._amount}get recipient(){return this._recipient}get needsApproval(){return this._needsApproval}get txHash(){return this._txHash}get feeAuth(){return this._feeAuth}async prepare(e){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const s=t.validatePrepareParams(this.prepareSchema,e,{destChain:this.params.destChain});this._amount=s.amount,this._recipient=s.recipient;const r=t.parseChainIdentifier(this.params.sourceChain),p=await this.ctx.getProvider("evm");if(!p)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const u=(await p.request({method:"eth_accounts"}))[0],o=await x(r,u,this.ctx.env,m.Token.BTCb);if(this._feeAuth={requiresAuth:o.requiresAuth,isAuthorized:o.hasValidSignature,feeInSatoshis:o.feeInSatoshis,feeFormatted:o.feeFormatted,expirationDate:o.expirationDate},o.requiresAuth&&!o.hasValidSignature){this.updateStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION),this.emitProgress({status:t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}});return}this._needsApproval=!1,this.updateStatus(t.EvmOperationStatus.READY),this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})})}async authorizeFee(){if(this.assertStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,"authorizeFee"),!this._feeAuth.feeInSatoshis)throw t.LombardError.missingParameter("feeInSatoshis");return this.act(async()=>{const e=t.parseChainIdentifier(this.params.sourceChain),s=await this.ctx.getProvider("evm");if(!s)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const p=(await s.request({method:"eth_accounts"}))[0];await b({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 r=(await e.request({method:"eth_accounts"}))[0];if(!r)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 c=await E.redeemToken({provider:e,account:r,amount:this._amount,btcAddress:this._recipient,chainId:p,env:this.ctx.env,tokenIn:m.Token.BTCb,tokenOut:void 0});return this._txHash=c,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:t.StepStatus.PENDING}}),this.emitCompleted(),{txHash:c}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,recipient:rt.recipientSchema})}}function nt(i,a){return new it(i,a)}const ot=[m.ChainId.avalanche,m.ChainId.avalancheFuji];function ct(i){return ot.includes(i)}class ut extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);h(this,"_amount");h(this,"_txHash");h(this,"_feeAuth",N());h(this,"_account");h(this,"_needsApproval",!1);h(this,"_spenderAddress");this.ctx=e,this.params=s}get amount(){return this._amount}get txHash(){return this._txHash}get feeAuth(){return this._feeAuth}get needsApproval(){return this._needsApproval}async prepare(e){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const s=t.validatePrepareParams(this.prepareSchema,e);this._amount=s.amount;const r=await this.ctx.getProvider("evm");if(!r)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const c=(await r.request({method:"eth_accounts"}))[0];if(!c)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this._account=c;const u=t.parseChainIdentifier(this.params.sourceChain);if(ct(u)){const C=await v.getTokenContractInfo(m.Token.BTCb,u,this.ctx.env,m.AddressKind.Adapter);this._spenderAddress=C.address;const S=await E.getTokenAllowance({token:m.Token.BTCb,owner:c,spender:C.address,chainId:u,env:this.ctx.env}),A=new f(s.amount);if(this._needsApproval=S.isLessThan(A),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 x(u,c,this.ctx.env,m.Token.LBTC);this._feeAuth={requiresAuth:o.requiresAuth,isAuthorized:o.hasValidSignature,feeInSatoshis:o.feeInSatoshis,feeFormatted:o.feeFormatted,expirationDate:o.expirationDate},o.requiresAuth&&!o.hasValidSignature?(this.emitProgress({status:t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,steps:{staking:t.StepStatus.IDLE}}),this.updateStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION)):(this.emitProgress({status:t.EvmOperationStatus.READY,steps:{staking:t.StepStatus.PENDING}}),this.updateStatus(t.EvmOperationStatus.READY))})}async approve(){return this.assertStatus(t.EvmOperationStatus.NEEDS_APPROVAL,"approve"),this.act(async()=>{if(!this._account||!this._spenderAddress||!this._amount)throw t.LombardError.missingParameter("account, spenderAddress, or amount");const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const s=t.parseChainIdentifier(this.params.sourceChain),r=await E.approveToken({account:this._account,token:m.Token.BTCb,spender:this._spenderAddress,amount:this._amount,chainId:s,provider:e,env:this.ctx.env}),p=v.makePublicClient({chainId:s,env:this.ctx.env});await E.waitForTransactionReceipt(p,r,"BTC.b approval"),this._needsApproval=!1,this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,staking:t.StepStatus.PENDING}})},t.EvmOperationStatus.READY)}async authorizeFee(){return this.assertStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,"authorizeFee"),this.act(async()=>{if(!this._feeAuth.feeInSatoshis)throw t.LombardError.missingParameter("feeInSatoshis");const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const s=t.parseChainIdentifier(this.params.sourceChain);await b({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 c=await E.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=c,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{staking:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:c}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema})}}function ht(i,a){return new ut(i,a)}const pt=t.getEvmAssetChains(d.AssetId.LBTC,[n.r.prod]),dt=t.getEvmAssetChains(d.AssetId.LBTC,[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),mt=t.getEvmChainsWithAllAssets([d.AssetId.LBTC,d.AssetId.BTCb],[n.r.prod]),vt=t.getEvmChainsWithAllAssets([d.AssetId.LBTC,d.AssetId.BTCb],[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]),Et={routes:[{sourceChains:pt,destChain:t.Chain.BITCOIN_MAINNET,envs:[n.r.prod]},{sourceChains:dt,destChain:t.Chain.BITCOIN_SIGNET,envs:[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]}],recipientSchema:t.bitcoinAddressSchema},lt={routes:[...mt.map(i=>({sourceChains:[i],destChain:i,envs:[n.r.prod]})),...vt.map(i=>({sourceChains:[i],destChain:i,envs:[n.r.testnet,n.r.stage,n.r.dev,n.r.ibc]}))],recipientSchema:t.evmAddressSchema};class St extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);h(this,"_amount");h(this,"_recipient");h(this,"_txHash");h(this,"_feeAuth",N());this.ctx=e,this.params=s}get amount(){return this._amount}get recipient(){return this._recipient}get txHash(){return this._txHash}get feeAuth(){return this._feeAuth}get isBtcbOutput(){return this.params.assetOut===d.AssetId.BTCb}async prepare(e){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const s=t.validatePrepareParams(this.prepareSchema,e,{destChain:this.params.destChain});this._amount=s.amount,this._recipient=s.recipient;const r=t.parseChainIdentifier(this.params.sourceChain);if(this.isBtcbOutput){const p=await this.ctx.getProvider("evm");if(!p)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const u=(await p.request({method:"eth_accounts"}))[0],o=await x(r,u,this.ctx.env,m.Token.BTCb);if(this._feeAuth={requiresAuth:o.requiresAuth,isAuthorized:o.hasValidSignature,feeInSatoshis:o.feeInSatoshis,feeFormatted:o.feeFormatted,expirationDate:o.expirationDate},o.requiresAuth&&!o.hasValidSignature){this.updateStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION),this.emitProgress({status:t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}});return}}this.updateStatus(t.EvmOperationStatus.READY),this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})})}async authorizeFee(){if(this.assertStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,"authorizeFee"),!this._feeAuth.feeInSatoshis)throw t.LombardError.missingParameter("feeInSatoshis");return this.act(async()=>{const e=t.parseChainIdentifier(this.params.sourceChain),s=await this.ctx.getProvider("evm");if(!s)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const p=(await s.request({method:"eth_accounts"}))[0];await b({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 r=(await e.request({method:"eth_accounts"}))[0];if(!r)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const p=t.parseChainIdentifier(this.params.sourceChain),c=this.params.assetOut===d.AssetId.BTCb;this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.PENDING,releasing:t.StepStatus.IDLE}});const u=await E.redeemToken({provider:e,account:c?this._recipient:r,amount:this._amount,btcAddress:c?void 0:this._recipient,chainId:p,env:this.ctx.env,tokenIn:m.Token.LBTC,tokenOut:c?m.Token.BTCb:void 0});return this._txHash=u,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:c?t.StepStatus.COMPLETE:t.StepStatus.PENDING}}),this.emitCompleted(),{txHash:u}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){const e=this.params.assetOut===d.AssetId.BTC?Et:lt;return t.objectType({amount:t.evmAmountSchema,recipient:e.recipientSchema})}}function Ct(i,a){return new St(i,a)}const y={routes:[{sourceChains:[t.Chain.ETHEREUM,t.Chain.BASE,t.Chain.BSC,t.Chain.CORN],protocols:[d.DefiProtocol.Veda],envs:[n.r.prod]}]};class At extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);h(this,"_txHash");h(this,"_account");h(this,"_chainId");this.ctx=e,this.params=s}get txHash(){return this._txHash}async prepare(){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{this.validateProtocol(this.params.protocol);const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.chain,"evm");const r=(await e.request({method:"eth_accounts"}))[0];if(!r)throw t.LombardError.providerMissing(this.params.chain,"evm");if(this._account=r,this._chainId=t.parseChainIdentifier(this.params.chain),!_.isEarnChain(this._chainId))throw new t.LombardError(t.WithdrawErrorCode.PROTOCOL_NOT_SUPPORTED,`Chain ${this.params.chain} does not support Veda vault withdrawals`,{chain:this.params.chain,protocol:this.params.protocol});this.emitProgress({status:t.EvmOperationStatus.READY,steps:{cancelling:t.StepStatus.PENDING}}),this.updateStatus(t.EvmOperationStatus.READY)})}async execute(){return this.assertStatus(t.EvmOperationStatus.READY,"execute"),this.act(async()=>{const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.chain,"evm");if(!this._account||!this._chainId)throw t.LombardError.missingParameter("account or chainId");this.emitProgress({status:t.EvmOperationStatus.READY,steps:{cancelling:t.StepStatus.PENDING}});const s=await E.cancelWithdrawInternal({account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env});return this._txHash=s,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{cancelling:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:s}},t.EvmOperationStatus.COMPLETED)}validateProtocol(e){if(!y.routes.some(r=>r.protocols.includes(e)&&r.envs.includes(this.ctx.env)))throw t.LombardError.invalidParameter("protocol",`Protocol ${e} is not supported for withdrawals in ${this.ctx.env} environment`)}}class _t extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);h(this,"_amount");h(this,"_protocol");h(this,"_needsApproval",!1);h(this,"_txHash");h(this,"_account");h(this,"_chainId");this.ctx=e,this.params=s}get amount(){return this._amount}get protocol(){return this._protocol}get needsApproval(){return this._needsApproval}get txHash(){return this._txHash}async prepare(e){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const s=t.validatePrepareParams(this.prepareSchema,e);this._amount=s.amount,this._protocol=this.params.protocol,this.validateProtocol(this.params.protocol);const r=await this.ctx.getProvider("evm");if(!r)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const c=(await r.request({method:"eth_accounts"}))[0];if(!c)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");if(this._account=c,this._chainId=t.parseChainIdentifier(this.params.sourceChain),!_.isEarnChain(this._chainId))throw new t.LombardError(t.WithdrawErrorCode.PROTOCOL_NOT_SUPPORTED,`Chain ${this.params.sourceChain} does not support Veda vault withdrawals`,{chain:this.params.sourceChain,protocol:this._protocol});const u=_.EARN_VAULT,o=v.makePublicClient({chainId:this._chainId}),l=new f(s.amount),C=await o.readContract({address:u.lensContract.address,abi:u.lensContract.abi,functionName:"balanceOf",args:[c,u.vaultContract.address]}),S=v.fromBaseDenomination(String(C),u.decimals);let A=S;if(_.isBtceVaultChain(this._chainId)){const w=await o.readContract({address:_.BTCE_VAULT.contracts[this._chainId],abi:_.BTCE_VAULT.abi,functionName:"balanceOf",args:[c]}),P=v.fromBaseDenomination(String(w),u.decimals);A=S.plus(P)}if(l.isGreaterThan(A))throw new t.LombardError(t.WithdrawErrorCode.INSUFFICIENT_SHARES,`Insufficient vault shares. Requested: ${l.toFixed()}, Available: ${A.toFixed()}`,{requested:l.toFixed(),available:A.toFixed()});const I=await o.readContract({address:u.vaultContract.address,abi:u.vaultContract.abi,functionName:"allowance",args:[c,u.withdrawQueueContracts[this._chainId].address]}),T=v.fromBaseDenomination(String(I),u.decimals);this._needsApproval=l.isGreaterThan(T),this._needsApproval?(this.emitProgress({status:t.EvmOperationStatus.NEEDS_APPROVAL,steps:{approval:t.StepStatus.PENDING,queueing:t.StepStatus.IDLE}}),this.updateStatus(t.EvmOperationStatus.NEEDS_APPROVAL)):(this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,queueing:t.StepStatus.PENDING}}),this.updateStatus(t.EvmOperationStatus.READY))})}async approve(){return this.assertStatus(t.EvmOperationStatus.NEEDS_APPROVAL,"approve"),this.act(async()=>{if(!this._account||!this._chainId||!this._amount)throw t.LombardError.missingParameter("account, chainId, or amount");const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const s=_.EARN_VAULT,r=new f(this._amount),p=L.toBigInt(v.toBaseDenomination(r,s.decimals)),c=v.makePublicClient({chainId:this._chainId}),u=m.makeWalletClient({provider:e,chainId:this._chainId}),o=this._chainId,{request:l}=await c.simulateContract({account:this._account,chain:m.CHAIN_ID_TO_VIEM_CHAIN_MAP[this._chainId],address:s.vaultContract.address,abi:s.vaultContract.abi,functionName:"approve",args:[s.withdrawQueueContracts[o].address,p]}),C=await u.writeContract(l);await E.waitForTransactionReceipt(c,C,"vault share approval"),this._needsApproval=!1,this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,queueing:t.StepStatus.PENDING}})},t.EvmOperationStatus.READY)}async execute(){return this.assertStatus(t.EvmOperationStatus.READY,"execute"),this.act(async()=>{const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");if(!this._account||!this._chainId||!this._amount)throw t.LombardError.missingParameter("account, chainId, or amount");this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,queueing:t.StepStatus.PENDING}});let s;return _.isBtceVaultChain(this._chainId)?s=(await E.withdrawEarn({amount:this._amount,account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env})).queueTxHash:s=await E.queueWithdrawInternal({amount:this._amount,approve:!1,account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env}),this._txHash=s,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,queueing:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:s}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema})}validateProtocol(e){if(!y.routes.some(r=>r.protocols.includes(e)&&r.envs.includes(this.ctx.env)))throw t.LombardError.invalidParameter("protocol",`Protocol ${e} is not supported for withdrawals in ${this.ctx.env} environment`)}}function gt(i,a){return new _t(i,a)}function It(i,a){return new At(i,a)}class H{constructor(a){h(this,"ctx");this.ctx=t.createEvmCoreContext(a)}stake(a){return ht(this.ctx,a)}unstake(a){return Ct(this.ctx,a)}deposit(a){return et(this.ctx,a)}deploy(a){return Z(this.ctx,a)}withdraw(a){return gt(this.ctx,a)}cancelWithdraw(a){return It(this.ctx,a)}redeem(a){return nt(this.ctx,a)}}function ft(i){return new H(i)}exports.EvmActions=H;exports.EvmDepositStatus=g;exports.evmActions=ft;exports.evmModule=$;
|
|
7
|
-
//# sourceMappingURL=EvmActions-
|
|
7
|
+
//# sourceMappingURL=EvmActions-D9yTiCR0.cjs.map
|