@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 +105 -6
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +362 -673
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/common/types/types.ts +2 -9
- package/src/provider/Provider.ts +1 -0
- package/src/provider/rpcUrlConfig.ts +3 -3
- package/src/sdk/generateDepositBtcAddress/generateDepositBtcAddress.ts +6 -0
- package/src/sdk/getDepositsByAddress/getDepositsByAddress.ts +2 -0
- package/src/sdk/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.stories.tsx +1 -1
- package/src/sdk/internalTypes.ts +5 -5
- package/src/sdk/storeStakeAndBakeSignature/storeStakeAndBakeSignature.stories.tsx +27 -95
- package/src/sdk/storeStakeAndBakeSignature/storeStakeAndBakeSignature.ts +1 -1
- package/src/sdk/utils/getChainIdByName.ts +5 -0
- package/src/sdk/utils/getChainNameById.ts +1 -1
- package/src/web3Sdk/basculeAddressConfig.ts +70 -0
- package/src/web3Sdk/claimLBTC/claimLBTC.ts +0 -1
- package/src/web3Sdk/getBasculeDepositStatus/getBasculeDepositStatus.stories.tsx +3 -3
- package/src/web3Sdk/getBasculeDepositStatus/getBasculeDepositStatus.ts +12 -15
- package/src/web3Sdk/index.ts +2 -1
- package/src/web3Sdk/lbtcAddressConfig.ts +4 -4
- package/src/web3Sdk/signStakeAndBake/contracts.ts +29 -1
- package/src/web3Sdk/signStakeAndBake/signStakeAndBake.stories.tsx +25 -100
- package/src/web3Sdk/lbtcOFTAdapterAddressConfig.ts +0 -47
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
|
-
|
|
328
|
+
#### signStakeAndBake
|
|
326
329
|
|
|
327
|
-
|
|
330
|
+
`@returns Promise<ISignStakeAndBakeResult>` Sign authorization promise
|
|
328
331
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
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
|