@lombard.finance/sdk 5.0.3 → 5.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.d.ts +13 -0
  3. package/dist/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.d.ts.map +1 -1
  4. package/dist/api.cjs +1 -1
  5. package/dist/api.js +12 -11
  6. package/dist/api.js.map +1 -1
  7. package/dist/btc.cjs +1 -1
  8. package/dist/btc.js +2 -2
  9. package/dist/chains/btc/actions/stake/config/evm.d.ts.map +1 -1
  10. package/dist/chunks/{BtcActions-BE75KQhS.js → BtcActions-D7HekjRg.js} +235 -216
  11. package/dist/chunks/{BtcActions-BE75KQhS.js.map → BtcActions-D7HekjRg.js.map} +1 -1
  12. package/dist/chunks/BtcActions-lp4P72ln.cjs +2 -0
  13. package/dist/chunks/{BtcActions-hLkixDlL.cjs.map → BtcActions-lp4P72ln.cjs.map} +1 -1
  14. package/dist/chunks/EvmActions-CynfSVFq.cjs +7 -0
  15. package/dist/chunks/{EvmActions-DIkhiG2i.cjs.map → EvmActions-CynfSVFq.cjs.map} +1 -1
  16. package/dist/chunks/{EvmActions-DCy8q_l4.js → EvmActions-nbR8cSa4.js} +37 -36
  17. package/dist/chunks/{EvmActions-DCy8q_l4.js.map → EvmActions-nbR8cSa4.js.map} +1 -1
  18. package/dist/chunks/depositStatus-DUXMloTa.cjs +2 -0
  19. package/dist/chunks/{depositStatus-CeoqUgM5.cjs.map → depositStatus-DUXMloTa.cjs.map} +1 -1
  20. package/dist/chunks/{depositStatus-CacTFWfJ.js → depositStatus-hmXphYhu.js} +2 -2
  21. package/dist/chunks/{depositStatus-CacTFWfJ.js.map → depositStatus-hmXphYhu.js.map} +1 -1
  22. package/dist/chunks/{events-Cu4qfdgE.js → events-BP_Ahnsm.js} +42 -41
  23. package/dist/chunks/{events-Cu4qfdgE.js.map → events-BP_Ahnsm.js.map} +1 -1
  24. package/dist/chunks/events-DY2qn8Q0.cjs +2 -0
  25. package/dist/chunks/{events-C3tg6XPm.cjs.map → events-DY2qn8Q0.cjs.map} +1 -1
  26. package/dist/chunks/getNetworkFeeSignature-DqKLslZc.cjs +2 -0
  27. package/dist/chunks/getNetworkFeeSignature-DqKLslZc.cjs.map +1 -0
  28. package/dist/chunks/getNetworkFeeSignature-FuDJWrMC.js +38 -0
  29. package/dist/chunks/getNetworkFeeSignature-FuDJWrMC.js.map +1 -0
  30. package/dist/chunks/statusConstants-D4DN05kK.cjs +2 -0
  31. package/dist/chunks/{statusConstants-BPtrxbYC.cjs.map → statusConstants-D4DN05kK.cjs.map} +1 -1
  32. package/dist/chunks/{statusConstants-8pqtLXvX.js → statusConstants-DLrd03gT.js} +3 -3
  33. package/dist/chunks/{statusConstants-8pqtLXvX.js.map → statusConstants-DLrd03gT.js.map} +1 -1
  34. package/dist/chunks/storeNetworkFeeSignature-BaG3AU8U.cjs +2 -0
  35. package/dist/chunks/storeNetworkFeeSignature-BaG3AU8U.cjs.map +1 -0
  36. package/dist/chunks/storeNetworkFeeSignature-sCt4_nHr.js +52 -0
  37. package/dist/chunks/storeNetworkFeeSignature-sCt4_nHr.js.map +1 -0
  38. package/dist/common/chains.d.ts +3 -0
  39. package/dist/common/chains.d.ts.map +1 -1
  40. package/dist/core.cjs +1 -1
  41. package/dist/core.js +4 -4
  42. package/dist/evm.cjs +1 -1
  43. package/dist/evm.js +2 -2
  44. package/dist/index.cjs +1 -1
  45. package/dist/index.d.ts +1 -1
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +264 -263
  48. package/package.json +1 -1
  49. package/dist/chunks/BtcActions-hLkixDlL.cjs +0 -2
  50. package/dist/chunks/EvmActions-DIkhiG2i.cjs +0 -7
  51. package/dist/chunks/constants-D1FnS2Z8.js +0 -6
  52. package/dist/chunks/constants-D1FnS2Z8.js.map +0 -1
  53. package/dist/chunks/constants-ueShGH9R.cjs +0 -2
  54. package/dist/chunks/constants-ueShGH9R.cjs.map +0 -1
  55. package/dist/chunks/depositStatus-CeoqUgM5.cjs +0 -2
  56. package/dist/chunks/events-C3tg6XPm.cjs +0 -2
  57. package/dist/chunks/statusConstants-BPtrxbYC.cjs +0 -2
  58. package/dist/chunks/storeNetworkFeeSignature-Z0NcQyIn.cjs +0 -2
  59. package/dist/chunks/storeNetworkFeeSignature-Z0NcQyIn.cjs.map +0 -1
  60. package/dist/chunks/storeNetworkFeeSignature-ZdHcFmfP.js +0 -65
  61. package/dist/chunks/storeNetworkFeeSignature-ZdHcFmfP.js.map +0 -1
