From 734947d405780f88b6d548a0dd76e13e0d2cb40f Mon Sep 17 00:00:00 2001 From: okjodom Date: Tue, 16 Apr 2024 22:18:15 +0300 Subject: [PATCH 1/2] docs: update fedimint-clientd usage docs --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e71f0ef..a4fd2ba 100644 --- a/README.md +++ b/README.md @@ -13,16 +13,18 @@ You can install the cli app with `cargo install fedimint-clientd` or by cloning ``` CLI USAGE: fedimint-clientd \ - --fm_db_path=/absolute/path/to/dir/to/store/database \ + --db-path=/absolute/path/to/dir/to/store/database \ --password="some-secure-password-that-becomes-the-bearer-token" \ --addr="127.0.0.1:8080" - --mode="default" + --mode="rest" + --invite-code="fed1-fedimint-invite-code" ENV USAGE: FEDIMINT_CLIENTD_DB_PATH=/absolute/path/to/dir/to/store/database FEDIMINT_CLIENTD_PASSWORD="some-secure-password-that-becomes-the-bearer-token" FEDIMINT_CLIENTD_ADDR="127.0.0.1:8080" -FEDIMINT_CLIENTD_MODE="default" +FEDIMINT_CLIENTD_MODE="rest" +FEDIMINT_CLIENTD_INVITE_CODE="fed1-fedimint-invite-code" ``` ## Fedimint Clientd Endpoints From 449708bce400fe22efb66a3db192f583edf8ea96 Mon Sep 17 00:00:00 2001 From: okjodom Date: Wed, 17 Apr 2024 00:51:59 +0300 Subject: [PATCH 2/2] chore: polish state of fedimint-ts - improve type exports to avoid missaps on lib - refactor dir structure for src/ and test/ clarity - new lib asset compilation using tsc to dist/ --- justfile.local.just | 2 +- wrappers/fedimint-ts/README.md | 36 +- wrappers/fedimint-ts/bun.lockb | Bin 57126 -> 0 bytes wrappers/fedimint-ts/index.ts | 4 - wrappers/fedimint-ts/package-lock.json | 1581 +++++++++++++++++ wrappers/fedimint-ts/package.json | 24 +- .../fedimint-ts/{ => src}/FedimintClient.ts | 69 +- wrappers/fedimint-ts/src/index.ts | 2 + wrappers/fedimint-ts/src/types.ts | 273 +++ .../{example.ts => tests/info-example.ts} | 9 +- wrappers/fedimint-ts/{ => tests}/test.ts | 4 +- wrappers/fedimint-ts/tsconfig.json | 20 +- wrappers/fedimint-ts/types.ts | 321 ---- 13 files changed, 1920 insertions(+), 425 deletions(-) delete mode 100755 wrappers/fedimint-ts/bun.lockb delete mode 100644 wrappers/fedimint-ts/index.ts create mode 100644 wrappers/fedimint-ts/package-lock.json rename wrappers/fedimint-ts/{ => src}/FedimintClient.ts (92%) create mode 100644 wrappers/fedimint-ts/src/index.ts create mode 100644 wrappers/fedimint-ts/src/types.ts rename wrappers/fedimint-ts/{example.ts => tests/info-example.ts} (83%) rename wrappers/fedimint-ts/{ => tests}/test.ts (99%) delete mode 100644 wrappers/fedimint-ts/types.ts diff --git a/justfile.local.just b/justfile.local.just index 178441d..68c4057 100644 --- a/justfile.local.just +++ b/justfile.local.just @@ -5,7 +5,7 @@ mprocs: ./scripts/mprocs-nix.sh dev-fed mprocs-new.yaml test-ts: - bun run wrappers/fedimint-ts/test.ts + bun run wrappers/fedimint-ts/tests/test.ts test-py: python3.11 wrappers/fedimint-py/test.py diff --git a/wrappers/fedimint-ts/README.md b/wrappers/fedimint-ts/README.md index b1992db..6b5f20d 100644 --- a/wrappers/fedimint-ts/README.md +++ b/wrappers/fedimint-ts/README.md @@ -3,9 +3,10 @@ This is a TypeScript client that consumes the [Fedimint Http Client](https://github.com/kodylow/fedimint-http), communicating with it via HTTP and a password. It's a hacky prototype, but it works until we can get a proper TS client for Fedimint. All of the federation handling code happens in the fedimint-http-client, this just exposes a simple API for interacting with the client from TypeScript (will be mirrored in Python and Go). ## Usage + ```typescript -import {FedimintClientBuilder} from "./FedimintClient"; import dotenv from "dotenv"; +import { FedimintClientBuilder } from "fedimint-ts"; dotenv.config(); @@ -51,41 +52,20 @@ fedimintClient.ln.awaitInvoice({ operation_id }).then((response) => { }); ``` -# Setup - -Set the following in the fedimint-http .env environment variables: - -```bash -FEDERATION_INVITE_CODE = 'fed1-some-invite-code' -SECRET_KEY = 'some-secret-key' # generate this with `openssl rand -base64 32` -FM_DB_PATH = '/absolute/path/to/fm.db' # just make this a new dir called `fm_db` in the root of the fedimint-http-client and use the absolute path to thatm it'll create the db file for you on startup -PASSWORD = 'password' -DOMAIN = 'localhost' -PORT = 5000 -BASE_URL = 'http://localhost:5000' -``` - -Then start the fedimint-http-client server: +## Development -```bash -cargo run -``` +Install dependencies with `bun install` or `npm install`. -Then you're ready to run the typescript client, which will use the same base url and password as the fedimint-http-client: +Follow these [steps to setup a `fedimint-clientd` server](https://github.com/fedimint/fedimint-clientd?tab=readme-ov-file#getting-started) and then you're ready to run the typescript client. + `fedimint-ts` will use the same base url and password as the `fedimint-clientd`: ```bash BASE_URL = 'http://localhost:5000' PASSWORD = 'password' ``` -To install dependencies: - -```bash -bun install -``` - -To run (this just runs an example that creates FedimintClient in typescript and creates an invoice): +Then run your code that follows the pattern of `tests/info-example.ts`. ```bash -bun run example.ts +bun run tests/info-example.ts ``` diff --git a/wrappers/fedimint-ts/bun.lockb b/wrappers/fedimint-ts/bun.lockb deleted file mode 100755 index fab43d7f03648241577b7d6c8ac227fb3130169a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57126 zcmeFac|29?+dsZ(6Ut0NGNsJ3O2(9VYA__J3>#bKAw!4=Whhgol2U|HkWsU)S}b#Hr}v!BoBI7jDsUf+Ly-LLcR+G}0w{l2gJx`%bIWjllgW&C`+W$cLV zG6eVi0(O4x3;-!t5Bq(NL|1~8qldSft*_L6Sq5qx4!7*?UO|hb!q)1oCwT7EPu#~;a^cm@|iIWcE&bpK()$j22a{|U0q0gK{uAP_vIh(0(E;4#CoBUlt)4g7d z7r{7pOh>-Xk?8Iq<>!gh0Wri=AzM$>)waG6v@6k#=!;WxjdVf`ImiLo!f4JlyS}b{x*%+t$+)I+5t^=t^{Q_T3Loq_d9@2wBJBUb4;|JG$EX z`Vt&)!=R7yLGbbOB|^LeA1^nI2#W-Z^5n3ccHX)6z5>zy%i(%7 zZolE@bgdy4biPku?)o;c=(rv%YBzRX3$8=F141|)NQG&Dg;a!Df?WmntneJ)hv2rK z;Elt{z)7SNXbThC#~1gX^8$@4yFeVy#}y_rXuA=-oe1(coU_Ork9GB2`z*mC9XoGZ zdjjOSnS7pO&0Ie@f<=C8+&d7xNfU=(bnd(j=%IG-L!8j0Ffb%b6q}2G0xZf;KUlOb z8G(fqhrwr3{s$_l-8aPq88f#yX5RiDF)7@6^xm0s!T!sKW~B{}`Q4xV5D{vNXARd} z74A-@TgKLsu}{tU=(lLr%n`2T1MN;5Y>28y;$9x8&T{bovD<-V$XW5$2KrO=E5|BY zOLbbzjl;I}4|<>SIdFAX(!m2A<2OHEKHF~1!+BaHOj6=7!S1G6*n!I|7rvVJ3`(%^ z8wT+S4GLG$3*FpFb@Hjs)M-zF{RUUOISi@-Zhl@zvq8T|flkC&-^lvt`V&$qf;DUn zr40v@w45%Alxv=DHpJce+#~!*BvNlwlauA@?Vw}s>HO3$c5fXY_q3`Ur#bm-Otc|B zn2C$JBfxTNyRps3hC%mf<*&vr+juQ_^q%m4C~ZjSiDjP7y+}>XJlzRZ0`&6 zhjr)uBOTvJoBAm+oEq$nT>Mf&hMCTeKe2RVWZV6QZbF_*t(EK)L)`Ua(iP>>TJoZ; z_t;cE?=ebh%8t6d>B0}DJf=59CZ4jbKDxo|XY6(l=38uSGO=a3_Ml5xb@AcA=%~*& zTjGBBG>XgQt5>}_Y!@Q$S~}U-;_UQ5Y)_c~pd)j^*C5x=35I(dE#t>|tW31)nnub( z_ZWHAU(w1)53psZJ=xQ|CV2l0=XuHMcP}2d)4WYx>z-b`baqJS)08h~hMU+*yTTMZ z(H7~~DGCsO&Kq1+>)xsGd5E!8l(0`NCC00*??E1yw#%|RG4gMV z0~0M@cul3JXx6ru?^xb5bRtwhYrgMKzI8$Q&Bc#RrsJWPq z)Z?1*gb1ACAW!4{bJuD+%DRr}Z3%U~(|5J>;zPHDsa(^KIu|4@d$+TVbZK%9q;IIC z3tU=xUA8#UESI>_V$m~OnN8xIp1R3@wCxIrur;*V-1I$ z*D5v5CCuxe>?nM!|LOGW&!#C%ntcWv*D!|N-z9N0N=)7E$T}t(o1U1}v+C9{^pP6v zyatc!bxXMU4ezlFFRql#>QymcZm|D_L7S{eybbdzZ8MEj$z6|@8n^E(n-Gg$ES7DY zTavHBueUoW$-pqyA?50w-iCn8t`u6nmrfP2Xy5&6NG zr@mKB8tHuQm=_gOGk-WR>hvgv?VS+4hwA;2t(muTo6-YMyR;G$Wp>7|E>ly+&O7#K zl$cAce@)#N6`X!V!9DS*K2^z+z0n1H{q-Fs+FzPE^){aS-OBF{q?X8-({A!a`R~uQBobfy4%^uMf)``pLegA6B@ev#MKDBjE zn^Gs7i~DYm3i?R$G{3s*nV#@@zfa<@$%sBRpGnOD{G#;O{9mu9dz2juf$# z#=Cx4@uJ_AXQPQXYHEl=axv2ahs$5!j@!WY=zmqH$?QX5H^4dww~JpY7@r3M*$jNR z&HS+|T!;|H-%aMD`hTTO82>Dg)Vjd_et&#f{m2(!ls)i*UHLWIp1;c6UJq*b z+70`e1s9B84}1;aBO*End$I);jK3HvRsufk!Ehk8;4z5tRe`Svd@S#n{ih%>elYM= zfse*5svlt?1>@I|<3~?qFpd^nF#buHIH-O^#Lg{51iQAI%t!MNm0xZDN*Hih`~MAp zCz+49^nhQ@UmNiCp#4~Tuy!E5zbn}FypVWVa{izze!2aIz{m2B_zNvq{n2DT$~!vu ztNE`1z5&FK@qe}bjF5D+exSIK#zNbG#lH#oI^_Bn%0+cy{3F0e>mN3EvGeGfzbn{v zt-#kM*N@_dXNUzAj4uZdXITFs;;-i44fvbM^&>u}i$4Ed!LGXsd`;k^+@Ze1&i@@3 z`LOFg03ROXNd1q_|7!eRkTBH$sQ!g=Q9W4w`M{^V|1DGl;|~BIE`UBURm zaMQu!N7w%<-yZm=|B)Vw{a52Z4SaRr1C_)@d0a@r;_nAOy8mGJkA-m2H5i{29*VL3 z!$Rw(1S)l%EKE)PAhpm|ZBphg?76{mK}`;-`oAx0L%=?EFIOR|7s8e^}gDKQ5H-2YfVs zF#bRBFh3S&DezJLQQOfRSZEF~{y4dQtlt(I2ga9#7l_#WLFZsQv7mzS?SQWX@uT`t z-B=v|B!clTkn6{ef0h4?%tv+q${K>zw-R1Pqxpxp3#}Wq4dd?wJ{o^0Z)oiNYW~xJ zZ$i!=>idPpfYtvR_~`zJ#gCl_slP4Qby{%KQUE?|qe*+mU#;H{_?p1S)(=egZz~5U zc3lPVQT)HscBGB*zXE>?ng369Qu;Bz9_QTrUue5A4U8WKe0hrae|7$r0ACXLNDqx2 zOc$$XK8s!V4ESjMLHS2zq3yu<+RNtR$Br>Or#An;*meH@!JnV;KRp<~0QhMAz>fdt zRr4QV*MA4T7VsC^ZcGv5tHTey(E5+~DF44YfA<3)>;He#fA@gDncRO^OjwM6XR&K( zVAG1?U+B2QG%>y!@Ui{hujCNp#{gdo>c@_MHGl2EN9!+^`-QdxtB(bK*e3&gwD!WI z1ZfS%+W2=COTy8Q{W>mb`JUfsbJT(10TJ=#Q5kwvXFxDSHlmB(ftSUVJo=cg7K|@zn08L zWR$~&6pVii_}ain$0&w{?jbP#d*Ex5>&MRhO8puu{(OIg_zRtbSY3yKkMfTl|7!fT zz&9tykK#r-SV+O@54Sba-Z z&h;NUMs@${_}K@1Z2yM%zZ(Bda{Z{^7uxr5DGrOD4Zh@{3GH8K+=z<`#@_~fE#PBu zV|MPU`TxcEr+|<4Z@;qkQP$rDe0_5K@G5V?1*=~`0EgQ~=Ko3#Fn&DnRVdmI+sOqL zj6VeYjlf6q4yMu{dHp95j4viQcmF}-7ilas2N>T5_{vZ}iW_l%b^f0KJ{CVL<-g4D z0=^#9kM6(!X8kS{!r{#R7yMb^qy6K*t$(vH4!8S%!7m2BCh)1C{irN-4rBc{1AMgq zK>K&pcMBcE7=Qh$x%r3M|0@OKdjlWcKNngrRtLtvK&~HqZ}6+_e*t{df0!PYN35Rt zEOx!9$lUsm?mY|TB2A3%1$?xBUufJ|JQzP0_^AI--6)3(jRE6#0UujGQ4H95te*KS zb{+5Px&1TNe>C$E{^LBx-wS+HKRQPB|7!f1z(?)J@`vgEM|J;oh+WrBjvsq|{nh$~ z*33OWVeS4^z6bD8`?31}E6{mPVDT3KUmf_UepEMhejeH%r?Kna0v|m;VEOyi_(etM z;>Y^`j|%?b16IEs@KOBec%gM8X^fu(d<)>y!nuF5{(t#j^3%lrckBOm;G_FL>VMRS zs2vL_So_zB&()8OA9$U=pn~y3fRCR4{%!sq0e>U#vHo9Z{3uAYUqC=(58Jm>TGS>E z04jfF5f5Hpkj4T$#*zx9MQwz~BU1S*yBa(YJEfDWJ_i~Nr00LtH4be$9F zsyU15bs--ki~Re@$H=03+yLmjI{+1A(Xj{FdV)m-S)}I!Kz?5UD#)T^KXd?v(jt9- z0P+U_P(c+33v=t%zgw?nnP;(uYfkF_oGzs_-spVVB=6Aj zpbzG~S+;MCrkKw@k_+(Yn_A0}$)xKvX)#tY6ngYay{yB}M@wqTk3t})H-(SgxKcz zAJ<|NPYN>4*3U3M)RQh;6TRxxhyzvJImXsIXF&+lMQb)z@IidE;U8Az1ubK`oN8ZF zayLesUDjblez_alDWP4-F*NmNrt+QIJ$`HTLnpx{OV)FVxB4G;ILGy3?Xt-B z;n|eY?^7`oyFm!k#oiYoZG2g7X354&FV)%BFEYOR^74_ei8w90lSfz&xg3xxIo1=| zma)r%c8^NwOsPcg?8~rSDI5hop^cq9*-GDkh+Nr?_Qsel+8T2(E zzev7oGjywELy*I{y<6LsekiQC6G5z$~>+aCz)k!wn zJDARZ5T?5X69tR+8K63Nz%*M({c00mvfE73*e0I?xip-E4erAak{1?u%^t~%OOV$~V7i(QR@A|0P z@(_F1P>H&L%Ap4`8K*J?7jcznmDs&{Ms1RI^;@+9uUd)8<-Sms@ASrDfks3S!s5mD zM@Snl@V)LOlZN&{fGe|IhV-4X<2&sIEc67|kJ)VHc`32@nNWj53_IS@?C#Z{VQXdz zB2ALsiDuhsX$D&#p`ps(El8ougapY2Z^>ei@p4zeV!N$0%X(BtTKi|lDgxFyJ}mR8 zEEMXU$xqZF9(r+Zia8?R$c6ofNy6s>kxgIQ?v-BJT-#=U@0t+kVDU0zqG0jo{Z3xG zXw*8YY530gF;ykrCb_X7TE#fP$>h_v>dC`pB-I6qCjgE>h$(lY|pC46O^yW>%EKx07#Gok_T&;LwtNa*HcDOl zgPdxDeT5tMF(f)|dOEHjSa|E*^ckO{=bVy<&lFt_TF2d@nQC!s6<537^L!81D2F|j ztw-rb3tMh(E-lkFdqttkPN`e?V#{u`)-85lBoA)e8l-BuWciCmp6unKL#5lYn(^&d zcCk0DQ!x_Tzsje9-{;2(efjOnDnm!szxi>#l_0l~fs;a)gHm_3?1je6(71xn*Pqa^ zudoezd^8{{q?tv4dg>;p*NZxpI!2FaXML$Xo#Vl5vD)l>+pj;mo;2XO@9uNHK3}c9 z2^6}h4y@ppii{6M4;C~?j;%GY_xg|@e5){h$7><0%(6J9l9Q|)2{sOV@|xJu%x6` zpF0}V=)trjd$;A~TcaxCX&-xu>LaUIqKb^5TJ|(G4OCygK@0{Blw1 z?zT)h)8bx57>Re~B5v-Xc75n+5jc68WzoKg2j&uQ*;d4I)@w{GIl1MzPKMcl;l+`z z!u{5(IA$IyZIK)5q z2~gMGlB`Y?3EqD|||%8qvirw{t3p1JyN>e(Sv zI=P$W@*Bg&B0PMfTYcR}Bk9`o4{+0DWih#|59GB8(hgJdxo>1hp^JWIhZX#qTS3n_ z?5I_h6y;=V%x}kr&Mp>`P`1BmgU3BO)uCMdNwqJlI_-_+r0-if%@(}cR>?@O&`bTB zDkM%6(kzOBA7%bA9^l8)e-wO-#IY4}doTLU@b9Y?p7qLCQ+XtKuWj@2Erv50vF7PD zx8Ckq&G5=7=M7Ej6RI>lrODf;bJy)$NpsXI-1^`?qo#P(S}$pi;6wMB4C&}zKXcupTinm9#<7~CmJpw#!s^v)b6WO_zq7CP z(+%eBpG)xvZRD@r zEl$dGy4nlCUh-d)C@>J8PF>-0Fe+kp%GXn^&?mg9tu&YZ zU9@~9Yi`&Dx%@+-vcBIn!T^n%5P`GD<*b+5jB;ki<(p5d3^$m$TD2A!9G8NY9Ec$)!*?rKV1{gNzP z592%Ij@X!5$5}P0*ZT6I^1MrUADtAvXdurfap_9`TajpMmC({q)+57Ii_X2#Tc$ad zU97LmeK{>)^bCdW8cN;OgojQSrSB-m#(1qx>pRz+dn=8~`pgen-b1TA9V3+s zCzvcAy)Id(ihwuk+!xrlRHNd+!0!FkU-!&#T@$t4mSy=O{?5tZDu!oO7t8MYNS&b2 zMfVP@;MrQQJL)+Q^cbRPFx7;x2cTg0tOycGPa5 zioGNC;Z^4)gT`ILsm?p^KClvS0U<12aZD5}o|^sUMqS~LR{LDt)Q&itZr{7V?U3Jn zpJy@+EEzi`3?5b(tp8kMDj+Nx|-_G2TKc`zB;w#7C%}XZ5{VUzM{^cyIK&w0l_t?TI5sXC<)!De=;tR~5-)C3 z_~w2|M0RmVit4h!@aOl+rCe|Sq|lY2)Q$OKF#JZ?gTwvV^MD_Y{%rT?WD|`pFo@>a zJeg4`e4^J!?eS3M?4f(lpQ}wy1({7=KXk0G$jK~t`)PY!8i9`O6uPpMx>C9JWt=HA z$0{DKbYh?M^eSB1Xm%|5RfU7k#tzkf*J`8F(x)1OGa}>rV9y&JFbdSHLH7>4y9d9 zjlRVf^mVv>yYBwMzP>yoPfPbY6HA|>Bia=4!q4LWDELcOk`)b)=vxn-Wj*je_56(G;HK6q=RpyyKz+}VkORe=b@)6EA6e&yJW22 z6#h_!ej9ah{oz-VQSz#Xx?3W`=Uh#Zor0imoMn0J#~z%kq{;b&5kB!Lhn+2b`9k`A zB6=2ypEgM8Rxmo>Eme?uvJpMQW4elzy7bX_rOSuQ>KLS*ZHv}Ooo{e0x<)h5Xb_(` zy1Y9{bN9aI*3P0znXX%2KU>kux=6-!+XHq9**ARx(%*L2R>;i#>|}1Aszj+Pl0h$* zfm^=SRKro+Cbh-2!H9N=+(T13>1Gkx!#{iDmweXr{4~-1Ea3_l^NY`ide7IaGx_%W4`ntme1Vt~b}K#5Y}u{?fiAI;CmV zq8+xzJ?hdH^w)-W+<5wJ|BM3jULBnr!*8n?K2zwfqtvCcc;BzJ|3K%+yVzEujAoYZ z%LChcKc2W>pg5Z0-zy|6mR+$aW&NI2?_!U&pPo8lY9`AObY+0eR8@BR*nu)?EehTB zl)5RMN5YO>-;~O#$-Tl;E82L`F`~cO{ry&KX6%IcrJS15&IZ}-rtytm`C7ij)OX)< zYEw{2^JqV~=55P;mRtUm&-2QZx@nOG-xXbhj{c~sh`ei4Ve)FtJAb3&UwdX7Lw4&4 z8tHU=Dlj$NWp?${_{2vRl{mSwdm9JK#WX+d()FdjJKEw!5$^^{-Q@n5A9q!Y;$)UR z;G(-d5_+$?cthQUXxh~!F&3XUj}EN0KA2f}a(wG!>rl>>4WR38gV#YXEVy8;ScM0o&=?`(}SsT+;rPR&k)IIKdkR|O4UB_E%4nymLoY9kq z=yhoyt8C`6`{Lap+CI7cXo%@HvCzvu%P%L3S>P%|LmUzw9>`QIjw_6ze2ztX39R4; z%K~XW?a$1AY?M)9nPsZhHS3slCMLG692XeTu;P+W#(Bk`o0f8F@AbYH;@n(up6zA7 zYp|zthT|vqJmG!(`XGeGtB#3+#SdJ($`q=y%vUW82qAj3aw8PF8!2^dsk^piXjY|DH?*s~kDza&)$$q< zPu{t>ZF{74dzeVe%=W$VX>@~nLN#o?S0Wzy9cg9z*;T(iF_-sl{UP}{3kqE{_ppMO zeW0oHdh@3B@y0JUyB0{9uGoT9yVd3VDV>fXE<94pS?EB6>^SINcm@lc`Q}7BVGP-*XwH| zk|KQ7+=E53_r7`V{Wi&ll|67aTeeHrc!n4s`rtJ8PdS@=6uM}SjTL-#n!1$#*+$We zwbPpujoL?=J{nrS6Bv6KvHWvL-)(h|{nuYaVkq}}tp=Ter|mgJ_N^t((hdS70tcV~>wu64=&-pAYwp&vuH zwJv3|us{8&T_Ua~Cxn(j`Cd+sQdiumQD*-)-dC1)elm7`n=-lNAoGoS8T}Wf!?o9Q zzkk0wELLc?DEyA6`OX}h*6krT=+wCyQx1lFy|9uf6??gjGQVg}V+C*0yG!v@*CJJa zp39O}D;kIvxjK)eEm_v?rRVe5@uuepb4&QGAR3xQ0_#p^jj=@S4xU!FD(0{$DK<=N zJf3>i#%qj;g2f+UX<2oi*=*CMu_rAmjjvpXTk-`yhF8^< zIS&WgYemQ`({SnX;cWV#vP%1v$k52WZui+OnZ1V|xpXDE`!(Nx2O3zsCX~APl659F z+pT>j((Z~3h~Ka;7Mi{&b}#7S@@31C4C1cu?>bbvXhw9VnDbiF;GzfeJ8ivkS>2t( z3k?+SF(}r*aHY^SrPSRVY$Sb}aPrK3KJMqAscbh3^X^^DnHPGu#39Q2(!jt)`*3p$ zljUCv&ptJ}=`toE{GR``Amiq8L0Vy=LFuZM=vf~~?> z@NUl+ze{`$yj35*(ThoJEe{O5y!+v5Ph(r-y%x4cuP^1vc74yt&y!|Mn6Z2Mbe*mv zdRLF>ZpB2w;wL6fE#uwwAY}U4^PNRiHM$Y*wOp4L%ibm|I+LMDchZY*_*#)ocVv_7 zWnPn>mxq`8UOQuDly)OoqjAOeAYI;e3SIQ`cdX#gDrc`VI5i_BTq-AZCPDS`re{TI zp0fIMDZ<6WOnY8h?MZsbRbI5Cc)6%a(%bsz#aZqgQ5QpBZ^-LD(ppu%c^HJSc+oQf zR`59mPa}6F3I>_o9Q_`{zPetg{8af@fmiakxHM{H9PBGQ&8B1pCd?NV-%+1nJw87B z*!`Q{HIoC9Y78lg?{<`@gAk@`hKYj37akA0%NeJB%=&hoE%miZL8`(T&pIQjwx!aH8^SA{ zIM=aF8&SU3K=(SV;2&KHxhSM*y7Os*$R-bG7tyVc_TJfh-IQ_b3ah>-PiC*6wSCq$ zDb(4%XWMVeeGMBr-1d6esq0T^G$mtpJEX9oclB7jmY675yf!Pfdi~7Ni4Pu`47N=) zeBwlop3!5o`<2a}h*cg5&l8!_8h@As4^9dU+}EW)BZA%y zV7fafb$v%G`j(vNzjQ_Ex~|Ym?(^#e;`YUEp9z*Vm6<NqB za;kAlyXy{bEH>|)KbSFXv9-uNJRDz;~mOXA|E(g!ESTlQR( zh+RG1Px+i>O{se~_P`c3v(L^Ox(-T4-ZtDYrFnZ|(G{5&Db}0K{1?wGJ>?~C%ay? zQ#{7tu4+$Zq;Q*_)4N^5r>oVRYYx?U%osP?nO4_Wo4@SqVs*I$LYVFzOcX3WXK(0s z?!8v^EJ;g6-#g)X7w4UkbL-p2^f|BBl{=G{rap%)oTIAr5#nIQjC6N}UYfGuSz30K?{Tm@I&yEZFrJ1&C zY!fY!h&i@uaGb@%X8U40nq9&B#wMS29UA(wu%^f4>3R?973RD7zz^L>2tgvmYj!z^!;PDM!c`rSJFkh>gwp3s-G$?&Z*L5{u0;i)ZE2PZT)S~-&QEQcOoHRQKpRW75C)jQloV< zH~Vn6gP*sr6H_ymXz?@eSd&@!W&KwQT}Mh?58h{%hl49m@V@Y;F;;u0Cd!Q;(Mnp^ z*d{G%ZmwSy8)3#_#2D1l;A=S5BJ{d2B&+jn{YGJ{>6<$>9m}Sgf+=*JD0M{yHpvS# z8Y*&TFMbmDR(m(qo+OJj;X`*%UJdxPauUXSzlxazoUb^U(;TU1 zQdOf-r(`@yxnFmt)ZIUGC@^%-k}k`zj2|~%PrG!z3CAgHd0l8|bMv{gZ`Or7Rr!8T z-gG5S8XRG(XeXTgxoYChl?QoohL?@J>fVW#)AD zc54uabGX?a_sWWcCiyb^-qP)jPg97PndCV8v+l*|)lCA6OA-YwqMj$DetS{uI7Fd~ z_Sjg#KfP=<(8l(TM*n&vN1Dx&ciN|t*vx%DTpwgwNsyb$_6j9%Uee#k&s^1&be^?3-RG6wPpKXrNc<$LY>Ri$88pEpu3W zHmAJ4_=292`I)9X>Ic<@%3RqO(&f41?#aAi@g5$tJaeLdB&}fcQ3_qO2gC~g?wjR@ zX)Bn`s3epp4sZP6@u2tq&iC7bT?1r!sk4nf=U_2e&+JrtDY4_$3z->#+J!b-rw9Qb-5WMt$4OrwhVn;s%lrX zhmbs=#F=5I^TOBE;ms|=EX$3GCl6>ojf@pnxoy8u z#Opz+t5Ic7T{l6HNfl6{>)N49PbD)E#s2O(M{JTlM@P(syEoocImU;o7x5e2ns$97 z@lkQpt{W>i)KNd~KR3>PTM~^eEDxTPx(pLR`u*WeJ%^N3_s0q)WM1;Ebj#gpCev!R zCdJ;ns}MhRTCLvnI8Nc|#e0X2Gx>SuZHw?3|8cItT<)~Yw_LQB#&pp;FRb9ZW^jXj z5)WDA0}WV4;&w)Q=UvJgJ$WT(kn4l>e(mMN-BEELzV`m}`?@RiN_Uxk_AS0KeiAgWczq~!t?!!1;6@%sT=Nf99KWDc z*W5o?_uZiOO1W^k8x!Yfr1Iy;lQ@_LGOtq@hAK)KpuCn=?~-0G-P#gX0!#eK4r_!o?7YW?%R0fxOG?w<-U49rS9r2aVl@m_-Zi} zZuLq&%Wo0JVd1PWR;Th%WAO8S-=cLFt_r@{l4|m3mCW79bgMv`T{1DjB}sx)gO!Gy zjw3ZVjiH{f5?p0uSEByzhM44 znr42p*Z^-S?#@jsmum{I^T(|&ZHPY{QBitZA=S8G&2kFe1C+W|Z7U1g6ka{`Jg?F2 z;Hd0kHfwR{ltE2`#XvSXCFvXz}|K%qtky zR8Z)mxrY^e$CV^jks$S-XP<7J$mj8A<}c9G5D}OOzPaPcWfqPb(@#rjSA1)|W$!q4 zMC+yhvD4X?0@V)Y7vQQ#-;RwDWzkxL|25X>qM@70wWrO-V{sk=EK)2HV$afRXo&*eI}>UK#@jjL^*z3*7ognfvj49Os{lZS2|kup%Sjtc>+yQ_e^Z$xD>) zAJ85JEBFL9F6YsYo%g>Bi?49GeZnAQdjj#EMGLNxOMWuwO>Jv%(Y_O+0>XV_4fZbz zxJ9aOK4q`(b70#u5W@QH5GD#1AJMLKI6tc?G(lg&)8oh(oo$qJ5s$g( z<9844-H%*xt0yo-%Hw8yFn=)Hjexp(>wU@mM_aW0c$+n!KMeC#5bB}OjiA*1Slq$3 zh~D~8aM^TkidAF4kB*5!(Ga--~h4HA&ooAJRsrSxy-}?thUT zUMj>{@>5@{irq~SzC-xr+#Nc;GQyV5OLYTfDipehDRq}VtYGEBTf5wGvLBkZx4g~R z_c|&?Z%36%;>FeZwP|I-6|K@7xwjlkE_=q>G!5`oZCks}dhdXOo^Rf9(>L+x9)aaI zic(j^cr3v8QG)GSGr_~nZ&X=>s~LCUFYsl4n4znrO}ZAKxg&9UuQgeZ9N&;iFDQ$%!cU9AP!@khS-2nOOC-w}KKK4_6%eBn!7JXqHgGG zym;|FIOvAZHAS7-?!6_ap2w{gEWC)T*6UHdN}-GPmRP~R+;TQlZ^MDwkE!A|WgB)& zZ5O{Qu-Q^^?An3a&FWvfMx30g7%PnxpVu0`^kq<0Hu!w+^4jcpf}ymCK zx0;hvpNbTOl{bHqIPUtDC}WjNp&Li3yVIaE|4HKW^8=!e3hQqsmlNzdv=1L#vTow$ z53lCH+0JiFBPCpgyEYx?jq#E^oHK0y^xK(pMLnJoN1o&S;9`noD@~kmw3H`pTzJ_W8 zlbg-acJ592@>S|NhGRXYRC;-rBi4RyTebe@82gfDI+^PG$9~qoZD96lM}39$+i^-= zm9!c0S?9slPOY}Cmy*nCmoI&2jN>S2d;r8l1Zuwo}+pXmpl z!D^0pL5IOp?rS9mK2g3eLGSRff;WBiShet8R>9BN%Z`<|gbcn{?!G+3FR5mz7#Vr5 zp+>njgSI4?U3FpvcVd&K?55k_>+7p7CalEid$9PHmdka65EgF|CJGk6KZNl9dR*Y; z`nU~?l?L?R?hAK4a&O|#p&4R=dR+n+xY&w(ic4) zDi`z33@##m*3lz*Ib!SuvkGfMf;6{((-hp7^|^Vu>2jXwU;%0aTKM-Po^-KvY%kOpV|54_DSMxgq^Jf6fOYCnnj>8u^e(yKt&(&|wpBbR~ z^W*PNzccVV1HUuyI|IKn@H+#)Gw?eDzccVV1HUuyI|IKn@H+#)Gw?eDzccVV1HUuy zI|IKn@H+#)Gw?eDzccVV1HUuye~|(5*B2egmO<6W+g_UJ?&E9g>MHH(VZYCj=t___ z^Cl3~1>|J~e275=4@XG>MFCq^qLaIaBYYhNhnxL5SI}qleN*(aP4r!TRIp?8bMjN9 zGdLXj?kKuu5#Ry<`Ox=1(K+;8z7hZ`=sTO}+;MVruhP(2_zsM!pMtzP1o7A5kT^&a z=_5TF0Q#QbVgMb09)RMj1=IoV10DeC0S$mg0Q%1FL%<_IGXVXL7K$H*kPhGl@Bvl= z(C?fxs~Vm;o#R zRsb7-9dHS71#lHm0=Nb!10({H0EYk(fN(%4AOPSG@CEn)b^y@-6JRI63}6H>2HXSO z0we<>0qFOp2motu_ONC3015nJ~0Mvez2b2$#m!$wI03NUifW|56L)4dOT+#s+1JHP-0ibi(XY4$t zgZj)9-~u25P@g#h_5gMRP@Yh~q5PnJG60}HL;ZyM3-#MZfF=NqDFuKOKoTGh5Cez; z)&S60UIh>W2m;_MXgC4D3IH#F1AzJ%^))+SIe-Vi4d4Qx>p21FJUT`e%^!ZiN`Nq6 zH9!J@>XHFS17rbm0C|8SKpmh8Py(z4r~ozqP;O8x>jCQk%H+?;ssXeBIsk0|YCHOj z#xOdMpb0=@X&Yb*zyyHC`c?oMBWSFlabyYD0YLde;|PtXod9cq9bhlO7C->l0~`R( z0F-|eALF9rYY{u15sG zQ~$7eglEfcX*#OiYo+BBq~%ECg&RDMJsKtEQtMy;>9GbfJ$Md`Iz5VEdnZIk?P}{w z@PUrQzLS2_EbPE#mJ45jvwp572QUo4IV}<mj(h5{cL~Td@Lh{P7iq=w{7ITtEPEJ}GXXowVZR_rU8*)~> zwSoRrJ$U4#p+zu5Y<-;3*O;rb9Q=Rmc3>fSNIB@Gnu~ga4N>(-+{*)G59EO8?o99| z`uebDj&Lm>XmPk0E$qriQ7Rcn0zvu2uyO zj6>)=1xN6}`W?1G&d`h}eBdH@$YV5;Tu-HBRnXRr}G5VJf4XYXw5x(_@pFT-VxmhI{WkK)`cDFQV#;rCdHKAGW z30r5_jd5waEV~mU4<2P{QZEpEy!;5>fw)eE&qIu*q6F|jA0Rb?kDo8m)dv?K{+u_s zs@5GmXk3G580vvFJB+(Nk-q=%l_F9-a;ToK;6Z&V?^-(9*y4=l0`wc|ZAYTJgOr~q zj_D1NiKlEUS`Wyxo{n}dZ`o0|H(mI_lt<=3Jx;D3cD4|KbVa$emb_>yc+k41EG^3p z9JGeiTFFi^#9cpzJP~~HQdSaQUb1zbpIHWa1 z2{z{OzfMEn{h*G&}TwDlh$7Hi1(C&r)}6PbP202 zJ{%Yw1sw7`1rO1U=!^SovnB3_Pop?^&|H9#r~;`$^~mI_SG_rG7eb1SG#4I%2es#c z*q$)|K}TjX2j-k3Y)E_w4!9>d1MS7v`3p%NdAK>__7MU}i|_1^(5ES1&J6G+^aIXRmT6fY@ zG;7<-cPuAyNcXIH?lMr(f2y%i@xv{Q2UN+K#fWV|vt7XiI^5&(qe|Sqg?$t54-@$2L`Zhybml5W$LNb8}mh zb0B>~B^?^QXf}e!-Nl+K=if1rJ(7v}^3`AFY}61`is&;DOzs z6wDN-?vGZD`rn!W9J$T4#NF#XAoO`mP@Ui}<)32$iLecIP z#`Qe+ZD@}MEXk;!A~o814IbC)lGPvrEAT+)h4sX&o>jMwL3tzJv;4e?Qm|FVtziti zzf0mMS}D+;50dTa=N@S9;Xn{mw>z?qiN=PcMrsc`Y~G+-!yYX)Zr@opAvV`P=o#A4 z*2mWi?EV)9ZL%iuh$9C(6o|l^;O9eh48$?7(l*mbmE1-0KnyrsJE*aMTC79L)jPcn z14vC)8mYYk54xX5FBZ!-&MnC&anRNuCkqd^XeC$S*V`SGWMD}0kfL^h*8t!QQ;*qt zc6yI%FnGur{mcCuX;uEq^?($@{5#0MR3pu-d3I@#gZXzt^Y3?zU^|R*@a%dKv;DU7 zInW-c1uY2k?_K_~J){Y=1JqE@nO=J0Ki0*K_DE>{fZ8;8(1)*pprwAVMT_y!QXgzqhRDgTQArZ76MT-@*^eWvZH$yL;#y>(&*Iy4@}6g#HadHB~SK7|LL&=&noZ~ z@b%YslxTnX({lhkkf1Q?zNp~zBMPwd#?LLkqEaXbVL8+x7;}OUt2IHt$GPPw{Gq&!CB$C zK5gdI+j#Di%Mf^=5;R8t^W6pumAcy81F8&k0UC+#YePIwc0FtZ4tb9h2tRrt!Yh-H zX;(UVf(1Weax@m9KyyYjy25OeTK{+trJNon6aa))r5F4yK@Y4{on%ZR5 z)kYR2lsELe4IYj)bN5sH4tcXjw1suxAwRJ=f(NOI%jkXoYR!TA6mcL2^X#HQjUQe= zB2IDN?NLD=Nz@DEaqw?u$zQ$?fy_ZYFkkG?PF^p~Hiq37m*3dMdK^;hPp7K~5WaQyK`lZ7fAS_oUJu=&@wzkK%u zJ%q#c1D6fB^}~u6{jNM4#YTucZUQ{$o|V1-juf$#W^Ts?W9098VgBBpe(pGeSmtC^qfdIXpE>#b>CKr)Tf~{^dXX z`oX_Y{}#S~`p#Fsd0YSEi?6|>Dl7WQYk&Fk&9fKp2A!h^G|Cqb-tOP}?E}!?NZU6) z{?m{C`R&^e2Ca+!Y0>}e!-v0o?fR#mckp0}J@Bi`Cx3n6{_FpK)6VcWACrv4df~r+ zbk2SMmFr@M*KsqbL94tfi)OeQj$NTQy2!i7PhNffk*ViBT-?gYeq(-ASB?9!Iq{ud zf_^(TinRC-2?V1#`iEiY^ba?izS!g1>W>#qSKsK1w%>amHp-V3-}M*6{^t#Bb(QUQ zZKJZTWNm-!)OIYZ-Mpq+_~%=!?eq(0`J#t}8HiL;!uJSYb10abH>g)GE}@;lVTy)h zexl(TFiWuk;xwkf1JF}ZN#x-PadnofUBBI9dCMC41{xs>mC61YW=$qcqUbe^Fnkt+ z(a(NUG-MLfn4t}WOPZ#26}8C=0uobEiJ9|Cf{Vi>F92P6)rdCsAvhC<0SZpG#CSHE z1C%Whm0EH}hXf;0B5X7`_fwGI&;c0K6ue;Ki;HhE6DtGK6qE^+B|v6R0c1Cq+XhCT z866hcY+hx6hOgjMd=G!Xu+TATD1KC}#=-&7m8dxrkr4`4wk2=tdTh$!ICbGcc>XK& zQ*qyQ_Ji%*=TrSgUmeCeYwixM_z?6aZ=36Kud=?+j*CxqyBn)Qm37zlxO1*VeN^Rk zbFDA#5T>~rn|;=8pbW=+82e%e&D=Ic-nUvS-DP)8q4TUO6nfyMQid}-9i6vbVarcT zT@Gz8{v$1p3Pt~RaXV&}< zwW-_{HySDzIZj*9Fg(D~q3+7z(2fI~D{X^%)$Zgp(5yBme8>+?h6!brg3x6!tB%2= zkm*zg@bZqf;B&4+X5RKy$(hmz^P87@Zn26Ak$Of?T1E$3t81L_y1GL2l8) zD+qCEp_)}0Vgox>XE?V|W{9q!+(mYU?*z)e0!i6}6~WGj6V7JigE6_R;&KW#4k(0G z+>{7QCh)7&8VIlIM~;moaaCE@W&EzPoj8IzW_2a^dvbS7Q8~b-BF}K@Y|K?U(DMfD zFZitz60_b11LhSXyO}6_f?Afg$g2BJhJ;0cf3cwAs~y}<0`_;+s*`CvQ37P(orXo~ z9J-4UFjro6f<+9-2oRhpDI^3uwkMzZ@EVVfh@e~_kZ@&8R3fPfIdNIc&2GoH_dGAW z6x!xL0BK9S;3z2*aHU;9+n~6|6C?I)3VMNFP{TeK9T8veU^t+I8t0KhPw``@3rd3Eo8Do}8&?FR&R;rB5Hl>-djzQ`)s0^A1B1KC!$)i}gNx$FwE%Ohzk}H4vu2F;df>qVzybMdDI+Mj#nLgBsDP?IJk{fXNTe6jBi7O!2zf zj@Q>k9}!B>3lxGHS2?AOWg{UiLRdB>?x!Clj`ZS9BIx-m1yqm?k)UG3>Ok8PufH^k z31mdE1Oba@2?B#E?lbt+w(zAF!K0wS#PyCZxl8ILJ`!dI-H z79X`r)CajLbYJ9SYJF@UQn6(m3NdTqB02TACXwgg+^a6GDOnOUrXtT&iVr%+1te*h zESupvxq}_N-q(khoQ=$D0X?7~rW$ZI;rcOw>jgF|F-8IYNSf?oU7Fks2dYxp@kU3vO55seJt?VOlBgW-#Gs6I~ zCBV}0i4$xY?k$fLCnG%7A=?sx~Wg)5#bkvcyMqR?Q@(GQAYRo-~m5}f1$)oyQ! zd{CMiA|l2Z45Q7+P$Wt2jfsWh4mey+J|Yt1!h+0Cp94A-x$kJ1n0SV|?hAb|es!u8 zF&_|Ch12F94A%cATf!#J|N@Dluk#yPl})X zm~V=R=v^`a=(;jRW&)TtYe8&MTfEaFRCivQ9E1qzup6j{RXl_qUm61}Lck3O^c@eB zh%bHz1pER;QyLQiETz#x_D*ms;r}%w&+<924-t_CHB%7##@=Fv%~@yj7Q=%e+aq)- z&PYA`&X#lSQ_lg<-V=So=j-ypnOuO0wmgJ4Atg*KtOnEjax^(J5aaLvMrGnv@#W5PQ~o^3YUDVpG7`hbin;H6-FNmV~4J&djo@UDyrr8SC8 zT?NjTR%uli5(Cba;ZsS6FBZ`+;1?~cE>v-CZsnb43QBH#V*@hwuaH~-3qc%P(jl_t znCS{S{Dm%03(VxK%DkCAi-lfktqUiBIj(pw@}Wu7jxoOor@oVnEyf@bTrTRLuEeb` zfx`$9*9SCQ84^!FV7N+RzL)|pqAq!<5Gj=v1UY$v9mXqVFOE zTpv(yx=(y$ zqETQDQAH|*MGo1QV~~Wv7=NE*D16u(F05Kl4r2R>Ad4Da8r}n`2!=0.10.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.12.7", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/secp256k1": { + "version": "4.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "dev": true, + "license": "ISC" + }, + "node_modules/acorn": { + "version": "8.11.3", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-union": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "license": "MIT" + }, + "node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto": { + "version": "1.0.1", + "license": "ISC" + }, + "node_modules/debug": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/elliptic": { + "version": "6.5.5", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.17.1", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fedimint-ts": { + "version": "0.2.23", + "license": "MIT", + "dependencies": { + "crypto": "^1.0.1", + "dotenv": "^16.3.1", + "fedimint-ts": "^0.2.7", + "secp256k1": "^5.0.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "dev": true, + "license": "ISC" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/glob": { + "version": "7.2.3", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "5.1.0", + "license": "MIT" + }, + "node_modules/node-gyp-build": { + "version": "4.8.0", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/once": { + "version": "1.4.0", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/secp256k1": { + "version": "5.0.0", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "elliptic": "^6.5.4", + "node-addon-api": "^5.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/semver": { + "version": "7.6.0", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.4.5", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "dev": true, + "license": "MIT" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "license": "ISC" + }, + "node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/wrappers/fedimint-ts/package.json b/wrappers/fedimint-ts/package.json index 6b83e69..c26d78e 100644 --- a/wrappers/fedimint-ts/package.json +++ b/wrappers/fedimint-ts/package.json @@ -1,26 +1,28 @@ { "name": "fedimint-ts", - "module": "index.ts", - "type": "module", "author": "The Fedimint Developers", - "license": "MIT", - "version": "0.2.23", "description": "A TypeScript Wrapper for the Fedimint HTTP Client", + "version": "0.2.23", + "license": "MIT", + "files": [ + "dist" + ], "scripts": { "build": "tsc" }, + "type": "module", + "module": "index.ts", + "dependencies": { + "crypto": "^1.0.1", + "dotenv": "^16.3.1", + "fedimint-ts": "^0.2.7", + "secp256k1": "^5.0.0" + }, "devDependencies": { "@types/secp256k1": "^4.0.6", "@typescript-eslint/eslint-plugin": "^6.13.1", "@typescript-eslint/parser": "^6.13.1", - "bun-types": "latest", "eslint": "^8", "typescript": "^5.0.0" - }, - "dependencies": { - "crypto": "^1.0.1", - "dotenv": "^16.3.1", - "fedimint-ts": "^0.2.7", - "secp256k1": "^5.0.0" } } diff --git a/wrappers/fedimint-ts/FedimintClient.ts b/wrappers/fedimint-ts/src/FedimintClient.ts similarity index 92% rename from wrappers/fedimint-ts/FedimintClient.ts rename to wrappers/fedimint-ts/src/FedimintClient.ts index fda8926..ec82560 100644 --- a/wrappers/fedimint-ts/FedimintClient.ts +++ b/wrappers/fedimint-ts/src/FedimintClient.ts @@ -1,4 +1,4 @@ -import type { +import { // BackupRequest, InfoResponse, ListOperationsRequest, @@ -40,20 +40,13 @@ import type { LightningPayResponse, } from "./types"; -/** - * All the methods calling to fedimint clientd are asynchronous and return a Promise that resolves to the data returned by the API. - * @param T - The type of data that the API returns - * @returns - The data returned by the API - */ -type FedimintResponse = Promise; - /** * Builder pattern for creating a FedimintClient. * @param baseUrl - The base URL of the Fedimint API * @param password - The password of the Fedimint client * @param activeFederationId - The ID of the active federation */ -class FedimintClientBuilder { +export class FedimintClientBuilder { private baseUrl: string; private password: string; private activeFederationId: string; @@ -117,7 +110,7 @@ class FedimintClientBuilder { * @param activeFederationId - The ID of the active federation to use for module methods * @param activeGatewayId - Optional, the ID of the active gateway, if not provided, the first gateway in the active federation will be used */ -class FedimintClient { +export class FedimintClient { private baseUrl: string; private password: string; private activeFederationId: string; @@ -194,7 +187,7 @@ class FedimintClient { * Automatically ensures a default federation ID is set if needed. * @param endpoint - The endpoint to make the request to. */ - private async get(endpoint: string): FedimintResponse { + private async get(endpoint: string): Promise { const res = await fetch(`${this.baseUrl}${endpoint}`, { method: "GET", headers: { Authorization: `Bearer ${this.password}` }, @@ -216,7 +209,7 @@ class FedimintClient { * @param endpoint - The endpoint to make the request to. * @param body - The body of the request. */ - private async post(endpoint: string, body: any): FedimintResponse { + private async post(endpoint: string, body: any): Promise { const res = await fetch(`${this.baseUrl}${endpoint}`, { method: "POST", headers: { @@ -248,7 +241,7 @@ class FedimintClient { endpoint: string, body: any, federationId?: string - ): FedimintResponse { + ): Promise { const effectiveFederationId = federationId || this.activeFederationId; return this.post(endpoint, { @@ -272,7 +265,7 @@ class FedimintClient { body: any, gatewayId?: string, federationId?: string - ): FedimintResponse { + ): Promise { try { const effectiveGatewayId = gatewayId || this.activeGatewayId; const effectiveFederationId = federationId || this.activeFederationId; @@ -296,14 +289,14 @@ class FedimintClient { /** * Fetches wallet information including holdings, tiers, and federation metadata. */ - public async info(): FedimintResponse { + public async info(): Promise { return await this.get("/admin/info"); } /** * Returns the client configurations by federationId */ - public async config(): FedimintResponse { + public async config(): Promise { return await this.get("/admin/config"); } @@ -317,7 +310,7 @@ class FedimintClient { // public async backup( // metadata: BackupRequest, // federationId?: string - // ): FedimintResponse { + // ): Promise { // await this.postWithFederationId( // "/admin/backup", // metadata, @@ -330,7 +323,7 @@ class FedimintClient { */ public async discoverVersion( threshold?: number - ): FedimintResponse { + ): Promise { const request: DiscoverVersionRequest = threshold ? { threshold } : {}; return this.post( @@ -347,7 +340,7 @@ class FedimintClient { public async listOperations( limit: number, federationId?: string - ): FedimintResponse { + ): Promise { const request: ListOperationsRequest = { limit }; return await this.postWithFederationId( @@ -360,7 +353,7 @@ class FedimintClient { /** * Returns the current set of connected federation IDs */ - public async federationIds(): FedimintResponse { + public async federationIds(): Promise { return await this.get("/admin/federation-ids"); } @@ -379,7 +372,7 @@ class FedimintClient { setActiveFederationId: boolean, useDefaultGateway: boolean, useManualSecret: boolean = false - ): FedimintResponse { + ): Promise { const request: JoinRequest = { inviteCode, useManualSecret }; const response = await this.post("/admin/join", request); @@ -404,7 +397,7 @@ class FedimintClient { expiryTime?: number, gatewayId?: string, federationId?: string - ): FedimintResponse => { + ): Promise => { const request: LightningInvoiceRequest = { amountMsat, description, @@ -439,7 +432,7 @@ class FedimintClient { expiryTime?: number, gatewayId?: string, federationId?: string - ): FedimintResponse => { + ): Promise => { const request: LightningInvoiceExternalPubkeyTweakedRequest = { externalPubkey: pubkey, tweak, @@ -467,7 +460,7 @@ class FedimintClient { privateKey: string, tweaks: number[], federationId: string - ): FedimintResponse => { + ): Promise => { const request: LightningClaimPubkeyTweakReceivesRequest = { privateKey, tweaks, @@ -488,7 +481,7 @@ class FedimintClient { awaitInvoice: async ( operationId: string, federationId?: string - ): FedimintResponse => { + ): Promise => { const request: LightningAwaitInvoiceRequest = { operationId }; return await this.postWithFederationId( @@ -507,7 +500,7 @@ class FedimintClient { LightningurlComment?: string, gatewayId?: string, federationId?: string - ): FedimintResponse => { + ): Promise => { const request: LightningPayRequest = { paymentInfo, amountMsat, @@ -525,7 +518,7 @@ class FedimintClient { /** * Outputs a list of registered lighting lightning gateways */ - listGateways: async (): FedimintResponse => + listGateways: async (): Promise => await this.postWithFederationId("/ln/list-gateways", {}), }; @@ -538,7 +531,7 @@ class FedimintClient { */ decodeNotes: async ( notes: string - ): FedimintResponse => { + ): Promise => { const request: MintDecodeNotesRequest = { notes, }; @@ -554,7 +547,7 @@ class FedimintClient { */ encodeNotes: async ( notesJson: NotesJson - ): FedimintResponse => { + ): Promise => { const request: MintEncodeNotesRequest = { notesJsonStr: JSON.stringify(notesJson), }; @@ -573,7 +566,7 @@ class FedimintClient { reissue: async ( notes: string, federationId?: string - ): FedimintResponse => { + ): Promise => { const request: MintReissueRequest = { notes }; return await this.postWithFederationId( @@ -599,7 +592,7 @@ class FedimintClient { timeout: number, includeInvite: boolean, federationId?: string - ): FedimintResponse => { + ): Promise => { const request: MintSpendRequest = { amountMsat, allowOverpay, @@ -620,7 +613,7 @@ class FedimintClient { validate: async ( notes: string, federationId?: string - ): FedimintResponse => { + ): Promise => { const request: MintValidateRequest = { notes }; return await this.postWithFederationId( @@ -634,7 +627,7 @@ class FedimintClient { * Splits an ecash note string into its individual notes. * @param notes - The notes to split */ - split: async (notes: string): FedimintResponse => { + split: async (notes: string): Promise => { const request: MintSplitRequest = { notes }; return await this.post("/mint/split", request); @@ -646,7 +639,7 @@ class FedimintClient { */ combine: async ( notesVec: string[] - ): FedimintResponse => { + ): Promise => { const request: MintCombineRequest = { notesVec }; return await this.post("/mint/combine", request); @@ -671,7 +664,7 @@ class FedimintClient { createDepositAddress: async ( timeout: number, federationId?: string - ): FedimintResponse => { + ): Promise => { const request: OnchainDepositAddressRequest = { timeout }; return await this.postWithFederationId( @@ -690,7 +683,7 @@ class FedimintClient { awaitDeposit: async ( operationId: string, federationId?: string - ): FedimintResponse => { + ): Promise => { const request: OnchainAwaitDepositRequest = { operationId }; return await this.postWithFederationId( @@ -714,7 +707,7 @@ class FedimintClient { address: string, amountSat: number | "all", federationId?: string - ): FedimintResponse => { + ): Promise => { const request: OnchainWithdrawRequest = { address, amountSat }; return await this.postWithFederationId( @@ -725,5 +718,3 @@ class FedimintClient { }, }; } - -export { FedimintClientBuilder, FedimintClient }; diff --git a/wrappers/fedimint-ts/src/index.ts b/wrappers/fedimint-ts/src/index.ts new file mode 100644 index 0000000..4dba17d --- /dev/null +++ b/wrappers/fedimint-ts/src/index.ts @@ -0,0 +1,2 @@ +export * from "./types"; +export * from './FedimintClient'; diff --git a/wrappers/fedimint-ts/src/types.ts b/wrappers/fedimint-ts/src/types.ts new file mode 100644 index 0000000..2b1fa2c --- /dev/null +++ b/wrappers/fedimint-ts/src/types.ts @@ -0,0 +1,273 @@ +export interface Tiered { + [amount: number]: T; +} + +export interface TieredSummary { + tiered: Tiered; +} + +export interface InfoResponse { + [federationId: string]: { + network: string; + meta: { [key: string]: string }; + totalAmountMsat: number; + totalNumNotes: number; + denominationsMsat: TieredSummary; + }; +} + +export interface FederationIdsResponse { + federationIds: string[]; +} + +export interface DiscoverVersionRequest { + threshold?: number; +} + +export interface DiscoverVersionResponse { + [federationId: string]: any; +} + +export interface JoinRequest { + inviteCode: string; + useManualSecret: boolean; +} + +export interface JoinResponse { + thisFederationId: string; + federationIds: string[]; +} + +export interface BackupRequest { + metadata: { [key: string]: string }; +} + +export interface ListOperationsRequest { + limit: number; +} + +export interface OperationOutput { + id: string; + creationTime: string; + operationKind: string; + operationMeta: any; + outcome?: any; +} + +export interface OnchainDepositAddressRequest { + timeout: number; +} + +export interface OnchainDepositAddressResponse { + operationId: string; + address: string; +} + +export interface OnchainAwaitDepositRequest { + operationId: string; +} + +export interface BTCInput { + previous_output: string; + script_sig: string; + sequence: number; + witness: string[]; +} + +export interface BTCOutput { + value: number; + script_pubkey: string; +} + +export interface BTCTransaction { + version: number; + lock_time: number; + input: BTCInput[]; + output: BTCOutput[]; +} + +export interface AwaitDepositResponseConfirmed { + btc_transaction: BTCTransaction; + out_idx: number; +} + +export interface OnchainAwaitDepositResponse { + status: { Confirmed: AwaitDepositResponseConfirmed } | { Failed: string }; +} + +export interface OnchainWithdrawRequest { + address: string; + amountSat: number | "all"; +} + +export interface OnchainWithdrawResponse { + txid: string; + feesSat: number; +} + +export interface LightningInvoiceRequest { + amountMsat: number; + description: string; + expiryTime?: number; +} + +export interface LightningInvoiceResponse { + operationId: string; + invoice: string; +} + +export interface LightningInvoiceExternalPubkeyRequest { + amountMsat: number; + description: string; + externalPubkey: string; + expiryTime?: number; +} + +export interface LightningInvoiceExternalPubkeyResponse { + operationId: string; + invoice: string; +} + +export interface LightningInvoiceExternalPubkeyTweakedRequest { + amountMsat: number; + description: string; + externalPubkey: string; + tweak: number; + expiryTime?: number; +} + +export interface LightningInvoiceExternalPubkeyTweakedResponse { + operationId: string; + invoice: string; +} + +export interface LightningClaimPubkeyReceiveRequest { + privateKey: string; +} + +export interface LightningClaimPubkeyReceiveTweakedRequest { + privateKey: string; + tweaks: number[]; +} + +export interface LightningAwaitInvoiceRequest { + operationId: string; +} + +export interface LightningPayRequest { + paymentInfo: string; + amountMsat?: number; + LightningurlComment?: string; +} + +export interface LightningPayResponse { + operationId: string; + paymentType: string; + contractId: string; + fee: number; +} + +export interface LightningAwaitPayRequest { + operationId: string; +} + +export interface GatewayInfo { + api: string; + fees: GatewayFees; + gateway_id: string; + gateway_redeem_key: string; + lightning_alias: string; + mint_channel_id: number; + node_pub_key: string; + route_hints: any[]; // Adjust the type according to the actual structure of route hints + supports_private_payments: boolean; +} + +export interface GatewayFees { + baseMsat: number; + proportionalMillionths: number; +} + +export interface GatewayTTL { + nanos: number; + secs: number; +} + +export interface Gateway { + federation_id: string; + info: GatewayInfo; + ttl: GatewayTTL; + vetted: boolean; +} + +export interface MintDecodeNotesRequest { + notes: string; +} + +export interface MintDecodeNotesResponse { + notesJson: NotesJson; +} + +export interface MintEncodeNotesRequest { + notesJsonStr: string; +} + +export interface MintEncodeNotesResponse { + notes: string; +} + +export interface MintReissueRequest { + notes: string; +} + +export interface MintReissueResponse { + amountMsat: number; +} + +export interface MintSpendRequest { + amountMsat: number; + allowOverpay: boolean; + timeout: number; + includeInvite: boolean; +} + +export interface MintSpendResponse { + operation: string; + notes: string; +} + +export interface MintValidateRequest { + notes: string; +} + +export interface MintValidateResponse { + amountMsat: number; +} + +export interface MintSplitRequest { + notes: string; +} + +export interface MintSplitResponse { + notes: Record; +} + +export interface MintCombineRequest { + notesVec: string[]; +} + +export interface MintCombineResponse { + notes: string; +} + +export interface Note { + signature: string; + spend_key: string; +} + +export interface NotesJson { + federation_id_prefix: string; + notes: { + [denomination: string]: Note[]; + }; +} diff --git a/wrappers/fedimint-ts/example.ts b/wrappers/fedimint-ts/tests/info-example.ts similarity index 83% rename from wrappers/fedimint-ts/example.ts rename to wrappers/fedimint-ts/tests/info-example.ts index dd74461..b31fcb7 100644 --- a/wrappers/fedimint-ts/example.ts +++ b/wrappers/fedimint-ts/tests/info-example.ts @@ -1,10 +1,15 @@ -import { FedimintClientBuilder } from "./FedimintClient"; +/** + * Example that builds a `FedimintClient` connected to a `fedimint-clientd` + * and then uses it to get information about the active Fedimint. + */ + import dotenv from "dotenv"; +import { FedimintClientBuilder } from "../src"; dotenv.config(); async function main() { - const baseUrl = process.env.BASE_URL || "http://localhost:3333"; + const baseUrl = process.env.BASE_URL || "http://127.0.0.1:3333"; const password = process.env.PASSWORD || "password"; const builder = new FedimintClientBuilder(); builder diff --git a/wrappers/fedimint-ts/test.ts b/wrappers/fedimint-ts/tests/test.ts similarity index 99% rename from wrappers/fedimint-ts/test.ts rename to wrappers/fedimint-ts/tests/test.ts index a85aaff..26a5e5a 100644 --- a/wrappers/fedimint-ts/test.ts +++ b/wrappers/fedimint-ts/tests/test.ts @@ -1,7 +1,7 @@ -import { randomBytes } from "crypto"; -import { FedimintClientBuilder } from "./FedimintClient"; import dotenv from "dotenv"; +import { randomBytes } from "crypto"; import * as secp256k1 from "secp256k1"; +import { FedimintClientBuilder } from "../src"; dotenv.config(); diff --git a/wrappers/fedimint-ts/tsconfig.json b/wrappers/fedimint-ts/tsconfig.json index a3944af..412deb0 100644 --- a/wrappers/fedimint-ts/tsconfig.json +++ b/wrappers/fedimint-ts/tsconfig.json @@ -1,23 +1,9 @@ { + "include": ["src/**/*"], "compilerOptions": { - "lib": ["ESNext"], - "module": "esnext", - "target": "esnext", - "moduleResolution": "bundler", - "moduleDetection": "force", - "allowImportingTsExtensions": true, - "noEmit": true, - "composite": true, - "strict": true, - "downlevelIteration": true, - "skipLibCheck": true, - "jsx": "react-jsx", - "allowSyntheticDefaultImports": true, - "forceConsistentCasingInFileNames": true, "allowJs": true, "declaration": true, - "types": [ - "bun-types" // add Bun global - ] + "outDir": "dist", + "declarationMap": true } } diff --git a/wrappers/fedimint-ts/types.ts b/wrappers/fedimint-ts/types.ts deleted file mode 100644 index 09cc701..0000000 --- a/wrappers/fedimint-ts/types.ts +++ /dev/null @@ -1,321 +0,0 @@ -interface Tiered { - [amount: number]: T; -} - -interface TieredSummary { - tiered: Tiered; -} - -interface InfoResponse { - [federationId: string]: { - network: string; - meta: { [key: string]: string }; - totalAmountMsat: number; - totalNumNotes: number; - denominationsMsat: TieredSummary; - }; -} - -interface FederationIdsResponse { - federationIds: string[]; -} - -interface DiscoverVersionRequest { - threshold?: number; -} - -interface DiscoverVersionResponse { - [federationId: string]: any; -} - -interface JoinRequest { - inviteCode: string; - useManualSecret: boolean; -} - -interface JoinResponse { - thisFederationId: string; - federationIds: string[]; -} - -interface BackupRequest { - metadata: { [key: string]: string }; -} - -interface ListOperationsRequest { - limit: number; -} - -interface OperationOutput { - id: string; - creationTime: string; - operationKind: string; - operationMeta: any; - outcome?: any; -} - -interface OnchainDepositAddressRequest { - timeout: number; -} - -interface OnchainDepositAddressResponse { - operationId: string; - address: string; -} - -interface OnchainAwaitDepositRequest { - operationId: string; -} - -interface BTCInput { - previous_output: string; - script_sig: string; - sequence: number; - witness: string[]; -} - -interface BTCOutput { - value: number; - script_pubkey: string; -} - -interface BTCTransaction { - version: number; - lock_time: number; - input: BTCInput[]; - output: BTCOutput[]; -} - -interface AwaitDepositResponseConfirmed { - btc_transaction: BTCTransaction; - out_idx: number; -} - -interface OnchainAwaitDepositResponse { - status: { Confirmed: AwaitDepositResponseConfirmed } | { Failed: string }; -} - -interface OnchainWithdrawRequest { - address: string; - amountSat: number | "all"; -} - -interface OnchainWithdrawResponse { - txid: string; - feesSat: number; -} - -interface LightningInvoiceRequest { - amountMsat: number; - description: string; - expiryTime?: number; -} - -interface LightningInvoiceResponse { - operationId: string; - invoice: string; -} - -interface LightningInvoiceExternalPubkeyRequest { - amountMsat: number; - description: string; - externalPubkey: string; - expiryTime?: number; -} - -interface LightningInvoiceExternalPubkeyResponse { - operationId: string; - invoice: string; -} - -interface LightningInvoiceExternalPubkeyTweakedRequest { - amountMsat: number; - description: string; - externalPubkey: string; - tweak: number; - expiryTime?: number; -} - -interface LightningInvoiceExternalPubkeyTweakedResponse { - operationId: string; - invoice: string; -} - -interface LightningClaimPubkeyReceiveRequest { - privateKey: string; -} - -interface LightningClaimPubkeyReceiveTweakedRequest { - privateKey: string; - tweaks: number[]; -} - -interface LightningAwaitInvoiceRequest { - operationId: string; -} - -interface LightningPayRequest { - paymentInfo: string; - amountMsat?: number; - LightningurlComment?: string; -} - -interface LightningPayResponse { - operationId: string; - paymentType: string; - contractId: string; - fee: number; -} - -interface LightningAwaitPayRequest { - operationId: string; -} - -interface GatewayInfo { - api: string; - fees: GatewayFees; - gateway_id: string; - gateway_redeem_key: string; - lightning_alias: string; - mint_channel_id: number; - node_pub_key: string; - route_hints: any[]; // Adjust the type according to the actual structure of route hints - supports_private_payments: boolean; -} - -interface GatewayFees { - baseMsat: number; - proportionalMillionths: number; -} - -interface GatewayTTL { - nanos: number; - secs: number; -} - -interface Gateway { - federation_id: string; - info: GatewayInfo; - ttl: GatewayTTL; - vetted: boolean; -} - -interface MintDecodeNotesRequest { - notes: string; -} - -interface MintDecodeNotesResponse { - notesJson: NotesJson; -} - -interface MintEncodeNotesRequest { - notesJsonStr: string; -} - -interface MintEncodeNotesResponse { - notes: string; -} - -interface MintReissueRequest { - notes: string; -} - -interface MintReissueResponse { - amountMsat: number; -} - -interface MintSpendRequest { - amountMsat: number; - allowOverpay: boolean; - timeout: number; - includeInvite: boolean; -} - -interface MintSpendResponse { - operation: string; - notes: string; -} - -interface MintValidateRequest { - notes: string; -} - -interface MintValidateResponse { - amountMsat: number; -} - -interface MintSplitRequest { - notes: string; -} - -interface MintSplitResponse { - notes: Record; -} - -interface MintCombineRequest { - notesVec: string[]; -} - -interface MintCombineResponse { - notes: string; -} - -interface Note { - signature: string; - spend_key: string; -} - -interface NotesJson { - federation_id_prefix: string; - notes: { - [denomination: string]: Note[]; - }; -} - -export type { - Tiered, - TieredSummary, - InfoResponse, - FederationIdsResponse, - DiscoverVersionRequest, - DiscoverVersionResponse, - JoinRequest, - JoinResponse, - BackupRequest, - ListOperationsRequest, - OperationOutput, - OnchainDepositAddressRequest, - OnchainDepositAddressResponse, - OnchainAwaitDepositRequest, - OnchainAwaitDepositResponse, - OnchainWithdrawRequest, - OnchainWithdrawResponse, - LightningInvoiceRequest, - LightningInvoiceResponse, - LightningInvoiceExternalPubkeyRequest, - LightningInvoiceExternalPubkeyResponse, - LightningInvoiceExternalPubkeyTweakedRequest, - LightningInvoiceExternalPubkeyTweakedResponse, - LightningClaimPubkeyReceiveRequest, - LightningClaimPubkeyReceiveTweakedRequest, - LightningAwaitInvoiceRequest, - LightningPayRequest, - LightningPayResponse, - LightningAwaitPayRequest, - Gateway, - NotesJson, - MintDecodeNotesRequest, - MintDecodeNotesResponse, - MintEncodeNotesRequest, - MintEncodeNotesResponse, - MintReissueRequest, - MintReissueResponse, - MintSpendRequest, - MintSpendResponse, - MintValidateRequest, - MintValidateResponse, - MintSplitRequest, - MintSplitResponse, - MintCombineRequest, - MintCombineResponse, -};