@tbookdev/vault-react-sui 0.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 +85 -0
- package/dist/index.cjs +511 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +404 -0
- package/dist/index.d.ts +404 -0
- package/dist/index.js +488 -0
- package/dist/index.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/config.ts","../src/provider.tsx","../src/amount.ts","../src/query-keys.ts","../src/errors.ts","../src/gateway-api.ts","../src/vault-info.ts","../src/hooks/use-vault-config.ts","../src/hooks/use-vault-info.ts","../src/hooks/use-vault-balances.ts","../src/hooks/use-transaction-history.ts","../src/hooks/use-usdc-balance.ts","../src/hooks/use-refresh-vault-data.ts","../src/hooks/use-vault-actions.ts"],"names":["getSuiVaultConfig","createContext","useMemo","jsx","useContext","USDC_DECIMALS","useSuiClient","useQuery","useCurrentAccount","getUserPosition","getUserRecords","useQueryClient","useSignAndExecuteTransaction","useMutation","buildDepositTx","buildInstantRedeemTx","buildQueueRedeemTx","buildClaimTx","buildCancelDepositTx"],"mappings":";;;;;;;;;AAwDA,IAAM,mBAAA,GAA+C;AAAA,EACnD,SAAA,EAAW,GAAA;AAAA,EACX,QAAA,EAAU,GAAA;AAAA,EACV,OAAA,EAAS,GAAA;AAAA,EACT,WAAA,EAAa;AACf,CAAA;AAEA,IAAM,yBAAA,GAA2D;AAAA,EAC/D,SAAA,EAAW,GAAA;AAAA,EACX,QAAA,EAAU,GAAA;AAAA,EACV,OAAA,EAAS,GAAA;AAAA,EACT,WAAA,EAAa;AACf,CAAA;AAEO,IAAM,oBAAA,GAAuB;AAC7B,IAAM,gCAAA,GACX;AAEF,SAAS,yBAAyB,OAAA,EAAyC;AACzE,EAAA,OAAO,OAAA,KAAY,YAAY,gCAAA,GAAmC,MAAA;AACpE;AAEA,SAAS,mBAAmB,GAAA,EAAqB;AAC/C,EAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAC/B;AAEO,SAAS,qBAAqB,KAAA,EAAuD;AAC1F,EAAA,MAAM,OAAA,GAAU,MAAM,OAAA,IAAW,oBAAA;AACjC,EAAA,MAAM,aAAA,GAAgB,MAAM,aAAA,IAAiB,WAAA;AAC7C,EAAA,MAAM,iBAAA,GACJ,KAAA,CAAM,iBAAA,IAAqB,wBAAA,CAAyB,MAAM,OAAO,CAAA;AAEnE,EAAA,IAAI,aAAA,KAAkB,QAAA,IAAY,CAAC,KAAA,CAAM,eAAA,EAAiB;AACxD,IAAA,MAAM,IAAI,MAAM,0DAA0D,CAAA;AAAA,EAC5E;AAEA,EAAA,OAAO;AAAA,IACL,SAAS,KAAA,CAAM,OAAA;AAAA,IACf,OAAA;AAAA,IACA,KAAA,EAAOA,6BAAA,CAAkB,OAAA,EAAS,KAAA,CAAM,OAAO,CAAA;AAAA,IAC/C,aAAA;AAAA,IACA,iBAAA,EAAmB,iBAAA,GACf,kBAAA,CAAmB,iBAAiB,CAAA,GACpC,MAAA;AAAA,IACJ,gBAAgB,KAAA,CAAM,cAAA;AAAA,IACtB,iBAAiB,KAAA,CAAM,eAAA;AAAA,IACvB,YAAY,EAAE,GAAG,mBAAA,EAAqB,GAAG,MAAM,UAAA,EAAW;AAAA,IAC1D,kBAAkB,EAAE,GAAG,yBAAA,EAA2B,GAAG,MAAM,gBAAA,EAAiB;AAAA,IAC5E,eAAA,EAAiB,MAAM,eAAA,IAAmB;AAAA,GAC5C;AACF;ACnGA,IAAM,oBAAA,GAAuBC,oBAA0C,IAAI,CAAA;AAEpE,SAAS,qBAAA,CAAsB,EAAE,QAAA,EAAU,GAAG,OAAM,EAA+B;AACxF,EAAA,MAAM,KAAA,GAAQC,aAAA;AAAA,IACZ,MAAM,qBAAqB,KAAK,CAAA;AAAA,IAChC;AAAA,MACE,KAAA,CAAM,OAAA;AAAA,MACN,KAAA,CAAM,OAAA;AAAA,MACN,KAAA,CAAM,aAAA;AAAA,MACN,KAAA,CAAM,iBAAA;AAAA,MACN,KAAA,CAAM,cAAA;AAAA,MACN,KAAA,CAAM,eAAA;AAAA,MACN,KAAA,CAAM,eAAA;AAAA,MACN,KAAA,CAAM,UAAA;AAAA,MACN,KAAA,CAAM;AAAA;AACR,GACF;AAEA,EAAA,uBAAOC,cAAA,CAAC,oBAAA,CAAqB,QAAA,EAArB,EAA8B,OAAe,QAAA,EAAS,CAAA;AAChE;AAEO,SAAS,gBAAA,GAAwC;AACtD,EAAA,MAAM,GAAA,GAAMC,iBAAW,oBAAoB,CAAA;AAC3C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;ACjCO,SAAS,kBAAA,CAAmB,KAAA,EAAwB,QAAA,GAAWC,yBAAA,EAAuB;AAC3F,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAK,CAAA,CAAE,IAAA,EAAK;AACjC,EAAA,IAAI,CAAC,eAAA,CAAgB,IAAA,CAAK,KAAK,CAAA,EAAG;AAChC,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,wBAAA,EAA2B,KAAK,CAAA,CAAE,CAAA;AAAA,EACpD;AAEA,EAAA,MAAM,CAAC,KAAA,EAAO,QAAA,GAAW,EAAE,CAAA,GAAI,KAAA,CAAM,MAAM,GAAG,CAAA;AAC9C,EAAA,IAAI,QAAA,CAAS,SAAS,QAAA,EAAU;AAC9B,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwB,QAAQ,CAAA,iBAAA,EAAoB,KAAK,CAAA,CAAE,CAAA;AAAA,EAC7E;AAEA,EAAA,MAAM,KAAA,GAAQ,GAAA,IAAO,MAAA,CAAO,QAAQ,CAAA;AACpC,EAAA,OAAO,MAAA,CAAO,KAAK,CAAA,GAAI,KAAA,GAAQ,MAAA,CAAO,SAAS,MAAA,CAAO,QAAA,EAAU,GAAG,CAAA,IAAK,GAAG,CAAA;AAC7E;AAGO,SAAS,eAAA,CAAgB,KAAA,EAAiC,QAAA,GAAWA,yBAAA,EAAuB;AACjG,EAAA,MAAM,GAAA,GAAM,OAAO,KAAK,CAAA;AACxB,EAAA,MAAM,KAAA,GAAQ,GAAA,IAAO,MAAA,CAAO,QAAQ,CAAA;AACpC,EAAA,MAAM,QAAQ,GAAA,GAAM,KAAA;AACpB,EAAA,MAAM,QAAA,GAAA,CAAY,GAAA,GAAM,KAAA,EAAO,QAAA,EAAS,CAAE,QAAA,CAAS,QAAA,EAAU,GAAG,CAAA,CAAE,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACnF,EAAA,OAAO,WAAW,CAAA,EAAG,KAAK,IAAI,QAAQ,CAAA,CAAA,GAAK,MAAM,QAAA,EAAS;AAC5D;AAGO,SAAS,WAAA,CAAY,KAAA,EAAiC,QAAA,GAAWA,yBAAA,EAAuB;AAC7F,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,kBAAA,CAAmB,OAAO,QAAQ,CAAA;AAC/E;;;AC5BA,IAAM,IAAA,GAAO,WAAA;AAEN,IAAM,iBAAA,GAAoB;AAAA,EAC/B,GAAA,EAAK,CAAC,IAAI,CAAA;AAAA,EACV,KAAA,EAAO,CAAC,OAAA,EAAqB,OAAA,KAC3B,CAAC,IAAA,EAAM,OAAA,EAAS,SAAS,OAAO,CAAA;AAAA,EAClC,SAAA,EAAW,CAAC,OAAA,EAAqB,OAAA,KAC/B,CAAC,IAAA,EAAM,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,MAAM,CAAA;AAAA,EAC1C,QAAA,EAAU,CAAC,OAAA,EAAqB,OAAA,EAAiB,OAAA,KAC/C,CAAC,IAAA,EAAM,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,UAAA,EAAY,OAAO,CAAA;AAAA,EACvD,OAAA,EAAS,CAAC,OAAA,EAAqB,OAAA,EAAiB,OAAA,KAC9C,CAAC,IAAA,EAAM,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,SAAA,EAAW,OAAO,CAAA;AAAA,EACtD,WAAA,EAAa,CAAC,OAAA,EAAqB,OAAA,EAAiB,QAAA,KAClD,CAAC,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,OAAA,EAAS,MAAA,EAAQ,QAAQ;AACvD;;;ACRO,IAAM,uBAAA,GAAN,cAAsC,KAAA,CAAM;AAAA,EACjD,WAAA,CACW,MACT,OAAA,EACA;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAHJ,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAIT,IAAA,IAAA,CAAK,IAAA,GAAO,yBAAA;AAAA,EACd;AACF;AAEO,SAAS,kBAAA,GAA8C;AAC5D,EAAA,OAAO,IAAI,uBAAA,CAAwB,sBAAA,EAAwB,sBAAsB,CAAA;AACnF;;;ACUO,IAAM,2BAAN,MAA+B;AAAA,EACnB,OAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EAEjB,YAAY,OAAA,EAA0C;AACpD,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA,CAAQ,OAAA,CAAQ,OAAA,CAAQ,QAAQ,EAAE,CAAA;AACjD,IAAA,IAAA,CAAK,SAAS,OAAA,CAAQ,MAAA;AACtB,IAAA,IAAA,CAAK,OAAA,GAAU,QAAQ,OAAA,KAAY,CAAC,OAAO,IAAA,KAAS,UAAA,CAAW,KAAA,CAAM,KAAA,EAAO,IAAI,CAAA,CAAA;AAAA,EAClF;AAAA,EAEA,cAAA,CACE,SACA,IAAA,EACoC;AACpC,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,CAAA,QAAA,EAAW,OAAO,eAAe,IAAI,CAAA;AAAA,EACxD;AAAA,EAEA,aAAA,CACE,SACA,IAAA,EACoC;AACpC,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,CAAA,QAAA,EAAW,OAAO,cAAc,IAAI,CAAA;AAAA,EACvD;AAAA,EAEA,YAAA,CAAa,SAAiB,IAAA,EAA4D;AACxF,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,CAAA,QAAA,EAAW,OAAO,aAAa,IAAI,CAAA;AAAA,EACtD;AAAA,EAEA,oBAAA,CACE,SACA,IAAA,EACoC;AACpC,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,CAAA,QAAA,EAAW,OAAO,sBAAsB,IAAI,CAAA;AAAA,EAC/D;AAAA,EAEA,MAAM,aAAA,CAAc,QAAA,EAAkB,MAAA,EAA+D;AACnG,IAAA,OAAO,KAAK,IAAA,CAAK,CAAA,cAAA,EAAiB,QAAQ,CAAA,QAAA,CAAA,EAAY,EAAE,QAAQ,CAAA;AAAA,EAClE;AAAA,EAEA,MAAc,IAAA,CAAQ,QAAA,EAAkB,IAAA,EAA2B;AACjE,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,IAAA,CAAK,OAAO,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI;AAAA,MAChE,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,KAAK,OAAA,EAAQ;AAAA,MACtB,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI;AAAA,KAC1B,CAAA;AAED,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,QAAQ,MAAM,QAAA,CAAS,MAAK,CAAE,KAAA,CAAM,MAAM,MAAS,CAAA;AACzD,MAAA,MAAM,OAAA,GACJ,KAAA,EAAO,KAAA,EAAO,OAAA,IACd,KAAA,EAAO,WACP,QAAA,CAAS,UAAA,IACT,CAAA,KAAA,EAAQ,QAAA,CAAS,MAAM,CAAA,CAAA;AACzB,MAAA,MAAM,IAAI,uBAAA,CAAwB,WAAA,EAAa,OAAO,CAAA;AAAA,IACxD;AAEA,IAAA,OAAO,SAAS,IAAA,EAAK;AAAA,EACvB;AAAA,EAEQ,OAAA,GAAkC;AACxC,IAAA,OAAO;AAAA,MACL,cAAA,EAAgB,kBAAA;AAAA,MAChB,GAAI,IAAA,CAAK,MAAA,GAAS,EAAE,aAAA,EAAe,UAAU,IAAA,CAAK,MAAM,CAAA,CAAA,EAAG,GAAI;AAAC,KAClE;AAAA,EACF;AACF;;;ACtEA,SAAS,aAAa,KAAA,EAAoB;AACxC,EAAA,OAAO,MAAA,CAAO,KAAA,EAAO,KAAA,IAAS,KAAA,IAAS,GAAG,CAAA;AAC5C;AAEA,SAAS,UAAU,KAAA,EAAqB;AACtC,EAAA,OAAO,KAAA,KAAU,QAAQ,KAAA,KAAU,MAAA;AACrC;AAEA,SAAS,oBAAA,CAAqB,KAAU,KAAA,EAAoC;AAC1E,EAAA,MAAM,OAAA,GAAU,IAAI,IAAA,EAAM,OAAA;AAC1B,EAAA,IAAI,CAAC,OAAA,IAAW,OAAA,CAAQ,QAAA,KAAa,YAAA,EAAc;AACjD,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,QAAA,EAAW,KAAK,CAAA,OAAA,CAAS,CAAA;AAAA,EAC3C;AACA,EAAA,OAAO,OAAA,CAAQ,MAAA;AACjB;AAEA,eAAsB,eAAA,CACpB,QACA,GAAA,EACuB;AACvB,EAAA,MAAM,CAAC,QAAA,EAAU,eAAe,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,IACpD,MAAA,CAAO,SAAA,CAAU,EAAE,EAAA,EAAI,GAAA,CAAI,aAAA,EAAe,OAAA,EAAS,EAAE,WAAA,EAAa,IAAA,EAAK,EAAG,CAAA;AAAA,IAC1E,MAAA,CAAO,SAAA,CAAU,EAAE,EAAA,EAAI,GAAA,CAAI,wBAAA,EAA0B,OAAA,EAAS,EAAE,WAAA,EAAa,IAAA,EAAK,EAAG;AAAA,GACtF,CAAA;AAED,EAAA,MAAM,MAAA,GAAS,oBAAA,CAAqB,QAAA,EAAU,OAAO,CAAA;AACrD,EAAA,IAAI,uBAAA,GAA0B,KAAA;AAC9B,EAAA,IAAI;AACF,IAAA,MAAM,kBAAA,GAAqB,oBAAA,CAAqB,eAAA,EAAiB,0BAA0B,CAAA;AAC3F,IAAA,uBAAA,GAA0B,SAAA,CAAU,mBAAmB,MAAM,CAAA;AAAA,EAC/D,CAAA,CAAA,MAAQ;AACN,IAAA,uBAAA,GAA0B,KAAA;AAAA,EAC5B;AAEA,EAAA,OAAO;AAAA,IACL,WAAA,EAAa,MAAA,CAAO,MAAA,CAAO,YAAA,IAAgB,GAAG,CAAA;AAAA,IAC9C,cAAA,EAAgB,YAAA,CAAa,MAAA,CAAO,eAAe,CAAA;AAAA,IACnD,YAAA,EAAc,YAAA,CAAa,MAAA,CAAO,aAAa,CAAA;AAAA,IAC/C,aAAA,EAAe,YAAA,CAAa,MAAA,CAAO,cAAc,CAAA;AAAA,IACjD,mBAAA,EAAqB,YAAA,CAAa,MAAA,CAAO,qBAAqB,CAAA;AAAA,IAC9D,WAAA,EAAa,YAAA,CAAa,MAAA,CAAO,YAAY,CAAA;AAAA,IAC7C,aAAA,EAAe,MAAA,CAAO,MAAA,CAAO,eAAA,IAAmB,GAAG,CAAA;AAAA,IACnD,UAAA,EAAY,MAAA,CAAO,MAAA,CAAO,YAAA,IAAgB,GAAG,CAAA;AAAA,IAC7C,YAAA,EAAc,MAAA,CAAO,MAAA,CAAO,cAAA,IAAkB,GAAG,CAAA;AAAA,IACjD,cAAA,EAAgB,MAAA,CAAO,MAAA,CAAO,gBAAA,IAAoB,GAAG,CAAA;AAAA,IACrD,mBAAA,EAAqB,MAAA,CAAO,MAAA,CAAO,sBAAA,IAA0B,GAAG,CAAA;AAAA,IAChE,mBAAA,EAAqB,MAAA,CAAO,MAAA,CAAO,sBAAA,IAA0B,GAAG,CAAA;AAAA,IAChE,MAAA,EAAQ,SAAA,CAAU,MAAA,CAAO,MAAM,CAAA;AAAA,IAC/B,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,OAAA,IAAW,GAAG,CAAA;AAAA,IACrC,gBAAgB,CAAC,uBAAA;AAAA,IACjB,oBAAA,EAAsB,SAAA,CAAU,MAAA,CAAO,sBAAsB,CAAA;AAAA,IAC7D,qBAAA,EAAuB,SAAA,CAAU,MAAA,CAAO,uBAAuB,CAAA;AAAA,IAC/D,oBAAA,EAAsB,SAAA,CAAU,MAAA,CAAO,sBAAsB,CAAA;AAAA,IAC7D,aAAA,EAAe,SAAA,CAAU,MAAA,CAAO,cAAc,CAAA;AAAA,IAC9C,GAAA,EAAK;AAAA,GACP;AACF;;;AChFO,IAAM,iBAAA,GAAoB;ACO1B,SAAS,gBAAgB,OAAA,EAAkC;AAChE,EAAA,MAAM,SAASC,oBAAA,EAAa;AAC5B,EAAA,MAAM,SAAS,gBAAA,EAAiB;AAEhC,EAAA,OAAOC,mBAAA,CAAS;AAAA,IACd,UAAU,iBAAA,CAAkB,SAAA,CAAU,MAAA,CAAO,OAAA,EAAS,OAAO,OAAO,CAAA;AAAA,IACpE,OAAA,EAAS,MAAM,eAAA,CAAgB,MAAA,EAAQ,OAAO,KAAK,CAAA;AAAA,IACnD,SAAA,EAAW,OAAO,UAAA,CAAW,SAAA;AAAA,IAC7B,eAAA,EAAiB,OAAO,gBAAA,CAAiB,SAAA;AAAA,IACzC,SAAS,OAAA,CAAQ,MAAA,CAAO,MAAM,aAAa,CAAA,KAAM,SAAS,OAAA,IAAW,IAAA,CAAA;AAAA,IACrE,GAAG;AAAA,GACJ,CAAA;AACH;ACZO,SAAS,oBAAoB,OAAA,EAAsC;AACxE,EAAA,MAAM,UAAUC,yBAAA,EAAkB;AAClC,EAAA,MAAM,SAASF,oBAAAA,EAAa;AAC5B,EAAA,MAAM,SAAS,gBAAA,EAAiB;AAEhC,EAAA,OAAOC,mBAAAA,CAAS;AAAA,IACd,QAAA,EAAU,kBAAkB,QAAA,CAAS,MAAA,CAAO,SAAS,MAAA,CAAO,OAAA,EAAS,OAAA,EAAS,OAAA,IAAW,EAAE,CAAA;AAAA,IAC3F,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,SAAS,OAAA,EAAS;AACrB,QAAA,MAAM,IAAI,MAAM,sBAAsB,CAAA;AAAA,MACxC;AACA,MAAA,OAAOE,2BAAA,CAAgB,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAO,QAAQ,OAAO,CAAA;AAAA,IAC9D,CAAA;AAAA,IACA,SAAS,OAAA,CAAQ,OAAA,EAAS,OAAO,CAAA,KAAM,SAAS,OAAA,IAAW,IAAA,CAAA;AAAA,IAC3D,SAAA,EAAW,OAAO,UAAA,CAAW,QAAA;AAAA,IAC7B,eAAA,EAAiB,OAAO,gBAAA,CAAiB,QAAA;AAAA,IACzC,GAAG;AAAA,GACJ,CAAA;AACH;AClBO,SAAS,yBAAyB,OAAA,EAA2C;AAClF,EAAA,MAAM,UAAUD,yBAAAA,EAAkB;AAClC,EAAA,MAAM,SAASF,oBAAAA,EAAa;AAC5B,EAAA,MAAM,SAAS,gBAAA,EAAiB;AAEhC,EAAA,OAAOC,mBAAAA,CAAS;AAAA,IACd,QAAA,EAAU,kBAAkB,OAAA,CAAQ,MAAA,CAAO,SAAS,MAAA,CAAO,OAAA,EAAS,OAAA,EAAS,OAAA,IAAW,EAAE,CAAA;AAAA,IAC1F,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,OAAA,EAAS,OAAA,EAAS,OAAO,EAAC;AAC/B,MAAA,OAAOG,0BAAA,CAAe,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAO,QAAQ,OAAO,CAAA;AAAA,IAC7D,CAAA;AAAA,IACA,SAAS,OAAA,CAAQ,OAAA,EAAS,OAAO,CAAA,KAAM,SAAS,OAAA,IAAW,IAAA,CAAA;AAAA,IAC3D,SAAA,EAAW,OAAO,UAAA,CAAW,OAAA;AAAA,IAC7B,eAAA,EAAiB,OAAO,gBAAA,CAAiB,OAAA;AAAA,IACzC,GAAG;AAAA,GACJ,CAAA;AACH;ACdO,SAAS,kBAAkB,OAAA,EAAoC;AACpE,EAAA,MAAM,UAAUF,yBAAAA,EAAkB;AAClC,EAAA,MAAM,SAASF,oBAAAA,EAAa;AAC5B,EAAA,MAAM,SAAS,gBAAA,EAAiB;AAEhC,EAAA,MAAM,QAAQC,mBAAAA,CAAS;AAAA,IACrB,UAAU,iBAAA,CAAkB,WAAA;AAAA,MAC1B,MAAA,CAAO,OAAA;AAAA,MACP,SAAS,OAAA,IAAW,EAAA;AAAA,MACpB,OAAO,KAAA,CAAM;AAAA,KACf;AAAA,IACA,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,SAAS,OAAA,EAAS;AACrB,QAAA,MAAM,IAAI,MAAM,sBAAsB,CAAA;AAAA,MACxC;AACA,MAAA,OAAO,MAAA,CAAO,UAAA,CAAW,EAAE,KAAA,EAAO,OAAA,CAAQ,SAAS,QAAA,EAAU,MAAA,CAAO,KAAA,CAAM,QAAA,EAAU,CAAA;AAAA,IACtF,CAAA;AAAA,IACA,SAAS,OAAA,CAAQ,OAAA,EAAS,OAAO,CAAA,KAAM,SAAS,OAAA,IAAW,IAAA,CAAA;AAAA,IAC3D,SAAA,EAAW,OAAO,UAAA,CAAW,WAAA;AAAA,IAC7B,eAAA,EAAiB,OAAO,gBAAA,CAAiB,WAAA;AAAA,IACzC,GAAG;AAAA,GACJ,CAAA;AAED,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,KAAA,CAAM,IAAA,EAAM,gBAAgB,GAAG,CAAA;AACtD,EAAA,OAAO;AAAA,IACL,GAAG,KAAA;AAAA,IACH,OAAA;AAAA,IACA,QAAA,EAAUF,yBAAAA;AAAA,IACV,SAAA,EAAW,eAAA,CAAgB,OAAA,EAASA,yBAAa;AAAA,GACnD;AACF;ACpCO,SAAS,sBAAA,GAAyB;AACvC,EAAA,MAAM,UAAUG,yBAAAA,EAAkB;AAClC,EAAA,MAAM,cAAcG,yBAAA,EAAe;AACnC,EAAA,MAAM,SAAS,gBAAA,EAAiB;AAEhC,EAAA,OAAO,YAAY;AACjB,IAAA,MAAM,QAAQ,GAAA,CAAI;AAAA,MAChB,YAAY,iBAAA,CAAkB;AAAA,QAC5B,UAAU,iBAAA,CAAkB,KAAA,CAAM,MAAA,CAAO,OAAA,EAAS,OAAO,OAAO;AAAA,OACjE,CAAA;AAAA,MACD,OAAA,EAAS,OAAA,GACL,WAAA,CAAY,iBAAA,CAAkB;AAAA,QAC5B,QAAA,EAAU,kBAAkB,QAAA,CAAS,MAAA,CAAO,SAAS,MAAA,CAAO,OAAA,EAAS,QAAQ,OAAO;AAAA,OACrF,CAAA,GACD,OAAA,CAAQ,OAAA,EAAQ;AAAA,MACpB,OAAA,EAAS,OAAA,GACL,WAAA,CAAY,iBAAA,CAAkB;AAAA,QAC5B,QAAA,EAAU,kBAAkB,OAAA,CAAQ,MAAA,CAAO,SAAS,MAAA,CAAO,OAAA,EAAS,QAAQ,OAAO;AAAA,OACpF,CAAA,GACD,OAAA,CAAQ,OAAA,EAAQ;AAAA,MACpB,OAAA,EAAS,OAAA,GACL,WAAA,CAAY,iBAAA,CAAkB;AAAA,QAC5B,UAAU,iBAAA,CAAkB,WAAA;AAAA,UAC1B,MAAA,CAAO,OAAA;AAAA,UACP,OAAA,CAAQ,OAAA;AAAA,UACR,OAAO,KAAA,CAAM;AAAA;AACf,OACD,CAAA,GACD,OAAA,CAAQ,OAAA;AAAQ,KACrB,CAAA;AAAA,EACH,CAAA;AACF;ACUA,SAAS,WAAW,MAAA,EAA+C;AACjE,EAAA,IAAI,MAAA,CAAO,IAAA,EAAM,OAAO,MAAA,CAAO,IAAA;AAC/B,EAAA,OAAO,MAAA,CAAO,SAAA,KAAc,QAAA,GAAW,SAAA,GAAY,QAAA;AACrD;AAEA,eAAe,SAAA,CACb,2BACA,MAAA,EAC8B;AAC9B,EAAA,OAAO,yBAAA,CAA0B,EAAE,WAAA,EAAa,MAAA,CAAO,eAAe,CAAA;AACxE;AAEA,SAAS,cAAc,MAAA,EAAuE;AAC5F,EAAA,IAAI,CAAC,OAAO,iBAAA,EAAmB;AAC7B,IAAA,MAAM,IAAI,uBAAA;AAAA,MACR,qBAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,IAAI,wBAAA,CAAyB;AAAA,IAClC,SAAS,MAAA,CAAO,iBAAA;AAAA,IAChB,QAAQ,MAAA,CAAO;AAAA,GAChB,CAAA;AACH;AAEA,SAAS,sBAAsB,IAAA,EAA8D;AAC3F,EAAA,IAAI,CAAC,IAAA,EAAM;AACX,EAAA,IAAI,KAAK,MAAA,EAAQ,MAAM,IAAI,uBAAA,CAAwB,gBAAgB,iBAAiB,CAAA;AACpF,EAAA,IAAI,CAAC,KAAK,cAAA,EAAgB;AACxB,IAAA,MAAM,IAAI,uBAAA,CAAwB,mBAAA,EAAqB,sCAAsC,CAAA;AAAA,EAC/F;AACF;AAEA,SAAS,qBAAqB,IAAA,EAA8D;AAC1F,EAAA,IAAI,CAAC,IAAA,EAAM;AACX,EAAA,IAAI,KAAK,MAAA,EAAQ,MAAM,IAAI,uBAAA,CAAwB,gBAAgB,iBAAiB,CAAA;AACtF;AAEA,SAAS,qBAAqB,IAAA,EAA8D;AAC1F,EAAA,IAAI,CAAC,IAAA,EAAM;AACX,EAAA,IAAI,KAAK,MAAA,EAAQ,MAAM,IAAI,uBAAA,CAAwB,gBAAgB,iBAAiB,CAAA;AACpF,EAAA,IAAI,CAAC,KAAK,oBAAA,EAAsB;AAC9B,IAAA,MAAM,IAAI,uBAAA,CAAwB,mBAAA,EAAqB,+BAA+B,CAAA;AAAA,EACxF;AACF;AAEO,SAAS,aAAA,GAAgF;AAC9F,EAAA,MAAM,UAAUH,yBAAAA,EAAkB;AAClC,EAAA,MAAM,SAASF,oBAAAA,EAAa;AAC5B,EAAA,MAAM,SAAS,gBAAA,EAAiB;AAChC,EAAA,MAAM,EAAE,WAAA,EAAa,yBAAA,EAA0B,GAAIM,oCAAA,EAA6B;AAChF,EAAA,MAAM,UAAU,sBAAA,EAAuB;AACvC,EAAA,MAAM,EAAE,MAAM,SAAA,EAAU,GAAI,gBAAgB,EAAE,OAAA,EAAS,MAAA,CAAO,eAAA,EAAiB,CAAA;AAE/E,EAAA,OAAOC,sBAAA,CAAyD;AAAA,IAC9D,UAAA,EAAY,OAAO,EAAE,MAAA,EAAO,KAAwB;AAClD,MAAA,IAAI,CAAC,OAAA,EAAS,OAAA,EAAS,MAAM,kBAAA,EAAmB;AAChD,MAAA,IAAI,MAAA,CAAO,eAAA,EAAiB,qBAAA,CAAsB,SAAS,CAAA;AAE3D,MAAA,MAAM,GAAA,GAAM,YAAY,MAAM,CAAA;AAC9B,MAAA,IAAI,MAAA,CAAO,kBAAkB,aAAA,EAAe;AAC1C,QAAA,MAAM,GAAA,GAAM,cAAc,MAAM,CAAA;AAChC,QAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,cAAA,CAAe,OAAO,OAAA,EAAS;AAAA,UACxD,MAAM,OAAA,CAAQ,OAAA;AAAA,UACd,MAAA,EAAQ,gBAAgB,GAAG;AAAA,SAC5B,CAAA;AACD,QAAA,MAAM,EAAA,GAAK,MAAM,yBAAA,CAA0B,EAAE,aAAa,QAAA,CAAS,WAAA,CAAY,MAAM,CAAA;AACrF,QAAA,IAAI,QAAA,CAAS,QAAA,IAAY,EAAA,CAAG,MAAA,EAAQ;AAClC,UAAA,MAAM,GAAA,CAAI,aAAA,CAAc,QAAA,CAAS,QAAA,EAAU,GAAG,MAAM,CAAA;AAAA,QACtD;AACA,QAAA,OAAO,EAAA;AAAA,MACT;AAEA,MAAA,MAAM,MAAA,GACJ,MAAA,CAAO,aAAA,KAAkB,QAAA,GACrB,MAAM,MAAA,CAAO,eAAA,EAAiB,cAAA,GAAiB,EAAE,MAAA,EAAQ,OAAA,CAAQ,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,CAAA,GACvF,MAAMC,0BAAA,CAAe,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAO,EAAE,MAAA,EAAQ,OAAA,CAAQ,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,CAAA;AACzF,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAI,uBAAA,CAAwB,wBAAA,EAA0B,mCAAmC,CAAA;AAAA,MACjG;AACA,MAAA,OAAO,SAAA,CAAU,2BAA2B,MAAM,CAAA;AAAA,IACpD,CAAA;AAAA,IACA,SAAA,EAAW;AAAA,GACZ,CAAA;AACH;AAEO,SAAS,YAAA,GAA8E;AAC5F,EAAA,MAAM,UAAUN,yBAAAA,EAAkB;AAClC,EAAA,MAAM,SAASF,oBAAAA,EAAa;AAC5B,EAAA,MAAM,SAAS,gBAAA,EAAiB;AAChC,EAAA,MAAM,EAAE,WAAA,EAAa,yBAAA,EAA0B,GAAIM,oCAAA,EAA6B;AAChF,EAAA,MAAM,UAAU,sBAAA,EAAuB;AACvC,EAAA,MAAM,EAAE,MAAM,SAAA,EAAU,GAAI,gBAAgB,EAAE,OAAA,EAAS,MAAA,CAAO,eAAA,EAAiB,CAAA;AAE/E,EAAA,OAAOC,sBAAA,CAAwD;AAAA,IAC7D,UAAA,EAAY,OAAO,MAAA,KAA4B;AAC7C,MAAA,IAAI,CAAC,OAAA,EAAS,OAAA,EAAS,MAAM,kBAAA,EAAmB;AAChD,MAAA,IAAI,MAAA,CAAO,eAAA,EAAiB,oBAAA,CAAqB,SAAS,CAAA;AAE1D,MAAA,MAAM,IAAA,GAAO,WAAW,MAAM,CAAA;AAC9B,MAAA,MAAM,MAAA,GAAS,WAAA,CAAY,MAAA,CAAO,MAAM,CAAA;AACxC,MAAA,IAAI,MAAA,CAAO,kBAAkB,aAAA,EAAe;AAC1C,QAAA,MAAM,GAAA,GAAM,cAAc,MAAM,CAAA;AAChC,QAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,aAAA,CAAc,OAAO,OAAA,EAAS;AAAA,UACvD,MAAM,OAAA,CAAQ,OAAA;AAAA,UACd,MAAA,EAAQ,gBAAgB,MAAM,CAAA;AAAA,UAC9B;AAAA,SACD,CAAA;AACD,QAAA,MAAM,EAAA,GAAK,MAAM,yBAAA,CAA0B,EAAE,aAAa,QAAA,CAAS,WAAA,CAAY,MAAM,CAAA;AACrF,QAAA,IAAI,QAAA,CAAS,QAAA,IAAY,EAAA,CAAG,MAAA,EAAQ;AAClC,UAAA,MAAM,GAAA,CAAI,aAAA,CAAc,QAAA,CAAS,QAAA,EAAU,GAAG,MAAM,CAAA;AAAA,QACtD;AACA,QAAA,OAAO,EAAA;AAAA,MACT;AAEA,MAAA,MAAM,MAAA,GACJ,MAAA,CAAO,aAAA,KAAkB,QAAA,GACrB,IAAA,KAAS,YACP,MAAM,MAAA,CAAO,eAAA,EAAiB,oBAAA,GAAuB,EAAE,MAAA,EAAQ,QAAQ,OAAA,EAAS,MAAA,EAAQ,CAAA,GACxF,MAAM,MAAA,CAAO,iBAAiB,kBAAA,GAAqB,EAAE,MAAA,EAAQ,OAAA,CAAQ,OAAA,EAAS,MAAA,EAAQ,CAAA,GACxF,IAAA,KAAS,SAAA,GACP,MAAME,gCAAA,CAAqB,MAAA,EAAQ,OAAO,KAAA,EAAO,EAAE,MAAA,EAAQ,OAAA,CAAQ,OAAA,EAAS,MAAA,EAAQ,CAAA,GACpF,MAAMC,8BAAA,CAAmB,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAO,EAAE,MAAA,EAAQ,OAAA,CAAQ,OAAA,EAAS,MAAA,EAAQ,CAAA;AAC1F,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAI,uBAAA,CAAwB,wBAAA,EAA0B,kCAAkC,CAAA;AAAA,MAChG;AACA,MAAA,OAAO,SAAA,CAAU,2BAA2B,MAAM,CAAA;AAAA,IACpD,CAAA;AAAA,IACA,SAAA,EAAW;AAAA,GACZ,CAAA;AACH;AAEO,SAAS,WAAA,GAAwF;AACtG,EAAA,MAAM,UAAUR,yBAAAA,EAAkB;AAClC,EAAA,MAAM,SAASF,oBAAAA,EAAa;AAC5B,EAAA,MAAM,SAAS,gBAAA,EAAiB;AAChC,EAAA,MAAM,EAAE,WAAA,EAAa,yBAAA,EAA0B,GAAIM,oCAAA,EAA6B;AAChF,EAAA,MAAM,UAAU,sBAAA,EAAuB;AAEvC,EAAA,OAAOC,sBAAA,CAAmE;AAAA,IACxE,UAAA,EAAY,OAAO,MAAA,KAA4B;AAC7C,MAAA,IAAI,CAAC,OAAA,EAAS,OAAA,EAAS,MAAM,kBAAA,EAAmB;AAEhD,MAAA,MAAM,SAAS,MAAA,EAAQ,MAAA,KAAW,SAAY,MAAA,GAAY,WAAA,CAAY,OAAO,MAAM,CAAA;AACnF,MAAA,IAAI,MAAA,CAAO,kBAAkB,aAAA,EAAe;AAC1C,QAAA,MAAM,GAAA,GAAM,cAAc,MAAM,CAAA;AAChC,QAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,SAAS,EAAE,IAAA,EAAM,OAAA,CAAQ,OAAA,EAAS,CAAA;AACjF,QAAA,MAAM,EAAA,GAAK,MAAM,yBAAA,CAA0B,EAAE,aAAa,QAAA,CAAS,WAAA,CAAY,MAAM,CAAA;AACrF,QAAA,IAAI,QAAA,CAAS,QAAA,IAAY,EAAA,CAAG,MAAA,EAAQ;AAClC,UAAA,MAAM,GAAA,CAAI,aAAA,CAAc,QAAA,CAAS,QAAA,EAAU,GAAG,MAAM,CAAA;AAAA,QACtD;AACA,QAAA,OAAO,EAAA;AAAA,MACT;AAEA,MAAA,MAAM,MAAA,GACJ,MAAA,CAAO,aAAA,KAAkB,QAAA,GACrB,MAAM,OAAO,eAAA,EAAiB,YAAA,GAAe,EAAE,MAAA,EAAQ,OAAA,CAAQ,OAAA,EAAS,QAAQ,CAAA,GAChF,MAAMI,wBAAA,CAAa,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAO,EAAE,MAAA,EAAQ,OAAA,CAAQ,OAAA,EAAS,MAAA,EAAQ,CAAA;AAClF,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAI,uBAAA,CAAwB,wBAAA,EAA0B,iCAAiC,CAAA;AAAA,MAC/F;AACA,MAAA,OAAO,SAAA,CAAU,2BAA2B,MAAM,CAAA;AAAA,IACpD,CAAA;AAAA,IACA,SAAA,EAAW;AAAA,GACZ,CAAA;AACH;AAEO,SAAS,mBAAA,GAA4F;AAC1G,EAAA,MAAM,UAAUT,yBAAAA,EAAkB;AAClC,EAAA,MAAM,SAASF,oBAAAA,EAAa;AAC5B,EAAA,MAAM,SAAS,gBAAA,EAAiB;AAChC,EAAA,MAAM,EAAE,WAAA,EAAa,yBAAA,EAA0B,GAAIM,oCAAA,EAA6B;AAChF,EAAA,MAAM,UAAU,sBAAA,EAAuB;AACvC,EAAA,MAAM,EAAE,MAAM,SAAA,EAAU,GAAI,gBAAgB,EAAE,OAAA,EAAS,MAAA,CAAO,eAAA,EAAiB,CAAA;AAE/E,EAAA,OAAOC,sBAAA,CAA+D;AAAA,IACpE,UAAA,EAAY,OAAO,EAAE,QAAA,EAAS,KAA8B;AAC1D,MAAA,IAAI,CAAC,OAAA,EAAS,OAAA,EAAS,MAAM,kBAAA,EAAmB;AAChD,MAAA,IAAI,MAAA,CAAO,eAAA,EAAiB,oBAAA,CAAqB,SAAS,CAAA;AAE1D,MAAA,IAAI,MAAA,CAAO,kBAAkB,aAAA,EAAe;AAC1C,QAAA,MAAM,GAAA,GAAM,cAAc,MAAM,CAAA;AAChC,QAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,oBAAA,CAAqB,OAAO,OAAA,EAAS;AAAA,UAC9D,MAAM,OAAA,CAAQ,OAAA;AAAA,UACd,QAAA,EAAU,OAAO,QAAQ;AAAA,SAC1B,CAAA;AACD,QAAA,MAAM,EAAA,GAAK,MAAM,yBAAA,CAA0B,EAAE,aAAa,QAAA,CAAS,WAAA,CAAY,MAAM,CAAA;AACrF,QAAA,IAAI,QAAA,CAAS,QAAA,IAAY,EAAA,CAAG,MAAA,EAAQ;AAClC,UAAA,MAAM,GAAA,CAAI,aAAA,CAAc,QAAA,CAAS,QAAA,EAAU,GAAG,MAAM,CAAA;AAAA,QACtD;AACA,QAAA,OAAO,EAAA;AAAA,MACT;AAEA,MAAA,MAAM,MAAA,GACJ,MAAA,CAAO,aAAA,KAAkB,QAAA,GACrB,MAAM,OAAO,eAAA,EAAiB,oBAAA,GAAuB,EAAE,MAAA,EAAQ,OAAA,CAAQ,OAAA,EAAS,UAAU,CAAA,GAC1F,MAAMK,gCAAA,CAAqB,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAO,EAAE,MAAA,EAAQ,OAAA,CAAQ,OAAA,EAAS,QAAA,EAAU,CAAA;AAC5F,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAI,uBAAA,CAAwB,wBAAA,EAA0B,0CAA0C,CAAA;AAAA,MACxG;AACA,MAAA,OAAO,SAAA,CAAU,2BAA2B,MAAM,CAAA;AAAA,IACpD,CAAA;AAAA,IACA,SAAA,EAAW;AAAA,GACZ,CAAA;AACH","file":"index.cjs","sourcesContent":["import {\n getSuiVaultConfig,\n type SuiBuildResult,\n type SuiNetwork,\n type SuiVaultConfig,\n} from \"@tbookdev/vault-sdk-sui\";\n\nexport type SuiVaultTxBuilderMode = \"local-sdk\" | \"gateway-api\" | \"custom\";\n\nexport interface TBookSuiVaultStaleTimes {\n vaultInfo: number;\n balances: number;\n history: number;\n usdcBalance: number;\n}\n\nexport interface TBookSuiVaultRefetchIntervals {\n vaultInfo: number | false;\n balances: number | false;\n history: number | false;\n usdcBalance: number | false;\n}\n\nexport interface TBookSuiCustomTxBuilder {\n buildDepositTx?: (params: { sender: string; amount: bigint }) => Promise<SuiBuildResult>;\n buildQueueRedeemTx?: (params: { sender: string; shares: bigint }) => Promise<SuiBuildResult>;\n buildInstantRedeemTx?: (params: { sender: string; shares: bigint }) => Promise<SuiBuildResult>;\n buildClaimTx?: (params: { sender: string; amount?: bigint }) => Promise<SuiBuildResult>;\n buildCancelDepositTx?: (params: { sender: string; recordId: string | bigint }) => Promise<SuiBuildResult>;\n}\n\nexport interface CreateSuiVaultConfigInput {\n network: SuiNetwork;\n vaultId?: string;\n txBuilderMode?: SuiVaultTxBuilderMode;\n gatewayApiBaseUrl?: string;\n publishableKey?: string;\n customTxBuilder?: TBookSuiCustomTxBuilder;\n staleTimes?: Partial<TBookSuiVaultStaleTimes>;\n refetchIntervals?: Partial<TBookSuiVaultRefetchIntervals>;\n preflightChecks?: boolean;\n}\n\nexport interface TBookSuiVaultConfig {\n network: SuiNetwork;\n vaultId: string;\n vault: SuiVaultConfig;\n txBuilderMode: SuiVaultTxBuilderMode;\n gatewayApiBaseUrl?: string;\n publishableKey?: string;\n customTxBuilder?: TBookSuiCustomTxBuilder;\n staleTimes: TBookSuiVaultStaleTimes;\n refetchIntervals: TBookSuiVaultRefetchIntervals;\n preflightChecks: boolean;\n}\n\nconst DEFAULT_STALE_TIMES: TBookSuiVaultStaleTimes = {\n vaultInfo: 30_000,\n balances: 10_000,\n history: 10_000,\n usdcBalance: 10_000,\n};\n\nconst DEFAULT_REFETCH_INTERVALS: TBookSuiVaultRefetchIntervals = {\n vaultInfo: 60_000,\n balances: 30_000,\n history: 30_000,\n usdcBalance: 30_000,\n};\n\nexport const DEFAULT_SUI_VAULT_ID = \"rcusdp-sui\";\nexport const SUI_TESTNET_GATEWAY_API_BASE_URL =\n \"https://1cm2fjkq6k.execute-api.ap-southeast-1.amazonaws.com/v1\";\n\nfunction defaultGatewayApiBaseUrl(network: SuiNetwork): string | undefined {\n return network === \"testnet\" ? SUI_TESTNET_GATEWAY_API_BASE_URL : undefined;\n}\n\nfunction stripTrailingSlash(url: string): string {\n return url.replace(/\\/+$/, \"\");\n}\n\nexport function createSuiVaultConfig(input: CreateSuiVaultConfigInput): TBookSuiVaultConfig {\n const vaultId = input.vaultId ?? DEFAULT_SUI_VAULT_ID;\n const txBuilderMode = input.txBuilderMode ?? \"local-sdk\";\n const gatewayApiBaseUrl =\n input.gatewayApiBaseUrl ?? defaultGatewayApiBaseUrl(input.network);\n\n if (txBuilderMode === \"custom\" && !input.customTxBuilder) {\n throw new Error(\"customTxBuilder is required when txBuilderMode is custom\");\n }\n\n return {\n network: input.network,\n vaultId,\n vault: getSuiVaultConfig(vaultId, input.network),\n txBuilderMode,\n gatewayApiBaseUrl: gatewayApiBaseUrl\n ? stripTrailingSlash(gatewayApiBaseUrl)\n : undefined,\n publishableKey: input.publishableKey,\n customTxBuilder: input.customTxBuilder,\n staleTimes: { ...DEFAULT_STALE_TIMES, ...input.staleTimes },\n refetchIntervals: { ...DEFAULT_REFETCH_INTERVALS, ...input.refetchIntervals },\n preflightChecks: input.preflightChecks ?? true,\n };\n}\n","import { createContext, useContext, useMemo, type ReactNode } from \"react\";\nimport { createSuiVaultConfig, type CreateSuiVaultConfigInput, type TBookSuiVaultConfig } from \"./config.js\";\n\nexport interface TBookSuiVaultProviderProps extends CreateSuiVaultConfigInput {\n children: ReactNode;\n}\n\nconst TBookSuiVaultContext = createContext<TBookSuiVaultConfig | null>(null);\n\nexport function TBookSuiVaultProvider({ children, ...input }: TBookSuiVaultProviderProps) {\n const value = useMemo(\n () => createSuiVaultConfig(input),\n [\n input.network,\n input.vaultId,\n input.txBuilderMode,\n input.gatewayApiBaseUrl,\n input.publishableKey,\n input.customTxBuilder,\n input.preflightChecks,\n input.staleTimes,\n input.refetchIntervals,\n ],\n );\n\n return <TBookSuiVaultContext.Provider value={value}>{children}</TBookSuiVaultContext.Provider>;\n}\n\nexport function useTBookSuiVault(): TBookSuiVaultConfig {\n const ctx = useContext(TBookSuiVaultContext);\n if (!ctx) {\n throw new Error(\n \"useTBookSuiVault must be used within a <TBookSuiVaultProvider>.\",\n );\n }\n return ctx;\n}\n","import { USDC_DECIMALS } from \"@tbookdev/vault-sdk-sui\";\n\n/** Convert a decimal UI amount into raw integer units without float drift. */\nexport function parseDecimalAmount(value: string | number, decimals = USDC_DECIMALS): bigint {\n const input = String(value).trim();\n if (!/^\\d+(\\.\\d+)?$/.test(input)) {\n throw new Error(`Invalid decimal amount: ${value}`);\n }\n\n const [whole, fraction = \"\"] = input.split(\".\");\n if (fraction.length > decimals) {\n throw new Error(`Amount has more than ${decimals} decimal places: ${value}`);\n }\n\n const scale = 10n ** BigInt(decimals);\n return BigInt(whole) * scale + BigInt(fraction.padEnd(decimals, \"0\") || \"0\");\n}\n\n/** Convert raw integer units into a compact decimal string. */\nexport function formatRawAmount(value: bigint | string | number, decimals = USDC_DECIMALS): string {\n const raw = BigInt(value);\n const scale = 10n ** BigInt(decimals);\n const whole = raw / scale;\n const fraction = (raw % scale).toString().padStart(decimals, \"0\").replace(/0+$/, \"\");\n return fraction ? `${whole}.${fraction}` : whole.toString();\n}\n\n/** Accept raw bigint or decimal input and return raw integer units. */\nexport function toRawAmount(value: bigint | string | number, decimals = USDC_DECIMALS): bigint {\n return typeof value === \"bigint\" ? value : parseDecimalAmount(value, decimals);\n}\n","import type { SuiNetwork } from \"@tbookdev/vault-sdk-sui\";\n\nconst ROOT = \"tbook-sui\" as const;\n\nexport const suiVaultQueryKeys = {\n all: [ROOT] as const,\n vault: (network: SuiNetwork, vaultId: string) =>\n [ROOT, \"vault\", network, vaultId] as const,\n vaultInfo: (network: SuiNetwork, vaultId: string) =>\n [ROOT, \"vault\", network, vaultId, \"info\"] as const,\n balances: (network: SuiNetwork, vaultId: string, address: string) =>\n [ROOT, \"vault\", network, vaultId, \"balances\", address] as const,\n history: (network: SuiNetwork, vaultId: string, address: string) =>\n [ROOT, \"vault\", network, vaultId, \"history\", address] as const,\n usdcBalance: (network: SuiNetwork, address: string, coinType: string) =>\n [ROOT, \"wallet\", network, address, \"usdc\", coinType] as const,\n};\n","export type TBookSuiVaultReactErrorCode =\n | \"WALLET_NOT_CONNECTED\"\n | \"CONFIGURATION_ERROR\"\n | \"VAULT_PAUSED\"\n | \"SETTLEMENT_ACTIVE\"\n | \"UNSUPPORTED_TX_BUILDER\"\n | \"API_ERROR\";\n\nexport class TBookSuiVaultReactError extends Error {\n constructor(\n readonly code: TBookSuiVaultReactErrorCode,\n message: string,\n ) {\n super(message);\n this.name = \"TBookSuiVaultReactError\";\n }\n}\n\nexport function walletNotConnected(): TBookSuiVaultReactError {\n return new TBookSuiVaultReactError(\"WALLET_NOT_CONNECTED\", \"Wallet not connected\");\n}\n","import { TBookSuiVaultReactError } from \"./errors.js\";\n\ntype Fetcher = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;\n\nexport type SuiGatewayTxType = \"deposit\" | \"redeem\" | \"claim\" | \"cancel_deposit\";\nexport type SuiGatewayTxFormat = \"sui:tx-bytes-base64\";\n\nexport interface SuiGatewayTransactionEnvelope {\n format: SuiGatewayTxFormat;\n data: string;\n}\n\nexport interface SuiGatewayBuildTxResponse {\n intentId?: string;\n vaultId: string;\n type: SuiGatewayTxType;\n chain: \"sui\";\n rail: \"direct\";\n transaction: SuiGatewayTransactionEnvelope;\n summary?: Record<string, unknown>;\n message: string;\n expiresAt: string;\n}\n\nexport interface TBookSuiGatewayApiClientOptions {\n baseUrl: string;\n apiKey?: string;\n fetcher?: Fetcher;\n}\n\nexport class TBookSuiGatewayApiClient {\n private readonly baseUrl: string;\n private readonly apiKey?: string;\n private readonly fetcher: Fetcher;\n\n constructor(options: TBookSuiGatewayApiClientOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/+$/, \"\");\n this.apiKey = options.apiKey;\n this.fetcher = options.fetcher ?? ((input, init) => globalThis.fetch(input, init));\n }\n\n buildDepositTx(\n vaultId: string,\n body: { user: string; amount: string },\n ): Promise<SuiGatewayBuildTxResponse> {\n return this.post(`/vaults/${vaultId}/tx/deposit`, body);\n }\n\n buildRedeemTx(\n vaultId: string,\n body: { user: string; shares: string; mode?: \"queued\" | \"instant\" },\n ): Promise<SuiGatewayBuildTxResponse> {\n return this.post(`/vaults/${vaultId}/tx/redeem`, body);\n }\n\n buildClaimTx(vaultId: string, body: { user: string }): Promise<SuiGatewayBuildTxResponse> {\n return this.post(`/vaults/${vaultId}/tx/claim`, body);\n }\n\n buildCancelDepositTx(\n vaultId: string,\n body: { user: string; recordId: string },\n ): Promise<SuiGatewayBuildTxResponse> {\n return this.post(`/vaults/${vaultId}/tx/cancel-deposit`, body);\n }\n\n async confirmIntent(intentId: string, digest: string): Promise<{ intentId: string; status: string }> {\n return this.post(`/transactions/${intentId}/confirm`, { digest });\n }\n\n private async post<T>(endpoint: string, body: unknown): Promise<T> {\n const response = await this.fetcher(`${this.baseUrl}${endpoint}`, {\n method: \"POST\",\n headers: this.headers(),\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n const error = await response.json().catch(() => undefined);\n const message =\n error?.error?.message ??\n error?.message ??\n response.statusText ??\n `HTTP ${response.status}`;\n throw new TBookSuiVaultReactError(\"API_ERROR\", message);\n }\n\n return response.json() as Promise<T>;\n }\n\n private headers(): Record<string, string> {\n return {\n \"Content-Type\": \"application/json\",\n ...(this.apiKey ? { Authorization: `Bearer ${this.apiKey}` } : {}),\n };\n }\n}\n","import type { SuiClient } from \"@mysten/sui/client\";\nimport type { SuiVaultConfig } from \"@tbookdev/vault-sdk-sui\";\n\nexport interface SuiVaultInfo {\n totalShares: bigint;\n pendingDeposit: bigint;\n claimReserve: bigint;\n rcusdpCustody: bigint;\n pendingRedeemRcusdp: bigint;\n reserveFund: bigint;\n depositFeeBps: bigint;\n mgmtFeeBps: bigint;\n redeemFeeBps: bigint;\n withdrawFeeBps: bigint;\n cancelDepositFeeBps: bigint;\n instantRedeemFeeBps: bigint;\n paused: boolean;\n version: bigint;\n depositEnabled: boolean;\n instantRedeemEnabled: boolean;\n withdrawRcusdpEnabled: boolean;\n cancelDepositEnabled: boolean;\n redeemSettled: boolean;\n raw: Record<string, unknown>;\n}\n\nfunction balanceValue(value: any): bigint {\n return BigInt(value?.value ?? value ?? \"0\");\n}\n\nfunction boolValue(value: any): boolean {\n return value === true || value === \"true\";\n}\n\nfunction fieldsFromMoveObject(obj: any, label: string): Record<string, any> {\n const content = obj.data?.content;\n if (!content || content.dataType !== \"moveObject\") {\n throw new Error(`Invalid ${label} object`);\n }\n return content.fields as Record<string, any>;\n}\n\nexport async function getSuiVaultInfo(\n client: SuiClient,\n cfg: SuiVaultConfig,\n): Promise<SuiVaultInfo> {\n const [vaultObj, depositStateObj] = await Promise.all([\n client.getObject({ id: cfg.vaultObjectId, options: { showContent: true } }),\n client.getObject({ id: cfg.depositSettlementStateId, options: { showContent: true } }),\n ]);\n\n const fields = fieldsFromMoveObject(vaultObj, \"vault\");\n let depositSettlementActive = false;\n try {\n const depositStateFields = fieldsFromMoveObject(depositStateObj, \"deposit settlement state\");\n depositSettlementActive = boolValue(depositStateFields.active);\n } catch {\n depositSettlementActive = false;\n }\n\n return {\n totalShares: BigInt(fields.total_shares ?? \"0\"),\n pendingDeposit: balanceValue(fields.pending_deposit),\n claimReserve: balanceValue(fields.claim_reserve),\n rcusdpCustody: balanceValue(fields.rcusdp_custody),\n pendingRedeemRcusdp: balanceValue(fields.pending_redeem_rcusdp),\n reserveFund: balanceValue(fields.reserve_fund),\n depositFeeBps: BigInt(fields.deposit_fee_bps ?? \"0\"),\n mgmtFeeBps: BigInt(fields.mgmt_fee_bps ?? \"0\"),\n redeemFeeBps: BigInt(fields.redeem_fee_bps ?? \"0\"),\n withdrawFeeBps: BigInt(fields.withdraw_fee_bps ?? \"0\"),\n cancelDepositFeeBps: BigInt(fields.cancel_deposit_fee_bps ?? \"0\"),\n instantRedeemFeeBps: BigInt(fields.instant_redeem_fee_bps ?? \"0\"),\n paused: boolValue(fields.paused),\n version: BigInt(fields.version ?? \"1\"),\n depositEnabled: !depositSettlementActive,\n instantRedeemEnabled: boolValue(fields.instant_redeem_enabled),\n withdrawRcusdpEnabled: boolValue(fields.withdraw_rcusdp_enabled),\n cancelDepositEnabled: boolValue(fields.cancel_deposit_enabled),\n redeemSettled: boolValue(fields.redeem_settled),\n raw: fields,\n };\n}\n","import { useTBookSuiVault } from \"../provider.js\";\n\nexport const useSuiVaultConfig = useTBookSuiVault;\n","import { useSuiClient } from \"@mysten/dapp-kit\";\nimport { useQuery, type UseQueryOptions } from \"@tanstack/react-query\";\nimport { suiVaultQueryKeys } from \"../query-keys.js\";\nimport { useTBookSuiVault } from \"../provider.js\";\nimport { getSuiVaultInfo, type SuiVaultInfo } from \"../vault-info.js\";\n\nexport interface UseSuiVaultInfoOptions\n extends Omit<UseQueryOptions<SuiVaultInfo>, \"queryKey\" | \"queryFn\"> {}\n\nexport function useSuiVaultInfo(options?: UseSuiVaultInfoOptions) {\n const client = useSuiClient();\n const config = useTBookSuiVault();\n\n return useQuery({\n queryKey: suiVaultQueryKeys.vaultInfo(config.network, config.vaultId),\n queryFn: () => getSuiVaultInfo(client, config.vault),\n staleTime: config.staleTimes.vaultInfo,\n refetchInterval: config.refetchIntervals.vaultInfo,\n enabled: Boolean(config.vault.vaultObjectId) && (options?.enabled ?? true),\n ...options,\n });\n}\n","import { useCurrentAccount, useSuiClient } from \"@mysten/dapp-kit\";\nimport { useQuery, type UseQueryOptions } from \"@tanstack/react-query\";\nimport { getUserPosition, type SuiVaultPosition } from \"@tbookdev/vault-sdk-sui\";\nimport { useTBookSuiVault } from \"../provider.js\";\nimport { suiVaultQueryKeys } from \"../query-keys.js\";\n\nexport interface UseSuiVaultBalancesOptions\n extends Omit<UseQueryOptions<SuiVaultPosition>, \"queryKey\" | \"queryFn\"> {}\n\nexport function useSuiVaultBalances(options?: UseSuiVaultBalancesOptions) {\n const account = useCurrentAccount();\n const client = useSuiClient();\n const config = useTBookSuiVault();\n\n return useQuery({\n queryKey: suiVaultQueryKeys.balances(config.network, config.vaultId, account?.address ?? \"\"),\n queryFn: async () => {\n if (!account?.address) {\n throw new Error(\"Wallet not connected\");\n }\n return getUserPosition(client, config.vault, account.address);\n },\n enabled: Boolean(account?.address) && (options?.enabled ?? true),\n staleTime: config.staleTimes.balances,\n refetchInterval: config.refetchIntervals.balances,\n ...options,\n });\n}\n","import { useCurrentAccount, useSuiClient } from \"@mysten/dapp-kit\";\nimport { useQuery, type UseQueryOptions } from \"@tanstack/react-query\";\nimport { getUserRecords, type SuiUserRecord } from \"@tbookdev/vault-sdk-sui\";\nimport { useTBookSuiVault } from \"../provider.js\";\nimport { suiVaultQueryKeys } from \"../query-keys.js\";\n\nexport interface UseSuiTransactionHistoryOptions\n extends Omit<UseQueryOptions<SuiUserRecord[]>, \"queryKey\" | \"queryFn\"> {}\n\nexport function useSuiTransactionHistory(options?: UseSuiTransactionHistoryOptions) {\n const account = useCurrentAccount();\n const client = useSuiClient();\n const config = useTBookSuiVault();\n\n return useQuery({\n queryKey: suiVaultQueryKeys.history(config.network, config.vaultId, account?.address ?? \"\"),\n queryFn: async () => {\n if (!account?.address) return [];\n return getUserRecords(client, config.vault, account.address);\n },\n enabled: Boolean(account?.address) && (options?.enabled ?? true),\n staleTime: config.staleTimes.history,\n refetchInterval: config.refetchIntervals.history,\n ...options,\n });\n}\n","import { useCurrentAccount, useSuiClient } from \"@mysten/dapp-kit\";\nimport type { CoinBalance } from \"@mysten/sui/client\";\nimport { useQuery, type UseQueryOptions } from \"@tanstack/react-query\";\nimport { USDC_DECIMALS } from \"@tbookdev/vault-sdk-sui\";\nimport { formatRawAmount } from \"../amount.js\";\nimport { useTBookSuiVault } from \"../provider.js\";\nimport { suiVaultQueryKeys } from \"../query-keys.js\";\n\nexport interface UseSuiUsdcBalanceOptions\n extends Omit<UseQueryOptions<CoinBalance>, \"queryKey\" | \"queryFn\"> {}\n\nexport function useSuiUsdcBalance(options?: UseSuiUsdcBalanceOptions) {\n const account = useCurrentAccount();\n const client = useSuiClient();\n const config = useTBookSuiVault();\n\n const query = useQuery({\n queryKey: suiVaultQueryKeys.usdcBalance(\n config.network,\n account?.address ?? \"\",\n config.vault.usdcType,\n ),\n queryFn: async () => {\n if (!account?.address) {\n throw new Error(\"Wallet not connected\");\n }\n return client.getBalance({ owner: account.address, coinType: config.vault.usdcType });\n },\n enabled: Boolean(account?.address) && (options?.enabled ?? true),\n staleTime: config.staleTimes.usdcBalance,\n refetchInterval: config.refetchIntervals.usdcBalance,\n ...options,\n });\n\n const balance = BigInt(query.data?.totalBalance ?? \"0\");\n return {\n ...query,\n balance,\n decimals: USDC_DECIMALS,\n formatted: formatRawAmount(balance, USDC_DECIMALS),\n };\n}\n","import { useCurrentAccount } from \"@mysten/dapp-kit\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { useTBookSuiVault } from \"../provider.js\";\nimport { suiVaultQueryKeys } from \"../query-keys.js\";\n\nexport function useRefreshSuiVaultData() {\n const account = useCurrentAccount();\n const queryClient = useQueryClient();\n const config = useTBookSuiVault();\n\n return async () => {\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: suiVaultQueryKeys.vault(config.network, config.vaultId),\n }),\n account?.address\n ? queryClient.invalidateQueries({\n queryKey: suiVaultQueryKeys.balances(config.network, config.vaultId, account.address),\n })\n : Promise.resolve(),\n account?.address\n ? queryClient.invalidateQueries({\n queryKey: suiVaultQueryKeys.history(config.network, config.vaultId, account.address),\n })\n : Promise.resolve(),\n account?.address\n ? queryClient.invalidateQueries({\n queryKey: suiVaultQueryKeys.usdcBalance(\n config.network,\n account.address,\n config.vault.usdcType,\n ),\n })\n : Promise.resolve(),\n ]);\n };\n}\n","import { useCurrentAccount, useSignAndExecuteTransaction, useSuiClient } from \"@mysten/dapp-kit\";\nimport { useMutation, type UseMutationResult } from \"@tanstack/react-query\";\nimport {\n buildCancelDepositTx,\n buildClaimTx,\n buildDepositTx,\n buildInstantRedeemTx,\n buildQueueRedeemTx,\n type SuiBuildResult,\n} from \"@tbookdev/vault-sdk-sui\";\nimport { formatRawAmount, toRawAmount } from \"../amount.js\";\nimport { TBookSuiVaultReactError, walletNotConnected } from \"../errors.js\";\nimport { TBookSuiGatewayApiClient } from \"../gateway-api.js\";\nimport { useTBookSuiVault } from \"../provider.js\";\nimport { useRefreshSuiVaultData } from \"./use-refresh-vault-data.js\";\nimport { useSuiVaultInfo } from \"./use-vault-info.js\";\n\nexport interface SuiDepositParams {\n /** Raw USDC units when bigint; decimal UI units when string/number. */\n amount: bigint | string | number;\n}\n\nexport interface SuiRedeemParams {\n /** Raw share units when bigint; decimal UI units when string/number. */\n shares: bigint | string | number;\n mode?: \"queued\" | \"instant\";\n /** Compatibility helper: USDC maps to queued, RCUSDP maps to instant. */\n tokenType?: \"USDC\" | \"RCUSDP\";\n}\n\nexport interface SuiCancelDepositParams {\n recordId: string | bigint;\n}\n\nexport interface SuiClaimParams {\n amount?: bigint | string | number;\n}\n\nexport interface SuiExecutionResult {\n digest?: string;\n rawEffects?: number[];\n effects?: string | { bcs?: string };\n}\n\ntype SignAndExecute = (input: { transaction: string }) => Promise<unknown>;\n\nfunction redeemMode(params: SuiRedeemParams): \"queued\" | \"instant\" {\n if (params.mode) return params.mode;\n return params.tokenType === \"RCUSDP\" ? \"instant\" : \"queued\";\n}\n\nasync function executeTx(\n signAndExecuteTransaction: SignAndExecute,\n result: SuiBuildResult,\n) : Promise<SuiExecutionResult> {\n return signAndExecuteTransaction({ transaction: result.txBytesBase64 }) as Promise<SuiExecutionResult>;\n}\n\nfunction gatewayClient(config: ReturnType<typeof useTBookSuiVault>): TBookSuiGatewayApiClient {\n if (!config.gatewayApiBaseUrl) {\n throw new TBookSuiVaultReactError(\n \"CONFIGURATION_ERROR\",\n \"gatewayApiBaseUrl is required for gateway-api transaction building\",\n );\n }\n return new TBookSuiGatewayApiClient({\n baseUrl: config.gatewayApiBaseUrl,\n apiKey: config.publishableKey,\n });\n}\n\nfunction assertVaultCanDeposit(info: ReturnType<typeof useSuiVaultInfo>[\"data\"] | undefined) {\n if (!info) return;\n if (info.paused) throw new TBookSuiVaultReactError(\"VAULT_PAUSED\", \"Vault is paused\");\n if (!info.depositEnabled) {\n throw new TBookSuiVaultReactError(\"SETTLEMENT_ACTIVE\", \"Deposits are temporarily unavailable\");\n }\n}\n\nfunction assertVaultCanRedeem(info: ReturnType<typeof useSuiVaultInfo>[\"data\"] | undefined) {\n if (!info) return;\n if (info.paused) throw new TBookSuiVaultReactError(\"VAULT_PAUSED\", \"Vault is paused\");\n}\n\nfunction assertVaultCanCancel(info: ReturnType<typeof useSuiVaultInfo>[\"data\"] | undefined) {\n if (!info) return;\n if (info.paused) throw new TBookSuiVaultReactError(\"VAULT_PAUSED\", \"Vault is paused\");\n if (!info.cancelDepositEnabled) {\n throw new TBookSuiVaultReactError(\"SETTLEMENT_ACTIVE\", \"Cancel deposit is unavailable\");\n }\n}\n\nexport function useSuiDeposit(): UseMutationResult<SuiExecutionResult, Error, SuiDepositParams> {\n const account = useCurrentAccount();\n const client = useSuiClient();\n const config = useTBookSuiVault();\n const { mutateAsync: signAndExecuteTransaction } = useSignAndExecuteTransaction();\n const refresh = useRefreshSuiVaultData();\n const { data: vaultInfo } = useSuiVaultInfo({ enabled: config.preflightChecks });\n\n return useMutation<SuiExecutionResult, Error, SuiDepositParams>({\n mutationFn: async ({ amount }: SuiDepositParams) => {\n if (!account?.address) throw walletNotConnected();\n if (config.preflightChecks) assertVaultCanDeposit(vaultInfo);\n\n const raw = toRawAmount(amount);\n if (config.txBuilderMode === \"gateway-api\") {\n const api = gatewayClient(config);\n const response = await api.buildDepositTx(config.vaultId, {\n user: account.address,\n amount: formatRawAmount(raw),\n });\n const tx = await signAndExecuteTransaction({ transaction: response.transaction.data }) as unknown as SuiExecutionResult;\n if (response.intentId && tx.digest) {\n await api.confirmIntent(response.intentId, tx.digest);\n }\n return tx;\n }\n\n const result =\n config.txBuilderMode === \"custom\"\n ? await config.customTxBuilder?.buildDepositTx?.({ sender: account.address, amount: raw })\n : await buildDepositTx(client, config.vault, { sender: account.address, amount: raw });\n if (!result) {\n throw new TBookSuiVaultReactError(\"UNSUPPORTED_TX_BUILDER\", \"Deposit builder is not configured\");\n }\n return executeTx(signAndExecuteTransaction, result);\n },\n onSuccess: refresh,\n });\n}\n\nexport function useSuiRedeem(): UseMutationResult<SuiExecutionResult, Error, SuiRedeemParams> {\n const account = useCurrentAccount();\n const client = useSuiClient();\n const config = useTBookSuiVault();\n const { mutateAsync: signAndExecuteTransaction } = useSignAndExecuteTransaction();\n const refresh = useRefreshSuiVaultData();\n const { data: vaultInfo } = useSuiVaultInfo({ enabled: config.preflightChecks });\n\n return useMutation<SuiExecutionResult, Error, SuiRedeemParams>({\n mutationFn: async (params: SuiRedeemParams) => {\n if (!account?.address) throw walletNotConnected();\n if (config.preflightChecks) assertVaultCanRedeem(vaultInfo);\n\n const mode = redeemMode(params);\n const shares = toRawAmount(params.shares);\n if (config.txBuilderMode === \"gateway-api\") {\n const api = gatewayClient(config);\n const response = await api.buildRedeemTx(config.vaultId, {\n user: account.address,\n shares: formatRawAmount(shares),\n mode,\n });\n const tx = await signAndExecuteTransaction({ transaction: response.transaction.data }) as unknown as SuiExecutionResult;\n if (response.intentId && tx.digest) {\n await api.confirmIntent(response.intentId, tx.digest);\n }\n return tx;\n }\n\n const result =\n config.txBuilderMode === \"custom\"\n ? mode === \"instant\"\n ? await config.customTxBuilder?.buildInstantRedeemTx?.({ sender: account.address, shares })\n : await config.customTxBuilder?.buildQueueRedeemTx?.({ sender: account.address, shares })\n : mode === \"instant\"\n ? await buildInstantRedeemTx(client, config.vault, { sender: account.address, shares })\n : await buildQueueRedeemTx(client, config.vault, { sender: account.address, shares });\n if (!result) {\n throw new TBookSuiVaultReactError(\"UNSUPPORTED_TX_BUILDER\", \"Redeem builder is not configured\");\n }\n return executeTx(signAndExecuteTransaction, result);\n },\n onSuccess: refresh,\n });\n}\n\nexport function useSuiClaim(): UseMutationResult<SuiExecutionResult, Error, SuiClaimParams | undefined> {\n const account = useCurrentAccount();\n const client = useSuiClient();\n const config = useTBookSuiVault();\n const { mutateAsync: signAndExecuteTransaction } = useSignAndExecuteTransaction();\n const refresh = useRefreshSuiVaultData();\n\n return useMutation<SuiExecutionResult, Error, SuiClaimParams | undefined>({\n mutationFn: async (params?: SuiClaimParams) => {\n if (!account?.address) throw walletNotConnected();\n\n const amount = params?.amount === undefined ? undefined : toRawAmount(params.amount);\n if (config.txBuilderMode === \"gateway-api\") {\n const api = gatewayClient(config);\n const response = await api.buildClaimTx(config.vaultId, { user: account.address });\n const tx = await signAndExecuteTransaction({ transaction: response.transaction.data }) as unknown as SuiExecutionResult;\n if (response.intentId && tx.digest) {\n await api.confirmIntent(response.intentId, tx.digest);\n }\n return tx;\n }\n\n const result =\n config.txBuilderMode === \"custom\"\n ? await config.customTxBuilder?.buildClaimTx?.({ sender: account.address, amount })\n : await buildClaimTx(client, config.vault, { sender: account.address, amount });\n if (!result) {\n throw new TBookSuiVaultReactError(\"UNSUPPORTED_TX_BUILDER\", \"Claim builder is not configured\");\n }\n return executeTx(signAndExecuteTransaction, result);\n },\n onSuccess: refresh,\n });\n}\n\nexport function useSuiCancelDeposit(): UseMutationResult<SuiExecutionResult, Error, SuiCancelDepositParams> {\n const account = useCurrentAccount();\n const client = useSuiClient();\n const config = useTBookSuiVault();\n const { mutateAsync: signAndExecuteTransaction } = useSignAndExecuteTransaction();\n const refresh = useRefreshSuiVaultData();\n const { data: vaultInfo } = useSuiVaultInfo({ enabled: config.preflightChecks });\n\n return useMutation<SuiExecutionResult, Error, SuiCancelDepositParams>({\n mutationFn: async ({ recordId }: SuiCancelDepositParams) => {\n if (!account?.address) throw walletNotConnected();\n if (config.preflightChecks) assertVaultCanCancel(vaultInfo);\n\n if (config.txBuilderMode === \"gateway-api\") {\n const api = gatewayClient(config);\n const response = await api.buildCancelDepositTx(config.vaultId, {\n user: account.address,\n recordId: String(recordId),\n });\n const tx = await signAndExecuteTransaction({ transaction: response.transaction.data }) as unknown as SuiExecutionResult;\n if (response.intentId && tx.digest) {\n await api.confirmIntent(response.intentId, tx.digest);\n }\n return tx;\n }\n\n const result =\n config.txBuilderMode === \"custom\"\n ? await config.customTxBuilder?.buildCancelDepositTx?.({ sender: account.address, recordId })\n : await buildCancelDepositTx(client, config.vault, { sender: account.address, recordId });\n if (!result) {\n throw new TBookSuiVaultReactError(\"UNSUPPORTED_TX_BUILDER\", \"Cancel deposit builder is not configured\");\n }\n return executeTx(signAndExecuteTransaction, result);\n },\n onSuccess: refresh,\n });\n}\n"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { SuiNetwork, SuiBuildResult, SuiVaultConfig, SuiVaultPosition, SuiUserRecord } from '@tbookdev/vault-sdk-sui';
|
|
4
|
+
export { SuiBuildResult, SuiNetwork, SuiUserRecord, SuiVaultConfig, SuiVaultPosition, SuiVaultState } from '@tbookdev/vault-sdk-sui';
|
|
5
|
+
import { SuiClient, CoinBalance } from '@mysten/sui/client';
|
|
6
|
+
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
7
|
+
import { UseQueryOptions, UseMutationResult } from '@tanstack/react-query';
|
|
8
|
+
|
|
9
|
+
type SuiVaultTxBuilderMode = "local-sdk" | "gateway-api" | "custom";
|
|
10
|
+
interface TBookSuiVaultStaleTimes {
|
|
11
|
+
vaultInfo: number;
|
|
12
|
+
balances: number;
|
|
13
|
+
history: number;
|
|
14
|
+
usdcBalance: number;
|
|
15
|
+
}
|
|
16
|
+
interface TBookSuiVaultRefetchIntervals {
|
|
17
|
+
vaultInfo: number | false;
|
|
18
|
+
balances: number | false;
|
|
19
|
+
history: number | false;
|
|
20
|
+
usdcBalance: number | false;
|
|
21
|
+
}
|
|
22
|
+
interface TBookSuiCustomTxBuilder {
|
|
23
|
+
buildDepositTx?: (params: {
|
|
24
|
+
sender: string;
|
|
25
|
+
amount: bigint;
|
|
26
|
+
}) => Promise<SuiBuildResult>;
|
|
27
|
+
buildQueueRedeemTx?: (params: {
|
|
28
|
+
sender: string;
|
|
29
|
+
shares: bigint;
|
|
30
|
+
}) => Promise<SuiBuildResult>;
|
|
31
|
+
buildInstantRedeemTx?: (params: {
|
|
32
|
+
sender: string;
|
|
33
|
+
shares: bigint;
|
|
34
|
+
}) => Promise<SuiBuildResult>;
|
|
35
|
+
buildClaimTx?: (params: {
|
|
36
|
+
sender: string;
|
|
37
|
+
amount?: bigint;
|
|
38
|
+
}) => Promise<SuiBuildResult>;
|
|
39
|
+
buildCancelDepositTx?: (params: {
|
|
40
|
+
sender: string;
|
|
41
|
+
recordId: string | bigint;
|
|
42
|
+
}) => Promise<SuiBuildResult>;
|
|
43
|
+
}
|
|
44
|
+
interface CreateSuiVaultConfigInput {
|
|
45
|
+
network: SuiNetwork;
|
|
46
|
+
vaultId?: string;
|
|
47
|
+
txBuilderMode?: SuiVaultTxBuilderMode;
|
|
48
|
+
gatewayApiBaseUrl?: string;
|
|
49
|
+
publishableKey?: string;
|
|
50
|
+
customTxBuilder?: TBookSuiCustomTxBuilder;
|
|
51
|
+
staleTimes?: Partial<TBookSuiVaultStaleTimes>;
|
|
52
|
+
refetchIntervals?: Partial<TBookSuiVaultRefetchIntervals>;
|
|
53
|
+
preflightChecks?: boolean;
|
|
54
|
+
}
|
|
55
|
+
interface TBookSuiVaultConfig {
|
|
56
|
+
network: SuiNetwork;
|
|
57
|
+
vaultId: string;
|
|
58
|
+
vault: SuiVaultConfig;
|
|
59
|
+
txBuilderMode: SuiVaultTxBuilderMode;
|
|
60
|
+
gatewayApiBaseUrl?: string;
|
|
61
|
+
publishableKey?: string;
|
|
62
|
+
customTxBuilder?: TBookSuiCustomTxBuilder;
|
|
63
|
+
staleTimes: TBookSuiVaultStaleTimes;
|
|
64
|
+
refetchIntervals: TBookSuiVaultRefetchIntervals;
|
|
65
|
+
preflightChecks: boolean;
|
|
66
|
+
}
|
|
67
|
+
declare const DEFAULT_SUI_VAULT_ID = "rcusdp-sui";
|
|
68
|
+
declare const SUI_TESTNET_GATEWAY_API_BASE_URL = "https://1cm2fjkq6k.execute-api.ap-southeast-1.amazonaws.com/v1";
|
|
69
|
+
declare function createSuiVaultConfig(input: CreateSuiVaultConfigInput): TBookSuiVaultConfig;
|
|
70
|
+
|
|
71
|
+
interface TBookSuiVaultProviderProps extends CreateSuiVaultConfigInput {
|
|
72
|
+
children: ReactNode;
|
|
73
|
+
}
|
|
74
|
+
declare function TBookSuiVaultProvider({ children, ...input }: TBookSuiVaultProviderProps): react_jsx_runtime.JSX.Element;
|
|
75
|
+
declare function useTBookSuiVault(): TBookSuiVaultConfig;
|
|
76
|
+
|
|
77
|
+
/** Convert a decimal UI amount into raw integer units without float drift. */
|
|
78
|
+
declare function parseDecimalAmount(value: string | number, decimals?: number): bigint;
|
|
79
|
+
/** Convert raw integer units into a compact decimal string. */
|
|
80
|
+
declare function formatRawAmount(value: bigint | string | number, decimals?: number): string;
|
|
81
|
+
/** Accept raw bigint or decimal input and return raw integer units. */
|
|
82
|
+
declare function toRawAmount(value: bigint | string | number, decimals?: number): bigint;
|
|
83
|
+
|
|
84
|
+
declare const suiVaultQueryKeys: {
|
|
85
|
+
all: readonly ["tbook-sui"];
|
|
86
|
+
vault: (network: SuiNetwork, vaultId: string) => readonly ["tbook-sui", "vault", SuiNetwork, string];
|
|
87
|
+
vaultInfo: (network: SuiNetwork, vaultId: string) => readonly ["tbook-sui", "vault", SuiNetwork, string, "info"];
|
|
88
|
+
balances: (network: SuiNetwork, vaultId: string, address: string) => readonly ["tbook-sui", "vault", SuiNetwork, string, "balances", string];
|
|
89
|
+
history: (network: SuiNetwork, vaultId: string, address: string) => readonly ["tbook-sui", "vault", SuiNetwork, string, "history", string];
|
|
90
|
+
usdcBalance: (network: SuiNetwork, address: string, coinType: string) => readonly ["tbook-sui", "wallet", SuiNetwork, string, "usdc", string];
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
type TBookSuiVaultReactErrorCode = "WALLET_NOT_CONNECTED" | "CONFIGURATION_ERROR" | "VAULT_PAUSED" | "SETTLEMENT_ACTIVE" | "UNSUPPORTED_TX_BUILDER" | "API_ERROR";
|
|
94
|
+
declare class TBookSuiVaultReactError extends Error {
|
|
95
|
+
readonly code: TBookSuiVaultReactErrorCode;
|
|
96
|
+
constructor(code: TBookSuiVaultReactErrorCode, message: string);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
type Fetcher = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
|
|
100
|
+
type SuiGatewayTxType = "deposit" | "redeem" | "claim" | "cancel_deposit";
|
|
101
|
+
type SuiGatewayTxFormat = "sui:tx-bytes-base64";
|
|
102
|
+
interface SuiGatewayTransactionEnvelope {
|
|
103
|
+
format: SuiGatewayTxFormat;
|
|
104
|
+
data: string;
|
|
105
|
+
}
|
|
106
|
+
interface SuiGatewayBuildTxResponse {
|
|
107
|
+
intentId?: string;
|
|
108
|
+
vaultId: string;
|
|
109
|
+
type: SuiGatewayTxType;
|
|
110
|
+
chain: "sui";
|
|
111
|
+
rail: "direct";
|
|
112
|
+
transaction: SuiGatewayTransactionEnvelope;
|
|
113
|
+
summary?: Record<string, unknown>;
|
|
114
|
+
message: string;
|
|
115
|
+
expiresAt: string;
|
|
116
|
+
}
|
|
117
|
+
interface TBookSuiGatewayApiClientOptions {
|
|
118
|
+
baseUrl: string;
|
|
119
|
+
apiKey?: string;
|
|
120
|
+
fetcher?: Fetcher;
|
|
121
|
+
}
|
|
122
|
+
declare class TBookSuiGatewayApiClient {
|
|
123
|
+
private readonly baseUrl;
|
|
124
|
+
private readonly apiKey?;
|
|
125
|
+
private readonly fetcher;
|
|
126
|
+
constructor(options: TBookSuiGatewayApiClientOptions);
|
|
127
|
+
buildDepositTx(vaultId: string, body: {
|
|
128
|
+
user: string;
|
|
129
|
+
amount: string;
|
|
130
|
+
}): Promise<SuiGatewayBuildTxResponse>;
|
|
131
|
+
buildRedeemTx(vaultId: string, body: {
|
|
132
|
+
user: string;
|
|
133
|
+
shares: string;
|
|
134
|
+
mode?: "queued" | "instant";
|
|
135
|
+
}): Promise<SuiGatewayBuildTxResponse>;
|
|
136
|
+
buildClaimTx(vaultId: string, body: {
|
|
137
|
+
user: string;
|
|
138
|
+
}): Promise<SuiGatewayBuildTxResponse>;
|
|
139
|
+
buildCancelDepositTx(vaultId: string, body: {
|
|
140
|
+
user: string;
|
|
141
|
+
recordId: string;
|
|
142
|
+
}): Promise<SuiGatewayBuildTxResponse>;
|
|
143
|
+
confirmIntent(intentId: string, digest: string): Promise<{
|
|
144
|
+
intentId: string;
|
|
145
|
+
status: string;
|
|
146
|
+
}>;
|
|
147
|
+
private post;
|
|
148
|
+
private headers;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
interface SuiVaultInfo {
|
|
152
|
+
totalShares: bigint;
|
|
153
|
+
pendingDeposit: bigint;
|
|
154
|
+
claimReserve: bigint;
|
|
155
|
+
rcusdpCustody: bigint;
|
|
156
|
+
pendingRedeemRcusdp: bigint;
|
|
157
|
+
reserveFund: bigint;
|
|
158
|
+
depositFeeBps: bigint;
|
|
159
|
+
mgmtFeeBps: bigint;
|
|
160
|
+
redeemFeeBps: bigint;
|
|
161
|
+
withdrawFeeBps: bigint;
|
|
162
|
+
cancelDepositFeeBps: bigint;
|
|
163
|
+
instantRedeemFeeBps: bigint;
|
|
164
|
+
paused: boolean;
|
|
165
|
+
version: bigint;
|
|
166
|
+
depositEnabled: boolean;
|
|
167
|
+
instantRedeemEnabled: boolean;
|
|
168
|
+
withdrawRcusdpEnabled: boolean;
|
|
169
|
+
cancelDepositEnabled: boolean;
|
|
170
|
+
redeemSettled: boolean;
|
|
171
|
+
raw: Record<string, unknown>;
|
|
172
|
+
}
|
|
173
|
+
declare function getSuiVaultInfo(client: SuiClient, cfg: SuiVaultConfig): Promise<SuiVaultInfo>;
|
|
174
|
+
|
|
175
|
+
declare const useSuiVaultConfig: typeof useTBookSuiVault;
|
|
176
|
+
|
|
177
|
+
interface UseSuiVaultInfoOptions extends Omit<UseQueryOptions<SuiVaultInfo>, "queryKey" | "queryFn"> {
|
|
178
|
+
}
|
|
179
|
+
declare function useSuiVaultInfo(options?: UseSuiVaultInfoOptions): _tanstack_react_query.UseQueryResult<SuiVaultInfo, Error>;
|
|
180
|
+
|
|
181
|
+
interface UseSuiVaultBalancesOptions extends Omit<UseQueryOptions<SuiVaultPosition>, "queryKey" | "queryFn"> {
|
|
182
|
+
}
|
|
183
|
+
declare function useSuiVaultBalances(options?: UseSuiVaultBalancesOptions): _tanstack_react_query.UseQueryResult<SuiVaultPosition, Error>;
|
|
184
|
+
|
|
185
|
+
interface UseSuiTransactionHistoryOptions extends Omit<UseQueryOptions<SuiUserRecord[]>, "queryKey" | "queryFn"> {
|
|
186
|
+
}
|
|
187
|
+
declare function useSuiTransactionHistory(options?: UseSuiTransactionHistoryOptions): _tanstack_react_query.UseQueryResult<SuiUserRecord[], Error>;
|
|
188
|
+
|
|
189
|
+
interface UseSuiUsdcBalanceOptions extends Omit<UseQueryOptions<CoinBalance>, "queryKey" | "queryFn"> {
|
|
190
|
+
}
|
|
191
|
+
declare function useSuiUsdcBalance(options?: UseSuiUsdcBalanceOptions): {
|
|
192
|
+
balance: bigint;
|
|
193
|
+
decimals: number;
|
|
194
|
+
formatted: string;
|
|
195
|
+
data: CoinBalance;
|
|
196
|
+
error: Error;
|
|
197
|
+
isError: true;
|
|
198
|
+
isPending: false;
|
|
199
|
+
isLoading: false;
|
|
200
|
+
isLoadingError: false;
|
|
201
|
+
isRefetchError: true;
|
|
202
|
+
isSuccess: false;
|
|
203
|
+
isPlaceholderData: false;
|
|
204
|
+
status: "error";
|
|
205
|
+
dataUpdatedAt: number;
|
|
206
|
+
errorUpdatedAt: number;
|
|
207
|
+
failureCount: number;
|
|
208
|
+
failureReason: Error | null;
|
|
209
|
+
errorUpdateCount: number;
|
|
210
|
+
isFetched: boolean;
|
|
211
|
+
isFetchedAfterMount: boolean;
|
|
212
|
+
isFetching: boolean;
|
|
213
|
+
isInitialLoading: boolean;
|
|
214
|
+
isPaused: boolean;
|
|
215
|
+
isRefetching: boolean;
|
|
216
|
+
isStale: boolean;
|
|
217
|
+
isEnabled: boolean;
|
|
218
|
+
refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<CoinBalance, Error>>;
|
|
219
|
+
fetchStatus: _tanstack_react_query.FetchStatus;
|
|
220
|
+
promise: Promise<CoinBalance>;
|
|
221
|
+
} | {
|
|
222
|
+
balance: bigint;
|
|
223
|
+
decimals: number;
|
|
224
|
+
formatted: string;
|
|
225
|
+
data: CoinBalance;
|
|
226
|
+
error: null;
|
|
227
|
+
isError: false;
|
|
228
|
+
isPending: false;
|
|
229
|
+
isLoading: false;
|
|
230
|
+
isLoadingError: false;
|
|
231
|
+
isRefetchError: false;
|
|
232
|
+
isSuccess: true;
|
|
233
|
+
isPlaceholderData: false;
|
|
234
|
+
status: "success";
|
|
235
|
+
dataUpdatedAt: number;
|
|
236
|
+
errorUpdatedAt: number;
|
|
237
|
+
failureCount: number;
|
|
238
|
+
failureReason: Error | null;
|
|
239
|
+
errorUpdateCount: number;
|
|
240
|
+
isFetched: boolean;
|
|
241
|
+
isFetchedAfterMount: boolean;
|
|
242
|
+
isFetching: boolean;
|
|
243
|
+
isInitialLoading: boolean;
|
|
244
|
+
isPaused: boolean;
|
|
245
|
+
isRefetching: boolean;
|
|
246
|
+
isStale: boolean;
|
|
247
|
+
isEnabled: boolean;
|
|
248
|
+
refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<CoinBalance, Error>>;
|
|
249
|
+
fetchStatus: _tanstack_react_query.FetchStatus;
|
|
250
|
+
promise: Promise<CoinBalance>;
|
|
251
|
+
} | {
|
|
252
|
+
balance: bigint;
|
|
253
|
+
decimals: number;
|
|
254
|
+
formatted: string;
|
|
255
|
+
data: undefined;
|
|
256
|
+
error: Error;
|
|
257
|
+
isError: true;
|
|
258
|
+
isPending: false;
|
|
259
|
+
isLoading: false;
|
|
260
|
+
isLoadingError: true;
|
|
261
|
+
isRefetchError: false;
|
|
262
|
+
isSuccess: false;
|
|
263
|
+
isPlaceholderData: false;
|
|
264
|
+
status: "error";
|
|
265
|
+
dataUpdatedAt: number;
|
|
266
|
+
errorUpdatedAt: number;
|
|
267
|
+
failureCount: number;
|
|
268
|
+
failureReason: Error | null;
|
|
269
|
+
errorUpdateCount: number;
|
|
270
|
+
isFetched: boolean;
|
|
271
|
+
isFetchedAfterMount: boolean;
|
|
272
|
+
isFetching: boolean;
|
|
273
|
+
isInitialLoading: boolean;
|
|
274
|
+
isPaused: boolean;
|
|
275
|
+
isRefetching: boolean;
|
|
276
|
+
isStale: boolean;
|
|
277
|
+
isEnabled: boolean;
|
|
278
|
+
refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<CoinBalance, Error>>;
|
|
279
|
+
fetchStatus: _tanstack_react_query.FetchStatus;
|
|
280
|
+
promise: Promise<CoinBalance>;
|
|
281
|
+
} | {
|
|
282
|
+
balance: bigint;
|
|
283
|
+
decimals: number;
|
|
284
|
+
formatted: string;
|
|
285
|
+
data: undefined;
|
|
286
|
+
error: null;
|
|
287
|
+
isError: false;
|
|
288
|
+
isPending: true;
|
|
289
|
+
isLoading: true;
|
|
290
|
+
isLoadingError: false;
|
|
291
|
+
isRefetchError: false;
|
|
292
|
+
isSuccess: false;
|
|
293
|
+
isPlaceholderData: false;
|
|
294
|
+
status: "pending";
|
|
295
|
+
dataUpdatedAt: number;
|
|
296
|
+
errorUpdatedAt: number;
|
|
297
|
+
failureCount: number;
|
|
298
|
+
failureReason: Error | null;
|
|
299
|
+
errorUpdateCount: number;
|
|
300
|
+
isFetched: boolean;
|
|
301
|
+
isFetchedAfterMount: boolean;
|
|
302
|
+
isFetching: boolean;
|
|
303
|
+
isInitialLoading: boolean;
|
|
304
|
+
isPaused: boolean;
|
|
305
|
+
isRefetching: boolean;
|
|
306
|
+
isStale: boolean;
|
|
307
|
+
isEnabled: boolean;
|
|
308
|
+
refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<CoinBalance, Error>>;
|
|
309
|
+
fetchStatus: _tanstack_react_query.FetchStatus;
|
|
310
|
+
promise: Promise<CoinBalance>;
|
|
311
|
+
} | {
|
|
312
|
+
balance: bigint;
|
|
313
|
+
decimals: number;
|
|
314
|
+
formatted: string;
|
|
315
|
+
data: undefined;
|
|
316
|
+
error: null;
|
|
317
|
+
isError: false;
|
|
318
|
+
isPending: true;
|
|
319
|
+
isLoadingError: false;
|
|
320
|
+
isRefetchError: false;
|
|
321
|
+
isSuccess: false;
|
|
322
|
+
isPlaceholderData: false;
|
|
323
|
+
status: "pending";
|
|
324
|
+
dataUpdatedAt: number;
|
|
325
|
+
errorUpdatedAt: number;
|
|
326
|
+
failureCount: number;
|
|
327
|
+
failureReason: Error | null;
|
|
328
|
+
errorUpdateCount: number;
|
|
329
|
+
isFetched: boolean;
|
|
330
|
+
isFetchedAfterMount: boolean;
|
|
331
|
+
isFetching: boolean;
|
|
332
|
+
isLoading: boolean;
|
|
333
|
+
isInitialLoading: boolean;
|
|
334
|
+
isPaused: boolean;
|
|
335
|
+
isRefetching: boolean;
|
|
336
|
+
isStale: boolean;
|
|
337
|
+
isEnabled: boolean;
|
|
338
|
+
refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<CoinBalance, Error>>;
|
|
339
|
+
fetchStatus: _tanstack_react_query.FetchStatus;
|
|
340
|
+
promise: Promise<CoinBalance>;
|
|
341
|
+
} | {
|
|
342
|
+
balance: bigint;
|
|
343
|
+
decimals: number;
|
|
344
|
+
formatted: string;
|
|
345
|
+
data: CoinBalance;
|
|
346
|
+
isError: false;
|
|
347
|
+
error: null;
|
|
348
|
+
isPending: false;
|
|
349
|
+
isLoading: false;
|
|
350
|
+
isLoadingError: false;
|
|
351
|
+
isRefetchError: false;
|
|
352
|
+
isSuccess: true;
|
|
353
|
+
isPlaceholderData: true;
|
|
354
|
+
status: "success";
|
|
355
|
+
dataUpdatedAt: number;
|
|
356
|
+
errorUpdatedAt: number;
|
|
357
|
+
failureCount: number;
|
|
358
|
+
failureReason: Error | null;
|
|
359
|
+
errorUpdateCount: number;
|
|
360
|
+
isFetched: boolean;
|
|
361
|
+
isFetchedAfterMount: boolean;
|
|
362
|
+
isFetching: boolean;
|
|
363
|
+
isInitialLoading: boolean;
|
|
364
|
+
isPaused: boolean;
|
|
365
|
+
isRefetching: boolean;
|
|
366
|
+
isStale: boolean;
|
|
367
|
+
isEnabled: boolean;
|
|
368
|
+
refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<CoinBalance, Error>>;
|
|
369
|
+
fetchStatus: _tanstack_react_query.FetchStatus;
|
|
370
|
+
promise: Promise<CoinBalance>;
|
|
371
|
+
};
|
|
372
|
+
|
|
373
|
+
declare function useRefreshSuiVaultData(): () => Promise<void>;
|
|
374
|
+
|
|
375
|
+
interface SuiDepositParams {
|
|
376
|
+
/** Raw USDC units when bigint; decimal UI units when string/number. */
|
|
377
|
+
amount: bigint | string | number;
|
|
378
|
+
}
|
|
379
|
+
interface SuiRedeemParams {
|
|
380
|
+
/** Raw share units when bigint; decimal UI units when string/number. */
|
|
381
|
+
shares: bigint | string | number;
|
|
382
|
+
mode?: "queued" | "instant";
|
|
383
|
+
/** Compatibility helper: USDC maps to queued, RCUSDP maps to instant. */
|
|
384
|
+
tokenType?: "USDC" | "RCUSDP";
|
|
385
|
+
}
|
|
386
|
+
interface SuiCancelDepositParams {
|
|
387
|
+
recordId: string | bigint;
|
|
388
|
+
}
|
|
389
|
+
interface SuiClaimParams {
|
|
390
|
+
amount?: bigint | string | number;
|
|
391
|
+
}
|
|
392
|
+
interface SuiExecutionResult {
|
|
393
|
+
digest?: string;
|
|
394
|
+
rawEffects?: number[];
|
|
395
|
+
effects?: string | {
|
|
396
|
+
bcs?: string;
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
declare function useSuiDeposit(): UseMutationResult<SuiExecutionResult, Error, SuiDepositParams>;
|
|
400
|
+
declare function useSuiRedeem(): UseMutationResult<SuiExecutionResult, Error, SuiRedeemParams>;
|
|
401
|
+
declare function useSuiClaim(): UseMutationResult<SuiExecutionResult, Error, SuiClaimParams | undefined>;
|
|
402
|
+
declare function useSuiCancelDeposit(): UseMutationResult<SuiExecutionResult, Error, SuiCancelDepositParams>;
|
|
403
|
+
|
|
404
|
+
export { type CreateSuiVaultConfigInput, DEFAULT_SUI_VAULT_ID, SUI_TESTNET_GATEWAY_API_BASE_URL, type SuiCancelDepositParams, type SuiClaimParams, type SuiDepositParams, type SuiExecutionResult, type SuiGatewayBuildTxResponse, type SuiGatewayTransactionEnvelope, type SuiGatewayTxFormat, type SuiGatewayTxType, type SuiRedeemParams, type SuiVaultInfo, type SuiVaultTxBuilderMode, type TBookSuiCustomTxBuilder, TBookSuiGatewayApiClient, type TBookSuiGatewayApiClientOptions, type TBookSuiVaultConfig, TBookSuiVaultProvider, type TBookSuiVaultProviderProps, TBookSuiVaultReactError, type TBookSuiVaultReactErrorCode, type TBookSuiVaultRefetchIntervals, type TBookSuiVaultStaleTimes, type UseSuiTransactionHistoryOptions, type UseSuiUsdcBalanceOptions, type UseSuiVaultBalancesOptions, type UseSuiVaultInfoOptions, createSuiVaultConfig, formatRawAmount, getSuiVaultInfo, parseDecimalAmount, suiVaultQueryKeys, toRawAmount, useRefreshSuiVaultData, useSuiCancelDeposit, useSuiClaim, useSuiDeposit, useSuiRedeem, useSuiTransactionHistory, useSuiUsdcBalance, useSuiVaultBalances, useSuiVaultConfig, useSuiVaultInfo, useTBookSuiVault };
|