@@ -1,2 +0,0 @@
1
- "use strict";var z=Object.defineProperty;var H=(s,r,i)=>r in s?z(s,r,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[r]=i;var p=(s,r,i)=>H(s,typeof r!="symbol"?r+"":r,i);const Y=require("axios"),t=require("./statusConstants-BPtrxbYC.cjs"),A=require("./token-addresses-C7H9E4qz.cjs"),u=require("./index-BKzxeh1Y.cjs"),l=require("./tokens-C5rzCTTM.cjs"),D=require("./satoshi-CZEsHl5X.cjs"),c=require("./defi-registry-CyMKVT3z.cjs"),R=require("./getUserStakeAndBakeSignature-Cwwx89pR.cjs"),$=require("./config-BfX8lrdO.cjs"),q=require("viem"),U="ERR_NETWORK",G="This may be due to your Adblocker. Please disable any Adblocker and refresh the page to restore full functionality.";function j(s){const{code:r,message:i}=s;throw r===U?new Error(G):new Error(i)}const K={mempoolApiUrl:"https://mempool.space/signet"},Z={mempoolApiUrl:"https://mempool.space"},W=s=>s==="mainnet"?Z:K;async function X(s){const{mempoolApiUrl:r}=W(s),i=Math.floor(Date.now()/1e3),e=`${r}/api/v1/mining/blocks/timestamp/${i}`;try{const{data:a}=await Y.get(e);return a.height}catch(a){j(a)}}class J{async getCurrentBlockHeight(r){return X(r)}}function Q(){return{id:"btc",chain:"btc",register(){return new J}}}async function y(s){const{fetchDeposit:r,network:i,btcService:e,requiredConfirmations:a=6,onProgress:n,onComplete:o}=s,h=await r();if(!h)return;const d=h.blockHeight;if(typeof d!="number")return;const T=await e.getCurrentBlockHeight(i),_=Math.max(0,T-d),N=_>=a,w=h.isClaimed??!1,B={confirmations:_,requiredConfirmations:a,hasEnoughConfirmations:N,isClaimed:w,steps:{created:t.StepStatus.COMPLETE,verifying:N?t.StepStatus.COMPLETE:t.StepStatus.PENDING,issuing:w?t.StepStatus.COMPLETE:t.StepStatus.PENDING}};return n==null||n(B),w&&(o==null||o()),B}function f(s){if(s===R.SANCTIONED_ADDRESS)throw new t.LombardError(t.ValidationErrorCode.INVALID_PARAMETER,"Destination address is under sanctions")}class I extends t.BaseAction{constructor(i,e,a){super(a);p(this,"_amount");p(this,"_recipient");p(this,"_depositAddress");p(this,"_referralCode");p(this,"_chainId");this.ctx=i,this.params=e}get amount(){return this._amount}get recipient(){return this._recipient}get depositAddress(){return this._depositAddress}get referralCode(){return this._referralCode}get bitcoinNetwork(){return this.params.sourceChain===t.Chain.BITCOIN_MAINNET?"mainnet":"testnet"}get prepareSchema(){return t.objectType({amount:t.btcStakeAmountSchema,recipient:this.getAddressSchema(),referralCode:t.referralCodeSchema})}validatePrepareParams(i){return t.validatePrepareParams(this.prepareSchema,i,{destChain:this.params.destChain})}ensureRecipient(){if(!this._recipient)throw t.LombardError.missingParameter("recipient");return this._recipient}ensureAmount(){if(!this._amount)throw t.LombardError.missingParameter("amount");return this._amount}ensureDepositAddress(){if(!this._depositAddress)throw new t.LombardError(t.ValidationErrorCode.INVALID_PARAMETER,"Deposit address not generated. Call generateDepositAddress() first.");return this._depositAddress}getAuthRequiredMessage(){return"Authorization required. Complete the authorization step first."}ensureAuthorized(){if(!this.isAuthorized())throw new t.LombardError(t.ValidationErrorCode.INVALID_PARAMETER,this.getAuthRequiredMessage())}async resumeFromExistingDeposit(i){try{const e=await this.ctx.api.getDepositAddress({address:i,chainId:this.getChainId(),token:this.getExpectedToken(),partnerId:this.ctx.partner.getPartnerId()});return e?(this._depositAddress=e,!0):!1}catch{return!1}}async generateDepositAddressImpl(i){const e=this.getStatusConfig();return this.assertStatus(e.ready,"generateDepositAddress"),this.ensureAuthorized(),this._depositAddress?this._depositAddress:this.act(async()=>{const a=this.getDepositAddressParams(i),n=await this.ctx.api.generateDepositAddress(a);f(n),this._depositAddress=n;const o=this.getInitialSteps(),h=Object.fromEntries(Object.entries(o).map(([d],T)=>[d,T===0?t.StepStatus.COMPLETE:t.StepStatus.IDLE]));return this.emitProgress({status:e.addressReady,steps:h,metadata:{depositAddress:n}}),n},e.addressReady)}async executeImpl(){const i=this.getStatusConfig();return this.act(async()=>{this.assertStatus(i.addressReady,"execute"),this._depositAddress||await this.generateDepositAddressImpl();const e=this.ensureDepositAddress(),a=await this.trySendBitcoin(e);return a?{depositAddress:e,txHash:a}:{depositAddress:e}})}emitInitialProgress(){this.emitProgress({status:this.status,steps:this.getInitialSteps()})}async monitorDeposit(){const i=this._depositAddress,e=this._recipient;if(!i||!e)throw t.LombardError.missingParameter("depositAddress or recipient");return await y({network:this.bitcoinNetwork,btcService:this.ctx.btc,fetchDeposit:async()=>{const o=(await this.ctx.api.getDeposits(e)).find(h=>h.depositAddress===i);if(o)return{blockHeight:o.blockHeight,isClaimed:o.isClaimed}},onProgress:n=>{this.emitProgress({status:this.status,steps:n.steps,confirmations:n.confirmations,requiredConfirmations:n.requiredConfirmations,metadata:{isClaimed:n.isClaimed}})},onComplete:()=>{this.emitCompleted()}})}async trySendBitcoin(i){const e=this._amount;if(e)try{const a=await this.ctx.getProvider("bitcoin");if(!a)return;const n=a;if(n.sendBitcoin){const o=D.toSatoshi(e).toNumber();return n.sendBitcoin(i,o)}}catch{}}}function E(s,r=A.Token.LBTC){switch(s){case c.AssetId.LBTC:return A.Token.LBTC;case c.AssetId.BTCb:return A.Token.BTCb;default:return r}}async function tt(s,r){try{await s.request({method:"wallet_switchEthereumChain",params:[{chainId:`0x${r.toString(16)}`}]})}catch(i){const e=i;if(e.code===4902)try{await A.addChain({provider:s,chainId:r}),await s.request({method:"wallet_switchEthereumChain",params:[{chainId:`0x${r.toString(16)}`}]});return}catch(a){const n=a;throw n.code===4001?new t.LombardError(t.ValidationErrorCode.INVALID_PARAMETER,"User rejected adding chain to wallet."):new t.LombardError(t.ValidationErrorCode.INVALID_CHAIN,`Failed to add chain ${r} to wallet: ${n.message||"Unknown error"}`)}throw e.code===4001?new t.LombardError(t.ValidationErrorCode.INVALID_PARAMETER,"User rejected chain switch request."):new t.LombardError(t.ValidationErrorCode.INVALID_CHAIN,`Failed to switch to chain ${r}: ${e.message||"Unknown error"}`)}}async function et(s){const r=await s.request({method:"eth_chainId"});return parseInt(r,16)}async function C(s,r){await et(s)!==r&&await tt(s,r)}const st=[t.Chain.ETHEREUM,t.Chain.SEPOLIA],it={async getMintingFee(s,r){return s.capabilities.require("evm").getMintingFee(r,A.Token.BTCb)},async restoreFeeSignature(s,r,i){const e=await l.getTokenContractInfo(A.Token.BTCb,r,s.env),a=await s.api.getFeeSignature({address:i,chainId:r,tokenAddress:e.address});return!a.hasSignature||a.expirationDate&&new Date(Number(a.expirationDate)*1e3)<new Date?null:{hasSignature:!0,signature:a.signature,typedData:a.typedData}},async authorizeFee(s,{chainId:r,recipient:i,fee:e}){const a=s.capabilities.require("evm"),n=await s.getProvider("evm");if(!n)throw t.LombardError.providerMissing(String(r),"evm");await C(n,r);const o=D.toSatoshi(e).toString(),h=await l.getTokenContractInfo(A.Token.BTCb,r,s.env),d=await a.signNetworkFee({fee:o,account:i,chainId:r,provider:n,token:A.Token.BTCb});return await s.api.storeFeeSignature({address:i,signature:d.signature,typedData:d.typedData,tokenAddress:h.address}),{signature:d.signature,typedData:d.typedData}}},rt={chainType:"evm",routes:[{sourceChains:[t.Chain.BITCOIN_MAINNET],envs:[u.r.prod]},{sourceChains:[t.Chain.BITCOIN_SIGNET],envs:[u.r.stage,u.r.dev,u.r.testnet,u.r.ibc]}],destChains:t.getAllAssetChains(c.AssetId.BTCb).filter(s=>t.isEvmChain(s)),supportedAssetsOut:[c.AssetId.BTCb],addressSchema:t.evmAddressSchema,getFeeAuthConfig(s){return st.includes(s)?it:null},async signDestination(s,r,i){const e=s.capabilities.require("evm"),a=await s.getProvider("evm");if(!a)throw t.LombardError.providerMissing(String(i),"evm");return await C(a,i),{signature:(await e.signLbtcDestination({address:r,chainId:i,provider:a})).signature}}},m=s=>`${s}${t.CAIP2_SEPARATOR}`;function nt(s){return String(s).startsWith(m(t.CHAIN_PREFIXES.EIP155))}function b(s){return String(s).startsWith(m(t.CHAIN_PREFIXES.SOLANA))}function at(s){return String(s).startsWith(m(t.CHAIN_PREFIXES.SUI))}function ot(s){return String(s).startsWith(m(t.CHAIN_PREFIXES.STARKNET))}function ut(s){const r={[t.Chain.SOLANA_MAINNET]:"mainnet-beta",[t.Chain.SOLANA_DEVNET]:"devnet",[t.Chain.SOLANA_TESTNET]:"testnet","solana:mainnet-beta":"mainnet-beta","solana:devnet":"devnet","solana:testnet":"testnet"},i=r[s];if(!i)throw new t.LombardError(t.ValidationErrorCode.INVALID_CHAIN,`Unknown Solana chain: ${s}. Expected one of: ${Object.keys(r).join(", ")}`);return i}const dt={chainType:"solana",routes:[{sourceChains:[t.Chain.BITCOIN_MAINNET],envs:[u.r.prod]},{sourceChains:[t.Chain.BITCOIN_SIGNET],envs:[u.r.stage,u.r.dev,u.r.testnet]}],destChains:t.getAllAssetChains(c.AssetId.BTCb).filter(s=>b(s)),supportedAssetsOut:[c.AssetId.BTCb],addressSchema:t.solanaAddressSchema,getFeeAuthConfig:()=>null,async signDestination(s,r,i){const e=s.capabilities.require("solana"),a=ut(i),{signature:n}=await e.signLbtcDestination({network:a});return{signature:n}}},ct={evm:rt,solana:dt};function ht(s){return ct[s]}function pt(s,r){return s.destChains.includes(r)}function At(s,r){return s.supportedAssetsOut.includes(r)}function St(s,r,i){return s.routes.some(e=>e.envs.includes(i)&&(!r||e.sourceChains.includes(r)))}class k extends I{constructor(i,e){super(i,e,t.BtcActionStatus.IDLE);p(this,"config");p(this,"chainId");p(this,"authState",{authorized:!1});p(this,"feeAuthConfig",null);const a=t.getChainType(e.destChain),n=ht(a);if(!n)throw new t.LombardError(t.ValidationErrorCode.INVALID_CHAIN,`Unsupported destination chain type: ${a} (${e.destChain})`);if(!At(n,e.assetOut))throw new t.LombardError(t.ValidationErrorCode.INVALID_ASSET,`Asset ${e.assetOut} is not supported for BTC deposits. BTC Deposit produces BTC.b. For LBTC, use BtcStake instead.`);if(!pt(n,e.destChain))throw new t.LombardError(t.ValidationErrorCode.INVALID_CHAIN,`Destination chain ${e.destChain} is not supported for ${a} BTC deposits`);if(!St(n,e.sourceChain,i.env))throw t.LombardError.routeNotFound({assetOut:e.assetOut,sourceChain:e.sourceChain,destChain:e.destChain,env:i.env});this.config=n,this.chainId=t.parseChainIdentifier(e.destChain)}getAddressSchema(){return this.config.addressSchema}getStatusConfig(){return{idle:t.BtcActionStatus.IDLE,ready:t.BtcActionStatus.READY,addressReady:t.BtcActionStatus.ADDRESS_READY}}getInitialSteps(){return{created:t.StepStatus.IDLE,verifying:t.StepStatus.IDLE,issuing:t.StepStatus.IDLE}}isAuthorized(){return this.authState.authorized}getChainId(){return this.chainId}get mintingFee(){return this.authState.mintingFee}getDepositAddressParams(i){return{address:this.ensureRecipient(),chainId:this.chainId,signature:this.authState.signature,token:this.getExpectedToken(),eip712Data:this.authState.typedData,partnerId:this.ctx.partner.getPartnerId(),referrerCode:this._referralCode,captchaToken:i}}async generateDepositAddress(i){if(!this.authState.signature){const e=await this.config.signDestination(this.ctx,this.ensureRecipient(),this.chainId);this.authState.signature=e.signature,this.authState.typedData=e.typedData}return this.generateDepositAddressImpl(i)}getExpectedToken(){return E(this.params.assetOut,A.Token.BTCb)}getAuthRequiredMessage(){return this.feeAuthConfig?"Fee authorization required. Call authorizeFee() first.":"Address confirmation required. Call confirmAddress() first."}async prepare(i){return this.assertStatus(t.BtcActionStatus.IDLE,"prepare"),this.act(async()=>{const e=this.validatePrepareParams(i);if(this._amount=e.amount,this._recipient=e.recipient,this._referralCode=e.referralCode,this.feeAuthConfig=this.config.getFeeAuthConfig(this.params.destChain),await this.resumeFromExistingDeposit(e.recipient)){if(this.feeAuthConfig){const n=await this.feeAuthConfig.restoreFeeSignature(this.ctx,this.chainId,e.recipient);if(!(n!=null&&n.hasSignature)){this.authState.mintingFee=await this.feeAuthConfig.getMintingFee(this.ctx,this.chainId),this.updateStatus(t.BtcActionStatus.NEEDS_FEE_AUTHORIZATION),this.emitInitialProgress();return}n.signature&&(this.authState.signature=n.signature,this.authState.typedData=n.typedData),this.authState.authorized=!0}this.updateStatus(t.BtcActionStatus.ADDRESS_READY),this.emitInitialProgress();return}if(this.feeAuthConfig){const n=await this.feeAuthConfig.restoreFeeSignature(this.ctx,this.chainId,e.recipient);if(n!=null&&n.hasSignature){n.signature&&(this.authState.signature=n.signature,this.authState.typedData=n.typedData),this.authState.authorized=!0,this.updateStatus(t.BtcActionStatus.READY),this.emitInitialProgress();return}this.authState.mintingFee=await this.feeAuthConfig.getMintingFee(this.ctx,this.chainId),this.updateStatus(t.BtcActionStatus.NEEDS_FEE_AUTHORIZATION)}else this.updateStatus(t.BtcActionStatus.NEEDS_ADDRESS_CONFIRMATION);this.emitInitialProgress()})}async authorizeFee(){if(this.assertStatus([t.BtcActionStatus.NEEDS_FEE_AUTHORIZATION,t.BtcActionStatus.READY],"authorizeFee"),this.status===t.BtcActionStatus.READY)return;if(!this.feeAuthConfig)throw new t.LombardError(t.ValidationErrorCode.INVALID_PARAMETER,"Fee authorization is not required for this destination chain. Use confirmAddress() instead.");const i=this.ensureRecipient();if(!this.authState.mintingFee)throw new t.LombardError(t.ValidationErrorCode.INVALID_STATE,"Minting fee not available. Call prepare() first.");return this.act(async()=>{const e=await this.feeAuthConfig.authorizeFee(this.ctx,{chainId:this.chainId,recipient:i,fee:this.authState.mintingFee});this.authState.signature=e.signature,this.authState.typedData=e.typedData,this.authState.authorized=!0},t.BtcActionStatus.READY)}async confirmAddress(){if(this.assertStatus([t.BtcActionStatus.NEEDS_ADDRESS_CONFIRMATION,t.BtcActionStatus.READY],"confirmAddress"),this.status===t.BtcActionStatus.READY)return;if(this.feeAuthConfig)throw new t.LombardError(t.ValidationErrorCode.INVALID_PARAMETER,"This destination chain requires fee authorization. Use authorizeFee() instead.");const i=this.ensureRecipient();return this.act(async()=>{const e=await this.config.signDestination(this.ctx,i,this.chainId);this.authState.signature=e.signature,this.authState.typedData=e.typedData,this.authState.authorized=!0},t.BtcActionStatus.READY)}async execute(){return this.executeImpl()}async monitorDeposit(){return super.monitorDeposit()}}const gt=$.EARN_STAKE_AND_BAKE_CHAINS.map(s=>t.evmChainIdToChain(s)),Ct={chainType:"evm",routes:[{sourceChains:[t.Chain.BITCOIN_MAINNET],envs:[u.r.prod]},{sourceChains:[t.Chain.BITCOIN_SIGNET],envs:[u.r.stage,u.r.dev,u.r.testnet,u.r.ibc]}],destChains:gt,supportedAssetsOut:[c.AssetId.LBTC],supportedProtocols:yt(c.AssetId.LBTC),addressSchema:t.evmAddressSchema,async getStakeAndBakeFee(s,r,i){return s.capabilities.require("evm").getStakeAndBakeFee(r,i)},async authorizeStakeAndBake(s,{chainId:r,recipient:i,amount:e,vaultKey:a,token:n}){const o=s.capabilities.require("evm"),h=await s.getProvider("evm");if(!h)throw t.LombardError.providerMissing(String(r),"evm");await C(h,r);const d=await o.signStakeAndBake({value:e,account:i,chainId:r,provider:h,vaultKey:a,token:n});return await s.api.storeStakeAndBakeSignature({signature:d.signature,typedData:d.typedData}),{signature:d.signature,typedData:d.typedData}},async restoreStakeAndBakeSignature(s,r,i){try{const e=await R.getUserStakeAndBakeSignature({userDestinationAddress:i,chainId:r,env:s.env});return!(e.signature||e.expirationDate)||e.expirationDate&&Number(e.expirationDate)*1e3<Date.now()?null:{hasSignature:!0,signature:e.signature,depositAmount:e.depositAmount,expirationDate:e.expirationDate}}catch{return null}}},S=Ct;function Et(s){return S.destChains.includes(s)}function Dt(s){return S.supportedAssetsOut.includes(s)}function lt(s,r){return s?S.routes.some(i=>i.sourceChains.includes(s)&&i.envs.includes(r)):!0}function O(s){return s in c.DEFI_REGISTRY}function ft(s){if(!O(s)){const r=Object.keys(c.DEFI_REGISTRY).join(", ");throw new Error(`Unsupported protocol: ${s}. Supported protocols: ${r}`)}return s}function It(s){return Object.entries(c.DEFI_REGISTRY).filter(([r,i])=>s in i).map(([r])=>r)}const v={mainnet:[t.Chain.AVALANCHE],testnet:[t.Chain.AVALANCHE_FUJI]},mt={chainType:"evm",routes:[{sourceChains:[t.Chain.BITCOIN_MAINNET],envs:[u.r.prod]},{sourceChains:[t.Chain.BITCOIN_SIGNET],envs:[u.r.stage,u.r.dev,u.r.testnet,u.r.ibc]}],destChains:[...v.mainnet,...v.testnet],supportedAssetsOut:[c.AssetId.BTCb],supportedProtocols:It(c.AssetId.BTCb),addressSchema:t.evmAddressSchema,async getDepositAndDeployFee(s,r,i){return s.capabilities.require("evm").getStakeAndBakeFee(r,i)},async authorizeDepositAndDeploy(s,{chainId:r,recipient:i,amount:e,vaultKey:a,token:n}){const o=s.capabilities.require("evm"),h=await s.getProvider("evm");if(!h)throw t.LombardError.providerMissing(String(r),"evm");await C(h,r);const d=await o.signStakeAndBake({value:e,account:i,chainId:r,provider:h,vaultKey:a,token:n});return await s.api.storeStakeAndBakeSignature({signature:d.signature,typedData:d.typedData}),{signature:d.signature,typedData:d.typedData,approvalTxHash:d.approvalTxHash}}},g=mt;function Tt(s){return g.destChains.includes(s)}function wt(s){return g.supportedAssetsOut.includes(s)}function P(s){return s in c.DEFI_REGISTRY}function L(s){if(!P(s)){const r=Object.keys(c.DEFI_REGISTRY).join(", ");throw new Error(`Unsupported protocol: ${s}. Supported protocols: ${r}`)}return s}function yt(s){return Object.entries(c.DEFI_REGISTRY).filter(([r,i])=>s in i).map(([r])=>r)}function _t(s,r){return g.routes.some(i=>i.sourceChains.includes(s)&&i.envs.includes(r))}class F extends I{constructor(i,e){super(i,e,t.BtcActionStatus.IDLE);p(this,"chainId");p(this,"authState",{authorized:!1});if(!wt(e.assetOut))throw new t.LombardError(t.ValidationErrorCode.INVALID_ASSET,`Asset ${e.assetOut} is not supported for deposit and deploy. DepositAndDeploy produces BTC.b which is then deployed to a vault like Silo.`);if(!Tt(e.destChain))throw new t.LombardError(t.ValidationErrorCode.INVALID_CHAIN,`Destination chain ${e.destChain} is not supported for deposit and deploy. Supported chains: Avalanche, Avalanche Fuji`);if(!P(e.protocol))throw new t.LombardError(t.ValidationErrorCode.INVALID_PARAMETER,`Protocol ${e.protocol} is not supported for deposit and deploy. DepositAndDeploy with BTC.b only supports Silo protocol.`);const a=e.sourceChain??t.Chain.BITCOIN_MAINNET;if(!_t(a,i.env))throw t.LombardError.routeNotFound({assetOut:e.assetOut,sourceChain:a,destChain:e.destChain,env:i.env});const n=t.parseChainIdentifier(e.destChain);if(typeof n!="number"||!A.isValidChain(n))throw new t.LombardError(t.ValidationErrorCode.INVALID_CHAIN,`Unsupported EVM chain: ${e.destChain}`);this.chainId=n}getAddressSchema(){return g.addressSchema}getStatusConfig(){return{idle:t.BtcActionStatus.IDLE,ready:t.BtcActionStatus.READY,addressReady:t.BtcActionStatus.ADDRESS_READY}}getInitialSteps(){return{created:t.StepStatus.IDLE,verifying:t.StepStatus.IDLE,wrapping:t.StepStatus.IDLE,depositing:t.StepStatus.IDLE}}isAuthorized(){return this.authState.authorized}getChainId(){return this.chainId}getDepositAddressParams(i){return{address:this.ensureRecipient(),chainId:this.chainId,signature:this.authState.signature,token:this.getExpectedToken(),signatureData:this.authState.typedData,partnerId:this.ctx.partner.getPartnerId(),referrerCode:this._referralCode,captchaToken:i}}getExpectedToken(){return E(this.params.assetOut,A.Token.BTCb)}getAuthRequiredMessage(){return"Deposit authorization required. Call authorizeDeposit() first."}get fee(){return this.authState.fee}async prepare(i){return this.assertStatus(t.BtcActionStatus.IDLE,"prepare"),this.act(async()=>{const e=this.validatePrepareParams(i);this._amount=e.amount,this._recipient=e.recipient,this._referralCode=e.referralCode,this.authState.fee=await g.getDepositAndDeployFee(this.ctx,this.chainId,L(this.params.protocol)),this.updateStatus(t.BtcActionStatus.NEEDS_DEPLOY_AUTHORIZATION),this.emitInitialProgress()},t.BtcActionStatus.NEEDS_DEPLOY_AUTHORIZATION)}async authorizeDeposit(){if(this.assertStatus([t.BtcActionStatus.NEEDS_DEPLOY_AUTHORIZATION,t.BtcActionStatus.READY],"authorizeDeposit"),this.status===t.BtcActionStatus.READY)return;const i=this.ensureRecipient(),e=this.ensureAmount();return this.act(async()=>{const a=D.toSatoshi(e),n=E(this.params.assetOut,A.Token.BTCb),o=await g.authorizeDepositAndDeploy(this.ctx,{chainId:this.chainId,recipient:i,amount:a.toString(),vaultKey:L(this.params.protocol),token:n});this.authState.signature=o.signature,this.authState.typedData=o.typedData,this.authState.authorized=!0},t.BtcActionStatus.READY)}async generateDepositAddress(i){return this.assertStatus(t.BtcActionStatus.READY,"generateDepositAddress"),this.ensureAuthorized(),this._depositAddress?this._depositAddress:this.act(async()=>{const e=this.getDepositAddressParams(i),a=await this.ctx.api.generateDepositAddress(e);return f(a),this._depositAddress=a,this.emitProgress({status:t.BtcActionStatus.ADDRESS_READY,steps:{created:t.StepStatus.COMPLETE,verifying:t.StepStatus.IDLE,wrapping:t.StepStatus.IDLE,depositing:t.StepStatus.IDLE},metadata:{depositAddress:a}}),a},t.BtcActionStatus.ADDRESS_READY)}async execute(){return this.act(async()=>{this.assertStatus(t.BtcActionStatus.ADDRESS_READY,"execute"),this._depositAddress||await this.generateDepositAddress();const i=this.ensureDepositAddress(),e=await this.trySendBitcoin(i);return e?{depositAddress:i,txHash:e}:{depositAddress:i}})}async monitorDeposit(){const i=this._depositAddress,e=this._recipient;if(!i||!e)throw t.LombardError.missingParameter("depositAddress or recipient");return await y({network:this.bitcoinNetwork,btcService:this.ctx.btc,fetchDeposit:async()=>{const o=(await this.ctx.api.getDeposits(e)).find(h=>h.depositAddress===i);if(o)return{blockHeight:o.blockHeight,isClaimed:o.isClaimed}},onProgress:n=>{this.emitProgress({status:this.status,steps:{created:t.StepStatus.COMPLETE,verifying:n.hasEnoughConfirmations?t.StepStatus.COMPLETE:t.StepStatus.PENDING,wrapping:n.isClaimed?t.StepStatus.COMPLETE:t.StepStatus.PENDING,depositing:t.StepStatus.PENDING},confirmations:n.confirmations,requiredConfirmations:n.requiredConfirmations,metadata:{isClaimed:n.isClaimed}})},onComplete:()=>{this.emitCompleted()}})}}const Nt=[t.Chain.ETHEREUM,t.Chain.SEPOLIA],Bt={async getMintingFee(s,r){return s.capabilities.require("evm").getMintingFee(r)},async restoreFeeSignature(s,r,i){const e=await l.getTokenContractInfo(A.Token.LBTC,r,s.env),a=await s.api.getFeeSignature({address:i,chainId:r,tokenAddress:e.address});return!a.hasSignature||a.expirationDate&&new Date(Number(a.expirationDate)*1e3)<new Date?null:{hasSignature:!0,signature:a.signature,typedData:a.typedData}},async authorizeFee(s,{chainId:r,recipient:i,fee:e}){const a=s.capabilities.require("evm"),n=await s.getProvider("evm");if(!n)throw t.LombardError.providerMissing(String(r),"evm");await C(n,r);const o=D.toSatoshi(e).toString(),h=await l.getTokenContractInfo(A.Token.LBTC,r,s.env),d=await a.signNetworkFee({fee:o,account:i,chainId:r,provider:n,token:A.Token.LBTC});return await s.api.storeFeeSignature({address:i,signature:d.signature,typedData:d.typedData,tokenAddress:h.address}),{signature:d.signature,typedData:d.typedData}}},vt={chainType:"evm",routes:[{sourceChains:[t.Chain.BITCOIN_MAINNET],envs:[u.r.prod]},{sourceChains:[t.Chain.BITCOIN_SIGNET],envs:[u.r.testnet,u.r.stage,u.r.dev,u.r.ibc]}],destChains:t.getAllAssetChains(c.AssetId.LBTC).filter(s=>nt(s)),supportedAssetsOut:[c.AssetId.LBTC],addressSchema:t.evmAddressSchema,getFeeAuthConfig(s){return Nt.includes(s)?Bt:null},async getSignature(s,r,i){const e=s.capabilities.require("evm"),a=await s.getProvider("evm");if(!a)throw t.LombardError.providerMissing(String(i),"evm");return await C(a,i),e.signLbtcDestination({chainId:i,address:r,provider:a})}};function Lt(s){const r={[t.Chain.SOLANA_MAINNET]:"mainnet-beta",[t.Chain.SOLANA_DEVNET]:"devnet",[t.Chain.SOLANA_TESTNET]:"testnet","solana:mainnet-beta":"mainnet-beta","solana:devnet":"devnet","solana:testnet":"testnet"},i=r[s];if(!i)throw new t.LombardError(t.ValidationErrorCode.INVALID_CHAIN,`Unknown Solana chain: ${s}. Expected one of: ${Object.keys(r).join(", ")}`);return i}const Rt={chainType:"solana",routes:[{sourceChains:[t.Chain.BITCOIN_MAINNET],envs:[u.r.prod]},{sourceChains:[t.Chain.BITCOIN_SIGNET],envs:[u.r.testnet,u.r.stage,u.r.dev,u.r.ibc]}],destChains:t.getAllAssetChains(c.AssetId.LBTC).filter(s=>b(s)),supportedAssetsOut:[c.AssetId.LBTC],addressSchema:t.solanaAddressSchema,getFeeAuthConfig:()=>null,async getSignature(s,r,i){const e=s.capabilities.require("solana"),a=Lt(i),{signature:n}=await e.signLbtcDestination({network:a});return{signature:n}}},bt={chainType:"starknet",routes:[{sourceChains:[t.Chain.BITCOIN_MAINNET],envs:[u.r.prod]},{sourceChains:[t.Chain.BITCOIN_SIGNET],envs:[u.r.testnet,u.r.stage,u.r.dev,u.r.ibc]}],destChains:t.getAllAssetChains(c.AssetId.LBTC).filter(s=>ot(s)),supportedAssetsOut:[c.AssetId.LBTC],addressSchema:t.starknetAddressSchema,getFeeAuthConfig:()=>null,async getSignature(s,r,i){const e=s.capabilities.require("starknet"),{signature:a,pubKey:n}=await e.signLbtcDestination({chainId:i}),o=q.pad(r,{size:32});return{signature:a,pubKey:n,paddedAddress:o}}},kt={chainType:"sui",routes:[{sourceChains:[t.Chain.BITCOIN_MAINNET],envs:[u.r.prod]},{sourceChains:[t.Chain.BITCOIN_SIGNET],envs:[u.r.testnet,u.r.stage,u.r.dev,u.r.ibc]}],destChains:t.getAllAssetChains(c.AssetId.LBTC).filter(s=>at(s)),supportedAssetsOut:[c.AssetId.LBTC],addressSchema:t.suiAddressSchema,getFeeAuthConfig:()=>null,async getSignature(s,r,i){const e=s.capabilities.require("sui"),{signature:a}=await e.signLbtcDestination({chainId:i});return{signature:a}}},Ot={evm:vt,solana:Rt,sui:kt,starknet:bt};function Pt(s){return Ot[s]}function Ft(s,r,i){return r?s.routes.some(e=>e.sourceChains.includes(r)&&e.envs.includes(i)):!0}function xt(s,r){return s.destChains.includes(r)}function Mt(s,r){return s.supportedAssetsOut.includes(r)}class x extends I{constructor(i,e){super(i,e,t.BtcActionStatus.IDLE);p(this,"config");p(this,"chainId");p(this,"authState",{authorized:!1});p(this,"feeAuthConfig",null);const a=t.getChainType(e.destChain),n=Pt(a);if(!n)throw new t.LombardError(t.ValidationErrorCode.INVALID_CHAIN,`Unsupported destination chain type: ${a} (${e.destChain})`);if(!Mt(n,e.assetOut))throw new t.LombardError(t.ValidationErrorCode.INVALID_ASSET,`Asset ${e.assetOut} is not supported for BTC staking. BTC Stake produces LBTC. For BTC.b, use BtcDeposit instead.`);if(!xt(n,e.destChain))throw new t.LombardError(t.ValidationErrorCode.INVALID_CHAIN,`Destination chain ${e.destChain} is not supported for ${a}`);if(!Ft(n,e.sourceChain,i.env))throw t.LombardError.routeNotFound({assetOut:e.assetOut,sourceChain:e.sourceChain,destChain:e.destChain,env:i.env});this.config=n,this.chainId=t.parseChainIdentifier(e.destChain)}getAddressSchema(){return this.config.addressSchema}getStatusConfig(){return{idle:t.BtcActionStatus.IDLE,ready:t.BtcActionStatus.READY,addressReady:t.BtcActionStatus.ADDRESS_READY}}getInitialSteps(){return{created:t.StepStatus.IDLE,verifying:t.StepStatus.IDLE,issuing:t.StepStatus.IDLE}}isAuthorized(){return this.authState.authorized}getChainId(){return this.chainId}getDepositAddressParams(i){var n;const e=this.ensureRecipient(),a=this.getActiveSignature();if(!a)throw new t.LombardError(t.ValidationErrorCode.INVALID_PARAMETER,"Missing signature. Complete authorization first.");return{address:a.paddedAddress??e,chainId:this.chainId,signature:a.signature,token:this.getExpectedToken(),eip712Data:(n=this.authState.networkFee)==null?void 0:n.typedData,pubKey:a.pubKey,partnerId:this.ctx.partner.getPartnerId(),referrerCode:this._referralCode,captchaToken:i}}getExpectedToken(){return E(this.params.assetOut,A.Token.LBTC)}getAuthRequiredMessage(){return"Authorization required. Call authorize() first."}get mintingFee(){return this.authState.mintingFee}async prepare(i){return this.assertStatus(t.BtcActionStatus.IDLE,"prepare"),this.act(async()=>{const e=this.validatePrepareParams(i);if(this._amount=e.amount,this._recipient=e.recipient,this._referralCode=e.referralCode,this.feeAuthConfig=this.config.getFeeAuthConfig(this.params.destChain),await this.resumeFromExistingDeposit(e.recipient)){if(this.feeAuthConfig){const n=await this.feeAuthConfig.restoreFeeSignature(this.ctx,this.chainId,e.recipient);if(!(n!=null&&n.hasSignature)){this.authState.mintingFee=await this.feeAuthConfig.getMintingFee(this.ctx,this.chainId),this.updateStatus(t.BtcActionStatus.NEEDS_FEE_AUTHORIZATION),this.emitInitialProgress();return}n.signature&&(this.authState.networkFee={signature:n.signature,typedData:n.typedData}),this.authState.authorized=!0}this.updateStatus(t.BtcActionStatus.ADDRESS_READY),this.emitInitialProgress();return}if(this.feeAuthConfig){const n=await this.feeAuthConfig.restoreFeeSignature(this.ctx,this.chainId,e.recipient);if(n!=null&&n.hasSignature){n.signature&&(this.authState.networkFee={signature:n.signature,typedData:n.typedData}),this.authState.authorized=!0,this.updateStatus(t.BtcActionStatus.READY),this.emitInitialProgress();return}this.authState.mintingFee=await this.feeAuthConfig.getMintingFee(this.ctx,this.chainId),this.updateStatus(t.BtcActionStatus.NEEDS_FEE_AUTHORIZATION)}else this.updateStatus(t.BtcActionStatus.NEEDS_ADDRESS_CONFIRMATION);this.emitInitialProgress()})}async authorize(){if(this.assertStatus([t.BtcActionStatus.NEEDS_FEE_AUTHORIZATION,t.BtcActionStatus.NEEDS_ADDRESS_CONFIRMATION,t.BtcActionStatus.READY],"authorize"),this.status===t.BtcActionStatus.READY)return;const i=this.ensureRecipient(),e=this.feeAuthConfig!==null;return this.act(async()=>{if(e){const a=this.ensureMintingFee(),n=await this.feeAuthConfig.authorizeFee(this.ctx,{chainId:this.chainId,recipient:i,fee:a});this.authState.networkFee={signature:n.signature,typedData:n.typedData}}else this.authState.destinationSignature=await this.config.getSignature(this.ctx,i,this.chainId);this.authState.authorized=!0},t.BtcActionStatus.READY)}async generateDepositAddress(i){if(this.assertStatus(t.BtcActionStatus.READY,"generateDepositAddress"),this.ensureAuthorized(),this._depositAddress)return this._depositAddress;if(!this.getActiveSignature()){const e=await this.config.getSignature(this.ctx,this.ensureRecipient(),this.chainId);this.authState.destinationSignature=e}return this.act(async()=>{const e=this.getDepositAddressParams(i),a=await this.ctx.api.generateDepositAddress(e);return f(a),this._depositAddress=a,this.emitProgress({status:t.BtcActionStatus.ADDRESS_READY,steps:{created:t.StepStatus.COMPLETE,verifying:t.StepStatus.IDLE,issuing:t.StepStatus.IDLE},metadata:{depositAddress:a}}),a},t.BtcActionStatus.ADDRESS_READY)}async execute(){return this.executeImpl()}async monitorDeposit(){return super.monitorDeposit()}ensureMintingFee(){if(!this.authState.mintingFee)throw new t.LombardError(t.ValidationErrorCode.INVALID_PARAMETER,"Minting fee not fetched. Call prepare() first.");return this.authState.mintingFee}getActiveSignature(){var i;return(i=this.authState.networkFee)!=null&&i.signature?{signature:this.authState.networkFee.signature}:this.authState.destinationSignature}}class M extends I{constructor(i,e){super(i,e,t.BtcActionStatus.IDLE);p(this,"chainId");p(this,"authState",{authorized:!1});if(!Dt(e.assetOut))throw new t.LombardError(t.ValidationErrorCode.INVALID_ASSET,`Asset ${e.assetOut} is not supported for stake and deploy. StakeAndDeploy produces LBTC which is then deployed to a vault.`);if(!Et(e.destChain))throw new t.LombardError(t.ValidationErrorCode.INVALID_CHAIN,`Destination chain ${e.destChain} is not supported for stake and deploy`);if(!O(e.protocol))throw new t.LombardError(t.ValidationErrorCode.INVALID_PARAMETER,`Protocol ${e.protocol} is not supported for stake and deploy`);if(!lt(e.sourceChain,i.env))throw t.LombardError.routeNotFound({assetOut:e.assetOut,sourceChain:e.sourceChain,destChain:e.destChain,env:i.env});const a=t.parseChainIdentifier(e.destChain);if(typeof a!="number"||!A.isValidChain(a))throw new t.LombardError(t.ValidationErrorCode.INVALID_CHAIN,`Unsupported EVM chain: ${e.destChain}`);this.chainId=a}getAddressSchema(){return S.addressSchema}getStatusConfig(){return{idle:t.BtcActionStatus.IDLE,ready:t.BtcActionStatus.READY,addressReady:t.BtcActionStatus.ADDRESS_READY}}getInitialSteps(){return{created:t.StepStatus.IDLE,verifying:t.StepStatus.IDLE,issuing:t.StepStatus.IDLE,depositing:t.StepStatus.IDLE}}isAuthorized(){return this.authState.authorized}getChainId(){return this.chainId}getDepositAddressParams(i){return{address:this.ensureRecipient(),chainId:this.chainId,signature:this.authState.signature,token:this.getExpectedToken(),signatureData:this.authState.typedData,partnerId:this.ctx.partner.getPartnerId(),referrerCode:this._referralCode,captchaToken:i}}getExpectedToken(){return E(this.params.assetOut,A.Token.LBTC)}getAuthRequiredMessage(){return"Deposit authorization required. Call authorizeDeposit() first."}get fee(){return this.authState.fee}async prepare(i){return this.assertStatus(t.BtcActionStatus.IDLE,"prepare"),this.act(async()=>{const e=this.validatePrepareParams(i);if(this._amount=e.amount,this._recipient=e.recipient,this._referralCode=e.referralCode,this.authState.fee=await S.getStakeAndBakeFee(this.ctx,this.chainId,this.params.protocol),await this.resumeFromExistingDeposit(e.recipient)){const o=await S.restoreStakeAndBakeSignature(this.ctx,this.chainId,e.recipient);if(o!=null&&o.hasSignature){o.signature&&(this.authState.signature=o.signature),this.authState.authorized=!0,this.updateStatus(t.BtcActionStatus.ADDRESS_READY),this.emitInitialProgress();return}this.updateStatus(t.BtcActionStatus.NEEDS_DEPLOY_AUTHORIZATION),this.emitInitialProgress();return}const n=await S.restoreStakeAndBakeSignature(this.ctx,this.chainId,e.recipient);if(n!=null&&n.hasSignature){n.signature&&(this.authState.signature=n.signature),this.authState.authorized=!0,this.updateStatus(t.BtcActionStatus.READY),this.emitInitialProgress();return}this.updateStatus(t.BtcActionStatus.NEEDS_DEPLOY_AUTHORIZATION),this.emitInitialProgress()})}async authorizeDeposit(){if(this.assertStatus([t.BtcActionStatus.NEEDS_DEPLOY_AUTHORIZATION,t.BtcActionStatus.READY],"authorizeDeposit"),this.status===t.BtcActionStatus.READY)return;const i=this.ensureRecipient(),e=this.ensureAmount();return this.act(async()=>{const a=D.toSatoshi(e),n=this.params.assetIn??c.AssetId.BTC,o=await S.authorizeStakeAndBake(this.ctx,{chainId:this.chainId,recipient:i,amount:a.toString(),vaultKey:ft(this.params.protocol),token:n});this.authState.signature=o.signature,this.authState.typedData=o.typedData,this.authState.authorized=!0},t.BtcActionStatus.READY)}async generateDepositAddress(i){return this.assertStatus(t.BtcActionStatus.READY,"generateDepositAddress"),this.ensureAuthorized(),this._depositAddress?this._depositAddress:this.act(async()=>{const e=this.getDepositAddressParams(i),a=await this.ctx.api.generateDepositAddress(e);return f(a),this._depositAddress=a,this.emitProgress({status:t.BtcActionStatus.ADDRESS_READY,steps:{created:t.StepStatus.COMPLETE,verifying:t.StepStatus.IDLE,issuing:t.StepStatus.IDLE,depositing:t.StepStatus.IDLE},metadata:{depositAddress:a}}),a},t.BtcActionStatus.ADDRESS_READY)}async execute(){return this.act(async()=>{this.assertStatus(t.BtcActionStatus.ADDRESS_READY,"execute"),this._depositAddress||await this.generateDepositAddress();const i=this.ensureDepositAddress(),e=await this.trySendBitcoin(i);return e?{depositAddress:i,txHash:e}:{depositAddress:i}})}async monitorDeposit(){const i=this._depositAddress,e=this._recipient;if(!i||!e)throw t.LombardError.missingParameter("depositAddress or recipient");return await y({network:this.bitcoinNetwork,btcService:this.ctx.btc,fetchDeposit:async()=>{const o=(await this.ctx.api.getDeposits(e)).find(h=>h.depositAddress===i);if(o)return{blockHeight:o.blockHeight,isClaimed:o.isClaimed}},onProgress:n=>{this.emitProgress({status:this.status,steps:{created:t.StepStatus.COMPLETE,verifying:n.hasEnoughConfirmations?t.StepStatus.COMPLETE:t.StepStatus.PENDING,issuing:n.isClaimed?t.StepStatus.COMPLETE:t.StepStatus.PENDING,depositing:t.StepStatus.PENDING},confirmations:n.confirmations,requiredConfirmations:n.requiredConfirmations,metadata:{isClaimed:n.isClaimed}})},onComplete:()=>{this.emitCompleted()}})}}class V{constructor(r){p(this,"ctx");this.ctx=t.createBtcCoreContext(r)}stake(r){return new x(this.ctx,r)}stakeAndDeploy(r){return new M(this.ctx,r)}deposit(r){return new k(this.ctx,r)}depositAndDeploy(r){return new F(this.ctx,r)}}function Vt(s){return new V(s)}exports.BtcActions=V;exports.BtcDeposit=k;exports.BtcDepositAndDeploy=F;exports.BtcStake=x;exports.BtcStakeAndDeploy=M;exports.btcActions=Vt;exports.btcModule=Q;
2
- //# sourceMappingURL=BtcActions-hLkixDlL.cjs.map
@@ -1,7 +0,0 @@
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 p=(i,a,e)=>V(i,typeof a!="symbol"?a+"":a,e);const w=require("bignumber.js"),l=require("./withdrawEarn-CXfCmXJl.cjs"),m=require("./token-addresses-C7H9E4qz.cjs"),v=require("./tokens-C5rzCTTM.cjs"),t=require("./statusConstants-BPtrxbYC.cjs"),M=require("./storeNetworkFeeSignature-Z0NcQyIn.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"),A=require("./config-BfX8lrdO.cjs");class U{constructor(a){this.env=a}async getMintingFee(a,e){return(await l.getMintingFee({token:e||m.Token.LBTC,chainId:a,env:this.env})).toString()}async signNetworkFee(a){const e=await l.signNetworkFee({fee:new w(a.fee),account:a.account,chainId:a.chainId,provider:a.provider,env:this.env,token:a.token??m.Token.LBTC});return{signature:e.signature,typedData:e.typedData}}async getStakeAndBakeFee(a,e){return(await l.getStakeAndBakeFee({chainId:a,protocol:e})).toString()}async signStakeAndBake(a){const e=await l.signStakeAndBake({value:new w(a.value),account:a.account,chainId:a.chainId,provider:a.provider,env:this.env,vaultKey:a.vaultKey,token:a.token});return{signature:e.signature,typedData:e.typedData}}async signLbtcDestination(a){return{signature:await l.signLbtcDestinationAddr({account:a.address,chainId:a.chainId,provider:a.provider})}}}function $(){return{id:"evm",chain:"evm",register(i){return new U(i.env)}}}const G={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:u,rpcUrl:c,env:h}){const o=A.EARN_VAULT;if(!A.isEarnChain(r))throw new Error(`Unsupported chain id: ${r}. Please switch to one of the supported chains: ${o.chains.join(", ")}`);const C=v.makePublicClient({chainId:r,rpcUrl:c}),_=m.makeWalletClient({provider:u,chainId:r}),E=await v.getTokenInfo(e,r,h,c);if(!E)throw new Error(`Unknown deposit token: ${e}`);const S=w(i),g=L.toBigInt(v.toBaseDenomination(S,E.decimals)),T=await C.readContract({address:E.address,abi:E.abi,functionName:"allowance",args:[s,o.vaultContract.address]}),f=v.fromBaseDenomination(String(T),E.decimals),P=await C.readContract({address:E.address,abi:E.abi,functionName:"balanceOf",args:[s]}),B=v.fromBaseDenomination(String(P),E.decimals);if(S.isGreaterThan(B))throw new Error(`The deposit amount exceeds the account's balance.
2
- Deposit amount: ${S.toFixed()}
3
- Balance: ${B.toFixed()}`);if(S.isGreaterThan(f)){const R=`The deposit amount exceeds allowance.
4
- Deposit amount: ${S.toFixed()}
5
- Allowance: ${f.toFixed()}`;if(!a)throw new Error(R);console.info(R);try{console.info(`Trying to approve ${g}`);const{request:D}=await C.simulateContract({account:s,chain:m.CHAIN_ID_TO_VIEM_CHAIN_MAP[r],address:E.address,abi:E.abi,functionName:"approve",args:[o.vaultContract.address,g]}),O=await _.writeContract(D);console.info(`Approve tx hash: ${O}`),console.info(`Approved ${g} for ${o.vaultContract.address}`)}catch(D){const O=v.getErrorMessage(D);throw new Error(`Could not approve ${g} for ${o.vaultContract.address}.
6
- Reason: ${O}`)}}const{request:F}=await C.simulateContract({account:s,chain:m.CHAIN_ID_TO_VIEM_CHAIN_MAP[r],address:o.tellerContracts[r].address,abi:o.tellerContracts[r].abi,functionName:"deposit",args:[E.address,g,0n]});return await _.writeContract(F)}class z extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);p(this,"_amount");p(this,"_protocol");p(this,"_needsApproval",!1);p(this,"_txHash");p(this,"_account");p(this,"_chainId");this.ctx=e,this.params=s}get amount(){return this._amount}get protocol(){return this._protocol}get needsApproval(){return this._needsApproval}get txHash(){return this._txHash}isVedaBtcePath(){return this._protocol===d.DefiProtocol.Veda&&this._chainId!==void 0&&A.isBtceVaultChain(this._chainId)}getSpenderAddress(){return this.isVedaBtcePath()?A.BTCE_VAULT.contracts[this._chainId]:A.EARN_VAULT.vaultContract.address}async prepare(e){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const s=t.validatePrepareParams(this.prepareSchema,e);this._amount=s.amount,this._protocol=e.protocol,this.validateProtocol(e.protocol);const r=await this.ctx.getProvider("evm");if(!r)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const c=(await r.request({method:"eth_accounts"}))[0];if(!c)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this._account=c,this._chainId=t.parseChainIdentifier(this.params.sourceChain);const h=await v.getTokenInfo(m.Token.LBTC,this._chainId,this.ctx.env);if(!h)throw t.LombardError.invalidParameter("token","Could not get LBTC token info");const o=this.getSpenderAddress(),_=await v.makePublicClient({chainId:this._chainId}).readContract({address:h.address,abi:k.erc20Abi,functionName:"allowance",args:[c,o]}),E=new w(s.amount),S=v.toBaseDenomination(E,h.decimals),g=new w(String(_));this._needsApproval=S.isGreaterThan(g),this._needsApproval?(this.emitProgress({status:t.EvmOperationStatus.NEEDS_APPROVAL,steps:{approval:t.StepStatus.PENDING,deploying:t.StepStatus.IDLE}}),this.updateStatus(t.EvmOperationStatus.NEEDS_APPROVAL)):(this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,deploying:t.StepStatus.PENDING}}),this.updateStatus(t.EvmOperationStatus.READY))})}async approve(){return this.assertStatus(t.EvmOperationStatus.NEEDS_APPROVAL,"approve"),this.act(async()=>{if(!this._account||!this._chainId||!this._amount)throw t.LombardError.missingParameter("account, chainId, or amount");const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const s=await v.getTokenInfo(m.Token.LBTC,this._chainId,this.ctx.env);if(!s)throw t.LombardError.invalidParameter("token","Could not get LBTC token info");const r=new w(this._amount),u=L.toBigInt(v.toBaseDenomination(r,s.decimals)),c=this.getSpenderAddress(),h=v.makePublicClient({chainId:this._chainId}),o=m.makeWalletClient({provider:e,chainId:this._chainId}),{request:C}=await h.simulateContract({account:this._account,chain:m.CHAIN_ID_TO_VIEM_CHAIN_MAP[this._chainId],address:s.address,abi:k.erc20Abi,functionName:"approve",args:[c,u]}),_=await o.writeContract(C);await l.waitForTransactionReceipt(h,_,"LBTC deposit approval"),this._needsApproval=!1,this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,deploying:t.StepStatus.PENDING}})},t.EvmOperationStatus.READY)}async execute(){return this.assertStatus(t.EvmOperationStatus.READY,"execute"),this.act(async()=>{const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");if(!this._account||!this._chainId)throw t.LombardError.missingParameter("account or chainId");this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,deploying:t.StepStatus.PENDING}});let s;return this.isVedaBtcePath()?s=await l.depositEarn({token:m.Token.LBTC,amount:this._amount,receiver:this.params.recipient,approve:!1,account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env}):s=await 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(!G.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 I=(i=>(i.IDLE="idle",i.NEEDS_APPROVAL="needs-approval",i.READY="ready",i.BRIDGING="bridging",i.COMPLETED="completed",i))(I||{});class tt extends t.BaseAction{constructor(e,s){super(I.IDLE);p(this,"_amount");p(this,"_recipient");p(this,"_needsApproval",!1);p(this,"_txHash");p(this,"_claimData");this.ctx=e,this.params=s}get amount(){return this._amount}get recipient(){return this._recipient}get needsApproval(){return this._needsApproval}get txHash(){return this._txHash}setClaimData(e,s){this._claimData={data:e,proofSignature:s}}async prepare(e){return this.assertStatus(I.IDLE,"prepare"),this.act(async()=>{const s=t.validatePrepareParams(this.prepareSchema,e,{destChain:this.params.destChain});this._amount=s.amount,this._recipient=s.recipient,this._needsApproval=!1,this.emitProgress({status:I.READY,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.IDLE,bridging:t.StepStatus.IDLE}})},I.READY)}async approve(){return this.assertStatus(I.NEEDS_APPROVAL,"approve"),this.act(async()=>{this._needsApproval=!1},I.READY)}async execute(){if(this.assertStatus(I.READY,"execute"),!this._claimData)throw t.LombardError.missingParameter("claimData");return this.act(async()=>{const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const s=t.parseChainIdentifier(this.params.destChain);this.emitProgress({status:I.READY,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.PENDING,bridging:t.StepStatus.IDLE}});const r=await l.claimLBTC({provider:e,account:this._recipient,data:this._claimData.data,proofSignature:this._claimData.proofSignature,chainId:s,env:this.ctx.env});return this._txHash=r,this.emitProgress({status:I.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,execution:t.StepStatus.COMPLETE,bridging:t.StepStatus.IDLE}}),this.emitCompleted(),{txHash:r}},I.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,recipient: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 b(i,a,e,s){if(!Y.requiresAutoMintFee(i))return{requiresAuth:!1,hasValidSignature:!1,feeInSatoshis:null,feeFormatted:null,expirationDate:null};const r=await v.getTokenContractInfo(s,i,e),u=await M.getNetworkFeeSignature({address:a,chainId:i,env:e,tokenAddress:r.address}),c=u.expirationDate?new Date(Number(u.expirationDate)*1e3)<new Date:!1,h=u.hasSignature&&!c;let o=null,C=null;if(!h){const _=await l.getMintingFee({token:s,chainId:i,env:e});o=BigInt(_.times(1e8).toFixed(0)),C=_.toFixed(8)}return{requiresAuth:!0,hasValidSignature:h,feeInSatoshis:o,feeFormatted:C,expirationDate:u.expirationDate??null}}async function x(i){const{chainId:a,account:e,feeInSatoshis:s,provider:r,env:u,token:c}=i,h=await v.getTokenContractInfo(c,a,u),o=await l.signNetworkFee({fee:s,account:e,chainId:a,provider:r,env:u,token:c});return await M.storeNetworkFeeSignature({signature:o.signature,typedData:o.typedData,address:e,env:u,tokenAddress:h.address}),o}function N(){return{requiresAuth:!1,isAuthorized:!1,feeInSatoshis:null,feeFormatted:null,expirationDate:null}}class it extends t.BaseAction{constructor(e,s){super(t.EvmOperationStatus.IDLE);p(this,"_amount");p(this,"_recipient");p(this,"_needsApproval",!1);p(this,"_txHash");p(this,"_feeAuth",N());this.ctx=e,this.params=s}get amount(){return this._amount}get recipient(){return this._recipient}get needsApproval(){return this._needsApproval}get txHash(){return this._txHash}get feeAuth(){return this._feeAuth}async prepare(e){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const s=t.validatePrepareParams(this.prepareSchema,e,{destChain:this.params.destChain});this._amount=s.amount,this._recipient=s.recipient;const r=t.parseChainIdentifier(this.params.sourceChain),u=await this.ctx.getProvider("evm");if(!u)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const h=(await u.request({method:"eth_accounts"}))[0],o=await b(r,h,this.ctx.env,m.Token.BTCb);if(this._feeAuth={requiresAuth:o.requiresAuth,isAuthorized:o.hasValidSignature,feeInSatoshis:o.feeInSatoshis,feeFormatted:o.feeFormatted,expirationDate:o.expirationDate},o.requiresAuth&&!o.hasValidSignature){this.updateStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION),this.emitProgress({status:t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}});return}this._needsApproval=!1,this.updateStatus(t.EvmOperationStatus.READY),this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})})}async authorizeFee(){if(this.assertStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,"authorizeFee"),!this._feeAuth.feeInSatoshis)throw t.LombardError.missingParameter("feeInSatoshis");return this.act(async()=>{const e=t.parseChainIdentifier(this.params.sourceChain),s=await this.ctx.getProvider("evm");if(!s)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const u=(await s.request({method:"eth_accounts"}))[0];await x({chainId:e,account:u,feeInSatoshis:this._feeAuth.feeInSatoshis,provider:s,env:this.ctx.env,token:m.Token.BTCb}),this._feeAuth.isAuthorized=!0,this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})},t.EvmOperationStatus.READY)}async approve(){return this.assertStatus(t.EvmOperationStatus.NEEDS_APPROVAL,"approve"),this.act(async()=>{this._needsApproval=!1,this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})},t.EvmOperationStatus.READY)}async execute(){return this.assertStatus(t.EvmOperationStatus.READY,"execute"),this.act(async()=>{const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const r=(await e.request({method:"eth_accounts"}))[0];if(!r)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const u=t.parseChainIdentifier(this.params.sourceChain);this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.PENDING,releasing:t.StepStatus.IDLE}});const c=await l.redeemToken({provider:e,account:r,amount:this._amount,btcAddress:this._recipient,chainId:u,env:this.ctx.env,tokenIn:m.Token.BTCb,tokenOut:void 0});return this._txHash=c,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:t.StepStatus.PENDING}}),this.emitCompleted(),{txHash:c}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema,recipient: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);p(this,"_amount");p(this,"_txHash");p(this,"_feeAuth",N());p(this,"_account");p(this,"_needsApproval",!1);p(this,"_spenderAddress");this.ctx=e,this.params=s}get amount(){return this._amount}get txHash(){return this._txHash}get feeAuth(){return this._feeAuth}get needsApproval(){return this._needsApproval}async prepare(e){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const s=t.validatePrepareParams(this.prepareSchema,e);this._amount=s.amount;const r=await this.ctx.getProvider("evm");if(!r)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const c=(await r.request({method:"eth_accounts"}))[0];if(!c)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this._account=c;const h=t.parseChainIdentifier(this.params.sourceChain);if(ct(h)){const _=await v.getTokenContractInfo(m.Token.BTCb,h,this.ctx.env,m.AddressKind.Adapter);this._spenderAddress=_.address;const E=await l.getTokenAllowance({token:m.Token.BTCb,owner:c,spender:_.address,chainId:h,env:this.ctx.env}),S=new w(s.amount);if(this._needsApproval=E.isLessThan(S),this._needsApproval){this.emitProgress({status:t.EvmOperationStatus.NEEDS_APPROVAL,steps:{approval:t.StepStatus.PENDING,staking:t.StepStatus.IDLE}}),this.updateStatus(t.EvmOperationStatus.NEEDS_APPROVAL);return}}const o=await b(h,c,this.ctx.env,m.Token.LBTC);this._feeAuth={requiresAuth:o.requiresAuth,isAuthorized:o.hasValidSignature,feeInSatoshis:o.feeInSatoshis,feeFormatted:o.feeFormatted,expirationDate:o.expirationDate},o.requiresAuth&&!o.hasValidSignature?(this.emitProgress({status:t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,steps:{staking:t.StepStatus.IDLE}}),this.updateStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION)):(this.emitProgress({status:t.EvmOperationStatus.READY,steps:{staking:t.StepStatus.PENDING}}),this.updateStatus(t.EvmOperationStatus.READY))})}async approve(){return this.assertStatus(t.EvmOperationStatus.NEEDS_APPROVAL,"approve"),this.act(async()=>{if(!this._account||!this._spenderAddress||!this._amount)throw t.LombardError.missingParameter("account, spenderAddress, or amount");const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const s=t.parseChainIdentifier(this.params.sourceChain),r=await l.approveToken({account:this._account,token:m.Token.BTCb,spender:this._spenderAddress,amount:this._amount,chainId:s,provider:e,env:this.ctx.env}),u=v.makePublicClient({chainId:s,env:this.ctx.env});await l.waitForTransactionReceipt(u,r,"BTC.b approval"),this._needsApproval=!1,this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,staking:t.StepStatus.PENDING}})},t.EvmOperationStatus.READY)}async authorizeFee(){return this.assertStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,"authorizeFee"),this.act(async()=>{if(!this._feeAuth.feeInSatoshis)throw t.LombardError.missingParameter("feeInSatoshis");const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const s=t.parseChainIdentifier(this.params.sourceChain);await x({chainId:s,account:this._account,feeInSatoshis:this._feeAuth.feeInSatoshis,provider:e,env:this.ctx.env,token:m.Token.LBTC}),this._feeAuth={...this._feeAuth,isAuthorized:!0},this.emitProgress({status:t.EvmOperationStatus.READY,steps:{staking:t.StepStatus.PENDING}})},t.EvmOperationStatus.READY)}async execute(){return this.assertStatus(t.EvmOperationStatus.READY,"execute"),this.act(async()=>{const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const s=t.parseChainIdentifier(this.params.sourceChain),u=(await e.request({method:"eth_accounts"}))[0];if(!u)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");this.emitProgress({status:t.EvmOperationStatus.READY,steps:{staking:t.StepStatus.PENDING}});const c=await l.depositToken({amount:this._amount,tokenIn:m.Token.BTCb,tokenOut:m.Token.LBTC,account:u,chainId:s,provider:e,env:this.ctx.env});return this._txHash=c,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{staking:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:c}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema})}}function 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);p(this,"_amount");p(this,"_recipient");p(this,"_txHash");p(this,"_feeAuth",N());this.ctx=e,this.params=s}get amount(){return this._amount}get recipient(){return this._recipient}get txHash(){return this._txHash}get feeAuth(){return this._feeAuth}get isBtcbOutput(){return this.params.assetOut===d.AssetId.BTCb}async prepare(e){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const s=t.validatePrepareParams(this.prepareSchema,e,{destChain:this.params.destChain});this._amount=s.amount,this._recipient=s.recipient;const r=t.parseChainIdentifier(this.params.sourceChain);if(this.isBtcbOutput){const u=await this.ctx.getProvider("evm");if(!u)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const h=(await u.request({method:"eth_accounts"}))[0],o=await b(r,h,this.ctx.env,m.Token.BTCb);if(this._feeAuth={requiresAuth:o.requiresAuth,isAuthorized:o.hasValidSignature,feeInSatoshis:o.feeInSatoshis,feeFormatted:o.feeFormatted,expirationDate:o.expirationDate},o.requiresAuth&&!o.hasValidSignature){this.updateStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION),this.emitProgress({status:t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}});return}}this.updateStatus(t.EvmOperationStatus.READY),this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})})}async authorizeFee(){if(this.assertStatus(t.EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,"authorizeFee"),!this._feeAuth.feeInSatoshis)throw t.LombardError.missingParameter("feeInSatoshis");return this.act(async()=>{const e=t.parseChainIdentifier(this.params.sourceChain),s=await this.ctx.getProvider("evm");if(!s)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const u=(await s.request({method:"eth_accounts"}))[0];await x({chainId:e,account:u,feeInSatoshis:this._feeAuth.feeInSatoshis,provider:s,env:this.ctx.env,token:m.Token.BTCb}),this._feeAuth.isAuthorized=!0,this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})},t.EvmOperationStatus.READY)}async execute(){return this.assertStatus(t.EvmOperationStatus.READY,"execute"),this.act(async()=>{const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const r=(await e.request({method:"eth_accounts"}))[0];if(!r)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const u=t.parseChainIdentifier(this.params.sourceChain),c=this.params.assetOut===d.AssetId.BTCb;this.emitProgress({status:t.EvmOperationStatus.READY,steps:{burning:t.StepStatus.PENDING,releasing:t.StepStatus.IDLE}});const h=await l.redeemToken({provider:e,account:c?this._recipient:r,amount:this._amount,btcAddress:c?void 0:this._recipient,chainId:u,env:this.ctx.env,tokenIn:m.Token.LBTC,tokenOut:c?m.Token.BTCb:void 0});return this._txHash=h,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:c?t.StepStatus.COMPLETE:t.StepStatus.PENDING}}),this.emitCompleted(),{txHash:h}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){const e=this.params.assetOut===d.AssetId.BTC?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);p(this,"_txHash");p(this,"_account");p(this,"_chainId");this.ctx=e,this.params=s}get txHash(){return this._txHash}async prepare(){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{this.validateProtocol(this.params.protocol);const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.chain,"evm");const r=(await e.request({method:"eth_accounts"}))[0];if(!r)throw t.LombardError.providerMissing(this.params.chain,"evm");if(this._account=r,this._chainId=t.parseChainIdentifier(this.params.chain),!A.isEarnChain(this._chainId))throw new t.LombardError(t.WithdrawErrorCode.PROTOCOL_NOT_SUPPORTED,`Chain ${this.params.chain} does not support Veda vault withdrawals`,{chain:this.params.chain,protocol:this.params.protocol});this.emitProgress({status:t.EvmOperationStatus.READY,steps:{cancelling:t.StepStatus.PENDING}}),this.updateStatus(t.EvmOperationStatus.READY)})}async execute(){return this.assertStatus(t.EvmOperationStatus.READY,"execute"),this.act(async()=>{const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.chain,"evm");if(!this._account||!this._chainId)throw t.LombardError.missingParameter("account or chainId");this.emitProgress({status:t.EvmOperationStatus.READY,steps:{cancelling:t.StepStatus.PENDING}});const s=await l.cancelWithdrawInternal({account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env});return this._txHash=s,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{cancelling:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:s}},t.EvmOperationStatus.COMPLETED)}validateProtocol(e){if(!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);p(this,"_amount");p(this,"_protocol");p(this,"_needsApproval",!1);p(this,"_txHash");p(this,"_account");p(this,"_chainId");this.ctx=e,this.params=s}get amount(){return this._amount}get protocol(){return this._protocol}get needsApproval(){return this._needsApproval}get txHash(){return this._txHash}async prepare(e){return this.assertStatus(t.EvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const s=t.validatePrepareParams(this.prepareSchema,e);this._amount=s.amount,this._protocol=this.params.protocol,this.validateProtocol(this.params.protocol);const r=await this.ctx.getProvider("evm");if(!r)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const c=(await r.request({method:"eth_accounts"}))[0];if(!c)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");if(this._account=c,this._chainId=t.parseChainIdentifier(this.params.sourceChain),!A.isEarnChain(this._chainId))throw new t.LombardError(t.WithdrawErrorCode.PROTOCOL_NOT_SUPPORTED,`Chain ${this.params.sourceChain} does not support Veda vault withdrawals`,{chain:this.params.sourceChain,protocol:this._protocol});const h=A.EARN_VAULT,o=v.makePublicClient({chainId:this._chainId}),C=new w(s.amount),_=await o.readContract({address:h.lensContract.address,abi:h.lensContract.abi,functionName:"balanceOf",args:[c,h.vaultContract.address]}),E=v.fromBaseDenomination(String(_),h.decimals);let S=E;if(A.isBtceVaultChain(this._chainId)){const f=await o.readContract({address:A.BTCE_VAULT.contracts[this._chainId],abi:A.BTCE_VAULT.abi,functionName:"balanceOf",args:[c]}),P=v.fromBaseDenomination(String(f),h.decimals);S=E.plus(P)}if(C.isGreaterThan(S))throw new t.LombardError(t.WithdrawErrorCode.INSUFFICIENT_SHARES,`Insufficient vault shares. Requested: ${C.toFixed()}, Available: ${S.toFixed()}`,{requested:C.toFixed(),available:S.toFixed()});const g=await o.readContract({address:h.vaultContract.address,abi:h.vaultContract.abi,functionName:"allowance",args:[c,h.withdrawQueueContracts[this._chainId].address]}),T=v.fromBaseDenomination(String(g),h.decimals);this._needsApproval=C.isGreaterThan(T),this._needsApproval?(this.emitProgress({status:t.EvmOperationStatus.NEEDS_APPROVAL,steps:{approval:t.StepStatus.PENDING,queueing:t.StepStatus.IDLE}}),this.updateStatus(t.EvmOperationStatus.NEEDS_APPROVAL)):(this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,queueing:t.StepStatus.PENDING}}),this.updateStatus(t.EvmOperationStatus.READY))})}async approve(){return this.assertStatus(t.EvmOperationStatus.NEEDS_APPROVAL,"approve"),this.act(async()=>{if(!this._account||!this._chainId||!this._amount)throw t.LombardError.missingParameter("account, chainId, or amount");const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");const s=A.EARN_VAULT,r=new w(this._amount),u=L.toBigInt(v.toBaseDenomination(r,s.decimals)),c=v.makePublicClient({chainId:this._chainId}),h=m.makeWalletClient({provider:e,chainId:this._chainId}),o=this._chainId;if(A.isBtceVaultChain(this._chainId)){const E=await c.readContract({address:s.lensContract.address,abi:s.lensContract.abi,functionName:"balanceOf",args:[this._account,s.vaultContract.address]});if(E<u){const S=u-E,g=await c.readContract({address:A.BTCE_VAULT.contracts[this._chainId],abi:A.BTCE_VAULT.abi,functionName:"maxWithdraw",args:[this._account]});if(g<S)throw new t.LombardError(t.WithdrawErrorCode.INSUFFICIENT_SHARES,`BTCe wrapper cannot cover the required unwrap. needed=${S.toString()}, maxWithdraw=${g.toString()}.`,{needed:S.toString(),maxWithdraw:g.toString()});const{request:T}=await c.simulateContract({account:this._account,chain:m.CHAIN_ID_TO_VIEM_CHAIN_MAP[this._chainId],address:A.BTCE_VAULT.contracts[this._chainId],abi:A.BTCE_VAULT.abi,functionName:"withdraw",args:[S,this._account,this._account]}),f=await h.writeContract(T);await l.waitForTransactionReceipt(c,f,"BTCe unwrap")}}const{request:C}=await c.simulateContract({account:this._account,chain:m.CHAIN_ID_TO_VIEM_CHAIN_MAP[this._chainId],address:s.vaultContract.address,abi:s.vaultContract.abi,functionName:"approve",args:[s.withdrawQueueContracts[o].address,u]}),_=await h.writeContract(C);await l.waitForTransactionReceipt(c,_,"vault share approval"),this._needsApproval=!1,this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,queueing:t.StepStatus.PENDING}})},t.EvmOperationStatus.READY)}async execute(){return this.assertStatus(t.EvmOperationStatus.READY,"execute"),this.act(async()=>{const e=await this.ctx.getProvider("evm");if(!e)throw t.LombardError.providerMissing(this.params.sourceChain,"evm");if(!this._account||!this._chainId||!this._amount)throw t.LombardError.missingParameter("account, chainId, or amount");this.emitProgress({status:t.EvmOperationStatus.READY,steps:{approval:t.StepStatus.COMPLETE,queueing:t.StepStatus.PENDING}});let s;return A.isBtceVaultChain(this._chainId)?s=(await l.withdrawEarn({amount:this._amount,account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env})).queueTxHash:s=await l.queueWithdrawInternal({amount:this._amount,approve:!1,account:this._account,chainId:this._chainId,provider:e,env:this.ctx.env}),this._txHash=s,this.emitProgress({status:t.EvmOperationStatus.COMPLETED,steps:{approval:t.StepStatus.COMPLETE,queueing:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:s}},t.EvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.evmAmountSchema})}validateProtocol(e){if(!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){p(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 wt(i){return new H(i)}exports.EvmActions=H;exports.EvmDepositStatus=I;exports.evmActions=wt;exports.evmModule=$;
7
- //# sourceMappingURL=EvmActions-DIkhiG2i.cjs.map
@@ -1,6 +0,0 @@
1
- const _ = 2e-4, M = 1e-4;
2
- export {
3
- M as MIN_REDEEM_AMOUNT_BTC,
4
- _ as MIN_STAKE_AMOUNT_BTC
5
- };
6
- //# sourceMappingURL=constants-D1FnS2Z8.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants-D1FnS2Z8.js","sources":["../../src/common/constants.ts"],"sourcesContent":["export const MIN_STAKE_AMOUNT_BTC = 0.0002;\nexport const MIN_REDEEM_AMOUNT_BTC = 0.0001;\n"],"names":["MIN_STAKE_AMOUNT_BTC","MIN_REDEEM_AMOUNT_BTC"],"mappings":"AAAO,MAAMA,IAAuB,MACvBC,IAAwB;"}
@@ -1,2 +0,0 @@
1
- "use strict";exports.MIN_REDEEM_AMOUNT_BTC=1e-4;exports.MIN_STAKE_AMOUNT_BTC=2e-4;
2
- //# sourceMappingURL=constants-ueShGH9R.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants-ueShGH9R.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- "use strict";const S=require("axios"),_=require("bignumber.js"),p=require("./api-config-DkXqqfCK.cjs"),g=require("./blockchain-identifier-DWfC3Es2.cjs"),I=require("./token-addresses-C7H9E4qz.cjs"),T=require("./constants-ueShGH9R.cjs"),N=require("./satoshi-CZEsHl5X.cjs"),E=require("./tokens-C5rzCTTM.cjs"),s=require("./ReferralsClient-B65Nsk21.cjs");async function C({env:e,chainId:t=I.ChainId.ethereum,amount:i=N.toSatoshi(1)}){const{baseApiUrl:r}=p.getApiConfig(e),n=g.getChainNameById(t),{data:o}=await S.get(`api/v1/exchange/rate/${n}`,{baseURL:r,params:{amount:i}}),u=_(o.amount_out).toNumber(),c=_(i).dividedBy(o.amount_out).toNumber(),a=N.toSatoshi(T.MIN_STAKE_AMOUNT_BTC).toNumber();return{amountOut:u,exchangeRate:c,minAmount:a}}const b="api/v1/referral-system/referrer/";async function O({address:e,signature:t,eip712Data:i,referrerCode:r,pubKey:n,env:o}){const{baseApiUrl:u}=p.getApiConfig(o),c={referrer_code:r,signature:t,signature_typed_data:i,...n&&{public_key:n}};try{await S.post(`${b}${e}`,c,{baseURL:u});return}catch(a){const m=E.getErrorMessage(a);throw new Error(m)}}const f=6,R=T.MIN_STAKE_AMOUNT_BTC;function d(e,t){return!t||!e?0:Math.max(0,e-t+1)}function y(e,t,i=f){if(e===void 0||t===void 0)return null;const r=d(e,t),n=Math.min(100,Math.round(r/i*100));return{current:r,required:i,percentage:n,isComplete:r>=i}}function l(e,t,i=f){var a,m;if(e.sanctioned)return"restricted";if(e.isClaimed||e.claimTxHash)return"claimed";if(e.notarizationStatus===s.ENotarizationStatus.NOTARIZATION_STATUS_GMP_HANDLED)return"auto_claimed";const r=((m=(a=e.amount)==null?void 0:a.toNumber)==null?void 0:m.call(a))??Number(e.amount);if(r>0&&r<T.MIN_STAKE_AMOUNT_BTC)return"too_small";if(e.notarizationStatus===s.ENotarizationStatus.NOTARIZATION_STATUS_FAILED)return"failed";if(e.sessionState===s.ESessionState.SESSION_STATE_EXPIRED)return"expired";const n=!!e.proof&&!!e.rawPayload,o=e.notarizationStatus,u=d(t,e.blockHeight),c=t===void 0||u>=i;switch(o){case s.ENotarizationStatus.NOTARIZATION_STATUS_PENDING:case s.ENotarizationStatus.NOTARIZATION_STATUS_GMP_PENDING:case s.ENotarizationStatus.NOTARIZATION_STATUS_SUBMITTED:return t!==void 0&&!c?"pending_confirmations":"pending_notarization";case s.ENotarizationStatus.NOTARIZATION_STATUS_SESSION_APPROVED:return n?"claimable":"pending_notarization";case s.ENotarizationStatus.NOTARIZATION_STATUS_UNSPECIFIED:default:return t!==void 0&&!c?"pending_confirmations":"pending_notarization"}}function A(e){switch(e){case"pending_confirmations":return{label:"Pending Confirmations",severity:"warning",description:`Waiting for Bitcoin block confirmations (${f} required)`,isTerminal:!1,requiresAction:!1};case"pending_notarization":return{label:"Pending Notarization",severity:"info",description:"Confirmations complete, waiting for notarization service to generate proof",isTerminal:!1,requiresAction:!1};case"claimable":return{label:"Claimable",severity:"success",description:"Ready to mint - proof available, claim to receive tokens",isTerminal:!1,requiresAction:!0};case"claiming":return{label:"Claiming",severity:"info",description:"Claim transaction in progress",isTerminal:!1,requiresAction:!1};case"claimed":return{label:"Claimed",severity:"neutral",description:"Tokens have been minted to your address",isTerminal:!0,requiresAction:!1};case"auto_claimed":return{label:"Auto-Claimed",severity:"success",description:"Automatically claimed via cross-chain messaging (GMP)",isTerminal:!0,requiresAction:!1};case"expired":return{label:"Expired",severity:"error",description:"Fee signature expired, requires re-authorization",isTerminal:!1,requiresAction:!0};case"failed":return{label:"Failed",severity:"error",description:"Notarization failed - contact support",isTerminal:!0,requiresAction:!1};case"restricted":return{label:"Restricted",severity:"error",description:"This deposit is restricted or sanctioned",isTerminal:!0,requiresAction:!1};case"too_small":return{label:"Too Small",severity:"neutral",description:`Amount below minimum claimable amount (${T.MIN_STAKE_AMOUNT_BTC} BTC)`,isTerminal:!0,requiresAction:!1}}}function M(e,t){return l(e,t)==="claimable"}function q(e,t){const i=l(e,t);return i==="pending_confirmations"||i==="pending_notarization"}function v(e,t){const i=l(e,t);return A(i).isTerminal}function D(e,t){const i=l(e,t);return A(i).requiresAction}exports.MIN_CLAIM_AMOUNT_BTC=R;exports.REQUIRED_CONFIRMATIONS=f;exports.calcConfirmations=d;exports.depositRequiresAction=D;exports.getConfirmationProgress=y;exports.getDepositStatus=l;exports.getDepositStatusDisplay=A;exports.getLBTCExchangeRate=C;exports.isDepositClaimable=M;exports.isDepositPending=q;exports.isDepositTerminal=v;exports.setReferral=O;
2
- //# sourceMappingURL=depositStatus-CeoqUgM5.cjs.map
@@ -1,2 +0,0 @@
1
- "use strict";var H=Object.defineProperty;var F=(n,e,s)=>e in n?H(n,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):n[e]=s;var a=(n,e,s)=>F(n,typeof e!="symbol"?e+"":e,s);require("axios");const t=require("./statusConstants-BPtrxbYC.cjs"),G=require("./getUserStakeAndBakeSignature-Cwwx89pR.cjs"),S=require("./ReferralsClient-B65Nsk21.cjs"),I=require("./storeNetworkFeeSignature-Z0NcQyIn.cjs"),b=require("./BtcActions-hLkixDlL.cjs"),D=require("./EvmActions-DIkhiG2i.cjs"),m=require("./token-addresses-C7H9E4qz.cjs"),v=require("./satoshi-CZEsHl5X.cjs"),o=require("./index-BKzxeh1Y.cjs"),c=require("./defi-registry-CyMKVT3z.cjs"),Y=require("./get-exchange-ratio-DGztGO7i.cjs"),N=require("./get-vault-withdrawals-GHCAh3wp.cjs"),O=["debug","info","warn","error","none"];function T(n={}){const{level:e="debug",prefix:s="[Lombard SDK]",timestamp:r=!1}=n,i=O.indexOf(e),u=d=>O.indexOf(d)>=i&&e!=="none",h=d=>{if(r){const p=new Date().toISOString();return`${s} ${p} ${d}`}return`${s} ${d}`},g=d=>!d||Object.keys(d).length===0?[]:[d];return{debug(d,p){u("debug")&&console.debug(h(d),...g(p))},info(d,p){u("info")&&console.info(h(d),...g(p))},warn(d,p){u("warn")&&console.warn(h(d),...g(p))},error(d,p){u("error")&&console.error(h(d),...g(p))}}}function q(){return{debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}}}function U(){return{"X-SDK-Version":t.SDK_VERSION,"X-SDK-Runtime":t.SDK_RUNTIME}}class _{constructor(e=o.p){a(this,"apiVersion","v1");this.env=e}async deposits(e){return S.getDepositsByAddress({address:e,env:this.env})}async unstakes(e,s){return S.getUnstakesByAddress({address:e,env:this.env,options:s})}async points(e,s){return S.getPointsByAddress({address:e,env:this.env,season:s})}async exchangeRatio(){return Y.getExchangeRatio({env:this.env})}async depositAddress(e,s,r){return S.getDepositBtcAddress({address:e,chainId:s,env:this.env,partnerId:r==null?void 0:r.partnerId,token:r==null?void 0:r.token})}async vaultWithdrawals(e,s){const r=e;return s!=null&&s.chainId?N.getEarnWithdrawals({account:r,chainId:s.chainId,rpcUrl:s.rpcUrl,env:this.env}):N.getEarnWithdrawalsAllChains({account:r,rpcUrl:s==null?void 0:s.rpcUrl,env:this.env})}getApiVersion(){return this.apiVersion}}function K(n){if(!n.env)throw t.LombardError.missingParameter("env");const e={env:n.env,providers:n.providers||{}};return n.partner&&(V(n.partner),e.partner=n.partner),e}function V(n){if(typeof n!="object"||n===null)throw t.LombardError.invalidConfiguration("Partner configuration must be an object");const e=n;if(!e.partnerId||typeof e.partnerId!="string")throw t.LombardError.missingParameter("partner.partnerId");if(e.partnerId.trim().length===0)throw t.LombardError.invalidConfiguration("Partner ID cannot be empty")}class j{constructor(e){this.env=e}async generateDepositAddress(e){return G.generateDepositBtcAddress({address:e.address,chainId:e.chainId,signature:e.signature,token:e.token,eip712Data:e.eip712Data,signatureData:e.signatureData,pubKey:e.pubKey,env:this.env,partnerId:e.partnerId,referrerCode:e.referrerCode,captchaToken:e.captchaToken})}async getDepositAddress(e){try{return await S.getDepositBtcAddress({address:e.address,chainId:e.chainId,token:e.token,env:this.env,partnerId:e.partnerId})||void 0}catch{return}}async getDeposits(e){return(await S.getDepositsByAddress({address:e,env:this.env})).map(r=>{var i;return{depositAddress:r.depositAddress??"",blockHeight:r.blockHeight,isClaimed:r.isClaimed,txid:r.txHash,amount:(i=r.amount)==null?void 0:i.toString()}})}async storeFeeSignature(e){await I.storeNetworkFeeSignature({address:e.address,signature:e.signature,typedData:e.typedData,env:this.env,tokenAddress:e.tokenAddress})}async getFeeSignature(e){return I.getNetworkFeeSignature({address:e.address,chainId:e.chainId,env:this.env,tokenAddress:e.tokenAddress})}async storeStakeAndBakeSignature(e){await S.storeStakeAndBakeSignature({signature:e.signature,typedData:e.typedData,env:this.env})}}function $(){return{id:"api",register(n){return new j(n.env)}}}function W(n){const e=new Map,s=[b.btcModule(),D.evmModule(),$()];for(const r of s)e.set(r.id,r);if(n)for(const r of n)e.set(r.id,r);return Array.from(e.values())}function z(n,e){for(const s of n)for(const r of s.requiresProviders??[])if(!X(e,r))throw t.LombardError.providerMissing(r,r)}function X(n,e){var s;return!!((s=n.providers)!=null&&s[e])}function P(n){const e=K(n),s=W(n.modules);z(s,e);let r=n.logger;return!r&&n.debug&&(r=T({level:"debug"})),{...e,modules:s,logger:r}}function E(n){switch(n){case"prod":return"mainnet-beta";case"testnet":case"stage":case"dev":case"ibc":default:return"devnet"}}function L(n){switch(n){case"prod":return m.SOLANA_MAINNET_CHAIN;case"testnet":case"stage":case"dev":case"ibc":default:return m.SOLANA_DEVNET_CHAIN}}const x={routes:[{sourceChains:[t.Chain.SOLANA_MAINNET],destChain:t.Chain.BITCOIN_MAINNET,assetIn:c.AssetId.BTCb,assetOut:c.AssetId.BTC,envs:[o.r.prod]},{sourceChains:[t.Chain.SOLANA_DEVNET],destChain:t.Chain.BITCOIN_SIGNET,assetIn:c.AssetId.BTCb,assetOut:c.AssetId.BTC,envs:[o.r.testnet,o.r.stage,o.r.dev]}],recipientSchema:t.bitcoinAddressSchema};function Z(n,e,s,r,i){return x.routes.some(u=>u.sourceChains.includes(n)&&u.destChain===e&&u.assetIn===s&&u.assetOut===r&&u.envs.includes(i))}class J extends t.BaseAction{constructor(s,r){super(t.NonEvmOperationStatus.IDLE);a(this,"_amount");a(this,"_recipient");a(this,"_txHash");if(this.ctx=s,this.params=r,!Z(r.sourceChain,r.destChain,r.assetIn,r.assetOut,s.env))throw t.LombardError.routeNotFound({assetOut:r.assetOut,sourceChain:r.sourceChain,destChain:r.destChain,env:s.env})}get amount(){return this._amount}get recipient(){return this._recipient}get txHash(){return this._txHash}async prepare(s){return this.assertStatus(t.NonEvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const r=t.validatePrepareParams(this.prepareSchema,s,{destChain:this.params.destChain});this._amount=r.amount,this._recipient=r.recipient,this.emitProgress({status:t.NonEvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})},t.NonEvmOperationStatus.READY)}async execute(){return this.assertStatus(t.NonEvmOperationStatus.READY,"execute"),this.act(async()=>{const s=this._amount,r=this._recipient;if(!s||!r)throw t.LombardError.missingParameter("amount or recipient");this.emitProgress({status:t.NonEvmOperationStatus.READY,steps:{burning:t.StepStatus.PENDING,releasing:t.StepStatus.IDLE}});const i=v.toSatoshi(s).toString(),u=E(this.ctx.env),h=m.getSolanaTokenAddress(L(this.ctx.env),this.ctx.env,m.Token.BTCb);if(!h)throw t.LombardError.missingParameter("Solana BTC.b mint for this environment");const{signature:g}=await this.ctx.solana.redeemForBtc({amount:i,btcAddress:r,network:u,env:this.ctx.env,tokenMint:h});return this._txHash=g,this.emitProgress({status:t.NonEvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:g}},t.NonEvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.amountSchema,recipient:x.recipientSchema})}}const y={routes:[{chain:t.Chain.SOLANA_MAINNET,assetIn:c.AssetId.BTCb,assetOut:c.AssetId.LBTC,envs:[o.r.prod]},{chain:t.Chain.SOLANA_DEVNET,assetIn:c.AssetId.BTCb,assetOut:c.AssetId.LBTC,envs:[o.r.stage,o.r.dev,o.r.testnet]}],recipientSchema:t.solanaAddressSchema};function Q(n,e,s,r){return y.routes.some(i=>i.chain===n&&i.assetIn===e&&i.assetOut===s&&i.envs.includes(r))}class tt extends t.BaseAction{constructor(s,r){super(t.NonEvmOperationStatus.IDLE);a(this,"_amount");a(this,"_recipient");a(this,"_txHash");a(this,"env");if(this.ctx=s,this.params=r,this.env=s.env,!Q(r.chain,r.assetIn,r.assetOut,this.env))throw t.LombardError.routeNotFound({assetOut:r.assetOut,chain:r.chain,env:this.env})}get amount(){return this._amount}get recipient(){return this._recipient}get txHash(){return this._txHash}async prepare(s){return this.assertStatus(t.NonEvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const r=t.validatePrepareParams(this.prepareSchema,s,{destChain:this.params.chain});this._amount=r.amount,this._recipient=r.recipient,this.emitProgress({status:t.NonEvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,minting:t.StepStatus.IDLE}})},t.NonEvmOperationStatus.READY)}async execute(){return this.assertStatus(t.NonEvmOperationStatus.READY,"execute"),this.act(async()=>{const s=this._amount,r=this._recipient;if(!s||!r)throw t.LombardError.missingParameter("amount or recipient");this.emitProgress({status:t.NonEvmOperationStatus.READY,steps:{burning:t.StepStatus.PENDING,minting:t.StepStatus.IDLE}});const i=v.toSatoshi(s).toString(),u=E(this.env),{signature:h}=await this.ctx.solana.deposit({amount:i,recipient:r,network:u,env:this.env});return this._txHash=h,this.emitProgress({status:t.NonEvmOperationStatus.CONFIRMING,steps:{burning:t.StepStatus.COMPLETE,minting:t.StepStatus.PENDING},txHash:h}),this.emitCompleted(),{txHash:h}},t.NonEvmOperationStatus.CONFIRMING)}get prepareSchema(){return t.objectType({amount:t.amountSchema,recipient:y.recipientSchema})}}const w={routes:[{sourceChains:[t.Chain.SOLANA_MAINNET],destChain:t.Chain.BITCOIN_MAINNET,assetIn:c.AssetId.LBTC,assetOut:c.AssetId.BTC,envs:[o.r.prod]},{sourceChains:[t.Chain.SOLANA_DEVNET],destChain:t.Chain.BITCOIN_SIGNET,assetIn:c.AssetId.LBTC,assetOut:c.AssetId.BTC,envs:[o.r.testnet,o.r.stage,o.r.dev,o.r.ibc]}],recipientSchema:t.bitcoinAddressSchema},k={routes:[{sourceChains:[t.Chain.SOLANA_MAINNET],destChain:t.Chain.SOLANA_MAINNET,assetIn:c.AssetId.LBTC,assetOut:c.AssetId.BTCb,envs:[o.r.prod]},{sourceChains:[t.Chain.SOLANA_DEVNET],destChain:t.Chain.SOLANA_DEVNET,assetIn:c.AssetId.LBTC,assetOut:c.AssetId.BTCb,envs:[o.r.stage,o.r.dev,o.r.testnet]}],recipientSchema:t.solanaAddressSchema},et=[...w.routes,...k.routes];function st(n,e,s,r,i){return et.some(u=>u.sourceChains.includes(n)&&u.destChain===e&&u.assetIn===s&&u.assetOut===r&&u.envs.includes(i))}class nt extends t.BaseAction{constructor(s,r){super(t.NonEvmOperationStatus.IDLE);a(this,"_amount");a(this,"_recipient");a(this,"_txHash");a(this,"isBtcbOutput");if(this.ctx=s,this.params=r,this.isBtcbOutput=r.assetOut===c.AssetId.BTCb,!st(r.sourceChain,r.destChain,r.assetIn,r.assetOut,s.env))throw t.LombardError.routeNotFound({assetOut:r.assetOut,sourceChain:r.sourceChain,destChain:r.destChain,env:s.env})}get amount(){return this._amount}get recipient(){return this._recipient}get txHash(){return this._txHash}async prepare(s){return this.assertStatus(t.NonEvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const r=t.validatePrepareParams(this.prepareSchema,s,{destChain:this.params.destChain});this._amount=r.amount,this._recipient=r.recipient,this.emitProgress({status:t.NonEvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})},t.NonEvmOperationStatus.READY)}async execute(){return this.assertStatus(t.NonEvmOperationStatus.READY,"execute"),this.act(async()=>{const s=this._amount,r=this._recipient;if(!s||!r)throw t.LombardError.missingParameter("amount or recipient");this.emitProgress({status:t.NonEvmOperationStatus.READY,steps:{burning:t.StepStatus.PENDING,releasing:t.StepStatus.IDLE}});const i=v.toSatoshi(s).toString(),u=E(this.ctx.env);let h;if(this.isBtcbOutput)({signature:h}=await this.ctx.solana.redeem({amount:i,recipient:r,network:u,env:this.ctx.env}));else{const g=m.getSolanaTokenAddress(L(this.ctx.env),this.ctx.env,m.Token.LBTC);if(!g)throw t.LombardError.missingParameter("Solana LBTC mint for this environment");({signature:h}=await this.ctx.solana.redeemForBtc({amount:i,btcAddress:r,network:u,env:this.ctx.env,tokenMint:g}))}return this._txHash=h,this.emitProgress({status:t.NonEvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:t.StepStatus.COMPLETE}}),this.emitCompleted(),{txHash:h}},t.NonEvmOperationStatus.COMPLETED)}get prepareSchema(){const s=this.isBtcbOutput?k:w;return t.objectType({amount:t.amountSchema,recipient:s.recipientSchema})}}function rt(n){const s=new t.CapabilityRegistry(n.modules,n).require("solana");return{env:n.env,partner:new t.PartnerConfiguration(n.partner),getProvider:async r=>{const i=t.getProviderGetter(n.providers,r);if(i)return i()},solana:s}}class C{constructor(e){a(this,"_ctx",null);this.config=e}get ctx(){return this._ctx||(this._ctx=rt(this.config)),this._ctx}stake(e){return new tt(this.ctx,e)}unstake(e){return new nt(this.ctx,e)}redeem(e){return new J(this.ctx,e)}}function it(n){return new C(n)}const B={routes:[{sourceChains:[t.Chain.STARKNET_MAINNET],destChain:t.Chain.BITCOIN_MAINNET,envs:[o.r.prod]},{sourceChains:[t.Chain.STARKNET_SEPOLIA],destChain:t.Chain.BITCOIN_SIGNET,envs:[o.r.testnet,o.r.stage,o.r.dev,o.r.ibc]}],recipientSchema:t.bitcoinAddressSchema};function at(n,e){return B.routes.some(s=>s.sourceChains.includes(n)&&s.envs.includes(e))}class ot extends t.BaseAction{constructor(s,r){super(t.NonEvmOperationStatus.IDLE);a(this,"_amount");a(this,"_recipient");a(this,"_txHash");a(this,"env");if(this.ctx=s,this.params=r,this.env=s.env,!at(r.sourceChain,this.env))throw t.LombardError.routeNotFound({assetOut:r.assetOut,sourceChain:r.sourceChain,destChain:r.destChain,env:this.env})}get amount(){return this._amount}get recipient(){return this._recipient}get txHash(){return this._txHash}async prepare(s){return this.assertStatus(t.NonEvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const r=t.validatePrepareParams(this.prepareSchema,s,{destChain:this.params.destChain});this._amount=r.amount,this._recipient=r.recipient,this.emitProgress({status:t.NonEvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})},t.NonEvmOperationStatus.READY)}async execute(){return this.assertStatus(t.NonEvmOperationStatus.READY,"execute"),this.act(async()=>{const s=this._amount,r=this._recipient;if(!s||!r)throw t.LombardError.missingParameter("amount or recipient");this.emitProgress({status:t.NonEvmOperationStatus.READY,steps:{burning:t.StepStatus.PENDING,releasing:t.StepStatus.IDLE}});const{txHash:i}=await this.ctx.starknet.unstake({amount:s,btcAddress:r,env:this.env});return this._txHash=i,this.emitProgress({status:t.NonEvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:t.StepStatus.PENDING}}),this.emitCompleted(),{txHash:i}},t.NonEvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.amountSchema,recipient:B.recipientSchema})}}function ut(n){const s=new t.CapabilityRegistry(n.modules,n).require("starknet");return{env:n.env,partner:new t.PartnerConfiguration(n.partner),getProvider:async r=>{const i=t.getProviderGetter(n.providers,r);if(i)return i()},starknet:s}}class A{constructor(e){a(this,"_ctx",null);this.config=e}get ctx(){return this._ctx||(this._ctx=ut(this.config)),this._ctx}unstake(e){return new ot(this.ctx,e)}}function ct(n){return new A(n)}const M={routes:[{sourceChains:[t.Chain.SUI_MAINNET],destChain:t.Chain.BITCOIN_MAINNET,envs:[o.r.prod]},{sourceChains:[t.Chain.SUI_TESTNET],destChain:t.Chain.BITCOIN_SIGNET,envs:[o.r.testnet,o.r.stage,o.r.dev,o.r.ibc]}],recipientSchema:t.bitcoinAddressSchema};function ht(n,e){return M.routes.some(s=>s.sourceChains.includes(n)&&s.envs.includes(e))}function dt(n){switch(n){case t.Chain.SUI_MAINNET:return"sui:mainnet";case t.Chain.SUI_TESTNET:return"sui:testnet";default:return"sui:testnet"}}class gt extends t.BaseAction{constructor(s,r){super(t.NonEvmOperationStatus.IDLE);a(this,"_amount");a(this,"_recipient");a(this,"_txHash");a(this,"env");if(this.ctx=s,this.params=r,this.env=s.env,!ht(r.sourceChain,this.env))throw t.LombardError.routeNotFound({assetOut:r.assetOut,sourceChain:r.sourceChain,destChain:r.destChain,env:this.env})}get amount(){return this._amount}get recipient(){return this._recipient}get txHash(){return this._txHash}async prepare(s){return this.assertStatus(t.NonEvmOperationStatus.IDLE,"prepare"),this.act(async()=>{const r=t.validatePrepareParams(this.prepareSchema,s,{destChain:this.params.destChain});this._amount=r.amount,this._recipient=r.recipient,this.emitProgress({status:t.NonEvmOperationStatus.READY,steps:{burning:t.StepStatus.IDLE,releasing:t.StepStatus.IDLE}})},t.NonEvmOperationStatus.READY)}async execute(){return this.assertStatus(t.NonEvmOperationStatus.READY,"execute"),this.act(async()=>{const s=this._amount,r=this._recipient;if(!s||!r)throw t.LombardError.missingParameter("amount or recipient");this.emitProgress({status:t.NonEvmOperationStatus.READY,steps:{burning:t.StepStatus.PENDING,releasing:t.StepStatus.IDLE}});const i=dt(this.params.sourceChain),{txHash:u}=await this.ctx.sui.unstake({amount:s,btcAddress:r,chainId:i,env:this.env});return this._txHash=u,this.emitProgress({status:t.NonEvmOperationStatus.COMPLETED,steps:{burning:t.StepStatus.COMPLETE,releasing:t.StepStatus.PENDING}}),this.emitCompleted(),{txHash:u}},t.NonEvmOperationStatus.COMPLETED)}get prepareSchema(){return t.objectType({amount:t.amountSchema,recipient:M.recipientSchema})}}function pt(n){const s=new t.CapabilityRegistry(n.modules,n).require("sui");return{env:n.env,partner:new t.PartnerConfiguration(n.partner),getProvider:async r=>{const i=t.getProviderGetter(n.providers,r);if(i)return i()},sui:s}}class f{constructor(e){a(this,"_ctx",null);this.config=e}get ctx(){return this._ctx||(this._ctx=pt(this.config)),this._ctx}unstake(e){return new gt(this.ctx,e)}}function St(n){return new f(n)}class mt{constructor(e=o.p,s){a(this,"catalog");this.env=e,this.catalog=s??t.ASSET_CATALOG}getAddress(e,s){return t.getAssetAddress(e,this.env,s,this.catalog)}getDecimals(e){return t.getAssetDecimals(e,this.catalog)}getMetadata(e){return t.getAssetMetadata(e,this.catalog)}usesAssetRouter(e,s){return t.usesAssetRouter(e,this.env,s,this.catalog)}getAssetRouter(e,s){return t.getAssetRouter(e,this.env,s,this.catalog)}getBridgeAdapter(e,s){return t.getBridgeAdapter(e,this.env,s,this.catalog)}getPublicMarketMaker(e,s){return t.getPublicMarketMaker(e,this.env,s,this.catalog)}getByAddress(e,s){return t.getAssetByAddress(e,this.env,s,this.catalog)}isDeployed(e,s){return t.isAssetDeployed(e,this.env,s,this.catalog)}getChains(e){return t.getAssetChains(e,this.env,this.catalog)}getEnvironments(e,s){return t.getAssetEnvironments(e,s,this.catalog)}getSupportedAssets(){return t.getSupportedAssets(this.catalog)}getCatalog(){return this.catalog}}class R{constructor(e){a(this,"config");a(this,"env");a(this,"partnerConfig");a(this,"providerCache",new Map);a(this,"chain");a(this,"assets");a(this,"api");a(this,"referrals");a(this,"capabilities");this.config=e,this.env=e.env,this.partnerConfig=new t.PartnerConfiguration(e.partner),this.capabilities=new t.CapabilityRegistry(this.config.modules,this.config),this.chain={btc:new b.BtcActions(this.config),evm:new D.EvmActions(this.config),solana:new C(this.config),sui:new f(this.config),starknet:new A(this.config)},this.referrals=new S.ReferralsClient(this),this.assets=new mt(this.env),this.api=new _(this.env)}async getProvider(e){const s=e;if(this.providerCache.has(s))return this.providerCache.get(s);const r=t.getProviderGetter(this.config.providers,e);if(!r)throw t.LombardError.providerMissing(e,e);const i=await r();if(!i)throw new t.LombardError(t.ProviderErrorCode.PROVIDER_INITIALIZATION_FAILED,`Failed to initialize ${e} provider`);return this.providerCache.set(s,i),i}configure(e){this.partnerConfig.update(e)}registerAsset(e){throw new Error("Not implemented yet")}getPartnerConfig(){return this.partnerConfig}getPartnerId(){return this.partnerConfig.getPartnerId()}}const l=new Map;function lt(n){return l.has(n)||l.set(n,Promise.resolve(t.ASSET_CATALOG)),l.get(n)}async function vt(n){const e="modules"in n&&Array.isArray(n.modules)?n:P(n),s=await lt(e.env),r={...e,catalog:s};return new R(r)}function Et(n){return typeof n=="object"&&n!==null&&"request"in n&&typeof n.request=="function"}function Ct(n){return typeof n=="object"&&n!==null&&"getAddresses"in n&&typeof n.getAddresses=="function"}function At(n){return typeof n=="object"&&n!==null&&"publicKey"in n&&"signAndSendTransaction"in n}function ft(n){return typeof n=="object"&&n!==null&&"getAddress"in n&&"signAndExecuteTransactionBlock"in n}function It(n){return typeof n=="object"&&n!==null&&"address"in n&&"execute"in n}const Nt={Progress:"progress",StatusChange:"status-change",Completed:"completed",Failed:"failed",Error:"error"},Ot={Progress:"progress",StatusChange:"status-change",Completed:"completed",Failed:"failed",Error:"error"},bt={Progress:"progress",StatusChange:"status-change",Completed:"completed",Failed:"failed",Error:"error"},Dt={Progress:"progress",StatusChange:"status-change",Completed:"completed",Failed:"failed",Error:"error"},Tt={Progress:"progress",StatusChange:"status-change",Completed:"completed",Failed:"failed",Error:"error"},_t={Progress:"progress",StatusChange:"status-change",Completed:"completed",Failed:"failed",Error:"error"};exports.ApiNamespace=_;exports.BridgeEvent=_t;exports.DeployEvent=Tt;exports.DepositEvent=Ot;exports.LombardSDK=R;exports.RedeemEvent=bt;exports.SolanaActions=C;exports.StakeEvent=Nt;exports.StarknetActions=A;exports.SuiActions=f;exports.UnstakeEvent=Dt;exports.createConfig=P;exports.createConsoleLogger=T;exports.createLombardSDK=vt;exports.createSilentLogger=q;exports.getSdkHeaders=U;exports.isBtcProvider=Ct;exports.isEvmProvider=Et;exports.isSolanaProvider=At;exports.isStarknetProvider=It;exports.isSuiProvider=ft;exports.solanaActions=it;exports.starknetActions=ct;exports.suiActions=St;
2
- //# sourceMappingURL=events-C3tg6XPm.cjs.map
@@ -1,2 +0,0 @@
1
- "use strict";var nt=Object.defineProperty;var st=(n,e,t)=>e in n?nt(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var I=(n,e,t)=>st(n,typeof e!="symbol"?e+"":e,t);const _=require("./index-BKzxeh1Y.cjs"),F=require("./defi-registry-CyMKVT3z.cjs"),M=require("./token-addresses-C7H9E4qz.cjs"),rt=require("bitcoinjs-lib"),at=require("./constants-ueShGH9R.cjs");function it(n){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const t in n)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(n,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>n[t]})}}return e.default=n,Object.freeze(e)}const ye=it(rt),Be="5.0.3",ot="@lombard.finance/sdk",ct=typeof window<"u"&&typeof window.document<"u"?"browser":typeof process<"u"&&process.versions&&process.versions.node?"node":"unknown";var Me=(n=>(n.UNKNOWN_ERROR="unknown-error",n.INVALID_CONFIGURATION="invalid-configuration",n.OPERATION_TIMEOUT="operation-timeout",n.OPERATION_CANCELLED="operation-cancelled",n))(Me||{}),Ve=(n=>(n.PROVIDER_MISSING="provider-missing",n.PROVIDER_INITIALIZATION_FAILED="provider-initialization-failed",n.PROVIDER_CALL_FAILED="provider-call-failed",n.SIGNER_MISSING="signer-missing",n.USER_REJECTED="user-rejected",n.NETWORK_MISMATCH="network-mismatch",n))(Ve||{}),Ue=(n=>(n.ROUTE_NOT_FOUND="route-not-found",n.INVALID_ROUTE_DEFINITION="invalid-route-definition",n.UNSUPPORTED_CHAIN="unsupported-chain",n.UNSUPPORTED_ASSET="unsupported-asset",n.INCOMPATIBLE_ROUTE="incompatible-route",n.ENVIRONMENT_MISMATCH="environment-mismatch",n))(Ue||{}),P=(n=>(n.INVALID_ADDRESS="invalid-address",n.INVALID_AMOUNT="invalid-amount",n.AMOUNT_TOO_SMALL="amount-too-small",n.AMOUNT_TOO_LARGE="amount-too-large",n.INSUFFICIENT_BALANCE="insufficient-balance",n.INVALID_PARAMETER="invalid-parameter",n.MISSING_REQUIRED_PARAMETER="missing-required-parameter",n.INVALID_CHAIN="invalid-chain",n.INVALID_STATE="invalid-state",n.INVALID_ASSET="invalid-asset",n))(P||{}),Ze=(n=>(n.CONTRACT_CALL_FAILED="contract-call-failed",n.TRANSACTION_FAILED="transaction-failed",n.TRANSACTION_REVERTED="transaction-reverted",n.APPROVAL_FAILED="approval-failed",n.INSUFFICIENT_ALLOWANCE="insufficient-allowance",n.GAS_ESTIMATION_FAILED="gas-estimation-failed",n))(Ze||{}),$e=(n=>(n.INSUFFICIENT_SHARES="withdraw-insufficient-shares",n.INVALID_AMOUNT="withdraw-invalid-amount",n.NO_PENDING_WITHDRAWAL="withdraw-no-pending",n.WITHDRAWAL_ALREADY_FULFILLED="withdraw-already-fulfilled",n.WITHDRAWAL_EXPIRED="withdraw-expired",n.WITHDRAWAL_NOT_FOUND="withdraw-not-found",n.PROTOCOL_NOT_SUPPORTED="withdraw-protocol-not-supported",n.INSUFFICIENT_LIQUIDITY="withdraw-insufficient-liquidity",n))($e||{});class T extends Error{constructor(t,s,r){super(s);I(this,"code");I(this,"metadata");I(this,"sdkVersion",Be);I(this,"timestamp",new Date().toISOString());this.name="LombardError",this.code=t,this.metadata=r,Error.captureStackTrace&&Error.captureStackTrace(this,T)}toJSON(){return{name:this.name,code:this.code,message:this.message,sdkVersion:this.sdkVersion,timestamp:this.timestamp,...this.metadata&&{metadata:this.metadata},...this.stack&&{stack:this.stack}}}toSentryContext(){return{"sdk.version":this.sdkVersion,"error.code":this.code,"error.timestamp":this.timestamp,...this.metadata}}static invalidConfiguration(t){return new T("invalid-configuration",t)}static providerMissing(t,s){return new T("provider-missing",`${s} provider not configured for chain ${t}. Please provide a provider via SDK initialization.`,{chain:t,providerType:s})}static moduleMissing(t){return new T("invalid-parameter",`Module "${t}" is not registered. Install and register the corresponding package via createConfig({ modules: [...] }).`,{moduleId:t})}static providerCallFailed(t,s){const r=s instanceof Error?s.message:s;return new T("provider-call-failed",`Provider method ${t} failed: ${r}`,{method:t,cause:r})}static userRejected(t){return new T("user-rejected",`User rejected ${t}. Please try again and approve the transaction in your wallet.`,{operation:t})}static routeNotFound(t){return new T("route-not-found","No route found matching the provided parameters. Please verify the asset and chain combination is supported.",t)}static invalidRouteDefinition(t){return new T("invalid-route-definition",`Invalid route definition: ${t}`,{reason:t})}static unsupportedChain(t){return new T("unsupported-chain",`Chain ${t} is not supported in the current environment.`,{chain:t})}static invalidParameter(t,s){return new T("invalid-parameter",s,{parameter:t})}static invalidAddress(t,s){return new T("invalid-address",`Invalid address format: ${t}${s?` for chain ${s}`:""}`,{address:t,chain:s})}static invalidAmount(t){return new T("invalid-amount",t,{reason:t})}static amountTooSmall(t,s,r){return new T("amount-too-small",`Amount ${t} is below minimum ${s} ${r}`,{amount:t,minimum:s,asset:r})}static insufficientBalance(t,s,r){return new T("insufficient-balance",`Insufficient ${r} balance. Required: ${t}, Available: ${s}`,{required:t,available:s,asset:r})}static missingParameter(t){return new T("missing-required-parameter",`Required parameter "${t}" is missing`,{parameterName:t})}static transactionFailed(t,s){return new T("transaction-failed",`Transaction failed: ${s}`,{txHash:t,reason:s})}static transactionReverted(t,s){return new T("transaction-reverted",`Transaction reverted${s?`: ${s}`:""}`,{txHash:t,revertReason:s})}static approvalFailed(t,s){return new T("approval-failed",`Failed to approve ${t} for spender ${s}`,{token:t,spender:s})}}function Fe(n){return n instanceof T}function de(n){return Fe(n)?n:n instanceof Error?new T("unknown-error",n.message,{originalError:n.stack}):new T("unknown-error",String(n),{originalValue:n})}const p={BIP122:"bip122",EIP155:"eip155",SOLANA:"solana",STARKNET:"starknet",SUI:"sui",ZCASH:"zcash",RIPPLE:"ripple",DOGECOIN:"dogecoin",HYPERLIQUID:"hyperliquid"},oe=":",y=(n,e)=>`${n}${oe}${e}`,c={BITCOIN_MAINNET:y(p.BIP122,"000000000019d6689c085ae165831e93"),BITCOIN_SIGNET:y(p.BIP122,"00000008819873e925422c1ff0f99f7c"),ETHEREUM:y(p.EIP155,1),BASE:y(p.EIP155,8453),BASE_SEPOLIA:y(p.EIP155,84532),OPTIMISM:y(p.EIP155,10),POLYGON:y(p.EIP155,137),BSC:y(p.EIP155,56),BSC_TESTNET:y(p.EIP155,97),AVALANCHE:y(p.EIP155,43114),AVALANCHE_FUJI:y(p.EIP155,43113),BERACHAIN:y(p.EIP155,80094),BERACHAIN_BARTIO:y(p.EIP155,80084),BOB:y(p.EIP155,60808),CORN:y(p.EIP155,21e6),ETHERLINK:y(p.EIP155,42793),KATANA:y(p.EIP155,747474),MORPH:y(p.EIP155,2818),SONIC:y(p.EIP155,146),SONIC_TESTNET:y(p.EIP155,57054),SONIC_BLAZE_TESTNET:y(p.EIP155,57054),SWELL:y(p.EIP155,1923),TAC:y(p.EIP155,239),SEPOLIA:y(p.EIP155,11155111),HOLESKY:y(p.EIP155,17e3),MEGAETH:y(p.EIP155,4326),MONAD:y(p.EIP155,143),STABLE:y(p.EIP155,988),SOLANA_MAINNET:y(p.SOLANA,"5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"),SOLANA_DEVNET:y(p.SOLANA,"EtWTRABZaYq6iMfeYKouRu166VU2xqa1"),SOLANA_TESTNET:y(p.SOLANA,"4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z"),SUI_MAINNET:y(p.SUI,"mainnet"),SUI_TESTNET:y(p.SUI,"testnet"),SUI_DEVNET:y(p.SUI,"devnet"),STARKNET_MAINNET:y(p.STARKNET,"SN_MAIN"),STARKNET_SEPOLIA:y(p.STARKNET,"SN_SEPOLIA"),ZCASH_MAINNET:y(p.ZCASH,"mainnet"),ZCASH_TESTNET:y(p.ZCASH,"testnet"),RIPPLE_MAINNET:y(p.RIPPLE,"mainnet"),RIPPLE_TESTNET:y(p.RIPPLE,"testnet"),DOGECOIN_MAINNET:y(p.DOGECOIN,"mainnet"),DOGECOIN_TESTNET:y(p.DOGECOIN,"testnet"),HYPERLIQUID:y(p.HYPERLIQUID,"mainnet")};function dt(n){return Object.keys(c).find(e=>c[e]===n)??""}function ut(n){return typeof n=="string"&&Object.values(c).includes(n)}const $={[c.BITCOIN_MAINNET]:{name:"Bitcoin",type:"bitcoin",isTestnet:!1,explorerUrl:"https://mempool.space",nativeCurrency:"BTC",badgeVariant:"warning"},[c.BITCOIN_SIGNET]:{name:"Bitcoin Signet",type:"bitcoin",isTestnet:!0,explorerUrl:"https://mempool.space/signet",nativeCurrency:"BTC",badgeVariant:"warning"},[c.ETHEREUM]:{name:"Ethereum",type:"evm",isTestnet:!1,explorerUrl:"https://etherscan.io",nativeCurrency:"ETH",badgeVariant:"info"},[c.BASE]:{name:"Base",type:"evm",isTestnet:!1,explorerUrl:"https://basescan.org",nativeCurrency:"ETH",badgeVariant:"info"},[c.OPTIMISM]:{name:"Optimism",type:"evm",isTestnet:!1,explorerUrl:"https://optimistic.etherscan.io",nativeCurrency:"ETH",badgeVariant:"info"},[c.POLYGON]:{name:"Polygon",type:"evm",isTestnet:!1,explorerUrl:"https://polygonscan.com",nativeCurrency:"MATIC",badgeVariant:"info"},[c.BSC]:{name:"BNB Chain",type:"evm",isTestnet:!1,explorerUrl:"https://bscscan.com",nativeCurrency:"BNB",badgeVariant:"info"},[c.AVALANCHE]:{name:"Avalanche",type:"evm",isTestnet:!1,explorerUrl:"https://snowtrace.io",nativeCurrency:"AVAX",badgeVariant:"info"},[c.BERACHAIN]:{name:"Berachain",type:"evm",isTestnet:!1,explorerUrl:"https://beratrail.io",nativeCurrency:"BERA",badgeVariant:"info"},[c.BOB]:{name:"BOB",type:"evm",isTestnet:!1,explorerUrl:"https://explorer.gobob.xyz",nativeCurrency:"ETH",badgeVariant:"info"},[c.CORN]:{name:"Corn",type:"evm",isTestnet:!1,explorerUrl:"https://cornscan.io",nativeCurrency:"BTCN",badgeVariant:"info"},[c.ETHERLINK]:{name:"Etherlink",type:"evm",isTestnet:!1,explorerUrl:"https://explorer.etherlink.com",nativeCurrency:"XTZ",badgeVariant:"info"},[c.KATANA]:{name:"Katana",type:"evm",isTestnet:!1,explorerUrl:"https://explorer.katanarpc.com",nativeCurrency:"BTC.b",badgeVariant:"info"},[c.MORPH]:{name:"Morph",type:"evm",isTestnet:!1,explorerUrl:"https://explorer.morphl2.io",nativeCurrency:"ETH",badgeVariant:"info"},[c.SONIC]:{name:"Sonic",type:"evm",isTestnet:!1,explorerUrl:"https://sonicscan.org",nativeCurrency:"S",badgeVariant:"info"},[c.SWELL]:{name:"Swell",type:"evm",isTestnet:!1,explorerUrl:"https://explorer.swellnetwork.io",nativeCurrency:"ETH",badgeVariant:"info"},[c.TAC]:{name:"TAC",type:"evm",isTestnet:!1,explorerUrl:"https://explorer.tac.build",nativeCurrency:"TAC",badgeVariant:"info"},[c.MEGAETH]:{name:"MegaETH",type:"evm",isTestnet:!1,explorerUrl:"https://megaeth.blockscout.com",nativeCurrency:"ETH",badgeVariant:"info"},[c.MONAD]:{name:"Monad",type:"evm",isTestnet:!1,explorerUrl:"https://monadvision.com",nativeCurrency:"MONAD",badgeVariant:"info"},[c.STABLE]:{name:"Stable",type:"evm",isTestnet:!1,explorerUrl:"https://stablescan.xyz",nativeCurrency:"USD",badgeVariant:"info"},[c.BASE_SEPOLIA]:{name:"Base Sepolia",type:"evm",isTestnet:!0,explorerUrl:"https://sepolia.basescan.org",nativeCurrency:"ETH",badgeVariant:"secondary"},[c.BSC_TESTNET]:{name:"BNB Testnet",type:"evm",isTestnet:!0,explorerUrl:"https://testnet.bscscan.com",nativeCurrency:"BNB",badgeVariant:"secondary"},[c.AVALANCHE_FUJI]:{name:"Avalanche Fuji",type:"evm",isTestnet:!0,explorerUrl:"https://testnet.snowtrace.io",nativeCurrency:"AVAX",badgeVariant:"secondary"},[c.BERACHAIN_BARTIO]:{name:"Berachain Bartio",type:"evm",isTestnet:!0,explorerUrl:"https://bartio.beratrail.io",nativeCurrency:"BERA",badgeVariant:"secondary"},[c.SONIC_TESTNET]:{name:"Sonic Blaze Testnet",type:"evm",isTestnet:!0,explorerUrl:"https://testnet.sonicscan.org",nativeCurrency:"S",badgeVariant:"secondary"},[c.SEPOLIA]:{name:"Sepolia",type:"evm",isTestnet:!0,explorerUrl:"https://sepolia.etherscan.io",nativeCurrency:"ETH",badgeVariant:"secondary"},[c.HOLESKY]:{name:"Holesky",type:"evm",isTestnet:!0,explorerUrl:"https://holesky.etherscan.io",nativeCurrency:"ETH",badgeVariant:"secondary"},[c.SOLANA_MAINNET]:{name:"Solana",type:"solana",isTestnet:!1,explorerUrl:"https://solscan.io",nativeCurrency:"SOL",badgeVariant:"success"},[c.SOLANA_DEVNET]:{name:"Solana Devnet",type:"solana",isTestnet:!0,explorerUrl:"https://solscan.io?cluster=devnet",nativeCurrency:"SOL",badgeVariant:"secondary"},[c.SOLANA_TESTNET]:{name:"Solana Testnet",type:"solana",isTestnet:!0,explorerUrl:"https://solscan.io?cluster=testnet",nativeCurrency:"SOL",badgeVariant:"secondary"},[c.SUI_MAINNET]:{name:"Sui",type:"sui",isTestnet:!1,explorerUrl:"https://suiscan.xyz",nativeCurrency:"SUI",badgeVariant:"info"},[c.SUI_TESTNET]:{name:"Sui Testnet",type:"sui",isTestnet:!0,explorerUrl:"https://suiscan.xyz/testnet",nativeCurrency:"SUI",badgeVariant:"secondary"},[c.SUI_DEVNET]:{name:"Sui Devnet",type:"sui",isTestnet:!0,explorerUrl:"https://suiscan.xyz/devnet",nativeCurrency:"SUI",badgeVariant:"secondary"},[c.STARKNET_MAINNET]:{name:"Starknet",type:"starknet",isTestnet:!1,explorerUrl:"https://starkscan.co",nativeCurrency:"ETH",badgeVariant:"info"},[c.STARKNET_SEPOLIA]:{name:"Starknet Sepolia",type:"starknet",isTestnet:!0,explorerUrl:"https://sepolia.starkscan.co",nativeCurrency:"ETH",badgeVariant:"secondary"},[c.ZCASH_MAINNET]:{name:"Zcash",type:"zcash",isTestnet:!1,explorerUrl:"https://zcashblockexplorer.com",nativeCurrency:"ZEC",badgeVariant:"warning"},[c.ZCASH_TESTNET]:{name:"Zcash Testnet",type:"zcash",isTestnet:!0,nativeCurrency:"ZEC",badgeVariant:"secondary"},[c.RIPPLE_MAINNET]:{name:"XRP Ledger",type:"ripple",isTestnet:!1,explorerUrl:"https://xrpscan.com",nativeCurrency:"XRP",badgeVariant:"secondary"},[c.RIPPLE_TESTNET]:{name:"XRP Testnet",type:"ripple",isTestnet:!0,nativeCurrency:"XRP",badgeVariant:"secondary"},[c.DOGECOIN_MAINNET]:{name:"Dogecoin",type:"dogecoin",isTestnet:!1,explorerUrl:"https://dogechain.info",nativeCurrency:"DOGE",badgeVariant:"warning"},[c.DOGECOIN_TESTNET]:{name:"Dogecoin Testnet",type:"dogecoin",isTestnet:!0,nativeCurrency:"DOGE",badgeVariant:"secondary"},[c.HYPERLIQUID]:{name:"Hyperliquid",type:"hyperliquid",isTestnet:!1,nativeCurrency:"USDC",badgeVariant:"secondary"}},lt={"5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp":M.SOLANA_MAINNET_CHAIN,EtWTRABZaYq6iMfeYKouRu166VU2xqa1:M.SOLANA_DEVNET_CHAIN,"4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z":M.SOLANA_TESTNET_CHAIN},ft={SN_MAIN:M.STARKNET_MAINNET_CHAIN,SN_SEPOLIA:M.STARKNET_SEPOLIA_CHAIN};function ht(n){return ft[n]}function mt(n){return $[n]}function pt(n){return $[n].name}function gt(n){return $[n].type}function vt(n){return $[n].isTestnet}function yt(n){return!$[n].isTestnet}function pe(n){return $[n].type==="evm"}function _t(n,e){const{explorerUrl:t}=$[n];if(t)return`${t}/tx/${e}`}const ee=n=>`${n}${oe}`;function At(n){const e=ee(p.EIP155);if(n.startsWith(e)){const a=Number.parseInt(n.slice(e.length),10);if(M.isValidChain(a))return a;throw new T(P.INVALID_CHAIN,`Invalid EVM chain: ${n}`)}const t=ee(p.SOLANA);if(n.startsWith(t)){const a=n.slice(t.length),i=`solana:${a}`;if(M.isSolanaChain(i))return i;const o=lt[a];if(o)return o;throw new T(P.INVALID_CHAIN,`Invalid Solana chain: ${n}`)}const s=ee(p.SUI);if(n.startsWith(s)){if(M.isSuiChain(n))return n;throw new T(P.INVALID_CHAIN,`Invalid Sui chain: ${n}`)}const r=ee(p.STARKNET);if(n.startsWith(r)){const a=n.slice(r.length),i=ht(a);if(i)return i;throw new T(P.INVALID_CHAIN,`Invalid Starknet chain: ${n}`)}throw new T(P.INVALID_CHAIN,`Invalid chain: ${n}`)}function Et(n){return`${p.EIP155}${oe}${n}`}const N={version:"1.0.0",assets:{[F.AssetId.LBTC]:{decimals:8,symbol:"LBTC",name:"Lombard BTC",deployments:[{env:_.r.prod,chain:c.ETHEREUM,address:"0x8236a87084f8b84306f72007f36f2618a5634494"},{env:_.r.prod,chains:[c.BASE,c.BSC,c.BERACHAIN,c.CORN,c.KATANA,c.MORPH,c.SONIC,c.SWELL,c.TAC,c.MONAD,c.STABLE],address:"0xecAc9C5F704e954931349Da37F60E39f515c11c1"},{env:_.r.prod,chain:c.BOB,address:"0xA45d4121b3D47719FF57a947A9d961539Ba33204"},{env:_.r.prod,chain:c.SOLANA_MAINNET,address:"LBTCgU4b3wsFKsPwBn1rRZDx5DoFutM6RPiEt1TPDsY"},{env:_.r.prod,chain:c.SUI_MAINNET,address:"0x3e8e9423d80e1774a7ca128fccd8bf5f1f7753be658c5e645929037f7c819040"},{env:_.r.prod,chain:c.STARKNET_MAINNET,address:"0x036834a40984312f7f7de8d31e3f6305b325389eaeea5b1c0664b2fb936461a4",assetRouter:"0x05b1886d0f844ab930fc0ee066f1655a873437f15a5d2c41ee3e884fd5299976"},{env:_.r.testnet,chain:c.SEPOLIA,address:"0xc47e4b3124597fdf8dd07843d4a7052f2ee80c30"},{env:_.r.testnet,chains:[c.AVALANCHE_FUJI,c.BASE_SEPOLIA,c.BSC_TESTNET],address:"0x107Fc7d90484534704dD2A9e24c7BD45DB4dD1B5"},{env:_.r.testnet,chain:c.SOLANA_DEVNET,address:"1BTCPX3qyFtBvhQvJaHntfzZfB8qcJmJXfoRnD3vAgh"},{env:_.r.testnet,chain:c.SUI_TESTNET,address:"0x50454d0b0fbad1288a6ab74f2e8ce0905a3317870673ab7787ebcf6f322b45fa"},{env:_.r.testnet,chain:c.STARKNET_SEPOLIA,address:"0x00456a829ab75ba5e97534dc70d7fc617cfda244f8dcda47b11624de67c6e70c",assetRouter:"0x063b7b5c8b114ebd5b9602fbd5d0ffd2cc3a598f1d91c6904cc0997cd8fea760"},{env:_.r.stage,chains:[c.BASE_SEPOLIA,c.BSC_TESTNET,c.SEPOLIA],address:"0x731eFa688F3679688cf60A3993b8658138953ED6"},{env:_.r.dev,chain:c.SOLANA_DEVNET,address:"LBTCojyVJ63rsEED2DLEGWMzSxWJyQynXE91LMLgV1J"},{env:_.r.stage,chain:c.SOLANA_DEVNET,address:"1btcyoWK7d99iosES4eXQGhhooCscKGigV5wHfvzueX"},{env:_.r.stage,chain:c.SUI_TESTNET,address:"0x2d66430a27565b912f21be970e5ae1e8c0359f0b518c3235b751c75976791ce0"},{env:_.r.stage,chain:c.STARKNET_SEPOLIA,address:"0x00b442f5420860e937a99659326e81a97e07bfd538b3cee65b90029c9da38a5f",assetRouter:"0x01d27f156092746d0d7cd9d9deec5e937f27c3c7c1c28365e9e5efac459880b3"},{env:_.r.dev,chain:c.SEPOLIA,address:"0x93283b6B889C591893dB0dc93baD71656D5d8923"},{env:_.r.dev,chains:[c.AVALANCHE_FUJI,c.BASE_SEPOLIA,c.BERACHAIN_BARTIO,c.BSC_TESTNET],address:"0xc47e4b3124597FDF8DD07843D4a7052F2eE80C30"},{env:_.r.dev,chain:c.STARKNET_SEPOLIA,address:"0x0723de0c550b7bfbb5051dade72966d71a08bef952c0197462a5244497eb57c1",assetRouter:"0x04838a05c798dc57e01e85526979841c84f1f3c732a525cff53adb3e8bee3d24"}]},[F.AssetId.BTCb]:{decimals:8,symbol:"BTC.b",name:"BTC.b",deployments:[{env:_.r.prod,chains:[c.KATANA,c.MEGAETH,c.MONAD,c.STABLE],address:"0xB0F70C0bD6FD87dbEb7C10dC692a2a6106817072"},{env:_.r.prod,chain:c.AVALANCHE,address:"0x152b9d0FdC40C096757F570A51E494bd4b943E50",bridgeAdapter:"0x85D1D52e11290F174444d21C2a167bEDBE36e4d2"},{env:_.r.prod,chain:c.SOLANA_MAINNET,address:"BTCbKVgfW4xMqTWEmxVwc6pzg2c5YtQWxSpBuQDhUrpu"},{env:_.r.testnet,chain:c.SEPOLIA,address:"0x20eA7b8ABb4B583788F1DFC738C709a2d9675681"},{env:_.r.testnet,chain:c.AVALANCHE_FUJI,address:"0x7FbdC44BfEBDe80C970ba622B678daB36cee31f6",bridgeAdapter:"0x0A65C37d07c32E5eA8ea40495b7f249cdE26935e"},{env:_.r.testnet,chain:c.SOLANA_DEVNET,address:"BTCb1Xy55DzwPMog9d3ztPau4nqXp6BhUrdGHjTrMYCn"},{env:_.r.stage,chain:c.SEPOLIA,address:"0x600e4006278EB11FA1691cA0FE6C5fcfC4992d58"},{env:_.r.dev,chain:c.SOLANA_DEVNET,address:"BTCB3ripBAut19jM8kDPVbJHb2ZdR2GcZvGZkCmFPtV8"},{env:_.r.stage,chain:c.SOLANA_DEVNET,address:"BTCGPAHQSsS9RYcL2Z4B5z6YyAXLatNcnaEwYdczsMZw"},{env:_.r.dev,chain:c.SEPOLIA,address:"0x195219A262423d209E126BD21cf4F4F9AA796927"},{env:_.r.dev,chain:c.BSC_TESTNET,address:"0xea3F66E5f2928dB9673103BfA01a2153A57a8050"},{env:_.r.dev,chain:c.AVALANCHE_FUJI,address:"0x7FbdC44BfEBDe80C970ba622B678daB36cee31f6",bridgeAdapter:"0x0A65C37d07c32E5eA8ea40495b7f249cdE26935e"},{env:_.r.ibc,chain:c.AVALANCHE_FUJI,address:"0x71ba2b8dc58e7ca1b6d81a60729e31aefa37ae02",bridgeAdapter:"0x1391f9AC408cf13214DDB71d359002658eaF9ebb"}]},[F.AssetId.BTCBinance]:{decimals:18,symbol:"BTCB",name:"Binance-Peg BTCB",deployments:[{env:_.r.prod,chain:c.BSC,address:"0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c",publicMarketMaker:"0xE4ff44a615dF38e37cdF475833c1d57774CC9D4A"},{env:_.r.testnet,chain:c.BSC_TESTNET,address:"0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c",publicMarketMaker:"0x63749Acfc2527A8406E8BC8c93A80f29FDD75e27"},{env:_.r.stage,chain:c.BSC_TESTNET,address:"0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c",publicMarketMaker:"0x440362b55D4a255EBA3c27C650d2dC1a91Db85bA"},{env:_.r.dev,chain:c.BSC_TESTNET,address:"0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c",publicMarketMaker:"0x440362b55D4a255EBA3c27C650d2dC1a91Db85bA"}]},[F.AssetId.cbBTC]:{decimals:8,symbol:"cbBTC",name:"Coinbase Wrapped BTC",deployments:[{env:_.r.prod,chains:[c.ETHEREUM,c.BASE],address:"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",publicMarketMaker:"0x92c01FC0F59857c6E920EdFf1139904b2Bb74c7c"}]},[F.AssetId.eBTC]:{decimals:8,symbol:"eBTC",deployments:[{env:_.r.prod,chain:c.ETHEREUM,address:"0x657e8c867d8b37dcc18fa4caead9c45eb088c642"}]},[F.AssetId.WBTC]:{decimals:8,symbol:"WBTC",deployments:[{env:_.r.prod,chain:c.ETHEREUM,address:"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"}]},[F.AssetId.WBTCN]:{decimals:8,symbol:"wBTCN",deployments:[{env:_.r.prod,chain:c.CORN,address:"0xda5dDd7270381A7C2717aD10D1c0ecB19e3CDFb2"}]}}},Tt=8;function J(n,e,t,s){const r=n.assets[e];if(r)return r.deployments.find(a=>{var i;return a.env===t&&(a.chain===s||((i=a.chains)==null?void 0:i.includes(s)))})}function bt(n,e,t,s=N){var r;return(r=J(s,n,e,t))==null?void 0:r.address}function xt(n,e=N){var t;return((t=e.assets[n])==null?void 0:t.decimals)??Tt}function St(n,e,t,s=N){var r;return(r=J(s,n,e,t))==null?void 0:r.assetRouter}function Nt(n,e,t,s=N){var r;return!!((r=J(s,n,e,t))!=null&&r.assetRouter)}function It(n,e,t,s=N){var r;return(r=J(s,n,e,t))==null?void 0:r.bridgeAdapter}function Ct(n,e,t,s=N){var r;return(r=J(s,n,e,t))==null?void 0:r.publicMarketMaker}function kt(n,e,t,s=N){return!!J(s,n,e,t)}function Ot(n,e,t,s=N){const r=n.toLowerCase();for(const[a,i]of Object.entries(s.assets)){if(!i)continue;if(i.deployments.find(u=>{var h;return u.env===e&&(u.chain===t||((h=u.chains)==null?void 0:h.includes(t)))&&u.address.toLowerCase()===r}))return a}}function wt(n,e,t=N){const s=t.assets[n];if(!s)return[];const r=[];for(const a of s.deployments)a.env===e&&(a.chain&&r.push(a.chain),a.chains&&r.push(...a.chains));return r}function Rt(n,e,t=N){var a;const s=t.assets[n];if(!s)return[];const r=new Set;for(const i of s.deployments)(i.chain===e||(a=i.chains)!=null&&a.includes(e))&&r.add(i.env);return Array.from(r)}function Dt(n=N){return Object.keys(n.assets)}function Lt(n,e=N){const t=e.assets[n];if(!t)return[];const s=new Set;for(const r of t.deployments)r.chain&&s.add(r.chain),r.chains&&r.chains.forEach(a=>s.add(a));return Array.from(s)}function te(n,e,t=N){const s=t.assets[n];if(!s)return[];const r=new Set;for(const a of s.deployments)e.includes(a.env)&&(a.chain&&r.add(a.chain),a.chains&&a.chains.forEach(i=>r.add(i)));return Array.from(r)}function Pt(n,e=N){const t=e.assets[n];if(t)return{decimals:t.decimals,symbol:t.symbol,name:t.name}}function Bt(n,e,t=N){return te(n,e,t).filter(s=>pe(s))}function Mt(n,e,t=N){if(n.length===0)return[];const s=new Set(te(n[0],e,t));for(let r=1;r<n.length;r++){const a=new Set(te(n[r],e,t));for(const i of s)a.has(i)||s.delete(i)}return Array.from(s)}function Vt(n,e,t=N){return Mt(n,e,t).filter(s=>pe(s))}class je{constructor(e){I(this,"config");this.config=e}getPartnerId(){var e;return(e=this.config)==null?void 0:e.partnerId}isConfigured(){return this.config!==void 0}update(e){this.config=e}clear(){this.config=void 0}}function ge(n,e){let t;switch(e){case"evm":t=n.evm;break;case"bitcoin":t=n.bitcoin;break;case"solana":t=n.solana;break;case"sui":t=n.sui;break;case"starknet":t=n.starknet;break;default:t=void 0}return t}class He{constructor(e,t){I(this,"modules",new Map);I(this,"services",new Map);I(this,"shared",new Map);this.config=t,e.forEach(s=>this.modules.set(s.id,s))}require(e){const t=this.modules.get(e);if(!t)throw T.moduleMissing(e);return this.services.has(t.id)||this.services.set(t.id,t.register(this.createContext())),this.services.get(t.id)}optional(e){const t=this.modules.get(e);return t?(this.services.has(t.id)||this.services.set(t.id,t.register(this.createContext())),this.services.get(t.id)):null}createContext(){return{env:this.config.env,getProvider:async e=>{const t=ge(this.config.providers,e);if(t)return await t()},getShared:e=>this.shared.get(e),setShared:(e,t)=>{this.shared.set(e,t)}}}}function Ut(n){return async e=>{const t=ge(n.providers,e);if(t)return t()}}const _e=new WeakMap;function ze(n){let e=_e.get(n);return e||(e=new He(n.modules,n),_e.set(n,e)),e}function qe(n){return{env:n.env,partner:new je(n.partner),getProvider:Ut(n),logger:void 0}}function Zt(n){const e=qe(n),t=ze(n),s=t.require("btc"),r=t.require("api");return{...e,btc:s,api:r,capabilities:t}}function $t(n){const e=qe(n),s=ze(n).require("evm");return{...e,evm:s}}const Ft={IDLE:"idle",PREPARING:"preparing",READY:"ready",EXECUTING:"executing",COMPLETED:"completed",FAILED:"failed"},jt={IDLE:"idle",PENDING:"pending",COMPLETE:"complete",FAILED:"failed"};var x;(function(n){n.assertEqual=r=>{};function e(r){}n.assertIs=e;function t(r){throw new Error}n.assertNever=t,n.arrayToEnum=r=>{const a={};for(const i of r)a[i]=i;return a},n.getValidEnumValues=r=>{const a=n.objectKeys(r).filter(o=>typeof r[r[o]]!="number"),i={};for(const o of a)i[o]=r[o];return n.objectValues(i)},n.objectValues=r=>n.objectKeys(r).map(function(a){return r[a]}),n.objectKeys=typeof Object.keys=="function"?r=>Object.keys(r):r=>{const a=[];for(const i in r)Object.prototype.hasOwnProperty.call(r,i)&&a.push(i);return a},n.find=(r,a)=>{for(const i of r)if(a(i))return i},n.isInteger=typeof Number.isInteger=="function"?r=>Number.isInteger(r):r=>typeof r=="number"&&Number.isFinite(r)&&Math.floor(r)===r;function s(r,a=" | "){return r.map(i=>typeof i=="string"?`'${i}'`:i).join(a)}n.joinValues=s,n.jsonStringifyReplacer=(r,a)=>typeof a=="bigint"?a.toString():a})(x||(x={}));var Ae;(function(n){n.mergeShapes=(e,t)=>({...e,...t})})(Ae||(Ae={}));const f=x.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),L=n=>{switch(typeof n){case"undefined":return f.undefined;case"string":return f.string;case"number":return Number.isNaN(n)?f.nan:f.number;case"boolean":return f.boolean;case"function":return f.function;case"bigint":return f.bigint;case"symbol":return f.symbol;case"object":return Array.isArray(n)?f.array:n===null?f.null:n.then&&typeof n.then=="function"&&n.catch&&typeof n.catch=="function"?f.promise:typeof Map<"u"&&n instanceof Map?f.map:typeof Set<"u"&&n instanceof Set?f.set:typeof Date<"u"&&n instanceof Date?f.date:f.object;default:return f.unknown}},d=x.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class D extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=s=>{this.issues=[...this.issues,s]},this.addIssues=(s=[])=>{this.issues=[...this.issues,...s]};const t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){const t=e||function(a){return a.message},s={_errors:[]},r=a=>{for(const i of a.issues)if(i.code==="invalid_union")i.unionErrors.map(r);else if(i.code==="invalid_return_type")r(i.returnTypeError);else if(i.code==="invalid_arguments")r(i.argumentsError);else if(i.path.length===0)s._errors.push(t(i));else{let o=s,u=0;for(;u<i.path.length;){const h=i.path[u];u===i.path.length-1?(o[h]=o[h]||{_errors:[]},o[h]._errors.push(t(i))):o[h]=o[h]||{_errors:[]},o=o[h],u++}}};return r(this),s}static assert(e){if(!(e instanceof D))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,x.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=t=>t.message){const t={},s=[];for(const r of this.issues)if(r.path.length>0){const a=r.path[0];t[a]=t[a]||[],t[a].push(e(r))}else s.push(e(r));return{formErrors:s,fieldErrors:t}}get formErrors(){return this.flatten()}}D.create=n=>new D(n);const ue=(n,e)=>{let t;switch(n.code){case d.invalid_type:n.received===f.undefined?t="Required":t=`Expected ${n.expected}, received ${n.received}`;break;case d.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(n.expected,x.jsonStringifyReplacer)}`;break;case d.unrecognized_keys:t=`Unrecognized key(s) in object: ${x.joinValues(n.keys,", ")}`;break;case d.invalid_union:t="Invalid input";break;case d.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${x.joinValues(n.options)}`;break;case d.invalid_enum_value:t=`Invalid enum value. Expected ${x.joinValues(n.options)}, received '${n.received}'`;break;case d.invalid_arguments:t="Invalid function arguments";break;case d.invalid_return_type:t="Invalid function return type";break;case d.invalid_date:t="Invalid date";break;case d.invalid_string:typeof n.validation=="object"?"includes"in n.validation?(t=`Invalid input: must include "${n.validation.includes}"`,typeof n.validation.position=="number"&&(t=`${t} at one or more positions greater than or equal to ${n.validation.position}`)):"startsWith"in n.validation?t=`Invalid input: must start with "${n.validation.startsWith}"`:"endsWith"in n.validation?t=`Invalid input: must end with "${n.validation.endsWith}"`:x.assertNever(n.validation):n.validation!=="regex"?t=`Invalid ${n.validation}`:t="Invalid";break;case d.too_small:n.type==="array"?t=`Array must contain ${n.exact?"exactly":n.inclusive?"at least":"more than"} ${n.minimum} element(s)`:n.type==="string"?t=`String must contain ${n.exact?"exactly":n.inclusive?"at least":"over"} ${n.minimum} character(s)`:n.type==="number"?t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`:n.type==="bigint"?t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`:n.type==="date"?t=`Date must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(n.minimum))}`:t="Invalid input";break;case d.too_big:n.type==="array"?t=`Array must contain ${n.exact?"exactly":n.inclusive?"at most":"less than"} ${n.maximum} element(s)`:n.type==="string"?t=`String must contain ${n.exact?"exactly":n.inclusive?"at most":"under"} ${n.maximum} character(s)`:n.type==="number"?t=`Number must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`:n.type==="bigint"?t=`BigInt must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`:n.type==="date"?t=`Date must be ${n.exact?"exactly":n.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(n.maximum))}`:t="Invalid input";break;case d.custom:t="Invalid input";break;case d.invalid_intersection_types:t="Intersection results could not be merged";break;case d.not_multiple_of:t=`Number must be a multiple of ${n.multipleOf}`;break;case d.not_finite:t="Number must be finite";break;default:t=e.defaultError,x.assertNever(n)}return{message:t}};let Ht=ue;function zt(){return Ht}const qt=n=>{const{data:e,path:t,errorMaps:s,issueData:r}=n,a=[...t,...r.path||[]],i={...r,path:a};if(r.message!==void 0)return{...r,path:a,message:r.message};let o="";const u=s.filter(h=>!!h).slice().reverse();for(const h of u)o=h(i,{data:e,defaultError:o}).message;return{...r,path:a,message:o}};function l(n,e){const t=zt(),s=qt({issueData:e,data:n.data,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,t,t===ue?void 0:ue].filter(r=>!!r)});n.common.issues.push(s)}class C{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,t){const s=[];for(const r of t){if(r.status==="aborted")return g;r.status==="dirty"&&e.dirty(),s.push(r.value)}return{status:e.value,value:s}}static async mergeObjectAsync(e,t){const s=[];for(const r of t){const a=await r.key,i=await r.value;s.push({key:a,value:i})}return C.mergeObjectSync(e,s)}static mergeObjectSync(e,t){const s={};for(const r of t){const{key:a,value:i}=r;if(a.status==="aborted"||i.status==="aborted")return g;a.status==="dirty"&&e.dirty(),i.status==="dirty"&&e.dirty(),a.value!=="__proto__"&&(typeof i.value<"u"||r.alwaysSet)&&(s[a.value]=i.value)}return{status:e.value,value:s}}}const g=Object.freeze({status:"aborted"}),X=n=>({status:"dirty",value:n}),k=n=>({status:"valid",value:n}),Ee=n=>n.status==="aborted",Te=n=>n.status==="dirty",z=n=>n.status==="valid",ne=n=>typeof Promise<"u"&&n instanceof Promise;var m;(function(n){n.errToObj=e=>typeof e=="string"?{message:e}:e||{},n.toString=e=>typeof e=="string"?e:e==null?void 0:e.message})(m||(m={}));class U{constructor(e,t,s,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=s,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const be=(n,e)=>{if(z(e))return{success:!0,data:e.value};if(!n.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const t=new D(n.common.issues);return this._error=t,this._error}}};function A(n){if(!n)return{};const{errorMap:e,invalid_type_error:t,required_error:s,description:r}=n;if(e&&(t||s))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:r}:{errorMap:(i,o)=>{const{message:u}=n;return i.code==="invalid_enum_value"?{message:u??o.defaultError}:typeof o.data>"u"?{message:u??s??o.defaultError}:i.code!=="invalid_type"?{message:o.defaultError}:{message:u??t??o.defaultError}},description:r}}class b{get description(){return this._def.description}_getType(e){return L(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:L(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new C,ctx:{common:e.parent.common,data:e.data,parsedType:L(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){const t=this._parse(e);if(ne(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){const t=this._parse(e);return Promise.resolve(t)}parse(e,t){const s=this.safeParse(e,t);if(s.success)return s.data;throw s.error}safeParse(e,t){const s={common:{issues:[],async:(t==null?void 0:t.async)??!1,contextualErrorMap:t==null?void 0:t.errorMap},path:(t==null?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:L(e)},r=this._parseSync({data:e,path:s.path,parent:s});return be(s,r)}"~validate"(e){var s,r;const t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:L(e)};if(!this["~standard"].async)try{const a=this._parseSync({data:e,path:[],parent:t});return z(a)?{value:a.value}:{issues:t.common.issues}}catch(a){(r=(s=a==null?void 0:a.message)==null?void 0:s.toLowerCase())!=null&&r.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(a=>z(a)?{value:a.value}:{issues:t.common.issues})}async parseAsync(e,t){const s=await this.safeParseAsync(e,t);if(s.success)return s.data;throw s.error}async safeParseAsync(e,t){const s={common:{issues:[],contextualErrorMap:t==null?void 0:t.errorMap,async:!0},path:(t==null?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:L(e)},r=this._parse({data:e,path:s.path,parent:s}),a=await(ne(r)?r:Promise.resolve(r));return be(s,a)}refine(e,t){const s=r=>typeof t=="string"||typeof t>"u"?{message:t}:typeof t=="function"?t(r):t;return this._refinement((r,a)=>{const i=e(r),o=()=>a.addIssue({code:d.custom,...s(r)});return typeof Promise<"u"&&i instanceof Promise?i.then(u=>u?!0:(o(),!1)):i?!0:(o(),!1)})}refinement(e,t){return this._refinement((s,r)=>e(s)?!0:(r.addIssue(typeof t=="function"?t(s,r):t),!1))}_refinement(e){return new K({schema:this,typeName:v.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:t=>this["~validate"](t)}}optional(){return V.create(this,this._def)}nullable(){return Y.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return w.create(this)}promise(){return ie.create(this,this._def)}or(e){return re.create([this,e],this._def)}and(e){return ae.create(this,e,this._def)}transform(e){return new K({...A(this._def),schema:this,typeName:v.ZodEffects,effect:{type:"transform",transform:e}})}default(e){const t=typeof e=="function"?e:()=>e;return new fe({...A(this._def),innerType:this,defaultValue:t,typeName:v.ZodDefault})}brand(){return new gn({typeName:v.ZodBranded,type:this,...A(this._def)})}catch(e){const t=typeof e=="function"?e:()=>e;return new he({...A(this._def),innerType:this,catchValue:t,typeName:v.ZodCatch})}describe(e){const t=this.constructor;return new t({...this._def,description:e})}pipe(e){return ve.create(this,e)}readonly(){return me.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const Wt=/^c[^\s-]{8,}$/i,Gt=/^[0-9a-z]+$/,Kt=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Yt=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Jt=/^[a-z0-9_-]{21}$/i,Xt=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Qt=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,en=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,tn="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let ce;const nn=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,sn=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,rn=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,an=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,on=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,cn=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,We="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",dn=new RegExp(`^${We}$`);function Ge(n){let e="[0-5]\\d";n.precision?e=`${e}\\.\\d{${n.precision}}`:n.precision==null&&(e=`${e}(\\.\\d+)?`);const t=n.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${t}`}function un(n){return new RegExp(`^${Ge(n)}$`)}function ln(n){let e=`${We}T${Ge(n)}`;const t=[];return t.push(n.local?"Z?":"Z"),n.offset&&t.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${t.join("|")})`,new RegExp(`^${e}$`)}function fn(n,e){return!!((e==="v4"||!e)&&nn.test(n)||(e==="v6"||!e)&&rn.test(n))}function hn(n,e){if(!Xt.test(n))return!1;try{const[t]=n.split(".");if(!t)return!1;const s=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),r=JSON.parse(atob(s));return!(typeof r!="object"||r===null||"typ"in r&&(r==null?void 0:r.typ)!=="JWT"||!r.alg||e&&r.alg!==e)}catch{return!1}}function mn(n,e){return!!((e==="v4"||!e)&&sn.test(n)||(e==="v6"||!e)&&an.test(n))}class B extends b{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==f.string){const a=this._getOrReturnCtx(e);return l(a,{code:d.invalid_type,expected:f.string,received:a.parsedType}),g}const s=new C;let r;for(const a of this._def.checks)if(a.kind==="min")e.data.length<a.value&&(r=this._getOrReturnCtx(e,r),l(r,{code:d.too_small,minimum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),s.dirty());else if(a.kind==="max")e.data.length>a.value&&(r=this._getOrReturnCtx(e,r),l(r,{code:d.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),s.dirty());else if(a.kind==="length"){const i=e.data.length>a.value,o=e.data.length<a.value;(i||o)&&(r=this._getOrReturnCtx(e,r),i?l(r,{code:d.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!0,message:a.message}):o&&l(r,{code:d.too_small,minimum:a.value,type:"string",inclusive:!0,exact:!0,message:a.message}),s.dirty())}else if(a.kind==="email")en.test(e.data)||(r=this._getOrReturnCtx(e,r),l(r,{validation:"email",code:d.invalid_string,message:a.message}),s.dirty());else if(a.kind==="emoji")ce||(ce=new RegExp(tn,"u")),ce.test(e.data)||(r=this._getOrReturnCtx(e,r),l(r,{validation:"emoji",code:d.invalid_string,message:a.message}),s.dirty());else if(a.kind==="uuid")Yt.test(e.data)||(r=this._getOrReturnCtx(e,r),l(r,{validation:"uuid",code:d.invalid_string,message:a.message}),s.dirty());else if(a.kind==="nanoid")Jt.test(e.data)||(r=this._getOrReturnCtx(e,r),l(r,{validation:"nanoid",code:d.invalid_string,message:a.message}),s.dirty());else if(a.kind==="cuid")Wt.test(e.data)||(r=this._getOrReturnCtx(e,r),l(r,{validation:"cuid",code:d.invalid_string,message:a.message}),s.dirty());else if(a.kind==="cuid2")Gt.test(e.data)||(r=this._getOrReturnCtx(e,r),l(r,{validation:"cuid2",code:d.invalid_string,message:a.message}),s.dirty());else if(a.kind==="ulid")Kt.test(e.data)||(r=this._getOrReturnCtx(e,r),l(r,{validation:"ulid",code:d.invalid_string,message:a.message}),s.dirty());else if(a.kind==="url")try{new URL(e.data)}catch{r=this._getOrReturnCtx(e,r),l(r,{validation:"url",code:d.invalid_string,message:a.message}),s.dirty()}else a.kind==="regex"?(a.regex.lastIndex=0,a.regex.test(e.data)||(r=this._getOrReturnCtx(e,r),l(r,{validation:"regex",code:d.invalid_string,message:a.message}),s.dirty())):a.kind==="trim"?e.data=e.data.trim():a.kind==="includes"?e.data.includes(a.value,a.position)||(r=this._getOrReturnCtx(e,r),l(r,{code:d.invalid_string,validation:{includes:a.value,position:a.position},message:a.message}),s.dirty()):a.kind==="toLowerCase"?e.data=e.data.toLowerCase():a.kind==="toUpperCase"?e.data=e.data.toUpperCase():a.kind==="startsWith"?e.data.startsWith(a.value)||(r=this._getOrReturnCtx(e,r),l(r,{code:d.invalid_string,validation:{startsWith:a.value},message:a.message}),s.dirty()):a.kind==="endsWith"?e.data.endsWith(a.value)||(r=this._getOrReturnCtx(e,r),l(r,{code:d.invalid_string,validation:{endsWith:a.value},message:a.message}),s.dirty()):a.kind==="datetime"?ln(a).test(e.data)||(r=this._getOrReturnCtx(e,r),l(r,{code:d.invalid_string,validation:"datetime",message:a.message}),s.dirty()):a.kind==="date"?dn.test(e.data)||(r=this._getOrReturnCtx(e,r),l(r,{code:d.invalid_string,validation:"date",message:a.message}),s.dirty()):a.kind==="time"?un(a).test(e.data)||(r=this._getOrReturnCtx(e,r),l(r,{code:d.invalid_string,validation:"time",message:a.message}),s.dirty()):a.kind==="duration"?Qt.test(e.data)||(r=this._getOrReturnCtx(e,r),l(r,{validation:"duration",code:d.invalid_string,message:a.message}),s.dirty()):a.kind==="ip"?fn(e.data,a.version)||(r=this._getOrReturnCtx(e,r),l(r,{validation:"ip",code:d.invalid_string,message:a.message}),s.dirty()):a.kind==="jwt"?hn(e.data,a.alg)||(r=this._getOrReturnCtx(e,r),l(r,{validation:"jwt",code:d.invalid_string,message:a.message}),s.dirty()):a.kind==="cidr"?mn(e.data,a.version)||(r=this._getOrReturnCtx(e,r),l(r,{validation:"cidr",code:d.invalid_string,message:a.message}),s.dirty()):a.kind==="base64"?on.test(e.data)||(r=this._getOrReturnCtx(e,r),l(r,{validation:"base64",code:d.invalid_string,message:a.message}),s.dirty()):a.kind==="base64url"?cn.test(e.data)||(r=this._getOrReturnCtx(e,r),l(r,{validation:"base64url",code:d.invalid_string,message:a.message}),s.dirty()):x.assertNever(a);return{status:s.value,value:e.data}}_regex(e,t,s){return this.refinement(r=>e.test(r),{validation:t,code:d.invalid_string,...m.errToObj(s)})}_addCheck(e){return new B({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...m.errToObj(e)})}url(e){return this._addCheck({kind:"url",...m.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...m.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...m.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...m.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...m.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...m.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...m.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...m.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...m.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...m.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...m.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...m.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof(e==null?void 0:e.precision)>"u"?null:e==null?void 0:e.precision,offset:(e==null?void 0:e.offset)??!1,local:(e==null?void 0:e.local)??!1,...m.errToObj(e==null?void 0:e.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof(e==null?void 0:e.precision)>"u"?null:e==null?void 0:e.precision,...m.errToObj(e==null?void 0:e.message)})}duration(e){return this._addCheck({kind:"duration",...m.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...m.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t==null?void 0:t.position,...m.errToObj(t==null?void 0:t.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...m.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...m.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...m.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...m.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...m.errToObj(t)})}nonempty(e){return this.min(1,m.errToObj(e))}trim(){return new B({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new B({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new B({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}}B.create=n=>new B({checks:[],typeName:v.ZodString,coerce:(n==null?void 0:n.coerce)??!1,...A(n)});function pn(n,e){const t=(n.toString().split(".")[1]||"").length,s=(e.toString().split(".")[1]||"").length,r=t>s?t:s,a=Number.parseInt(n.toFixed(r).replace(".","")),i=Number.parseInt(e.toFixed(r).replace(".",""));return a%i/10**r}class q extends b{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==f.number){const a=this._getOrReturnCtx(e);return l(a,{code:d.invalid_type,expected:f.number,received:a.parsedType}),g}let s;const r=new C;for(const a of this._def.checks)a.kind==="int"?x.isInteger(e.data)||(s=this._getOrReturnCtx(e,s),l(s,{code:d.invalid_type,expected:"integer",received:"float",message:a.message}),r.dirty()):a.kind==="min"?(a.inclusive?e.data<a.value:e.data<=a.value)&&(s=this._getOrReturnCtx(e,s),l(s,{code:d.too_small,minimum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),r.dirty()):a.kind==="max"?(a.inclusive?e.data>a.value:e.data>=a.value)&&(s=this._getOrReturnCtx(e,s),l(s,{code:d.too_big,maximum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),r.dirty()):a.kind==="multipleOf"?pn(e.data,a.value)!==0&&(s=this._getOrReturnCtx(e,s),l(s,{code:d.not_multiple_of,multipleOf:a.value,message:a.message}),r.dirty()):a.kind==="finite"?Number.isFinite(e.data)||(s=this._getOrReturnCtx(e,s),l(s,{code:d.not_finite,message:a.message}),r.dirty()):x.assertNever(a);return{status:r.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,m.toString(t))}gt(e,t){return this.setLimit("min",e,!1,m.toString(t))}lte(e,t){return this.setLimit("max",e,!0,m.toString(t))}lt(e,t){return this.setLimit("max",e,!1,m.toString(t))}setLimit(e,t,s,r){return new q({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:m.toString(r)}]})}_addCheck(e){return new q({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:m.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:m.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:m.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:m.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:m.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:m.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:m.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:m.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:m.toString(e)})}get minValue(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&x.isInteger(e.value))}get isFinite(){let e=null,t=null;for(const s of this._def.checks){if(s.kind==="finite"||s.kind==="int"||s.kind==="multipleOf")return!0;s.kind==="min"?(t===null||s.value>t)&&(t=s.value):s.kind==="max"&&(e===null||s.value<e)&&(e=s.value)}return Number.isFinite(t)&&Number.isFinite(e)}}q.create=n=>new q({checks:[],typeName:v.ZodNumber,coerce:(n==null?void 0:n.coerce)||!1,...A(n)});class W extends b{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==f.bigint)return this._getInvalidInput(e);let s;const r=new C;for(const a of this._def.checks)a.kind==="min"?(a.inclusive?e.data<a.value:e.data<=a.value)&&(s=this._getOrReturnCtx(e,s),l(s,{code:d.too_small,type:"bigint",minimum:a.value,inclusive:a.inclusive,message:a.message}),r.dirty()):a.kind==="max"?(a.inclusive?e.data>a.value:e.data>=a.value)&&(s=this._getOrReturnCtx(e,s),l(s,{code:d.too_big,type:"bigint",maximum:a.value,inclusive:a.inclusive,message:a.message}),r.dirty()):a.kind==="multipleOf"?e.data%a.value!==BigInt(0)&&(s=this._getOrReturnCtx(e,s),l(s,{code:d.not_multiple_of,multipleOf:a.value,message:a.message}),r.dirty()):x.assertNever(a);return{status:r.value,value:e.data}}_getInvalidInput(e){const t=this._getOrReturnCtx(e);return l(t,{code:d.invalid_type,expected:f.bigint,received:t.parsedType}),g}gte(e,t){return this.setLimit("min",e,!0,m.toString(t))}gt(e,t){return this.setLimit("min",e,!1,m.toString(t))}lte(e,t){return this.setLimit("max",e,!0,m.toString(t))}lt(e,t){return this.setLimit("max",e,!1,m.toString(t))}setLimit(e,t,s,r){return new W({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:m.toString(r)}]})}_addCheck(e){return new W({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:m.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:m.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:m.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:m.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:m.toString(t)})}get minValue(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}}W.create=n=>new W({checks:[],typeName:v.ZodBigInt,coerce:(n==null?void 0:n.coerce)??!1,...A(n)});class xe extends b{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==f.boolean){const s=this._getOrReturnCtx(e);return l(s,{code:d.invalid_type,expected:f.boolean,received:s.parsedType}),g}return k(e.data)}}xe.create=n=>new xe({typeName:v.ZodBoolean,coerce:(n==null?void 0:n.coerce)||!1,...A(n)});class se extends b{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==f.date){const a=this._getOrReturnCtx(e);return l(a,{code:d.invalid_type,expected:f.date,received:a.parsedType}),g}if(Number.isNaN(e.data.getTime())){const a=this._getOrReturnCtx(e);return l(a,{code:d.invalid_date}),g}const s=new C;let r;for(const a of this._def.checks)a.kind==="min"?e.data.getTime()<a.value&&(r=this._getOrReturnCtx(e,r),l(r,{code:d.too_small,message:a.message,inclusive:!0,exact:!1,minimum:a.value,type:"date"}),s.dirty()):a.kind==="max"?e.data.getTime()>a.value&&(r=this._getOrReturnCtx(e,r),l(r,{code:d.too_big,message:a.message,inclusive:!0,exact:!1,maximum:a.value,type:"date"}),s.dirty()):x.assertNever(a);return{status:s.value,value:new Date(e.data.getTime())}}_addCheck(e){return new se({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:m.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:m.toString(t)})}get minDate(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e!=null?new Date(e):null}}se.create=n=>new se({checks:[],coerce:(n==null?void 0:n.coerce)||!1,typeName:v.ZodDate,...A(n)});class Se extends b{_parse(e){if(this._getType(e)!==f.symbol){const s=this._getOrReturnCtx(e);return l(s,{code:d.invalid_type,expected:f.symbol,received:s.parsedType}),g}return k(e.data)}}Se.create=n=>new Se({typeName:v.ZodSymbol,...A(n)});class Ne extends b{_parse(e){if(this._getType(e)!==f.undefined){const s=this._getOrReturnCtx(e);return l(s,{code:d.invalid_type,expected:f.undefined,received:s.parsedType}),g}return k(e.data)}}Ne.create=n=>new Ne({typeName:v.ZodUndefined,...A(n)});class Ie extends b{_parse(e){if(this._getType(e)!==f.null){const s=this._getOrReturnCtx(e);return l(s,{code:d.invalid_type,expected:f.null,received:s.parsedType}),g}return k(e.data)}}Ie.create=n=>new Ie({typeName:v.ZodNull,...A(n)});class Ce extends b{constructor(){super(...arguments),this._any=!0}_parse(e){return k(e.data)}}Ce.create=n=>new Ce({typeName:v.ZodAny,...A(n)});class ke extends b{constructor(){super(...arguments),this._unknown=!0}_parse(e){return k(e.data)}}ke.create=n=>new ke({typeName:v.ZodUnknown,...A(n)});class Z extends b{_parse(e){const t=this._getOrReturnCtx(e);return l(t,{code:d.invalid_type,expected:f.never,received:t.parsedType}),g}}Z.create=n=>new Z({typeName:v.ZodNever,...A(n)});class Oe extends b{_parse(e){if(this._getType(e)!==f.undefined){const s=this._getOrReturnCtx(e);return l(s,{code:d.invalid_type,expected:f.void,received:s.parsedType}),g}return k(e.data)}}Oe.create=n=>new Oe({typeName:v.ZodVoid,...A(n)});class w extends b{_parse(e){const{ctx:t,status:s}=this._processInputParams(e),r=this._def;if(t.parsedType!==f.array)return l(t,{code:d.invalid_type,expected:f.array,received:t.parsedType}),g;if(r.exactLength!==null){const i=t.data.length>r.exactLength.value,o=t.data.length<r.exactLength.value;(i||o)&&(l(t,{code:i?d.too_big:d.too_small,minimum:o?r.exactLength.value:void 0,maximum:i?r.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:r.exactLength.message}),s.dirty())}if(r.minLength!==null&&t.data.length<r.minLength.value&&(l(t,{code:d.too_small,minimum:r.minLength.value,type:"array",inclusive:!0,exact:!1,message:r.minLength.message}),s.dirty()),r.maxLength!==null&&t.data.length>r.maxLength.value&&(l(t,{code:d.too_big,maximum:r.maxLength.value,type:"array",inclusive:!0,exact:!1,message:r.maxLength.message}),s.dirty()),t.common.async)return Promise.all([...t.data].map((i,o)=>r.type._parseAsync(new U(t,i,t.path,o)))).then(i=>C.mergeArray(s,i));const a=[...t.data].map((i,o)=>r.type._parseSync(new U(t,i,t.path,o)));return C.mergeArray(s,a)}get element(){return this._def.type}min(e,t){return new w({...this._def,minLength:{value:e,message:m.toString(t)}})}max(e,t){return new w({...this._def,maxLength:{value:e,message:m.toString(t)}})}length(e,t){return new w({...this._def,exactLength:{value:e,message:m.toString(t)}})}nonempty(e){return this.min(1,e)}}w.create=(n,e)=>new w({type:n,minLength:null,maxLength:null,exactLength:null,typeName:v.ZodArray,...A(e)});function H(n){if(n instanceof S){const e={};for(const t in n.shape){const s=n.shape[t];e[t]=V.create(H(s))}return new S({...n._def,shape:()=>e})}else return n instanceof w?new w({...n._def,type:H(n.element)}):n instanceof V?V.create(H(n.unwrap())):n instanceof Y?Y.create(H(n.unwrap())):n instanceof j?j.create(n.items.map(e=>H(e))):n}class S extends b{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const e=this._def.shape(),t=x.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==f.object){const h=this._getOrReturnCtx(e);return l(h,{code:d.invalid_type,expected:f.object,received:h.parsedType}),g}const{status:s,ctx:r}=this._processInputParams(e),{shape:a,keys:i}=this._getCached(),o=[];if(!(this._def.catchall instanceof Z&&this._def.unknownKeys==="strip"))for(const h in r.data)i.includes(h)||o.push(h);const u=[];for(const h of i){const E=a[h],O=r.data[h];u.push({key:{status:"valid",value:h},value:E._parse(new U(r,O,r.path,h)),alwaysSet:h in r.data})}if(this._def.catchall instanceof Z){const h=this._def.unknownKeys;if(h==="passthrough")for(const E of o)u.push({key:{status:"valid",value:E},value:{status:"valid",value:r.data[E]}});else if(h==="strict")o.length>0&&(l(r,{code:d.unrecognized_keys,keys:o}),s.dirty());else if(h!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const h=this._def.catchall;for(const E of o){const O=r.data[E];u.push({key:{status:"valid",value:E},value:h._parse(new U(r,O,r.path,E)),alwaysSet:E in r.data})}}return r.common.async?Promise.resolve().then(async()=>{const h=[];for(const E of u){const O=await E.key,tt=await E.value;h.push({key:O,value:tt,alwaysSet:E.alwaysSet})}return h}).then(h=>C.mergeObjectSync(s,h)):C.mergeObjectSync(s,u)}get shape(){return this._def.shape()}strict(e){return m.errToObj,new S({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,s)=>{var a,i;const r=((i=(a=this._def).errorMap)==null?void 0:i.call(a,t,s).message)??s.defaultError;return t.code==="unrecognized_keys"?{message:m.errToObj(e).message??r}:{message:r}}}:{}})}strip(){return new S({...this._def,unknownKeys:"strip"})}passthrough(){return new S({...this._def,unknownKeys:"passthrough"})}extend(e){return new S({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new S({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:v.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new S({...this._def,catchall:e})}pick(e){const t={};for(const s of x.objectKeys(e))e[s]&&this.shape[s]&&(t[s]=this.shape[s]);return new S({...this._def,shape:()=>t})}omit(e){const t={};for(const s of x.objectKeys(this.shape))e[s]||(t[s]=this.shape[s]);return new S({...this._def,shape:()=>t})}deepPartial(){return H(this)}partial(e){const t={};for(const s of x.objectKeys(this.shape)){const r=this.shape[s];e&&!e[s]?t[s]=r:t[s]=r.optional()}return new S({...this._def,shape:()=>t})}required(e){const t={};for(const s of x.objectKeys(this.shape))if(e&&!e[s])t[s]=this.shape[s];else{let a=this.shape[s];for(;a instanceof V;)a=a._def.innerType;t[s]=a}return new S({...this._def,shape:()=>t})}keyof(){return Ke(x.objectKeys(this.shape))}}S.create=(n,e)=>new S({shape:()=>n,unknownKeys:"strip",catchall:Z.create(),typeName:v.ZodObject,...A(e)});S.strictCreate=(n,e)=>new S({shape:()=>n,unknownKeys:"strict",catchall:Z.create(),typeName:v.ZodObject,...A(e)});S.lazycreate=(n,e)=>new S({shape:n,unknownKeys:"strip",catchall:Z.create(),typeName:v.ZodObject,...A(e)});class re extends b{_parse(e){const{ctx:t}=this._processInputParams(e),s=this._def.options;function r(a){for(const o of a)if(o.result.status==="valid")return o.result;for(const o of a)if(o.result.status==="dirty")return t.common.issues.push(...o.ctx.common.issues),o.result;const i=a.map(o=>new D(o.ctx.common.issues));return l(t,{code:d.invalid_union,unionErrors:i}),g}if(t.common.async)return Promise.all(s.map(async a=>{const i={...t,common:{...t.common,issues:[]},parent:null};return{result:await a._parseAsync({data:t.data,path:t.path,parent:i}),ctx:i}})).then(r);{let a;const i=[];for(const u of s){const h={...t,common:{...t.common,issues:[]},parent:null},E=u._parseSync({data:t.data,path:t.path,parent:h});if(E.status==="valid")return E;E.status==="dirty"&&!a&&(a={result:E,ctx:h}),h.common.issues.length&&i.push(h.common.issues)}if(a)return t.common.issues.push(...a.ctx.common.issues),a.result;const o=i.map(u=>new D(u));return l(t,{code:d.invalid_union,unionErrors:o}),g}}get options(){return this._def.options}}re.create=(n,e)=>new re({options:n,typeName:v.ZodUnion,...A(e)});function le(n,e){const t=L(n),s=L(e);if(n===e)return{valid:!0,data:n};if(t===f.object&&s===f.object){const r=x.objectKeys(e),a=x.objectKeys(n).filter(o=>r.indexOf(o)!==-1),i={...n,...e};for(const o of a){const u=le(n[o],e[o]);if(!u.valid)return{valid:!1};i[o]=u.data}return{valid:!0,data:i}}else if(t===f.array&&s===f.array){if(n.length!==e.length)return{valid:!1};const r=[];for(let a=0;a<n.length;a++){const i=n[a],o=e[a],u=le(i,o);if(!u.valid)return{valid:!1};r.push(u.data)}return{valid:!0,data:r}}else return t===f.date&&s===f.date&&+n==+e?{valid:!0,data:n}:{valid:!1}}class ae extends b{_parse(e){const{status:t,ctx:s}=this._processInputParams(e),r=(a,i)=>{if(Ee(a)||Ee(i))return g;const o=le(a.value,i.value);return o.valid?((Te(a)||Te(i))&&t.dirty(),{status:t.value,value:o.data}):(l(s,{code:d.invalid_intersection_types}),g)};return s.common.async?Promise.all([this._def.left._parseAsync({data:s.data,path:s.path,parent:s}),this._def.right._parseAsync({data:s.data,path:s.path,parent:s})]).then(([a,i])=>r(a,i)):r(this._def.left._parseSync({data:s.data,path:s.path,parent:s}),this._def.right._parseSync({data:s.data,path:s.path,parent:s}))}}ae.create=(n,e,t)=>new ae({left:n,right:e,typeName:v.ZodIntersection,...A(t)});class j extends b{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==f.array)return l(s,{code:d.invalid_type,expected:f.array,received:s.parsedType}),g;if(s.data.length<this._def.items.length)return l(s,{code:d.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),g;!this._def.rest&&s.data.length>this._def.items.length&&(l(s,{code:d.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());const a=[...s.data].map((i,o)=>{const u=this._def.items[o]||this._def.rest;return u?u._parse(new U(s,i,s.path,o)):null}).filter(i=>!!i);return s.common.async?Promise.all(a).then(i=>C.mergeArray(t,i)):C.mergeArray(t,a)}get items(){return this._def.items}rest(e){return new j({...this._def,rest:e})}}j.create=(n,e)=>{if(!Array.isArray(n))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new j({items:n,typeName:v.ZodTuple,rest:null,...A(e)})};class we extends b{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==f.map)return l(s,{code:d.invalid_type,expected:f.map,received:s.parsedType}),g;const r=this._def.keyType,a=this._def.valueType,i=[...s.data.entries()].map(([o,u],h)=>({key:r._parse(new U(s,o,s.path,[h,"key"])),value:a._parse(new U(s,u,s.path,[h,"value"]))}));if(s.common.async){const o=new Map;return Promise.resolve().then(async()=>{for(const u of i){const h=await u.key,E=await u.value;if(h.status==="aborted"||E.status==="aborted")return g;(h.status==="dirty"||E.status==="dirty")&&t.dirty(),o.set(h.value,E.value)}return{status:t.value,value:o}})}else{const o=new Map;for(const u of i){const h=u.key,E=u.value;if(h.status==="aborted"||E.status==="aborted")return g;(h.status==="dirty"||E.status==="dirty")&&t.dirty(),o.set(h.value,E.value)}return{status:t.value,value:o}}}}we.create=(n,e,t)=>new we({valueType:e,keyType:n,typeName:v.ZodMap,...A(t)});class Q extends b{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==f.set)return l(s,{code:d.invalid_type,expected:f.set,received:s.parsedType}),g;const r=this._def;r.minSize!==null&&s.data.size<r.minSize.value&&(l(s,{code:d.too_small,minimum:r.minSize.value,type:"set",inclusive:!0,exact:!1,message:r.minSize.message}),t.dirty()),r.maxSize!==null&&s.data.size>r.maxSize.value&&(l(s,{code:d.too_big,maximum:r.maxSize.value,type:"set",inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());const a=this._def.valueType;function i(u){const h=new Set;for(const E of u){if(E.status==="aborted")return g;E.status==="dirty"&&t.dirty(),h.add(E.value)}return{status:t.value,value:h}}const o=[...s.data.values()].map((u,h)=>a._parse(new U(s,u,s.path,h)));return s.common.async?Promise.all(o).then(u=>i(u)):i(o)}min(e,t){return new Q({...this._def,minSize:{value:e,message:m.toString(t)}})}max(e,t){return new Q({...this._def,maxSize:{value:e,message:m.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}Q.create=(n,e)=>new Q({valueType:n,minSize:null,maxSize:null,typeName:v.ZodSet,...A(e)});class Re extends b{get schema(){return this._def.getter()}_parse(e){const{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}Re.create=(n,e)=>new Re({getter:n,typeName:v.ZodLazy,...A(e)});class De extends b{_parse(e){if(e.data!==this._def.value){const t=this._getOrReturnCtx(e);return l(t,{received:t.data,code:d.invalid_literal,expected:this._def.value}),g}return{status:"valid",value:e.data}}get value(){return this._def.value}}De.create=(n,e)=>new De({value:n,typeName:v.ZodLiteral,...A(e)});function Ke(n,e){return new G({values:n,typeName:v.ZodEnum,...A(e)})}class G extends b{_parse(e){if(typeof e.data!="string"){const t=this._getOrReturnCtx(e),s=this._def.values;return l(t,{expected:x.joinValues(s),received:t.parsedType,code:d.invalid_type}),g}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){const t=this._getOrReturnCtx(e),s=this._def.values;return l(t,{received:t.data,code:d.invalid_enum_value,options:s}),g}return k(e.data)}get options(){return this._def.values}get enum(){const e={};for(const t of this._def.values)e[t]=t;return e}get Values(){const e={};for(const t of this._def.values)e[t]=t;return e}get Enum(){const e={};for(const t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return G.create(e,{...this._def,...t})}exclude(e,t=this._def){return G.create(this.options.filter(s=>!e.includes(s)),{...this._def,...t})}}G.create=Ke;class Le extends b{_parse(e){const t=x.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(e);if(s.parsedType!==f.string&&s.parsedType!==f.number){const r=x.objectValues(t);return l(s,{expected:x.joinValues(r),received:s.parsedType,code:d.invalid_type}),g}if(this._cache||(this._cache=new Set(x.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){const r=x.objectValues(t);return l(s,{received:s.data,code:d.invalid_enum_value,options:r}),g}return k(e.data)}get enum(){return this._def.values}}Le.create=(n,e)=>new Le({values:n,typeName:v.ZodNativeEnum,...A(e)});class ie extends b{unwrap(){return this._def.type}_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==f.promise&&t.common.async===!1)return l(t,{code:d.invalid_type,expected:f.promise,received:t.parsedType}),g;const s=t.parsedType===f.promise?t.data:Promise.resolve(t.data);return k(s.then(r=>this._def.type.parseAsync(r,{path:t.path,errorMap:t.common.contextualErrorMap})))}}ie.create=(n,e)=>new ie({type:n,typeName:v.ZodPromise,...A(e)});class K extends b{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===v.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:t,ctx:s}=this._processInputParams(e),r=this._def.effect||null,a={addIssue:i=>{l(s,i),i.fatal?t.abort():t.dirty()},get path(){return s.path}};if(a.addIssue=a.addIssue.bind(a),r.type==="preprocess"){const i=r.transform(s.data,a);if(s.common.async)return Promise.resolve(i).then(async o=>{if(t.value==="aborted")return g;const u=await this._def.schema._parseAsync({data:o,path:s.path,parent:s});return u.status==="aborted"?g:u.status==="dirty"||t.value==="dirty"?X(u.value):u});{if(t.value==="aborted")return g;const o=this._def.schema._parseSync({data:i,path:s.path,parent:s});return o.status==="aborted"?g:o.status==="dirty"||t.value==="dirty"?X(o.value):o}}if(r.type==="refinement"){const i=o=>{const u=r.refinement(o,a);if(s.common.async)return Promise.resolve(u);if(u instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(s.common.async===!1){const o=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});return o.status==="aborted"?g:(o.status==="dirty"&&t.dirty(),i(o.value),{status:t.value,value:o.value})}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(o=>o.status==="aborted"?g:(o.status==="dirty"&&t.dirty(),i(o.value).then(()=>({status:t.value,value:o.value}))))}if(r.type==="transform")if(s.common.async===!1){const i=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});if(!z(i))return g;const o=r.transform(i.value,a);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:o}}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(i=>z(i)?Promise.resolve(r.transform(i.value,a)).then(o=>({status:t.value,value:o})):g);x.assertNever(r)}}K.create=(n,e,t)=>new K({schema:n,typeName:v.ZodEffects,effect:e,...A(t)});K.createWithPreprocess=(n,e,t)=>new K({schema:e,effect:{type:"preprocess",transform:n},typeName:v.ZodEffects,...A(t)});class V extends b{_parse(e){return this._getType(e)===f.undefined?k(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}V.create=(n,e)=>new V({innerType:n,typeName:v.ZodOptional,...A(e)});class Y extends b{_parse(e){return this._getType(e)===f.null?k(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}Y.create=(n,e)=>new Y({innerType:n,typeName:v.ZodNullable,...A(e)});class fe extends b{_parse(e){const{ctx:t}=this._processInputParams(e);let s=t.data;return t.parsedType===f.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}fe.create=(n,e)=>new fe({innerType:n,typeName:v.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...A(e)});class he extends b{_parse(e){const{ctx:t}=this._processInputParams(e),s={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:s.data,path:s.path,parent:{...s}});return ne(r)?r.then(a=>({status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new D(s.common.issues)},input:s.data})})):{status:"valid",value:r.status==="valid"?r.value:this._def.catchValue({get error(){return new D(s.common.issues)},input:s.data})}}removeCatch(){return this._def.innerType}}he.create=(n,e)=>new he({innerType:n,typeName:v.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...A(e)});class Pe extends b{_parse(e){if(this._getType(e)!==f.nan){const s=this._getOrReturnCtx(e);return l(s,{code:d.invalid_type,expected:f.nan,received:s.parsedType}),g}return{status:"valid",value:e.data}}}Pe.create=n=>new Pe({typeName:v.ZodNaN,...A(n)});class gn extends b{_parse(e){const{ctx:t}=this._processInputParams(e),s=t.data;return this._def.type._parse({data:s,path:t.path,parent:t})}unwrap(){return this._def.type}}class ve extends b{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.common.async)return(async()=>{const a=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return a.status==="aborted"?g:a.status==="dirty"?(t.dirty(),X(a.value)):this._def.out._parseAsync({data:a.value,path:s.path,parent:s})})();{const r=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return r.status==="aborted"?g:r.status==="dirty"?(t.dirty(),{status:"dirty",value:r.value}):this._def.out._parseSync({data:r.value,path:s.path,parent:s})}}static create(e,t){return new ve({in:e,out:t,typeName:v.ZodPipeline})}}class me extends b{_parse(e){const t=this._def.innerType._parse(e),s=r=>(z(r)&&(r.value=Object.freeze(r.value)),r);return ne(t)?t.then(r=>s(r)):s(t)}unwrap(){return this._def.innerType}}me.create=(n,e)=>new me({innerType:n,typeName:v.ZodReadonly,...A(e)});var v;(function(n){n.ZodString="ZodString",n.ZodNumber="ZodNumber",n.ZodNaN="ZodNaN",n.ZodBigInt="ZodBigInt",n.ZodBoolean="ZodBoolean",n.ZodDate="ZodDate",n.ZodSymbol="ZodSymbol",n.ZodUndefined="ZodUndefined",n.ZodNull="ZodNull",n.ZodAny="ZodAny",n.ZodUnknown="ZodUnknown",n.ZodNever="ZodNever",n.ZodVoid="ZodVoid",n.ZodArray="ZodArray",n.ZodObject="ZodObject",n.ZodUnion="ZodUnion",n.ZodDiscriminatedUnion="ZodDiscriminatedUnion",n.ZodIntersection="ZodIntersection",n.ZodTuple="ZodTuple",n.ZodRecord="ZodRecord",n.ZodMap="ZodMap",n.ZodSet="ZodSet",n.ZodFunction="ZodFunction",n.ZodLazy="ZodLazy",n.ZodLiteral="ZodLiteral",n.ZodEnum="ZodEnum",n.ZodEffects="ZodEffects",n.ZodNativeEnum="ZodNativeEnum",n.ZodOptional="ZodOptional",n.ZodNullable="ZodNullable",n.ZodDefault="ZodDefault",n.ZodCatch="ZodCatch",n.ZodPromise="ZodPromise",n.ZodBranded="ZodBranded",n.ZodPipeline="ZodPipeline",n.ZodReadonly="ZodReadonly"})(v||(v={}));const R=B.create,vn=q.create,yn=W.create;Z.create;w.create;const Ye=S.create,_n=re.create;ae.create;j.create;G.create;ie.create;V.create;Y.create;function An(){const n=new Map;return{on(e,t){let s=n.get(e);return s||(s=new Set,n.set(e,s)),s.add(t),()=>{s==null||s.delete(t),s&&s.size===0&&n.delete(e)}},emit(e,...t){const s=n.get(e);if(!(!s||s.size===0))for(const r of s)try{r(...t)}catch(a){console.error(`Error in event handler for "${String(e)}":`,a)}},off(e,t){const s=n.get(e);s&&(s.delete(t),s.size===0&&n.delete(e))},clear(){n.clear()}}}class En{constructor(e,t){I(this,"eventEmitter");I(this,"_status");I(this,"_error",null);I(this,"_isLoading",!1);I(this,"logger");I(this,"_timing",new Map);this.eventEmitter=An(),this._status=e,this.logger=t}log(e,t,s){if(!this.logger)return;const r={action:this.constructor.name,status:this._status,...s};switch(e){case"debug":this.logger.debug(t,r);break;case"info":this.logger.info(t,r);break;case"warn":this.logger.warn(t,r);break;case"error":this.logger.error(t,r);break}}getTiming(e){return this._timing.get(e)}getAllTimings(){return Object.fromEntries(this._timing)}recordTiming(e,t){this._timing.set(e,t)}get status(){return this._status}get error(){return this._error}get isFailed(){return this._error!==null}get isLoading(){return this._isLoading}updateStatus(e){this._status=e,this.emitStatusChange(e)}assertStatus(e,t){const s=Array.isArray(e)?e:[e];if(!s.includes(this._status))throw new T(P.INVALID_STATE,`Cannot ${t} while status is ${this._status}, allowed: ${s.join(", ")}`)}clearError(){this._error=null}handleFailure(e){throw this._error=e instanceof T?e:de(e),this.emitError(this._error),this.emitFailed(),this._error}setLoading(e){this._isLoading=e,this.emitLoading(e)}async act(e,t){const s=performance.now(),r=t??"operation";this.log("debug",`Starting ${r}`,{step:String(r)}),this.clearError(),this.setLoading(!0);try{const a=await e(),i=performance.now()-s;return this.recordTiming(String(r),i),this.log("info",`Completed ${r}`,{step:String(r),duration:Math.round(i)}),t!==void 0&&this.updateStatus(t),a}catch(a){const i=performance.now()-s,o=a instanceof T?a:de(a);return this.recordTiming(String(r),i),this.log("error",`Failed ${r}`,{step:String(r),duration:Math.round(i),errorCode:o.code,errorMessage:o.message}),this.handleFailure(a)}finally{this.setLoading(!1)}}on(e,t){return this.eventEmitter.on(e,t)}emitProgress(e){this.eventEmitter.emit("progress",e)}emitStatusChange(e){this.eventEmitter.emit("status-change",e)}emitCompleted(){this.eventEmitter.emit("completed")}emitFailed(){this.eventEmitter.emit("failed")}emitError(e){this.eventEmitter.emit("error",e)}emitLoading(e){this.eventEmitter.emit("loading",e)}clearListeners(){this.eventEmitter.clear()}}function Tn(n){if(!n||typeof n!="string")return!1;if(n.startsWith("bc1")||n.startsWith("tb1"))try{return ye.address.fromBech32(n),!0}catch{return!1}try{return ye.address.fromBase58Check(n),!0}catch{return!1}}function bn(n){const e=/^[1-9A-HJ-NP-Za-km-z]+$/;if(!n||typeof n!="string"||!e.test(n)||n.length<32||n.length>44)return!1;try{return xn(n).length===32}catch{return!1}}function xn(n){const e="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",t={};for(let u=0;u<e.length;u++)t[e[u]]=u;if(n.length===0)return new Uint8Array(0);let s=0;for(let u=0;u<n.length&&n[u]==="1";u++)s++;const r=Math.ceil(n.length*Math.log(58)/Math.log(256)),a=new Uint8Array(r);for(let u=s;u<n.length;u++){const h=t[n[u]];if(h===void 0)throw new Error(`Invalid base58 character: ${n[u]}`);let E=h;for(let O=r-1;O>=0;O--)E+=58*a[O],a[O]=E%256,E=Math.floor(E/256)}let i=0;for(;i<a.length&&a[i]===0;)i++;const o=new Uint8Array(s+(a.length-i));return o.fill(0,0,s),o.set(a.subarray(i),s),o}function Je(n){const e=R({message:"Amount is required"}).min(1,"Amount is required").refine(t=>t!=="0",{message:"Amount must be greater than 0"}).refine(t=>{const s=Number.parseFloat(t);return!Number.isNaN(s)&&s>0},{message:"Invalid amount format"});return n!==void 0&&n>0?e.refine(t=>Number.parseFloat(t)>=n,{message:`Amount must be at least ${n}`}):e}const Xe=Je(),Qe=Je(at.MIN_STAKE_AMOUNT_BTC),Sn=Xe;_n([yn(),vn()]).refine(n=>n>0,{message:"Amount must be greater than 0"});const Nn=R({message:"Address is required"}).regex(/^0x[a-fA-F0-9]{40}$/,"Invalid EVM address format"),In=R({message:"Address is required"}).refine(bn,{message:"Invalid Solana address format"}),Cn=R({message:"Address is required"}).regex(/^0x[a-fA-F0-9]{64}$/,"Invalid Sui address format"),kn=R({message:"Address is required"}).regex(/^0x[a-fA-F0-9]{1,64}$/,"Invalid Starknet address format"),On=R({message:"Address is required"}).refine(Tn,{message:"Invalid Bitcoin address format"}),et=R().optional();R().regex(/^0x[a-fA-F0-9]{64}$/,"Invalid transaction hash");Ye({amount:Qe,recipient:R({message:"Recipient is required"}).min(1,"Recipient is required"),referralCode:et});function wn(n,e,t={}){const s=n.safeParse(e);if(!s.success){const r=s.error.issues[0],a=r==null?void 0:r.path[0],i=(r==null?void 0:r.message)??"Invalid parameter";throw a==="amount"?T.invalidAmount(i):a==="recipient"?T.invalidAddress(e==null?void 0:e.recipient,t.destChain):T.invalidParameter(String(a),i)}return s.data}const Rn={IDLE:"idle",NEEDS_FEE_AUTHORIZATION:"needs_fee_authorization",NEEDS_ADDRESS_CONFIRMATION:"needs_address_confirmation",NEEDS_DEPLOY_AUTHORIZATION:"needs_deploy_authorization",READY:"ready",ADDRESS_READY:"address_ready"},Dn={IDLE:"idle",NEEDS_FEE_AUTHORIZATION:"needs_fee_authorization",NEEDS_APPROVAL:"needs-approval",READY:"ready",CONFIRMING:"confirming",COMPLETED:"completed"},Ln={IDLE:"idle",READY:"ready",CONFIRMING:"confirming",COMPLETED:"completed"};exports.ASSET_CATALOG=N;exports.BaseAction=En;exports.BtcActionStatus=Rn;exports.CAIP2_SEPARATOR=oe;exports.CHAIN_CATALOG=$;exports.CHAIN_PREFIXES=p;exports.CapabilityRegistry=He;exports.Chain=c;exports.ContractErrorCode=Ze;exports.ErrorCode=Me;exports.EvmOperationStatus=Dn;exports.LombardError=T;exports.NonEvmOperationStatus=Ln;exports.PartnerConfiguration=je;exports.ProviderErrorCode=Ve;exports.RegistryErrorCode=Ue;exports.SDK_NAME=ot;exports.SDK_RUNTIME=ct;exports.SDK_VERSION=Be;exports.StepStatus=jt;exports.StrategyStatus=Ft;exports.ValidationErrorCode=P;exports.WithdrawErrorCode=$e;exports.amountSchema=Xe;exports.bitcoinAddressSchema=On;exports.btcStakeAmountSchema=Qe;exports.chainValueToKey=dt;exports.createBtcCoreContext=Zt;exports.createEvmCoreContext=$t;exports.evmAddressSchema=Nn;exports.evmAmountSchema=Sn;exports.evmChainIdToChain=Et;exports.getAllAssetChains=Lt;exports.getAssetAddress=bt;exports.getAssetByAddress=Ot;exports.getAssetChains=wt;exports.getAssetChainsForEnvs=te;exports.getAssetDecimals=xt;exports.getAssetEnvironments=Rt;exports.getAssetMetadata=Pt;exports.getAssetRouter=St;exports.getBridgeAdapter=It;exports.getChainMetadata=mt;exports.getChainName=pt;exports.getChainType=gt;exports.getEvmAssetChains=Bt;exports.getEvmChainsWithAllAssets=Vt;exports.getExplorerTxUrl=_t;exports.getProviderGetter=ge;exports.getPublicMarketMaker=Ct;exports.getSupportedAssets=Dt;exports.isAssetDeployed=kt;exports.isChain=ut;exports.isEvmChain=pe;exports.isLombardError=Fe;exports.isMainnet=yt;exports.isTestnet=vt;exports.objectType=Ye;exports.parseChainIdentifier=At;exports.referralCodeSchema=et;exports.solanaAddressSchema=In;exports.starknetAddressSchema=kn;exports.stringType=R;exports.suiAddressSchema=Cn;exports.usesAssetRouter=Nt;exports.validatePrepareParams=wn;exports.wrapError=de;
2
- //# sourceMappingURL=statusConstants-BPtrxbYC.cjs.map
@@ -1,2 +0,0 @@
1
- "use strict";const g=require("axios"),u=require("./api-config-DkXqqfCK.cjs"),c=require("./tokens-C5rzCTTM.cjs");async function p({address:i,chainId:n,env:a,tokenAddress:t}){const{baseApiUrl:s}=u.getApiConfig(a);try{const r={user_destination_address:i,chain_id:n};t&&(r.token_address=t);const{data:e}=await g.get(`${s}/api/v1/claimer/get-user-signature`,{params:r});return{expirationDate:e==null?void 0:e.expiration_date,hasSignature:e==null?void 0:e.has_signature,isDelayed:e==null?void 0:e.is_delayed,signature:e==null?void 0:e.signature,typedData:e==null?void 0:e.typed_data}}catch(r){const e=c.getErrorMessage(r);throw new Error(e)}}async function _({signature:i,typedData:n,address:a,env:t,tokenAddress:s}){const{baseApiUrl:r}=u.getApiConfig(t);try{const e={typed_data:n,signature:i,user_destination_address:a};s&&(e.token_address=s);const{data:o}=await g.post(`${r}/api/v1/claimer/save-user-signature`,null,{params:e});return o.status}catch(e){const o=c.getErrorMessage(e);throw new Error(o)}}exports.getNetworkFeeSignature=p;exports.storeNetworkFeeSignature=_;
2
- //# sourceMappingURL=storeNetworkFeeSignature-Z0NcQyIn.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storeNetworkFeeSignature-Z0NcQyIn.cjs","sources":["../../src/api-functions/getNetworkFeeSignature/getNetworkFeeSignature.ts","../../src/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.ts"],"sourcesContent":["import axios from 'axios';\n\nimport { getApiConfig } from '../../common/api-config';\nimport { ChainId } from '../../common/chains';\nimport { IEnvParam } from '../../common/parameters';\nimport { getErrorMessage } from '../../utils/err';\n\nexport interface IGetNetworkFeeSignatureParams extends IEnvParam {\n /**\n * Chain ID of the network to interact with\n */\n chainId: ChainId;\n /**\n * Destination address\n */\n address: string;\n /**\n * Token address (optional, required for BTC.b)\n */\n tokenAddress?: string;\n}\n\ninterface IGetNetworkFeeSignatureResponse {\n /**\n * Expiration date of signature\n */\n expiration_date: string;\n /**\n * The flag signature exists\n */\n has_signature: boolean;\n /**\n * The auto mint is delayed\n */\n is_delayed: boolean;\n /**\n * Serialized signature when available\n */\n signature?: string;\n /**\n * Serialized typed data associated with the signature when available\n */\n typed_data?: string;\n}\n\nexport interface IGetNetworkFeeSignatureMappedResponse {\n /**\n * Expiration date of signature\n */\n expirationDate: string;\n /**\n * The flag signature exists\n */\n hasSignature: boolean;\n /**\n * The auto mint is delayed\n */\n isDelayed: boolean;\n /**\n * Serialized signature when available\n */\n signature?: string;\n /**\n * Serialized typed data associated with the signature when available\n */\n typedData?: string;\n}\n\n/**\n * Returns the expiration date and the flag signature exists\n *\n * @param {IGetNetworkFeeSignatureParams} parameters - The parameters.\n * @param {string} parameters.address - The account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<IGetNetworkFeeSignatureResponse>}\n */\nexport async function getNetworkFeeSignature({\n address,\n chainId,\n env,\n tokenAddress,\n}: IGetNetworkFeeSignatureParams): Promise<IGetNetworkFeeSignatureMappedResponse> {\n const { baseApiUrl } = getApiConfig(env);\n\n try {\n const params: Record<string, string | number> = {\n user_destination_address: address,\n chain_id: chainId,\n };\n\n if (tokenAddress) {\n params.token_address = tokenAddress;\n }\n\n const { data } = await axios.get<IGetNetworkFeeSignatureResponse>(\n `${baseApiUrl}/api/v1/claimer/get-user-signature`,\n {\n params,\n },\n );\n\n return {\n expirationDate: data?.expiration_date,\n hasSignature: data?.has_signature,\n isDelayed: data?.is_delayed,\n signature: data?.signature,\n typedData: data?.typed_data,\n };\n } catch (error) {\n const errorMessage = getErrorMessage(error);\n\n throw new Error(errorMessage);\n }\n}\n","import axios from 'axios';\n\nimport { getApiConfig } from '../../common/api-config';\nimport { IEnvParam } from '../../common/parameters';\nimport { getErrorMessage } from '../../utils/err';\n\nexport type IStoreNetworkFeeSignatureStatus = 'success';\n\ninterface IStoreNetworkFeeSignatureResponse {\n status: IStoreNetworkFeeSignatureStatus;\n}\n\nexport interface IStoreNetworkFeeSignatureParams extends IEnvParam {\n /**\n * signature\n */\n signature: string;\n /**\n * JSON typed data used for the signature\n */\n typedData: string;\n /**\n * Destination address\n */\n address: string;\n /**\n * Token address (required to distinguish LBTC vs BTC.b signatures)\n */\n tokenAddress?: string;\n}\n\n/**\n * Authorize network fee\n *\n * @param {IStoreNetworkFeeSignatureParams} parameters - The parameters for network fee authorization\n * @param {string} parameters.address - The destination account address.\n * @param {string} parameters.signature - The signature.\n * @param {string} parameters.typedData - The serialized typed data.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<IStoreNetworkFeeSignatureResponse>}\n */\nexport async function storeNetworkFeeSignature({\n signature,\n typedData,\n address,\n env,\n tokenAddress,\n}: IStoreNetworkFeeSignatureParams): Promise<IStoreNetworkFeeSignatureStatus> {\n const { baseApiUrl } = getApiConfig(env);\n\n try {\n const params: Record<string, string> = {\n typed_data: typedData,\n signature,\n user_destination_address: address,\n };\n\n // Include token address to distinguish LBTC vs BTC.b signatures\n if (tokenAddress) {\n params.token_address = tokenAddress;\n }\n\n const { data } = await axios.post<IStoreNetworkFeeSignatureResponse>(\n `${baseApiUrl}/api/v1/claimer/save-user-signature`,\n null,\n { params },\n );\n\n return data.status;\n } catch (error) {\n const errorMsg = getErrorMessage(error);\n throw new Error(errorMsg);\n }\n}\n"],"names":["getNetworkFeeSignature","address","chainId","env","tokenAddress","baseApiUrl","getApiConfig","params","data","axios","error","errorMessage","getErrorMessage","storeNetworkFeeSignature","signature","typedData","errorMsg"],"mappings":"gHA8EA,eAAsBA,EAAuB,CAC3C,QAAAC,EACA,QAAAC,EACA,IAAAC,EACA,aAAAC,CACF,EAAkF,CAChF,KAAM,CAAE,WAAAC,CAAA,EAAeC,EAAAA,aAAaH,CAAG,EAEvC,GAAI,CACF,MAAMI,EAA0C,CAC9C,yBAA0BN,EAC1B,SAAUC,CAAA,EAGRE,IACFG,EAAO,cAAgBH,GAGzB,KAAM,CAAE,KAAAI,CAAA,EAAS,MAAMC,EAAM,IAC3B,GAAGJ,CAAU,qCACb,CACE,OAAAE,CAAA,CACF,EAGF,MAAO,CACL,eAAgBC,GAAA,YAAAA,EAAM,gBACtB,aAAcA,GAAA,YAAAA,EAAM,cACpB,UAAWA,GAAA,YAAAA,EAAM,WACjB,UAAWA,GAAA,YAAAA,EAAM,UACjB,UAAWA,GAAA,YAAAA,EAAM,UAAA,CAErB,OAASE,EAAO,CACd,MAAMC,EAAeC,EAAAA,gBAAgBF,CAAK,EAE1C,MAAM,IAAI,MAAMC,CAAY,CAC9B,CACF,CCzEA,eAAsBE,EAAyB,CAC7C,UAAAC,EACA,UAAAC,EACA,QAAAd,EACA,IAAAE,EACA,aAAAC,CACF,EAA8E,CAC5E,KAAM,CAAE,WAAAC,CAAA,EAAeC,EAAAA,aAAaH,CAAG,EAEvC,GAAI,CACF,MAAMI,EAAiC,CACrC,WAAYQ,EACZ,UAAAD,EACA,yBAA0Bb,CAAA,EAIxBG,IACFG,EAAO,cAAgBH,GAGzB,KAAM,CAAE,KAAAI,CAAA,EAAS,MAAMC,EAAM,KAC3B,GAAGJ,CAAU,sCACb,KACA,CAAE,OAAAE,CAAA,CAAO,EAGX,OAAOC,EAAK,MACd,OAASE,EAAO,CACd,MAAMM,EAAWJ,EAAAA,gBAAgBF,CAAK,EACtC,MAAM,IAAI,MAAMM,CAAQ,CAC1B,CACF"}
@@ -1,65 +0,0 @@
1
- import c from "axios";
2
- import { getApiConfig as u } from "./api-config-Dm6dR85f.js";
3
- import { getErrorMessage as g } from "./tokens-BUrC15ra.js";
4
- async function y({
5
- address: i,
6
- chainId: a,
7
- env: o,
8
- tokenAddress: t
9
- }) {
10
- const { baseApiUrl: s } = u(o);
11
- try {
12
- const e = {
13
- user_destination_address: i,
14
- chain_id: a
15
- };
16
- t && (e.token_address = t);
17
- const { data: r } = await c.get(
18
- `${s}/api/v1/claimer/get-user-signature`,
19
- {
20
- params: e
21
- }
22
- );
23
- return {
24
- expirationDate: r == null ? void 0 : r.expiration_date,
25
- hasSignature: r == null ? void 0 : r.has_signature,
26
- isDelayed: r == null ? void 0 : r.is_delayed,
27
- signature: r == null ? void 0 : r.signature,
28
- typedData: r == null ? void 0 : r.typed_data
29
- };
30
- } catch (e) {
31
- const r = g(e);
32
- throw new Error(r);
33
- }
34
- }
35
- async function d({
36
- signature: i,
37
- typedData: a,
38
- address: o,
39
- env: t,
40
- tokenAddress: s
41
- }) {
42
- const { baseApiUrl: e } = u(t);
43
- try {
44
- const r = {
45
- typed_data: a,
46
- signature: i,
47
- user_destination_address: o
48
- };
49
- s && (r.token_address = s);
50
- const { data: n } = await c.post(
51
- `${e}/api/v1/claimer/save-user-signature`,
52
- null,
53
- { params: r }
54
- );
55
- return n.status;
56
- } catch (r) {
57
- const n = g(r);
58
- throw new Error(n);
59
- }
60
- }
61
- export {
62
- y as getNetworkFeeSignature,
63
- d as storeNetworkFeeSignature
64
- };
65
- //# sourceMappingURL=storeNetworkFeeSignature-ZdHcFmfP.js.map