@lombard.finance/sdk 2.0.16 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -44,12 +44,15 @@ const { getDepositBtcAddress } = require('@lombard.finance/sdk');
44
44
  - [generateDepositBtcAddress](#generateDepositBtcAddress)
45
45
  - [getDepositsByAddress](#getDepositsByAddress)
46
46
  - [getLBTCExchangeRate](#getLBTCExchangeRate)
47
+ - [storeStakeAndBakeSignature](#storeStakeAndBakeSignature)
48
+ - [getUserStakeAndBakeSignature](#getUserStakeAndBakeSignature)
47
49
  - Web3 based
48
50
  - [signLbtcDestionationAddr](#signLbtcDestionationAddr)
49
51
  - [claimLBTC](#claimLBTC)
50
52
  - [unstakeLBTC](#unstakeLBTC)
51
53
  - [getBasculeDepositStatus](#getBasculeDepositStatus)
52
54
  - [getLBTCTotalSupply](#getLBTCTotalSupply)
55
+ - [signStakeAndBake](#signStakeAndBake)
53
56
 
54
57
  #### getDepositBtcAddress
55
58
 
@@ -322,11 +325,107 @@ const totalSupply = await getLBTCTotalSupply({
322
325
  console.log(totalSupply); // '2000000'
323
326
  ```
324
327
 
325
- ## Development
328
+ #### signStakeAndBake
326
329
 
327
- Available scripts:
330
+ `@returns Promise<ISignStakeAndBakeResult>` Sign authorization promise
328
331
 
329
- - `npm run build` - build the package
330
- - `npm run storybook` - start [storybook](https://storybook.js.org/) for development
331
- - `npm run build-storybook` - build storybook
332
- - `npm run build-docs` - build [Typedoc](https://typedoc.org/) documentation
332
+ Sign Stake And Bake
333
+
334
+ ## Parameters
335
+
336
+ | name | type | description |
337
+ |--------------|---------------------|-----------------------------------------------------------------------------|
338
+ | `provider` | `IProvider` | Provider instance to interact with the blockchain |
339
+ | `address` | `string` | The address to sign with (owner) |
340
+ | `chainId` | `TChainId` | Chain ID for the signature |
341
+ | `value` | `string` | The value to approve |
342
+ | `expiry` | `number` | Expiry date as a unix timestamp |
343
+ | `rpcUrl` | `string` (optional) | Optional RPC URL for the network |
344
+ | `vaultKey` | `string` | The key of the vault to authorize |
345
+
346
+ Usage
347
+
348
+ ```typescript
349
+ import { signStakeAndBake } from '@lombard.finance/sdk';
350
+
351
+ const { signature, signatureData } = await signStakeAndBake({
352
+ provider: window.ethereum,
353
+ address: '0x...',
354
+ chainId,
355
+ value: toSatoshi(approvalValue.toString()).toString(),
356
+ expiry: permitExpiryTime,
357
+ vaultKey: selectedVault.key
358
+ });
359
+ ```
360
+
361
+ #### storeStakeAndBakeSignature
362
+
363
+ `@returns Promise<IStoreStakeAndBakeSignatureStatus>` Store Stake And Bake Signature Status promise
364
+
365
+ Store stake and bake signature
366
+
367
+ ## Parameters
368
+
369
+ | name | type | description |
370
+ |--------------|---------------------|---------------------------------------------|
371
+ | `env` | `TEnv` | Environment (e.g., 'prod', 'dev', etc.) |
372
+ | `signature` | `string` | The generated signature |
373
+ | `typedData` | `string` | JSON typed data used for the signature |
374
+
375
+ Usage
376
+
377
+ ```typescript
378
+ import { storeStakeAndBakeSignature } from '@lombard.finance/sdk';
379
+
380
+ const status = await storeStakeAndBakeSignature({ signature, signatureData, env: 'prod' });
381
+
382
+ ```
383
+
384
+ #### getUserStakeAndBakeSignature
385
+
386
+ `@returns Promise<IGetUserStakeAndBakeSignatureResponse>` Promise that resolves to the signature response
387
+
388
+ Get user's stake and bake signature from the API
389
+
390
+ ## Parameters
391
+
392
+ | name | type | description |
393
+ |-------------------------|----------|--------------------------------------------|
394
+ | `userDestinationAddress`| `string` | The user's destination address |
395
+ | `chainId` | `string` | The chain ID |
396
+ | `env` | `TEnv` | Environment (e.g., 'prod', 'dev', etc.) |
397
+
398
+
399
+ Usage
400
+
401
+ ```typescript
402
+ import { getUserStakeAndBakeSignature } from '@lombard.finance/sdk';
403
+
404
+ const response = await getUserStakeAndBakeSignature({
405
+ userDestinationAddress: address,
406
+ chainId,
407
+ env: 'prod'
408
+ });
409
+ console.log(response);
410
+ ```
411
+
412
+ #### getStakeAndBakeVaults
413
+
414
+ `@returns IStakeAndBakeVault[]` A list of available vaults
415
+
416
+ ## Parameters
417
+
418
+ | name | type | description |
419
+ |-------------------------|----------|--------------------------------------------|
420
+ | `chainId` | `string` | The chain ID |
421
+
422
+
423
+ Usage
424
+
425
+ ```typescript
426
+ import { getStakeAndBakeVaults } from '@lombard.finance/sdk';
427
+
428
+ const vaults = getStakeAndBakeVaults(1);
429
+
430
+ console.log(vaults);
431
+ ```
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var Ne=Object.defineProperty;var Me=(e,t,n)=>t in e?Ne(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var _=(e,t,n)=>(Me(e,typeof t!="symbol"?t+"":t,n),n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("axios"),D=require("bignumber.js"),g=require("web3"),Pe=require("@bitcoin-js/tiny-secp256k1-asmjs"),x=require("bitcoinjs-lib");function Oe(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const a=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,a.get?a:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const Be=Oe(Pe),y={prod:"prod",testnet:"testnet",stage:"stage"},i={ethereum:1,holesky:17e3,binanceSmartChain:56,binanceSmartChainTestnet:97,sepolia:11155111,base:8453,baseTestnet:84532,berachainBartioTestnet:80084,corn:21e6,swell:1923},be=e=>e===y.prod?i.ethereum:i.holesky,fe=e=>e===y.prod?i.binanceSmartChain:i.binanceSmartChainTestnet,Te=e=>e===y.prod?i.base:i.baseTestnet,z=y.prod,u="0x0000000000000000000000000000000000000000",Ue={baseApiUrl:"https://staging.prod.lombard.finance"},Le={baseApiUrl:"https://gastald-testnet.prod.lombard.finance"},Fe={baseApiUrl:"https://mainnet.prod.lombard.finance"},E=(e=z)=>{switch(e){case y.prod:return Fe;case y.testnet:return Le;default:return Ue}};function S(e){return typeof e=="string"?e:(n=>{var a;return((a=n==null?void 0:n.data)==null?void 0:a.message)&&typeof n.data.message=="string"})(e)?e.data.message:e instanceof Error?ke(e):Ge(e)}function ke(e){return e.response?e.response.data.message:e.message}function Ge(e){return e!=null&&e.message?e.message:"Unknown error"}const I={eth:"DESTINATION_BLOCKCHAIN_ETHEREUM",base:"DESTINATION_BLOCKCHAIN_BASE",bsc:"DESTINATION_BLOCKCHAIN_BSC",mantle:"DESTINATION_BLOCKCHAIN_MANTLE",linea:"DESTINATION_BLOCKCHAIN_LINEA",zcircuit:"DESTINATION_BLOCKCHAIN_ZIRCUIT",scroll:"DESTINATION_BLOCKCHAIN_SCROLL",xlayer:"DESTINATION_BLOCKCHAIN_XLAYER"};function X(e){switch(e){case i.ethereum:case i.holesky:case i.sepolia:return I.eth;case i.base:case i.baseTestnet:return I.base;case i.binanceSmartChain:case i.binanceSmartChainTestnet:return I.bsc;default:throw new Error(`Unknown chain ID: ${e}`)}}const he="sanctioned_address",We="api/v1/address/generate",Ve="destination address is under sanctions";async function $e({address:e,chainId:t,signature:n,eip712Data:a,env:s,referrerCode:r,partnerId:o,captchaToken:p}){const{baseApiUrl:d}=E(s),w=X(t),b={to_address:e,to_address_signature:n,to_chain:w,partner_id:o,nonce:0,captcha:p,referrer_code:r,eip_712_data:a};try{const{data:m}=await v.post(We,b,{baseURL:d});return m.address}catch(m){const c=S(m);if(He(c))return he;throw new Error(c)}}function He(e){return!!e.includes(Ve)}const je="api/v1/address";async function qe({address:e,chainId:t,env:n,partnerId:a}){const s=await ge({address:e,chainId:t,env:n,partnerId:a}),r=Je(s);if(!r)throw new Error("No address");return r.btc_address}function Je(e){if(!e.length)return;const t=e.reduce((n,a)=>n.created_at<a.created_at?a:n,e[0]);return t.deprecated?void 0:t}async function ge({address:e,chainId:t,env:n,partnerId:a}){const{baseApiUrl:s}=E(n),r=X(t),o={to_address:e,to_blockchain:r,limit:1,offset:0,asc:!1,referralId:a},{data:p}=await v.get(je,{baseURL:s,params:o});return(p==null?void 0:p.addresses)||[]}const Ke=8,Y=10**Ke;function te(e){return+e/Y}function ne(e){return Math.floor(+e*Y)}function we(e,t=z){switch(e){case I.eth:return be(t);case I.base:return Te(t);case I.bsc:return fe(t);default:return i.ethereum}}var Ae=(e=>(e.NOTARIZATION_STATUS_UNSPECIFIED="NOTARIZATION_STATUS_UNSPECIFIED",e.NOTARIZATION_STATUS_PENDING="NOTARIZATION_STATUS_PENDING",e.NOTARIZATION_STATUS_SUBMITTED="NOTARIZATION_STATUS_SUBMITTED",e.NOTARIZATION_STATUS_SESSION_APPROVED="NOTARIZATION_STATUS_SESSION_APPROVED",e.NOTARIZATION_STATUS_FAILED="NOTARIZATION_STATUS_FAILED",e))(Ae||{}),Ee=(e=>(e.SESSION_STATE_UNSPECIFIED="SESSION_STATE_UNSPECIFIED",e.SESSION_STATE_PENDING="SESSION_STATE_PENDING",e.SESSION_STATE_COMPLETED="SESSION_STATE_COMPLETED",e.SESSION_STATE_EXPIRED="SESSION_STATE_EXPIRED",e))(Ee||{});async function Ze({address:e,env:t}){const{baseApiUrl:n}=E(t),{data:a}=await v.get(`api/v1/address/outputs-v2/${e}`,{baseURL:n});return((a==null?void 0:a.outputs)??[]).map(ze(t))}function ze(e){return t=>({txid:t.txid,index:t.index??0,blockHeight:t.block_height?Number(t.block_height):void 0,blockTime:t.block_time?Number(t.block_time):void 0,value:new D(te(t.value)),address:t.address,chainId:we(t.to_chain,e),claimedTxId:t.claim_tx,rawPayload:t.raw_payload,signature:t.proof,isRestricted:!!t.sanctioned,notarizationWaitDur:t.notarization_wait_dur?Number(t.notarization_wait_dur):void 0,payload:t.payload_hash,sessionId:t.session_id,notarizationStatus:t.notarization_status,sessionState:t.session_state})}const Xe=2e-4;async function Ye({env:e,chainId:t=i.ethereum,amount:n=1}){const{baseApiUrl:a}=E(e),s=X(t),{data:r}=await v.get(`api/v1/exchange/rate/${s}`,{baseURL:a,params:{amount:n}}),o=new D(Xe).multipliedBy(Y).toFixed();return{exchangeRate:+r.amount_out,minAmount:+o}}async function Qe({address:e,chainId:t,env:n}){const{baseApiUrl:a}=E(n);try{const{data:s}=await v.get(`${a}/api/v1/claimer/get-user-signature`,{params:{user_destination_address:e,chain_id:t}});return{expirationDate:s==null?void 0:s.expiration_date,hasSignature:s==null?void 0:s.has_signature,isDelayed:s==null?void 0:s.is_delayed}}catch(s){const r=S(s);throw new Error(r)}}async function et({userDestinationAddress:e,chainId:t,env:n}){const{baseApiUrl:a}=E(n);try{const{data:s}=await v.get(`${a}/api/v1/claimer/get-user-stake-and-bake-signature`,{params:{userDestinationAddress:e,chainId:t.toString()}});return{userDestinationAddress:s.user_destination_address,signature:s.signature,expirationDate:s.expiration_date,depositAmount:s.deposit_amount,chainId:s.chain_id}}catch(s){const r=S(s);throw new Error(`Failed to get user stake and bake signature: ${r}`)}}async function tt({signature:e,typedData:t,address:n,env:a}){const{baseApiUrl:s}=E(a);try{const{data:r}=await v.post(`${s}/api/v1/claimer/save-user-signature`,null,{params:{typed_data:t,signature:e,user_destination_address:n}});return r.status}catch(r){const o=S(r);throw new Error(o)}}async function nt({signature:e,typedData:t,env:n}){const{baseApiUrl:a}=E(n);try{const{data:s}=await v.post(`${a}/api/v1/claimer/save-stake-and-bake-signature`,null,{params:{typed_data:t,signature:e}});return s.status}catch(s){const r=S(s);throw new Error(r)}}const B={[i.ethereum]:"https://rpc.ankr.com/eth",[i.holesky]:"https://rpc.ankr.com/eth_holesky",[i.sepolia]:"https://rpc.ankr.com/eth_sepolia",[i.base]:"https://rpc.ankr.com/base",[i.baseTestnet]:"https://rpc.ankr.com/base_sepolia",[i.binanceSmartChain]:"https://rpc.ankr.com/bsc",[i.binanceSmartChainTestnet]:"https://rpc.ankr.com/bsc_testnet_chapel"};async function at(e){const n=await(await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_maxPriorityFeePerGas",params:[]})})).json(),a=g.utils.hexToNumber(n==null?void 0:n.result);return new D(Number(a))}const st=2,it=25e3;class Q{constructor({chainId:t,rpcUrlConfig:n}){_(this,"chainId");_(this,"rpcConfig");this.chainId=t,this.rpcConfig={...B,...n}}getReadWeb3(){const t=this.getRpcUrl(),n=new g.Web3,a=new g.Web3.providers.HttpProvider(t);return n.setProvider(a),n}getRpcUrl(){var a;const{chainId:t}=this,n=(a=this.rpcConfig)==null?void 0:a[t];if(!n)throw console.error(`You might need to add the rpcConfig for the ${t} chain ID when creating the provider.`),new Error(`RPC URL for chainId ${t} not found`);return n}async getMaxFees(){const t=this.getReadWeb3(),n=this.getRpcUrl(),[a,s]=await Promise.all([t.eth.getBlock("latest"),at(n)]);return!(a!=null&&a.baseFeePerGas)&&typeof(a==null?void 0:a.baseFeePerGas)!="bigint"?{}:{maxFeePerGas:+new D(a.baseFeePerGas.toString(10)).multipliedBy(st).plus(s),maxPriorityFeePerGas:+s}}async getSafeGasPriceWei(){const t=await this.getReadWeb3().eth.getGasPrice();return new D(t.toString(10)).plus(it)}createContract(t,n){const a=this.getReadWeb3();return new a.eth.Contract(t,n)}}class R extends Q{constructor({provider:n,account:a,chainId:s,rpcUrlConfig:r}){super({chainId:s,rpcUrlConfig:r});_(this,"web3");_(this,"account");_(this,"rpcConfig",B);this.web3=new g(n),this.account=a,this.chainId=s,this.rpcConfig={...B,...r}}async signMessage(n){const{account:a}=this,s=`0x${Buffer.from(n,"utf8").toString("hex")}`;return this.web3.currentProvider.request({method:"personal_sign",params:[s,a]})}async sendTransactionAsync(n,a,s){const{chainId:r,web3:o}=this,p=this.getReadWeb3(),{data:d,estimate:w=!1,estimateFee:b=!1,extendedGasLimit:m,gasLimit:c="0",value:N="0",gasLimitMultiplier:M=1}=s;let{nonce:P}=s;P||(P=await p.eth.getTransactionCount(n)),console.log(`Nonce: ${P}`);const l={from:n,to:a,value:g.utils.numberToHex(N),data:d,nonce:P,chainId:g.utils.numberToHex(r)};if(w)try{const A=await p.eth.estimateGas(l),O=Math.round(Number(A)*M);m?l.gas=g.utils.numberToHex(O+m):l.gas=g.utils.numberToHex(O)}catch(A){throw new Error(A.message??"Failed to estimate gas limit for transaction.")}else l.gas=g.utils.numberToHex(c);const{maxFeePerGas:pe,maxPriorityFeePerGas:ue}=b?await this.getMaxFees().catch(()=>s):s;if(ue!==void 0&&(l.maxPriorityFeePerGas=g.utils.numberToHex(ue)),pe!==void 0&&(l.maxFeePerGas=g.utils.numberToHex(pe)),!l.maxFeePerGas&&!l.maxPriorityFeePerGas){const A=await this.getSafeGasPriceWei();l.gasPrice=A.toString(10)}if(!l.maxFeePerGas&&!l.maxPriorityFeePerGas){const A=await this.getSafeGasPriceWei();l.gasPrice=A.toString(10)}return console.log("Sending transaction via Web3: ",l),new Promise((A,O)=>{const de=o.eth.sendTransaction(l);de.once("transactionHash",async ye=>{console.log(`Just signed transaction has is: ${ye}`),A({receiptPromise:de,transactionHash:ye})}).catch(O)})}createContract(n,a){return new this.web3.eth.Contract(n,a)}}function ae(e){switch(e){case i.ethereum:return 1.3;case i.holesky:case i.sepolia:return 1.5;default:return 1.3}}function se(e){return Object.values(i).includes(e)}const rt={[i.holesky]:"0xED7bfd5C1790576105Af4649817f6d35A75CD818",[i.ethereum]:u,[i.binanceSmartChainTestnet]:"0x731eFa688F3679688cf60A3993b8658138953ED6",[i.binanceSmartChain]:u,[i.sepolia]:"0xc47e4b3124597fdf8dd07843d4a7052f2ee80c30",[i.base]:u,[i.baseTestnet]:u,[i.berachainBartioTestnet]:"0xc47e4b3124597FDF8DD07843D4a7052F2eE80C30",[i.corn]:u,[i.swell]:u},ot={[i.holesky]:"0x38A13AB20D15ffbE5A7312d2336EF1552580a4E2",[i.ethereum]:u,[i.binanceSmartChainTestnet]:"0x107Fc7d90484534704dD2A9e24c7BD45DB4dD1B5",[i.binanceSmartChain]:u,[i.sepolia]:"0xc47e4b3124597fdf8dd07843d4a7052f2ee80c30",[i.base]:u,[i.baseTestnet]:u,[i.berachainBartioTestnet]:"0xc47e4b3124597FDF8DD07843D4a7052F2eE80C30",[i.corn]:u,[i.swell]:u},pt={[i.ethereum]:"0x8236a87084f8b84306f72007f36f2618a5634494",[i.holesky]:u,[i.sepolia]:u,[i.binanceSmartChainTestnet]:u,[i.binanceSmartChain]:"0xecAc9C5F704e954931349Da37F60E39f515c11c1",[i.base]:"0xecAc9C5F704e954931349Da37F60E39f515c11c1",[i.baseTestnet]:u,[i.berachainBartioTestnet]:u,[i.corn]:"0xecAc9C5F704e954931349Da37F60E39f515c11c1",[i.swell]:"0xecAc9C5F704e954931349Da37F60E39f515c11c1"};function ie(e=z){switch(e){case y.prod:return pt;case y.testnet:return ot;default:return rt}}const ut=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{payable:!0,stateMutability:"payable",type:"fallback"},{anonymous:!1,inputs:[{indexed:!0,name:"owner",type:"address"},{indexed:!0,name:"spender",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"}],dt=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"uint256",name:"dustLimit",type:"uint256"}],name:"AmountBelowDustLimit",type:"error"},{inputs:[{internalType:"uint256",name:"fee",type:"uint256"}],name:"AmountLessThanCommission",type:"error"},{inputs:[],name:"ECDSAInvalidSignature",type:"error"},{inputs:[{internalType:"uint256",name:"length",type:"uint256"}],name:"ECDSAInvalidSignatureLength",type:"error"},{inputs:[{internalType:"bytes32",name:"s",type:"bytes32"}],name:"ECDSAInvalidSignatureS",type:"error"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"allowance",type:"uint256"},{internalType:"uint256",name:"needed",type:"uint256"}],name:"ERC20InsufficientAllowance",type:"error"},{inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"uint256",name:"balance",type:"uint256"},{internalType:"uint256",name:"needed",type:"uint256"}],name:"ERC20InsufficientBalance",type:"error"},{inputs:[{internalType:"address",name:"approver",type:"address"}],name:"ERC20InvalidApprover",type:"error"},{inputs:[{internalType:"address",name:"receiver",type:"address"}],name:"ERC20InvalidReceiver",type:"error"},{inputs:[{internalType:"address",name:"sender",type:"address"}],name:"ERC20InvalidSender",type:"error"},{inputs:[{internalType:"address",name:"spender",type:"address"}],name:"ERC20InvalidSpender",type:"error"},{inputs:[{internalType:"uint256",name:"deadline",type:"uint256"}],name:"ERC2612ExpiredSignature",type:"error"},{inputs:[{internalType:"address",name:"signer",type:"address"},{internalType:"address",name:"owner",type:"address"}],name:"ERC2612InvalidSigner",type:"error"},{inputs:[],name:"EnforcedPause",type:"error"},{inputs:[],name:"ExpectedPause",type:"error"},{inputs:[],name:"FeeGreaterThanAmount",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"currentNonce",type:"uint256"}],name:"InvalidAccountNonce",type:"error"},{inputs:[],name:"InvalidDustFeeRate",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInputLength",type:"error"},{inputs:[],name:"InvalidUserSignature",type:"error"},{inputs:[],name:"KnownDestination",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{inputs:[],name:"PayloadAlreadyUsed",type:"error"},{inputs:[],name:"ReentrancyGuardReentrantCall",type:"error"},{inputs:[],name:"ScriptPubkeyUnsupported",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"UnauthorizedAccount",type:"error"},{inputs:[{internalType:"bytes4",name:"action",type:"bytes4"}],name:"UnexpectedAction",type:"error"},{inputs:[],name:"UnknownDestination",type:"error"},{inputs:[{internalType:"uint256",name:"fromChainId",type:"uint256"},{internalType:"address",name:"fromContract",type:"address"}],name:"UnknownOriginContract",type:"error"},{inputs:[{internalType:"uint256",name:"expiry",type:"uint256"}],name:"UserSignatureExpired",type:"error"},{inputs:[],name:"WithdrawalsDisabled",type:"error"},{inputs:[],name:"WrongChainId",type:"error"},{inputs:[],name:"ZeroAddress",type:"error"},{inputs:[],name:"ZeroAddress",type:"error"},{inputs:[],name:"ZeroAmount",type:"error"},{inputs:[],name:"ZeroChainId",type:"error"},{inputs:[],name:"ZeroContractHash",type:"error"},{inputs:[],name:"ZeroFee",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"prevVal",type:"address"},{indexed:!0,internalType:"address",name:"newVal",type:"address"}],name:"BasculeChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"prevVal",type:"address"},{indexed:!0,internalType:"address",name:"newVal",type:"address"}],name:"BridgeChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint64",name:"prevValue",type:"uint64"},{indexed:!0,internalType:"uint64",name:"newValue",type:"uint64"}],name:"BurnCommissionChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"claimer",type:"address"},{indexed:!1,internalType:"bool",name:"isClaimer",type:"bool"}],name:"ClaimerUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"prevVal",type:"address"},{indexed:!0,internalType:"address",name:"newVal",type:"address"}],name:"ConsortiumChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldRate",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newRate",type:"uint256"}],name:"DustFeeRateChanged",type:"event"},{anonymous:!1,inputs:[],name:"EIP712DomainChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldFee",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newFee",type:"uint256"}],name:"FeeChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"bytes",name:"userSignature",type:"bytes"}],name:"FeeCharged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!0,internalType:"bytes32",name:"payloadHash",type:"bytes32"},{indexed:!1,internalType:"bytes",name:"payload",type:"bytes"}],name:"MintProofConsumed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"minter",type:"address"},{indexed:!1,internalType:"bool",name:"isMinter",type:"bool"}],name:"MinterUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"name",type:"string"},{indexed:!1,internalType:"string",name:"symbol",type:"string"}],name:"NameAndSymbolChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferStarted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousPauser",type:"address"},{indexed:!0,internalType:"address",name:"newPauser",type:"address"}],name:"PauserRoleTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"prevValue",type:"address"},{indexed:!0,internalType:"address",name:"newValue",type:"address"}],name:"TreasuryAddressChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"fromAddress",type:"address"},{indexed:!1,internalType:"bytes",name:"scriptPubKey",type:"bytes"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"UnstakeRequest",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bool",name:"",type:"bool"}],name:"WithdrawalsEnabled",type:"event"},{inputs:[],name:"Bascule",outputs:[{internalType:"contract IBascule",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"acceptOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newClaimer",type:"address"}],name:"addClaimer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newMinter",type:"address"}],name:"addMinter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"to",type:"address[]"},{internalType:"uint256[]",name:"amount",type:"uint256[]"}],name:"batchMint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"payload",type:"bytes[]"},{internalType:"bytes[]",name:"proof",type:"bytes[]"}],name:"batchMint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"mintPayload",type:"bytes[]"},{internalType:"bytes[]",name:"proof",type:"bytes[]"},{internalType:"bytes[]",name:"feePayload",type:"bytes[]"},{internalType:"bytes[]",name:"userSignature",type:"bytes[]"}],name:"batchMintWithFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"burn",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"burn",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"scriptPubkey",type:"bytes"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"calcUnstakeRequestAmount",outputs:[{internalType:"uint256",name:"amountAfterFee",type:"uint256"},{internalType:"bool",name:"isAboveDust",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newVal",type:"address"}],name:"changeBascule",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newBridge",type:"address"}],name:"changeBridge",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint64",name:"newValue",type:"uint64"}],name:"changeBurnCommission",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newVal",type:"address"}],name:"changeConsortium",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"newRate",type:"uint256"}],name:"changeDustFeeRate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],name:"changeNameAndSymbol",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newValue",type:"address"}],name:"changeTreasuryAddress",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"consortium",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getBurnCommission",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[],name:"getDustFeeRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getMintFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getTreasury",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"consortium_",type:"address"},{internalType:"uint64",name:"burnCommission_",type:"uint64"},{internalType:"address",name:"owner_",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimer",type:"address"}],name:"isClaimer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"minter",type:"address"}],name:"isMinter",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"mint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"bytes",name:"proof",type:"bytes"}],name:"mint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"mintPayload",type:"bytes"},{internalType:"bytes",name:"proof",type:"bytes"},{internalType:"bytes",name:"feePayload",type:"bytes"},{internalType:"bytes",name:"userSignature",type:"bytes"}],name:"mintWithFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"pauser",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingOwner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"scriptPubkey",type:"bytes"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"redeem",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"reinitialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"oldClaimer",type:"address"}],name:"removeClaimer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"oldMinter",type:"address"}],name:"removeMinter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"fee",type:"uint256"}],name:"setMintFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"toggleWithdrawals",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newPauser",type:"address"}],name:"transferPauserRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"uint256",name:"fromChain",type:"uint256"},{internalType:"address",name:"fromContract",type:"address"},{internalType:"uint256",name:"toChain",type:"uint256"},{internalType:"address",name:"toContract",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint64",name:"amount",type:"uint64"},{internalType:"bytes32",name:"uniqueActionData",type:"bytes32"}],internalType:"struct Actions.DepositBridgeAction",name:"action",type:"tuple"},{internalType:"bytes32",name:"",type:"bytes32"},{internalType:"bytes",name:"",type:"bytes"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"}],yt=[{inputs:[{internalType:"address",name:"aDefaultAdmin",type:"address"},{internalType:"address",name:"aPauser",type:"address"},{internalType:"address",name:"aDepositReporter",type:"address"},{internalType:"address",name:"aWithdrawalValidator",type:"address"},{internalType:"uint256",name:"aMaxDeposits",type:"uint256"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AccessControlBadConfirmation",type:"error"},{inputs:[{internalType:"uint48",name:"schedule",type:"uint48"}],name:"AccessControlEnforcedDefaultAdminDelay",type:"error"},{inputs:[],name:"AccessControlEnforcedDefaultAdminRules",type:"error"},{inputs:[{internalType:"address",name:"defaultAdmin",type:"address"}],name:"AccessControlInvalidDefaultAdmin",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"bytes32",name:"neededRole",type:"bytes32"}],name:"AccessControlUnauthorizedAccount",type:"error"},{inputs:[{internalType:"bytes32",name:"depositID",type:"bytes32"}],name:"AlreadyReported",type:"error"},{inputs:[{internalType:"bytes32",name:"depositID",type:"bytes32"},{internalType:"uint256",name:"withdrawalAmount",type:"uint256"}],name:"AlreadyWithdrawn",type:"error"},{inputs:[],name:"BadDepositReport",type:"error"},{inputs:[],name:"EnforcedPause",type:"error"},{inputs:[],name:"ExpectedPause",type:"error"},{inputs:[{internalType:"uint8",name:"bits",type:"uint8"},{internalType:"uint256",name:"value",type:"uint256"}],name:"SafeCastOverflowedUintDowncast",type:"error"},{inputs:[],name:"SameValidationThreshold",type:"error"},{inputs:[{internalType:"bytes32",name:"depositID",type:"bytes32"},{internalType:"uint256",name:"withdrawalAmount",type:"uint256"}],name:"WithdrawalFailedValidation",type:"error"},{anonymous:!1,inputs:[],name:"DefaultAdminDelayChangeCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint48",name:"newDelay",type:"uint48"},{indexed:!1,internalType:"uint48",name:"effectSchedule",type:"uint48"}],name:"DefaultAdminDelayChangeScheduled",type:"event"},{anonymous:!1,inputs:[],name:"DefaultAdminTransferCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newAdmin",type:"address"},{indexed:!1,internalType:"uint48",name:"acceptSchedule",type:"uint48"}],name:"DefaultAdminTransferScheduled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"reportId",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"numDeposits",type:"uint256"}],name:"DepositsReported",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"numDeposits",type:"uint256"}],name:"MaxDepositsUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"oldThreshold",type:"uint256"},{indexed:!1,internalType:"uint256",name:"newThreshold",type:"uint256"}],name:"UpdateValidateThreshold",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"depositID",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"withdrawalAmount",type:"uint256"}],name:"WithdrawalNotValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"depositID",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"withdrawalAmount",type:"uint256"}],name:"WithdrawalValidated",type:"event"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"DEPOSIT_REPORTER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"PAUSER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"VALIDATION_GUARDIAN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"WITHDRAWAL_VALIDATOR_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"acceptDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"beginDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"cancelDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint48",name:"newDelay",type:"uint48"}],name:"changeDefaultAdminDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"defaultAdmin",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"defaultAdminDelay",outputs:[{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"defaultAdminDelayIncreaseWait",outputs:[{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"depositID",type:"bytes32"}],name:"depositHistory",outputs:[{internalType:"enum Bascule.DepositState",name:"status",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxDeposits",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingDefaultAdmin",outputs:[{internalType:"address",name:"newAdmin",type:"address"},{internalType:"uint48",name:"schedule",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingDefaultAdminDelay",outputs:[{internalType:"uint48",name:"newDelay",type:"uint48"},{internalType:"uint48",name:"schedule",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"reportId",type:"bytes32"},{internalType:"bytes32[]",name:"depositIDs",type:"bytes32[]"}],name:"reportDeposits",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rollbackDefaultAdminDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"aMaxDeposits",type:"uint256"}],name:"setMaxDeposits",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"newThreshold",type:"uint256"}],name:"updateValidateThreshold",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"validateThreshold",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"depositID",type:"bytes32"},{internalType:"uint256",name:"withdrawalAmount",type:"uint256"}],name:"validateWithdrawal",outputs:[],stateMutability:"nonpayable",type:"function"}];function ct(e){switch(e){case"LBTC":return dt;default:return ut}}function C(e,t){const n=ie(t),{chainId:a}=e;if(!se(a))throw new Error(`This chain ${a} is not supported`);const s=n[a];if(!s)throw new Error(`Token address for chain ${a} is not defined`);const r=ct("LBTC"),o=e.createContract(r,s);return o.options.address||(o.options.address=s),o}function lt({spender:e,amount:t,env:n,...a}){const s=new R(a),r=C(s,n),o=ne(t),p=r.methods.approve(e,o);return s.sendTransactionAsync(s.account,r.options.address,{data:p.encodeABI(),estimate:!0,estimateFee:!0,gasLimitMultiplier:ae(s.chainId)})}const mt="insufficient funds",bt="Insufficient funds for transfer. Make sure you have enough ETH to cover the gas cost.",ce=e=>e.startsWith("0x")?e:"0x"+e;async function ft({data:e,proofSignature:t,env:n,...a}){const s=new R(a),r=C(s,n),o=r.methods.mint(ce(e),ce(t));try{return await s.sendTransactionAsync(s.account,r.options.address,{data:o.encodeABI(),estimate:!0,estimateFee:!0,gasLimitMultiplier:ae(s.chainId)})}catch(p){console.log("error",p);const d=S(p);throw d.includes(mt)?new Error(bt):new Error(d)}}const Tt=208,ht=4001,gt=4100,wt=4200,At=4900,Et=4901,U=-32700,L=-32600,F=-32601,k=-32602,G=-32603,W=-32e3,V=-32001,$=-32002,H=-32003,j=-32004,q=-32005,J=-32006;class ve extends Error{constructor(t,n){super(t),Array.isArray(n)?this.cause=new ee(n):this.cause=n,this.name=this.constructor.name,typeof Error.captureStackTrace=="function"?Error.captureStackTrace(new.target.constructor):this.stack=new Error().stack}get innerError(){return this.cause instanceof ee?this.cause.errors:this.cause}set innerError(t){Array.isArray(t)?this.cause=new ee(t):this.cause=t}static convertToString(t,n=!1){if(t==null)return"undefined";const a=JSON.stringify(t,(s,r)=>typeof r=="bigint"?r.toString():r);return n&&["bigint","string"].includes(typeof t)?a.replace(/['\\"]+/g,""):a}toJSON(){return{name:this.name,code:this.code,message:this.message,cause:this.cause,innerError:this.cause}}}class ee extends ve{constructor(t){super(`Multiple errors occurred: [${t.map(n=>n.message).join("], [")}]`),this.code=Tt,this.errors=t}}const vt="An Rpc error has occured with a code of *code*",f={[U]:{message:"Parse error",description:"Invalid JSON"},[L]:{message:"Invalid request",description:"JSON is not a valid request object "},[F]:{message:"Method not found",description:"Method does not exist "},[k]:{message:"Invalid params",description:"Invalid method parameters"},[G]:{message:"Internal error",description:"Internal JSON-RPC error"},[W]:{message:"Invalid input",description:"Missing or invalid parameters"},[V]:{message:"Resource not found",description:"Requested resource not found"},[$]:{message:"Resource unavailable",description:"Requested resource not available"},[H]:{message:"Transaction rejected",description:"Transaction creation failed"},[j]:{message:"Method not supported",description:"Method is not implemented"},[q]:{message:"Limit exceeded",description:"Request exceeds defined limit"},[J]:{message:"JSON-RPC version not supported",description:"Version of JSON-RPC protocol is not supported"},[ht]:{name:"User Rejected Request",message:"The user rejected the request."},[gt]:{name:"Unauthorized",message:"The requested method and/or account has not been authorized by the user."},[wt]:{name:"Unsupported Method",message:"The Provider does not support the requested method."},[At]:{name:"Disconnected",message:"The Provider is disconnected from all chains."},[Et]:{name:"Chain Disconnected",message:"The Provider is not connected to the requested chain."},"0-999":{name:"",message:"Not used."},1e3:{name:"Normal Closure",message:"The connection successfully completed the purpose for which it was created."},1001:{name:"Going Away",message:"The endpoint is going away, either because of a server failure or because the browser is navigating away from the page that opened the connection."},1002:{name:"Protocol error",message:"The endpoint is terminating the connection due to a protocol error."},1003:{name:"Unsupported Data",message:"The connection is being terminated because the endpoint received data of a type it cannot accept. (For example, a text-only endpoint received binary data.)"},1004:{name:"Reserved",message:"Reserved. A meaning might be defined in the future."},1005:{name:"No Status Rcvd",message:"Reserved. Indicates that no status code was provided even though one was expected."},1006:{name:"Abnormal Closure",message:"Reserved. Indicates that a connection was closed abnormally (that is, with no close frame being sent) when a status code is expected."},1007:{name:"Invalid frame payload data",message:"The endpoint is terminating the connection because a message was received that contained inconsistent data (e.g., non-UTF-8 data within a text message)."},1008:{name:"Policy Violation",message:"The endpoint is terminating the connection because it received a message that violates its policy. This is a generic status code, used when codes 1003 and 1009 are not suitable."},1009:{name:"Message Too Big",message:"The endpoint is terminating the connection because a data frame was received that is too large."},1010:{name:"Mandatory Ext.",message:"The client is terminating the connection because it expected the server to negotiate one or more extension, but the server didn't."},1011:{name:"Internal Error",message:"The server is terminating the connection because it encountered an unexpected condition that prevented it from fulfilling the request."},1012:{name:"Service Restart",message:"The server is terminating the connection because it is restarting."},1013:{name:"Try Again Later",message:"The server is terminating the connection due to a temporary condition, e.g. it is overloaded and is casting off some of its clients."},1014:{name:"Bad Gateway",message:"The server was acting as a gateway or proxy and received an invalid response from the upstream server. This is similar to 502 HTTP Status Code."},1015:{name:"TLS handshake",message:"Reserved. Indicates that the connection was closed due to a failure to perform a TLS handshake (e.g., the server certificate can't be verified)."},"1016-2999":{name:"",message:"For definition by future revisions of the WebSocket Protocol specification, and for definition by extension specifications."},"3000-3999":{name:"",message:"For use by libraries, frameworks, and applications. These status codes are registered directly with IANA. The interpretation of these codes is undefined by the WebSocket protocol."},"4000-4999":{name:"",message:"For private use, and thus can't be registered. Such codes can be used by prior agreements between WebSocket applications. The interpretation of these codes is undefined by the WebSocket protocol."}};class T extends ve{constructor(t,n){super(n??vt.replace("*code*",t.error.code.toString())),this.code=t.error.code,this.id=t.id,this.jsonrpc=t.jsonrpc,this.jsonRpcError=t.error}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{error:this.jsonRpcError,id:this.id,jsonRpc:this.jsonrpc})}}class St extends T{constructor(t){super(t,f[U].message),this.code=U}}class Ct extends T{constructor(t){super(t,f[L].message),this.code=L}}class Rt extends T{constructor(t){super(t,f[F].message),this.code=F}}class _t extends T{constructor(t){super(t,f[k].message),this.code=k}}class It extends T{constructor(t){super(t,f[G].message),this.code=G}}class Dt extends T{constructor(t){super(t,f[W].message),this.code=W}}class xt extends T{constructor(t){super(t,f[j].message),this.code=j}}class Nt extends T{constructor(t){super(t,f[$].message),this.code=$}}class Mt extends T{constructor(t){super(t,f[V].message),this.code=V}}class Pt extends T{constructor(t){super(t,f[J].message),this.code=J}}class Ot extends T{constructor(t){super(t,f[H].message),this.code=H}}class Bt extends T{constructor(t){super(t,f[q].message),this.code=q}}const h=new Map;h.set(U,{error:St});h.set(L,{error:Ct});h.set(F,{error:Rt});h.set(k,{error:_t});h.set(G,{error:It});h.set(W,{error:Dt});h.set(j,{error:xt});h.set($,{error:Nt});h.set(H,{error:Ot});h.set(V,{error:Mt});h.set(J,{error:Pt});h.set(q,{error:Bt});const Ut=e=>typeof e=="string"&&/^((-)?0x[0-9a-f]+|(0x))$/i.test(e);var K;(function(e){e.NUMBER="NUMBER_NUMBER",e.HEX="NUMBER_HEX",e.STR="NUMBER_STR",e.BIGINT="NUMBER_BIGINT"})(K||(K={}));var Z;(function(e){e.HEX="BYTES_HEX",e.UINT8ARRAY="BYTES_UINT8ARRAY"})(Z||(Z={}));K.BIGINT,Z.HEX;K.HEX,Z.HEX;var le;(function(e){e.EARLIEST="earliest",e.LATEST="latest",e.PENDING="pending",e.SAFE="safe",e.FINALIZED="finalized"})(le||(le={}));var me;(function(e){e.chainstart="chainstart",e.frontier="frontier",e.homestead="homestead",e.dao="dao",e.tangerineWhistle="tangerineWhistle",e.spuriousDragon="spuriousDragon",e.byzantium="byzantium",e.constantinople="constantinople",e.petersburg="petersburg",e.istanbul="istanbul",e.muirGlacier="muirGlacier",e.berlin="berlin",e.london="london",e.altair="altair",e.arrowGlacier="arrowGlacier",e.grayGlacier="grayGlacier",e.bellatrix="bellatrix",e.merge="merge",e.capella="capella",e.shanghai="shanghai"})(me||(me={}));function Lt(e,t){if(!t)throw new Error("The address for bascule module is not defined");const n=e.createContract(yt,t);return n.options.address||(n.options.address=t),n}const Ft="No deposit ID provided. Please provide a deposit ID as an argument.",kt="Invalid deposit ID. Expected a 0x-prefixed 32-byte hex string.";var Se=(e=>(e[e.UNREPORTED=0]="UNREPORTED",e[e.REPORTED=1]="REPORTED",e[e.WITHDRAWN=2]="WITHDRAWN",e))(Se||{});async function Gt({txId:e,env:t,...n}){if(!e)throw new Error(Ft);if(!Ut(e))throw new Error(kt);const a=new R(n),r=await C(a,t).methods.Bascule().call();if(r===u)return 1;const o=Lt(a,r);try{const p=await o.methods.depositHistory(Buffer.from(e.replace(/^0x/,""),"hex")).call();return Number(p)}catch(p){const d=S(p);throw new Error(d)}}const Wt=[i.ethereum,i.base,i.binanceSmartChain],Ce=e=>Wt.includes(e)?y.prod:y.stage;function Re(e,t){if(!se(e))throw new Error(`This chain ${e} is not supported`);const n=t?{[e]:t}:B;if(!n[e])throw new Error(`RPC URL for chainId ${e} not found`);return n}async function Vt({chainId:e,rpcUrl:t}){const n=Re(e,t),a=new Q({chainId:e,rpcUrlConfig:n}),s=Ce(e),o=await C(a,s).methods.getMintFee().call();return new D(te(o.toString(10)))}async function $t({env:e,rpcUrl:t,chainId:n}){const a={[n]:t},s=new Q({chainId:n,rpcUrlConfig:a});return(await C(s,e).methods.totalSupply().call()).toString()}async function _e({owner:e,rpcUrl:t,chainId:n}){const a=Re(n,t),s=new Q({chainId:n,rpcUrlConfig:a}),r=Ce(n),o=C(s,r);try{return(await o.methods.nonces(e).call()).toString()}catch(p){const d=S(p);throw new Error(d)}}const re={[i.sepolia]:{[i.berachainBartioTestnet]:"0xe3748bF0Ec0A76767539eE28610B3367e35fe2C2"},[i.berachainBartioTestnet]:{[i.sepolia]:"0x1977013acaf27856ac8048C42EE2ed0134d53895"}},Ht={...re},jt={...re,[i.corn]:{[i.ethereum]:"0xfc7B20D9B59A8A466f4fC3d34aA69a7D98e71d7A"},[i.ethereum]:{[i.corn]:"0x6bc15d7930839ec18a57f6f7df72ae1b439d077f",[i.swell]:"0x37E92d760a15231e652a2C502182a6b44c7510c0"},[i.swell]:{[i.ethereum]:"0x7B3784AD646C10A8Ddf42b47a4f4bd9aFD351E54"}};function qt(e=z){switch(e){case y.prod:return jt;case y.testnet:return Ht;default:return re}}async function Jt(e){const t=new R(e),n=`destination chain id is ${e.chainId}`;return t.signMessage(n)}const Kt=24*60*60;function Zt({chainId:e,verifyingContract:t,fee:n,expiry:a}){return{domain:{name:"Lombard Staked Bitcoin",version:"1",chainId:e,verifyingContract:t},message:{chainId:e,fee:n,expiry:a},primaryType:"feeApproval",types:{EIP712Domain:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],feeApproval:[{name:"chainId",type:"uint256"},{name:"fee",type:"uint256"},{name:"expiry",type:"uint256"}]}}}const zt="Failed to obtain a valid signature. The response is undefined or invalid.",Xt=()=>Math.floor(Date.now()/1e3+Kt);async function Yt({address:e,provider:t,fee:n,chainId:a,env:s,expiry:r=Xt()}){var m,c;const o=new R({provider:t,account:e,chainId:a}),d=C(o,s).options.address,w=JSON.stringify(Zt({chainId:a,verifyingContract:d,fee:n,expiry:r})),b=await((c=(m=o.web3)==null?void 0:m.currentProvider)==null?void 0:c.request({method:"eth_signTypedData_v4",params:[e,w]}));if(typeof b=="string")return{signature:b,typedData:w};if(!(b!=null&&b.result))throw new Error(zt);return{signature:b.result,typedData:w}}const oe={[i.holesky]:[{key:"veda",name:"Veda / Lombard DeFi Vault",address:"0x52BD640617eeD47A00dA0da93351092D49208d1d"}]},Qt=Object.keys(oe).map(Number),Ie=e=>{const t=oe[e];if(!(t!=null&&t.length))throw new Error(`No vaults configured for chain ID ${e}`);return t},De=(e,t)=>{const a=Ie(e).find(s=>s.key===t);if(!a)throw new Error(`No vault found with key ${t} for chain ID ${e}`);return a.address};async function xe({chainId:e,expiry:t,owner:n,spender:a,value:s,rpcUrl:r,verifyingContract:o}){const p=await _e({owner:n,chainId:e,rpcUrl:r});return{domain:{name:"Lombard Staked Bitcoin",version:"1",chainId:e,verifyingContract:o},types:{EIP712Domain:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],Permit:[{name:"owner",type:"address"},{name:"spender",type:"address"},{name:"value",type:"uint256"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},primaryType:"Permit",message:{owner:n,spender:a,value:s,nonce:p,deadline:t.toString()}}}const en=e=>{const n=ie("stage")[e];if(!n)throw new Error(`No LBTC contract address configured for chain ID ${e}`);return n},tn="Failed to obtain a valid signature. The response is undefined or invalid.";async function nn({address:e,provider:t,chainId:n,value:a,expiry:s,rpcUrl:r,vaultKey:o}){var N,M;const p=new R({provider:t,account:e,chainId:n}),d=en(n),w=De(n,o),b=await xe({chainId:n,expiry:s,owner:e,spender:w,value:a,rpcUrl:r,verifyingContract:d}),m=JSON.stringify(b),c=await((M=(N=p.web3)==null?void 0:N.currentProvider)==null?void 0:M.request({method:"eth_signTypedData_v4",params:[e,m]}));if(typeof c=="string")return{signature:c,typedData:m};if(!(c!=null&&c.result))throw new Error(tn);return{signature:c.result,typedData:m}}x.initEccLib(Be);function an(e,t=y.prod){var r;const n=sn(e),s=(r=x.payments[n]({address:e,network:t===y.prod?x.networks.bitcoin:x.networks.testnet}).output)==null?void 0:r.toString("hex");if(!s)throw new Error("Output script is not found.");return`0x${s}`}function sn(e){const t=x.address.fromBech32(e);if(t.version===1&&t.data.length===32)return"p2tr";if(t.version===0&&t.data.length===20)return"p2wpkh";if(rn(e))return"p2wsh";throw new Error("Address type is not supported.")}function rn(e){return(e.startsWith("bc1")||e.startsWith("tb1"))&&e.length===62}function on({btcAddress:e,amount:t,env:n,...a}){const s=new R(a),r=C(s,n),o=an(e,n),p=ne(t),d=r.methods.redeem(o,p);return s.sendTransactionAsync(s.account,r.options.address,{data:d.encodeABI(),estimate:!0,estimateFee:!0,gasLimitMultiplier:ae(s.chainId)})}exports.BasculeDepositStatus=Se;exports.ENotarizationStatus=Ae;exports.ESessionState=Ee;exports.OChainId=i;exports.OEnv=y;exports.SANCTIONED_ADDRESS=he;exports.SATOSHI_SCALE=Y;exports.STAKE_AND_BAKE_VAULTS=oe;exports.SUPPORTED_STAKE_AND_BAKE_CHAINS=Qt;exports.approveLBTC=lt;exports.claimLBTC=ft;exports.fromSatoshi=te;exports.generateDepositBtcAddress=$e;exports.getApiConfig=E;exports.getBasculeDepositStatus=Gt;exports.getBaseNetworkByEnv=Te;exports.getBscNetworkByEnv=fe;exports.getChainIdByName=we;exports.getChainNameById=X;exports.getDepositBtcAddress=qe;exports.getDepositBtcAddresses=ge;exports.getDepositsByAddress=Ze;exports.getEthNetworkByEnv=be;exports.getLBTCExchangeRate=Ye;exports.getLBTCMintingFee=Vt;exports.getLBTCTotalSupply=$t;exports.getLbtcAddressConfig=ie;exports.getLbtcOFTAdapterAddressConfig=qt;exports.getNetworkFeeSignature=Qe;exports.getPermitNonce=_e;exports.getStakeAndBakeSpenderContract=De;exports.getStakeAndBakeTypedData=xe;exports.getStakeAndBakeVaults=Ie;exports.getUserStakeAndBakeSignature=et;exports.isValidChain=se;exports.signLbtcDestionationAddr=Jt;exports.signNetworkFee=Yt;exports.signStakeAndBake=nn;exports.storeNetworkFeeSignature=tt;exports.storeStakeAndBakeSignature=nt;exports.toSatoshi=ne;exports.unstakeLBTC=on;
1
+ "use strict";var ue=Object.defineProperty;var ye=(e,t,n)=>t in e?ue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var D=(e,t,n)=>(ye(e,typeof t!="symbol"?t+"":t,n),n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("axios"),_=require("bignumber.js"),f=require("web3"),de=require("@bitcoin-js/tiny-secp256k1-asmjs"),I=require("bitcoinjs-lib");function le(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const a=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,a.get?a:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const ce=le(de),c={prod:"prod",testnet:"testnet",stage:"stage"},i={ethereum:1,holesky:17e3,binanceSmartChain:56,binanceSmartChainTestnet:97,sepolia:11155111,base:8453,baseSepoliaTestnet:84532,berachainBartioTestnet:80084,corn:21e6,swell:1923},q=e=>e===c.prod?i.ethereum:i.holesky,z=e=>e===c.prod?i.binanceSmartChain:i.binanceSmartChainTestnet,J=e=>e===c.prod?i.base:i.baseSepoliaTestnet,k=c.prod,y="0x0000000000000000000000000000000000000000",me={baseApiUrl:"https://staging.prod.lombard.finance"},be={baseApiUrl:"https://gastald-testnet.prod.lombard.finance"},fe={baseApiUrl:"https://mainnet.prod.lombard.finance"},w=(e=k)=>{switch(e){case c.prod:return fe;case c.testnet:return be;default:return me}};function v(e){return typeof e=="string"?e:(n=>{var a;return((a=n==null?void 0:n.data)==null?void 0:a.message)&&typeof n.data.message=="string"})(e)?e.data.message:e instanceof Error?Te(e):ge(e)}function Te(e){return e.response?e.response.data.message:e.message}function ge(e){return e!=null&&e.message?e.message:"Unknown error"}const h={eth:"DESTINATION_BLOCKCHAIN_ETHEREUM",ethOld:"BLOCKCHAIN_ETHEREUM",base:"DESTINATION_BLOCKCHAIN_BASE",baseOld:"BLOCKCHAIN_BASE",bsc:"DESTINATION_BLOCKCHAIN_BSC",bscOld:"BLOCKCHAIN_BSC"};function P(e){switch(e){case i.ethereum:case i.holesky:case i.sepolia:return h.eth;case i.base:case i.baseSepoliaTestnet:return h.base;case i.binanceSmartChain:case i.binanceSmartChainTestnet:return h.bsc;default:throw new Error(`Unknown chain ID: ${e}`)}}const X="sanctioned_address",he="api/v1/address/generate",we="destination address is under sanctions";async function Ae({address:e,chainId:t,signature:n,eip712Data:a,env:s,referrerCode:r,partnerId:o,captchaToken:p,signatureData:u}){const{baseApiUrl:T}=w(s),m=P(t),b={to_address:e,to_address_signature:n,to_chain:m,partner_id:o,nonce:0,captcha:p,referrer_code:r,eip_712_data:a,sb_signature_data:u};try{const{data:d}=await A.post(he,b,{baseURL:T});return d.address}catch(d){const C=v(d);if(ve(C))return X;throw new Error(C)}}function ve(e){return!!e.includes(we)}const Se="api/v1/address";async function Ce({address:e,chainId:t,env:n,partnerId:a}){const s=await Y({address:e,chainId:t,env:n,partnerId:a}),r=Ee(s);if(!r)throw new Error("No address");return r.btc_address}function Ee(e){if(!e.length)return;const t=e.reduce((n,a)=>n.created_at<a.created_at?a:n,e[0]);return t.deprecated?void 0:t}async function Y({address:e,chainId:t,env:n,partnerId:a}){const{baseApiUrl:s}=w(n),r=P(t),o={to_address:e,to_blockchain:r,limit:1,offset:0,asc:!1,referralId:a},{data:p}=await A.get(Se,{baseURL:s,params:o});return(p==null?void 0:p.addresses)||[]}const De=8,O=10**De;function F(e){return+e/O}function U(e){return Math.floor(+e*O)}function Q(e,t=k){switch(e){case h.eth:case h.ethOld:return q(t);case h.base:case h.baseOld:return J(t);case h.bsc:case h.bscOld:return z(t);default:return i.ethereum}}var ee=(e=>(e.NOTARIZATION_STATUS_UNSPECIFIED="NOTARIZATION_STATUS_UNSPECIFIED",e.NOTARIZATION_STATUS_PENDING="NOTARIZATION_STATUS_PENDING",e.NOTARIZATION_STATUS_SUBMITTED="NOTARIZATION_STATUS_SUBMITTED",e.NOTARIZATION_STATUS_SESSION_APPROVED="NOTARIZATION_STATUS_SESSION_APPROVED",e.NOTARIZATION_STATUS_FAILED="NOTARIZATION_STATUS_FAILED",e))(ee||{}),te=(e=>(e.SESSION_STATE_UNSPECIFIED="SESSION_STATE_UNSPECIFIED",e.SESSION_STATE_PENDING="SESSION_STATE_PENDING",e.SESSION_STATE_COMPLETED="SESSION_STATE_COMPLETED",e.SESSION_STATE_EXPIRED="SESSION_STATE_EXPIRED",e))(te||{});async function _e({address:e,env:t}){const{baseApiUrl:n}=w(t),{data:a}=await A.get(`api/v1/address/outputs-v2/${e}`,{baseURL:n});return((a==null?void 0:a.outputs)??[]).map(Ie(t))}function Ie(e){return t=>({txid:t.txid,index:t.index??0,blockHeight:t.block_height?Number(t.block_height):void 0,blockTime:t.block_time?Number(t.block_time):void 0,value:new _(F(t.value)),address:t.address,chainId:Q(t.to_chain,e),claimedTxId:t.claim_tx,isClaimed:!!t.claim_tx,rawPayload:t.raw_payload,signature:t.proof,isRestricted:!!t.sanctioned,notarizationWaitDur:t.notarization_wait_dur?Number(t.notarization_wait_dur):void 0,payload:t.payload_hash,sessionId:t.session_id,notarizationStatus:t.notarization_status,sessionState:t.session_state})}const xe=2e-4;async function Me({env:e,chainId:t=i.ethereum,amount:n=1}){const{baseApiUrl:a}=w(e),s=P(t),{data:r}=await A.get(`api/v1/exchange/rate/${s}`,{baseURL:a,params:{amount:n}}),o=new _(xe).multipliedBy(O).toFixed();return{exchangeRate:+r.amount_out,minAmount:+o}}async function Re({address:e,chainId:t,env:n}){const{baseApiUrl:a}=w(n);try{const{data:s}=await A.get(`${a}/api/v1/claimer/get-user-signature`,{params:{user_destination_address:e,chain_id:t}});return{expirationDate:s==null?void 0:s.expiration_date,hasSignature:s==null?void 0:s.has_signature,isDelayed:s==null?void 0:s.is_delayed}}catch(s){const r=v(s);throw new Error(r)}}async function Ne({userDestinationAddress:e,chainId:t,env:n}){const{baseApiUrl:a}=w(n);try{const{data:s}=await A.get(`${a}/api/v1/claimer/get-user-stake-and-bake-signature`,{params:{userDestinationAddress:e,chainId:t.toString()}});return{userDestinationAddress:s.user_destination_address,signature:s.signature,expirationDate:s.expiration_date,depositAmount:s.deposit_amount,chainId:s.chain_id}}catch(s){const r=v(s);throw new Error(`Failed to get user stake and bake signature: ${r}`)}}async function Pe({signature:e,typedData:t,address:n,env:a}){const{baseApiUrl:s}=w(a);try{const{data:r}=await A.post(`${s}/api/v1/claimer/save-user-signature`,null,{params:{typed_data:t,signature:e,user_destination_address:n}});return r.status}catch(r){const o=v(r);throw new Error(o)}}async function Oe({signature:e,typedData:t,env:n}){const{baseApiUrl:a}=w(n);try{const{data:s}=await A.post(`${a}/api/v1/claimer/save-stake-and-bake-signature`,null,{params:{typed_data:t,signature:e}});return s.status}catch(s){const r=v(s);throw new Error(r)}}const N={[i.ethereum]:"https://rpc.ankr.com/eth",[i.holesky]:"https://rpc.ankr.com/eth_holesky",[i.sepolia]:"https://rpc.ankr.com/eth_sepolia",[i.base]:"https://rpc.ankr.com/base",[i.baseSepoliaTestnet]:"https://rpc.ankr.com/base_sepolia",[i.binanceSmartChain]:"https://bsc-dataseed.bnbchain.org",[i.binanceSmartChainTestnet]:"https://bsc-testnet-dataseed.bnbchain.org"};async function Be(e){const n=await(await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_maxPriorityFeePerGas",params:[]})})).json(),a=f.utils.hexToNumber(n==null?void 0:n.result);return new _(Number(a))}const ke=2,Fe=25e3;class B{constructor({chainId:t,rpcUrlConfig:n}){D(this,"chainId");D(this,"rpcConfig");this.chainId=t,this.rpcConfig={...N,...n}}getReadWeb3(){const t=this.getRpcUrl(),n=new f.Web3,a=new f.Web3.providers.HttpProvider(t);return n.setProvider(a),n}getRpcUrl(){var a;const{chainId:t}=this,n=(a=this.rpcConfig)==null?void 0:a[t];if(!n)throw console.error(`You might need to add the rpcConfig for the ${t} chain ID when creating the provider.`),new Error(`RPC URL for chainId ${t} not found`);return n}async getMaxFees(){const t=this.getReadWeb3(),n=this.getRpcUrl(),[a,s]=await Promise.all([t.eth.getBlock("latest"),Be(n)]);return!(a!=null&&a.baseFeePerGas)&&typeof(a==null?void 0:a.baseFeePerGas)!="bigint"?{}:{maxFeePerGas:+new _(a.baseFeePerGas.toString(10)).multipliedBy(ke).plus(s),maxPriorityFeePerGas:+s}}async getSafeGasPriceWei(){const t=await this.getReadWeb3().eth.getGasPrice();return new _(t.toString(10)).plus(Fe)}createContract(t,n){const a=this.getReadWeb3();return new a.eth.Contract(t,n)}}class E extends B{constructor({provider:n,account:a,chainId:s,rpcUrlConfig:r}){super({chainId:s,rpcUrlConfig:r});D(this,"web3");D(this,"account");D(this,"rpcConfig",N);this.web3=new f(n),this.account=a,this.chainId=s,this.rpcConfig={...N,...r}}async signMessage(n){const{account:a}=this,s=`0x${Buffer.from(n,"utf8").toString("hex")}`;return this.web3.currentProvider.request({method:"personal_sign",params:[s,a]})}async sendTransactionAsync(n,a,s){const{chainId:r,web3:o}=this,p=this.getReadWeb3(),{data:u,estimate:T=!1,estimateFee:m=!1,extendedGasLimit:b,gasLimit:d="0",value:C="0",gasLimitMultiplier:x=1}=s;let{nonce:M}=s;M||(M=await p.eth.getTransactionCount(n)),console.log(`Nonce: ${M}`);const l={from:n,to:a,value:f.utils.numberToHex(C),data:u,nonce:M,chainId:f.utils.numberToHex(r)};if(T)try{const g=await p.eth.estimateGas(l),R=Math.round(Number(g)*x);b?l.gas=f.utils.numberToHex(R+b):l.gas=f.utils.numberToHex(R)}catch(g){throw new Error(g.message??"Failed to estimate gas limit for transaction.")}else l.gas=f.utils.numberToHex(d);const{maxFeePerGas:H,maxPriorityFeePerGas:$}=m?await this.getMaxFees().catch(()=>s):s;if($!==void 0&&(l.maxPriorityFeePerGas=f.utils.numberToHex($)),H!==void 0&&(l.maxFeePerGas=f.utils.numberToHex(H)),!l.maxFeePerGas&&!l.maxPriorityFeePerGas){const g=await this.getSafeGasPriceWei();l.gasPrice=g.toString(10)}if(!l.maxFeePerGas&&!l.maxPriorityFeePerGas){const g=await this.getSafeGasPriceWei();l.gasPrice=g.toString(10)}return console.log("Sending transaction via Web3: ",l),new Promise((g,R)=>{const K=o.eth.sendTransaction(l);K.once("transactionHash",async Z=>{console.log(`Just signed transaction has is: ${Z}`),g({receiptPromise:K,transactionHash:Z})}).catch(R)})}createContract(n,a){return new this.web3.eth.Contract(n,a)}}function L(e){switch(e){case i.ethereum:return 1.3;case i.holesky:case i.sepolia:return 1.5;default:return 1.3}}function W(e){return Object.values(i).includes(e)}const Ue={[i.holesky]:"0xED7bfd5C1790576105Af4649817f6d35A75CD818",[i.ethereum]:y,[i.binanceSmartChainTestnet]:"0x731eFa688F3679688cf60A3993b8658138953ED6",[i.binanceSmartChain]:y,[i.sepolia]:"0xc47e4b3124597fdf8dd07843d4a7052f2ee80c30",[i.base]:y,[i.baseSepoliaTestnet]:"0x731eFa688F3679688cf60A3993b8658138953ED6",[i.berachainBartioTestnet]:"0xc47e4b3124597FDF8DD07843D4a7052F2eE80C30",[i.corn]:y,[i.swell]:y},Le={[i.holesky]:"0x38A13AB20D15ffbE5A7312d2336EF1552580a4E2",[i.ethereum]:y,[i.binanceSmartChainTestnet]:"0x107Fc7d90484534704dD2A9e24c7BD45DB4dD1B5",[i.binanceSmartChain]:y,[i.sepolia]:"0xc47e4b3124597fdf8dd07843d4a7052f2ee80c30",[i.base]:y,[i.baseSepoliaTestnet]:y,[i.berachainBartioTestnet]:"0xc47e4b3124597FDF8DD07843D4a7052F2eE80C30",[i.corn]:y,[i.swell]:y},We={[i.ethereum]:"0x8236a87084f8b84306f72007f36f2618a5634494",[i.holesky]:y,[i.sepolia]:y,[i.binanceSmartChainTestnet]:y,[i.binanceSmartChain]:"0xecAc9C5F704e954931349Da37F60E39f515c11c1",[i.base]:"0xecAc9C5F704e954931349Da37F60E39f515c11c1",[i.baseSepoliaTestnet]:y,[i.berachainBartioTestnet]:y,[i.corn]:"0xecAc9C5F704e954931349Da37F60E39f515c11c1",[i.swell]:"0xecAc9C5F704e954931349Da37F60E39f515c11c1"};function G(e=k){switch(e){case c.prod:return We;case c.testnet:return Le;default:return Ue}}const Ge=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{payable:!0,stateMutability:"payable",type:"fallback"},{anonymous:!1,inputs:[{indexed:!0,name:"owner",type:"address"},{indexed:!0,name:"spender",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"}],Ve=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"uint256",name:"dustLimit",type:"uint256"}],name:"AmountBelowDustLimit",type:"error"},{inputs:[{internalType:"uint256",name:"fee",type:"uint256"}],name:"AmountLessThanCommission",type:"error"},{inputs:[],name:"ECDSAInvalidSignature",type:"error"},{inputs:[{internalType:"uint256",name:"length",type:"uint256"}],name:"ECDSAInvalidSignatureLength",type:"error"},{inputs:[{internalType:"bytes32",name:"s",type:"bytes32"}],name:"ECDSAInvalidSignatureS",type:"error"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"allowance",type:"uint256"},{internalType:"uint256",name:"needed",type:"uint256"}],name:"ERC20InsufficientAllowance",type:"error"},{inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"uint256",name:"balance",type:"uint256"},{internalType:"uint256",name:"needed",type:"uint256"}],name:"ERC20InsufficientBalance",type:"error"},{inputs:[{internalType:"address",name:"approver",type:"address"}],name:"ERC20InvalidApprover",type:"error"},{inputs:[{internalType:"address",name:"receiver",type:"address"}],name:"ERC20InvalidReceiver",type:"error"},{inputs:[{internalType:"address",name:"sender",type:"address"}],name:"ERC20InvalidSender",type:"error"},{inputs:[{internalType:"address",name:"spender",type:"address"}],name:"ERC20InvalidSpender",type:"error"},{inputs:[{internalType:"uint256",name:"deadline",type:"uint256"}],name:"ERC2612ExpiredSignature",type:"error"},{inputs:[{internalType:"address",name:"signer",type:"address"},{internalType:"address",name:"owner",type:"address"}],name:"ERC2612InvalidSigner",type:"error"},{inputs:[],name:"EnforcedPause",type:"error"},{inputs:[],name:"ExpectedPause",type:"error"},{inputs:[],name:"FeeGreaterThanAmount",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"currentNonce",type:"uint256"}],name:"InvalidAccountNonce",type:"error"},{inputs:[],name:"InvalidDustFeeRate",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInputLength",type:"error"},{inputs:[],name:"InvalidUserSignature",type:"error"},{inputs:[],name:"KnownDestination",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{inputs:[],name:"PayloadAlreadyUsed",type:"error"},{inputs:[],name:"ReentrancyGuardReentrantCall",type:"error"},{inputs:[],name:"ScriptPubkeyUnsupported",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"UnauthorizedAccount",type:"error"},{inputs:[{internalType:"bytes4",name:"action",type:"bytes4"}],name:"UnexpectedAction",type:"error"},{inputs:[],name:"UnknownDestination",type:"error"},{inputs:[{internalType:"uint256",name:"fromChainId",type:"uint256"},{internalType:"address",name:"fromContract",type:"address"}],name:"UnknownOriginContract",type:"error"},{inputs:[{internalType:"uint256",name:"expiry",type:"uint256"}],name:"UserSignatureExpired",type:"error"},{inputs:[],name:"WithdrawalsDisabled",type:"error"},{inputs:[],name:"WrongChainId",type:"error"},{inputs:[],name:"ZeroAddress",type:"error"},{inputs:[],name:"ZeroAddress",type:"error"},{inputs:[],name:"ZeroAmount",type:"error"},{inputs:[],name:"ZeroChainId",type:"error"},{inputs:[],name:"ZeroContractHash",type:"error"},{inputs:[],name:"ZeroFee",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"prevVal",type:"address"},{indexed:!0,internalType:"address",name:"newVal",type:"address"}],name:"BasculeChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"prevVal",type:"address"},{indexed:!0,internalType:"address",name:"newVal",type:"address"}],name:"BridgeChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint64",name:"prevValue",type:"uint64"},{indexed:!0,internalType:"uint64",name:"newValue",type:"uint64"}],name:"BurnCommissionChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"claimer",type:"address"},{indexed:!1,internalType:"bool",name:"isClaimer",type:"bool"}],name:"ClaimerUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"prevVal",type:"address"},{indexed:!0,internalType:"address",name:"newVal",type:"address"}],name:"ConsortiumChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldRate",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newRate",type:"uint256"}],name:"DustFeeRateChanged",type:"event"},{anonymous:!1,inputs:[],name:"EIP712DomainChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldFee",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newFee",type:"uint256"}],name:"FeeChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"bytes",name:"userSignature",type:"bytes"}],name:"FeeCharged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!0,internalType:"bytes32",name:"payloadHash",type:"bytes32"},{indexed:!1,internalType:"bytes",name:"payload",type:"bytes"}],name:"MintProofConsumed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"minter",type:"address"},{indexed:!1,internalType:"bool",name:"isMinter",type:"bool"}],name:"MinterUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"name",type:"string"},{indexed:!1,internalType:"string",name:"symbol",type:"string"}],name:"NameAndSymbolChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferStarted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousPauser",type:"address"},{indexed:!0,internalType:"address",name:"newPauser",type:"address"}],name:"PauserRoleTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"prevValue",type:"address"},{indexed:!0,internalType:"address",name:"newValue",type:"address"}],name:"TreasuryAddressChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"fromAddress",type:"address"},{indexed:!1,internalType:"bytes",name:"scriptPubKey",type:"bytes"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"UnstakeRequest",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bool",name:"",type:"bool"}],name:"WithdrawalsEnabled",type:"event"},{inputs:[],name:"Bascule",outputs:[{internalType:"contract IBascule",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"acceptOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newClaimer",type:"address"}],name:"addClaimer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newMinter",type:"address"}],name:"addMinter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"to",type:"address[]"},{internalType:"uint256[]",name:"amount",type:"uint256[]"}],name:"batchMint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"payload",type:"bytes[]"},{internalType:"bytes[]",name:"proof",type:"bytes[]"}],name:"batchMint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"mintPayload",type:"bytes[]"},{internalType:"bytes[]",name:"proof",type:"bytes[]"},{internalType:"bytes[]",name:"feePayload",type:"bytes[]"},{internalType:"bytes[]",name:"userSignature",type:"bytes[]"}],name:"batchMintWithFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"burn",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"burn",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"scriptPubkey",type:"bytes"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"calcUnstakeRequestAmount",outputs:[{internalType:"uint256",name:"amountAfterFee",type:"uint256"},{internalType:"bool",name:"isAboveDust",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newVal",type:"address"}],name:"changeBascule",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newBridge",type:"address"}],name:"changeBridge",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint64",name:"newValue",type:"uint64"}],name:"changeBurnCommission",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newVal",type:"address"}],name:"changeConsortium",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"newRate",type:"uint256"}],name:"changeDustFeeRate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],name:"changeNameAndSymbol",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newValue",type:"address"}],name:"changeTreasuryAddress",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"consortium",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getBurnCommission",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[],name:"getDustFeeRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getMintFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getTreasury",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"consortium_",type:"address"},{internalType:"uint64",name:"burnCommission_",type:"uint64"},{internalType:"address",name:"owner_",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimer",type:"address"}],name:"isClaimer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"minter",type:"address"}],name:"isMinter",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"mint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"bytes",name:"proof",type:"bytes"}],name:"mint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"mintPayload",type:"bytes"},{internalType:"bytes",name:"proof",type:"bytes"},{internalType:"bytes",name:"feePayload",type:"bytes"},{internalType:"bytes",name:"userSignature",type:"bytes"}],name:"mintWithFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"pauser",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingOwner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"scriptPubkey",type:"bytes"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"redeem",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"reinitialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"oldClaimer",type:"address"}],name:"removeClaimer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"oldMinter",type:"address"}],name:"removeMinter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"fee",type:"uint256"}],name:"setMintFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"toggleWithdrawals",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newPauser",type:"address"}],name:"transferPauserRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"uint256",name:"fromChain",type:"uint256"},{internalType:"address",name:"fromContract",type:"address"},{internalType:"uint256",name:"toChain",type:"uint256"},{internalType:"address",name:"toContract",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint64",name:"amount",type:"uint64"},{internalType:"bytes32",name:"uniqueActionData",type:"bytes32"}],internalType:"struct Actions.DepositBridgeAction",name:"action",type:"tuple"},{internalType:"bytes32",name:"",type:"bytes32"},{internalType:"bytes",name:"",type:"bytes"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"}],He=[{inputs:[{internalType:"address",name:"aDefaultAdmin",type:"address"},{internalType:"address",name:"aPauser",type:"address"},{internalType:"address",name:"aDepositReporter",type:"address"},{internalType:"address",name:"aWithdrawalValidator",type:"address"},{internalType:"uint256",name:"aMaxDeposits",type:"uint256"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AccessControlBadConfirmation",type:"error"},{inputs:[{internalType:"uint48",name:"schedule",type:"uint48"}],name:"AccessControlEnforcedDefaultAdminDelay",type:"error"},{inputs:[],name:"AccessControlEnforcedDefaultAdminRules",type:"error"},{inputs:[{internalType:"address",name:"defaultAdmin",type:"address"}],name:"AccessControlInvalidDefaultAdmin",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"bytes32",name:"neededRole",type:"bytes32"}],name:"AccessControlUnauthorizedAccount",type:"error"},{inputs:[{internalType:"bytes32",name:"depositID",type:"bytes32"}],name:"AlreadyReported",type:"error"},{inputs:[{internalType:"bytes32",name:"depositID",type:"bytes32"},{internalType:"uint256",name:"withdrawalAmount",type:"uint256"}],name:"AlreadyWithdrawn",type:"error"},{inputs:[],name:"BadDepositReport",type:"error"},{inputs:[],name:"EnforcedPause",type:"error"},{inputs:[],name:"ExpectedPause",type:"error"},{inputs:[{internalType:"uint8",name:"bits",type:"uint8"},{internalType:"uint256",name:"value",type:"uint256"}],name:"SafeCastOverflowedUintDowncast",type:"error"},{inputs:[],name:"SameValidationThreshold",type:"error"},{inputs:[{internalType:"bytes32",name:"depositID",type:"bytes32"},{internalType:"uint256",name:"withdrawalAmount",type:"uint256"}],name:"WithdrawalFailedValidation",type:"error"},{anonymous:!1,inputs:[],name:"DefaultAdminDelayChangeCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint48",name:"newDelay",type:"uint48"},{indexed:!1,internalType:"uint48",name:"effectSchedule",type:"uint48"}],name:"DefaultAdminDelayChangeScheduled",type:"event"},{anonymous:!1,inputs:[],name:"DefaultAdminTransferCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newAdmin",type:"address"},{indexed:!1,internalType:"uint48",name:"acceptSchedule",type:"uint48"}],name:"DefaultAdminTransferScheduled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"reportId",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"numDeposits",type:"uint256"}],name:"DepositsReported",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"numDeposits",type:"uint256"}],name:"MaxDepositsUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"oldThreshold",type:"uint256"},{indexed:!1,internalType:"uint256",name:"newThreshold",type:"uint256"}],name:"UpdateValidateThreshold",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"depositID",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"withdrawalAmount",type:"uint256"}],name:"WithdrawalNotValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"depositID",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"withdrawalAmount",type:"uint256"}],name:"WithdrawalValidated",type:"event"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"DEPOSIT_REPORTER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"PAUSER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"VALIDATION_GUARDIAN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"WITHDRAWAL_VALIDATOR_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"acceptDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"beginDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"cancelDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint48",name:"newDelay",type:"uint48"}],name:"changeDefaultAdminDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"defaultAdmin",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"defaultAdminDelay",outputs:[{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"defaultAdminDelayIncreaseWait",outputs:[{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"depositID",type:"bytes32"}],name:"depositHistory",outputs:[{internalType:"enum Bascule.DepositState",name:"status",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxDeposits",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingDefaultAdmin",outputs:[{internalType:"address",name:"newAdmin",type:"address"},{internalType:"uint48",name:"schedule",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingDefaultAdminDelay",outputs:[{internalType:"uint48",name:"newDelay",type:"uint48"},{internalType:"uint48",name:"schedule",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"reportId",type:"bytes32"},{internalType:"bytes32[]",name:"depositIDs",type:"bytes32[]"}],name:"reportDeposits",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rollbackDefaultAdminDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"aMaxDeposits",type:"uint256"}],name:"setMaxDeposits",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"newThreshold",type:"uint256"}],name:"updateValidateThreshold",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"validateThreshold",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"depositID",type:"bytes32"},{internalType:"uint256",name:"withdrawalAmount",type:"uint256"}],name:"validateWithdrawal",outputs:[],stateMutability:"nonpayable",type:"function"}];function $e(e){switch(e){case"LBTC":return Ve;default:return Ge}}function S(e,t){const n=G(t),{chainId:a}=e;if(!W(a))throw new Error(`This chain ${a} is not supported`);const s=n[a];if(!s)throw new Error(`Token address for chain ${a} is not defined`);const r=$e("LBTC"),o=e.createContract(r,s);return o.options.address||(o.options.address=s),o}function Ke({spender:e,amount:t,env:n,...a}){const s=new E(a),r=S(s,n),o=U(t),p=r.methods.approve(e,o);return s.sendTransactionAsync(s.account,r.options.address,{data:p.encodeABI(),estimate:!0,estimateFee:!0,gasLimitMultiplier:L(s.chainId)})}const Ze="insufficient funds",je="Insufficient funds for transfer. Make sure you have enough ETH to cover the gas cost.",j=e=>e.startsWith("0x")?e:"0x"+e;async function qe({data:e,proofSignature:t,env:n,...a}){const s=new E(a),r=S(s,n),o=r.methods.mint(j(e),j(t));try{return await s.sendTransactionAsync(s.account,r.options.address,{data:o.encodeABI(),estimate:!0,estimateFee:!0,gasLimitMultiplier:L(s.chainId)})}catch(p){console.log("error",p);const u=v(p);throw u.includes(Ze)?new Error(je):new Error(u)}}function ze(e,t){if(!t)throw new Error("The address for bascule module is not defined");const n=e.createContract(He,t);return n.options.address||(n.options.address=t),n}const Je="No deposit ID provided. Please provide a deposit ID as an argument.";var ne=(e=>(e[e.UNREPORTED=0]="UNREPORTED",e[e.REPORTED=1]="REPORTED",e[e.WITHDRAWN=2]="WITHDRAWN",e))(ne||{});async function Xe({rawPayload:e,env:t,...n}){if(!e)throw new Error(Je);const a=new E(n),r=await S(a,t).methods.Bascule().call();if(r===y)return 1;const o=ze(a,r);try{const p=a.getReadWeb3().utils.keccak256(Buffer.from(e.slice(8),"hex")),u=await o.methods.depositHistory(p).call();return Number(u)}catch(p){const u=v(p);throw new Error(u)}}const Ye=[i.ethereum,i.base,i.binanceSmartChain],ae=e=>Ye.includes(e)?c.prod:c.stage;function se(e,t){if(!W(e))throw new Error(`This chain ${e} is not supported`);const n=t?{[e]:t}:N;if(!n[e])throw new Error(`RPC URL for chainId ${e} not found`);return n}async function Qe({chainId:e,rpcUrl:t}){const n=se(e,t),a=new B({chainId:e,rpcUrlConfig:n}),s=ae(e),o=await S(a,s).methods.getMintFee().call();return new _(F(o.toString(10)))}async function et({env:e,rpcUrl:t,chainId:n}){const a={[n]:t},s=new B({chainId:n,rpcUrlConfig:a});return(await S(s,e).methods.totalSupply().call()).toString()}async function ie({owner:e,rpcUrl:t,chainId:n}){const a=se(n,t),s=new B({chainId:n,rpcUrlConfig:a}),r=ae(n),o=S(s,r);try{return(await o.methods.nonces(e).call()).toString()}catch(p){const u=v(p);throw new Error(u)}}async function tt(e){const t=new E(e),n=`destination chain id is ${e.chainId}`;return t.signMessage(n)}const nt=24*60*60;function at({chainId:e,verifyingContract:t,fee:n,expiry:a}){return{domain:{name:"Lombard Staked Bitcoin",version:"1",chainId:e,verifyingContract:t},message:{chainId:e,fee:n,expiry:a},primaryType:"feeApproval",types:{EIP712Domain:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],feeApproval:[{name:"chainId",type:"uint256"},{name:"fee",type:"uint256"},{name:"expiry",type:"uint256"}]}}}const st="Failed to obtain a valid signature. The response is undefined or invalid.",it=()=>Math.floor(Date.now()/1e3+nt);async function rt({address:e,provider:t,fee:n,chainId:a,env:s,expiry:r=it()}){var b,d;const o=new E({provider:t,account:e,chainId:a}),u=S(o,s).options.address,T=JSON.stringify(at({chainId:a,verifyingContract:u,fee:n,expiry:r})),m=await((d=(b=o.web3)==null?void 0:b.currentProvider)==null?void 0:d.request({method:"eth_signTypedData_v4",params:[e,T]}));if(typeof m=="string")return{signature:m,typedData:T};if(!(m!=null&&m.result))throw new Error(st);return{signature:m.result,typedData:T}}const V={[i.holesky]:[{key:"veda",name:"Veda / Lombard DeFi Vault",address:"0x4A3cD83CEbb91E0Cd31EdA2Ee0F4AebfcCFCbBb6"}],[i.binanceSmartChain]:[{key:"veda",name:"Veda / Lombard DeFi Vault",address:"0xC8bbF6153D7Ba105f1399D992ebd32B0541996ef"}],[i.binanceSmartChainTestnet]:[{key:"veda",name:"Veda / Lombard DeFi Vault",address:"0x72143309A662bDB4aad5cA65Ab59eD8977D047C5"}]},ot=Object.keys(V).map(Number),re=e=>{const t=V[e];if(!(t!=null&&t.length))throw new Error(`No vaults configured for chain ID ${e}`);return t},oe=(e,t)=>{const a=re(e).find(s=>s.key===t);if(!a)throw new Error(`No vault found with key ${t} for chain ID ${e}`);return a.address};async function pe({chainId:e,expiry:t,owner:n,spender:a,value:s,rpcUrl:r,verifyingContract:o}){const p=await ie({owner:n,chainId:e,rpcUrl:r});return{domain:{name:"Lombard Staked Bitcoin",version:"1",chainId:e,verifyingContract:o},types:{EIP712Domain:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],Permit:[{name:"owner",type:"address"},{name:"spender",type:"address"},{name:"value",type:"uint256"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},primaryType:"Permit",message:{owner:n,spender:a,value:s,nonce:p,deadline:t.toString()}}}const pt=e=>{const n=G("stage")[e];if(!n)throw new Error(`No LBTC contract address configured for chain ID ${e}`);return n},ut="Failed to obtain a valid signature. The response is undefined or invalid.";async function yt({address:e,provider:t,chainId:n,value:a,expiry:s,rpcUrl:r,vaultKey:o}){var C,x;const p=new E({provider:t,account:e,chainId:n}),u=pt(n),T=oe(n,o),m=await pe({chainId:n,expiry:s,owner:e,spender:T,value:a,rpcUrl:r,verifyingContract:u}),b=JSON.stringify(m),d=await((x=(C=p.web3)==null?void 0:C.currentProvider)==null?void 0:x.request({method:"eth_signTypedData_v4",params:[e,b]}));if(typeof d=="string")return{signature:d,typedData:b};if(!(d!=null&&d.result))throw new Error(ut);return{signature:d.result,typedData:b}}I.initEccLib(ce);function dt(e,t=c.prod){var r;const n=lt(e),s=(r=I.payments[n]({address:e,network:t===c.prod?I.networks.bitcoin:I.networks.testnet}).output)==null?void 0:r.toString("hex");if(!s)throw new Error("Output script is not found.");return`0x${s}`}function lt(e){const t=I.address.fromBech32(e);if(t.version===1&&t.data.length===32)return"p2tr";if(t.version===0&&t.data.length===20)return"p2wpkh";if(ct(e))return"p2wsh";throw new Error("Address type is not supported.")}function ct(e){return(e.startsWith("bc1")||e.startsWith("tb1"))&&e.length===62}function mt({btcAddress:e,amount:t,env:n,...a}){const s=new E(a),r=S(s,n),o=dt(e,n),p=U(t),u=r.methods.redeem(o,p);return s.sendTransactionAsync(s.account,r.options.address,{data:u.encodeABI(),estimate:!0,estimateFee:!0,gasLimitMultiplier:L(s.chainId)})}exports.BasculeDepositStatus=ne;exports.ENotarizationStatus=ee;exports.ESessionState=te;exports.OChainId=i;exports.OEnv=c;exports.SANCTIONED_ADDRESS=X;exports.SATOSHI_SCALE=O;exports.STAKE_AND_BAKE_VAULTS=V;exports.SUPPORTED_STAKE_AND_BAKE_CHAINS=ot;exports.approveLBTC=Ke;exports.claimLBTC=qe;exports.fromSatoshi=F;exports.generateDepositBtcAddress=Ae;exports.getApiConfig=w;exports.getBasculeDepositStatus=Xe;exports.getBaseNetworkByEnv=J;exports.getBscNetworkByEnv=z;exports.getChainIdByName=Q;exports.getChainNameById=P;exports.getDepositBtcAddress=Ce;exports.getDepositBtcAddresses=Y;exports.getDepositsByAddress=_e;exports.getEthNetworkByEnv=q;exports.getLBTCExchangeRate=Me;exports.getLBTCMintingFee=Qe;exports.getLBTCTotalSupply=et;exports.getLbtcAddressConfig=G;exports.getNetworkFeeSignature=Re;exports.getPermitNonce=ie;exports.getStakeAndBakeSpenderContract=oe;exports.getStakeAndBakeTypedData=pe;exports.getStakeAndBakeVaults=re;exports.getUserStakeAndBakeSignature=Ne;exports.isValidChain=W;exports.signLbtcDestionationAddr=tt;exports.signNetworkFee=rt;exports.signStakeAndBake=yt;exports.storeNetworkFeeSignature=Pe;exports.storeStakeAndBakeSignature=Oe;exports.toSatoshi=U;exports.unstakeLBTC=mt;
2
2
  //# sourceMappingURL=index.cjs.map