@xyo-network/react-chain-provider 1.20.24 → 1.20.25

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.
@@ -1,4 +1,7 @@
1
- import type { GatewayProviderProps } from '@xyo-network/react-chain-client';
2
- import React from 'react';
3
- export declare const GatewayProvider: React.FC<GatewayProviderProps>;
1
+ /**
2
+ * @deprecated Moved to `@xyo-network/react-chain-client`. Import
3
+ * `GatewayProvider` from there instead. This re-export exists only for
4
+ * backward compatibility and will be removed in a future release.
5
+ */
6
+ export { GatewayProvider } from '@xyo-network/react-chain-client';
4
7
  //# sourceMappingURL=Provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/gateway/Provider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAuB,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAGhG,OAAO,KAAkB,MAAM,OAAO,CAAA;AAKtC,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAiE1D,CAAA"}
1
+ {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/gateway/Provider.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA"}
@@ -1,3 +1,2 @@
1
- export * from './context.ts';
2
1
  export * from './Provider.tsx';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/contexts/gateway/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/contexts/gateway/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA"}
@@ -1,40 +1,55 @@
1
- import type { AccountInstance } from '@xyo-network/sdk-js';
1
+ import type { RpcTransport, XyoSignerRpcSchemas } from '@xyo-network/xl1-sdk';
2
2
  import type { PropsWithChildren } from 'react';
3
3
  import React from 'react';
4
4
  export interface InPageGatewaysProviderProps extends PropsWithChildren {
5
- account?: AccountInstance;
5
+ signerTransport?: RpcTransport<XyoSignerRpcSchemas>;
6
6
  }
7
7
  /**
8
- * Publishes an `InPageGatewaysContext` holding one in-page gateway per
9
- * network in `DefaultNetworks`. Unlike `WalletGatewayProvider`, gateways
10
- * here are constructed directly in the page (via `buildGateway`) against
11
- * each network's RPC endpoint no browser wallet extension is required.
8
+ * Publishes a keyed map of in-page gateways — one per network in
9
+ * `DefaultNetworks` under the narrow `InPageGatewaysContext`.
10
+ *
11
+ * This provider is deliberately *not* a direct publisher of the shared
12
+ * `GatewayContext` that `useProvidedGateway` reads. Its consumer is the
13
+ * wrapping `GatewayProvider` in this same package, which picks the
14
+ * `gatewayName` the consumer asked for out of this map, adapts it into
15
+ * the single-gateway `GatewayContextState` shape, and then publishes *that*
16
+ * to the shared context. Splitting the work this way lets one
17
+ * `InPageGatewaysProvider` near the root build every network's gateway
18
+ * once, while many `GatewayProvider` instances deeper in the tree each
19
+ * expose whichever gateway their subtree cares about.
20
+ *
21
+ * Unlike `WalletGatewayProvider`, gateways here are constructed directly
22
+ * in the page (via `buildGateway`) against each network's RPC endpoint
23
+ * — no browser wallet extension is required. `signerTransport` switches
24
+ * between viewer (read-only) and runner (can sign/send) locators; supply
25
+ * it only when the app needs to sign.
12
26
  *
13
27
  * Behavior:
14
- * - On mount, and whenever `account` changes, `buildGateway` is called in
15
- * parallel for every network in `DefaultNetworks` via
28
+ * - On mount, and whenever `signerTransport` changes, `buildGateway` is
29
+ * called in parallel for every network in `DefaultNetworks` via
16
30
  * `Promise.allSettled`. Networks that resolve populate `gateways[id]`;
17
31
  * networks that reject populate `errors[id]`. One failed network does
18
32
  * not block the others.
19
- * - If `account` is provided, gateways are built with a remote *runner*
20
- * locator (can sign/send), otherwise with a remote *viewer* locator
21
- * (read-only).
22
- * - When `account` changes identity mid-life, the provider clears all
23
- * cached gateways and errors synchronously during render (via
24
- * `previousAccount` state) so consumers never see gateways bound to the
25
- * previous account, then rebuilds in the effect.
33
+ * - If `signerTransport` is provided, gateways are built with a remote
34
+ * *runner* locator, otherwise with a remote *viewer* locator.
35
+ * - When `signerTransport` changes identity mid-life, the provider clears
36
+ * all cached gateways and errors synchronously during render (via
37
+ * `previousSignerTransport` state) so consumers never see gateways
38
+ * bound to the previous transport, then rebuilds in the effect.
26
39
  * - State updates from the rebuild are wrapped in `startTransition` so a
27
40
  * slow network doesn't stall higher-priority UI updates.
28
41
  * - A `cancelled` flag in the effect's cleanup discards results from a
29
- * prior `account` once a new one is in flight.
42
+ * prior `signerTransport` once a new one is in flight.
30
43
  *
31
- * Published `InPageGatewaysState`:
44
+ * Published `InPageGatewaysState` (narrower than `GatewayContextState` —
45
+ * this is an internal handoff shape, not the cross-publisher surface):
32
46
  * - `gateways` — `Partial<Record<GatewayName, ContextGatewayType>>`. Keys
33
47
  * are only present for networks that built successfully.
34
48
  * - `errors` — `Partial<Record<GatewayName, Error>>`. Per-network build
35
49
  * failures, keyed by `GatewayName`.
36
50
  * - `clearAll()` — manually empties both maps. Also invoked internally on
37
- * account changes.
51
+ * transport changes. Forwarded by `GatewayProvider` to consumers as
52
+ * `resetGatewaysFromConfig`.
38
53
  * - `provided: true` — lets descendants detect a real provider.
39
54
  *
40
55
  * Note: the commented-out `SimpleXyoClient` at the top is intentionally
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/in-page-gateways/Provider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAG1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,KAGN,MAAM,OAAO,CAAA;AAMd,MAAM,WAAW,2BAA4B,SAAQ,iBAAiB;IACpE,OAAO,CAAC,EAAE,eAAe,CAAA;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAmExE,CAAA"}
1
+ {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/in-page-gateways/Provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACG,YAAY,EAAE,mBAAmB,EAC/C,MAAM,sBAAsB,CAAA;AAE7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,KAGN,MAAM,OAAO,CAAA;AAId,MAAM,WAAW,2BAA4B,SAAQ,iBAAiB;IACpE,eAAe,CAAC,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAAA;CACpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAmExE,CAAA"}
@@ -1,8 +1,7 @@
1
- export declare const InPageGatewaysContext: import("react").Context<(import("./state.ts").InPageGatewaysStateFields & {
2
- provided: true;
3
- }) | (import("@xylabs/react-shared").FixedValues<import("@xylabs/react-shared").ProvidedContextExState<import("./state.ts").InPageGatewaysStateFields>, never> & {
4
- provided: false;
5
- }) | (import("@xylabs/react-shared").FixedValues<import("@xylabs/react-shared").NotProvidedContextExState<import("./state.ts").InPageGatewaysStateFields>, never> & {
6
- provided: false;
7
- })>;
1
+ /**
2
+ * @deprecated Moved to `@xyo-network/react-chain-client`. Import
3
+ * `InPageGatewaysContext` from there instead. This re-export exists only
4
+ * for backward compatibility and will be removed in a future release.
5
+ */
6
+ export { InPageGatewaysContext } from '@xyo-network/react-chain-client';
8
7
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/contexts/in-page-gateways/context.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB;;;;;;GAAyC,CAAA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/contexts/in-page-gateways/context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA"}
@@ -1,10 +1,8 @@
1
- import type { ContextExState } from '@xylabs/react-shared';
2
- import type { ContextGatewayType } from '@xyo-network/react-chain-client';
3
- import type { GatewayName } from '@xyo-network/xl1-sdk';
4
- export interface InPageGatewaysStateFields {
5
- clearAll: () => void;
6
- errors: Partial<Record<GatewayName, Error>>;
7
- gateways: Partial<Record<GatewayName, ContextGatewayType>>;
8
- }
9
- export type InPageGatewaysState = ContextExState<InPageGatewaysStateFields>;
1
+ /**
2
+ * @deprecated Moved to `@xyo-network/react-chain-client`. Import
3
+ * `InPageGatewaysState` and `InPageGatewaysStateFields` from there
4
+ * instead. This re-export exists only for backward compatibility and
5
+ * will be removed in a future release.
6
+ */
7
+ export type { InPageGatewaysState, InPageGatewaysStateFields } from '@xyo-network/react-chain-client';
10
8
  //# sourceMappingURL=state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../src/contexts/in-page-gateways/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAEvD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAA;IAC3C,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAA;CAC3D;AAED,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,yBAAyB,CAAC,CAAA"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../src/contexts/in-page-gateways/state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA"}
@@ -1,4 +1,8 @@
1
- export declare const useProvidedInPageGateways: (required?: boolean) => Omit<import("./state.ts").InPageGatewaysStateFields & {
2
- provided: true;
3
- }, "provided"> | Omit<import("@xylabs/react-shared").NotProvidedContextExState<import("./state.ts").InPageGatewaysState>, "provided">;
1
+ /**
2
+ * @deprecated Moved to `@xyo-network/react-chain-client`. Import
3
+ * `useProvidedInPageGateways` from there instead. This re-export exists
4
+ * only for backward compatibility and will be removed in a future
5
+ * release.
6
+ */
7
+ export { useProvidedInPageGateways } from '@xyo-network/react-chain-client';
4
8
  //# sourceMappingURL=use.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../../../src/contexts/in-page-gateways/use.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,yBAAyB,GAAI,kBAAe;;qIAAoE,CAAA"}
1
+ {"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../../../src/contexts/in-page-gateways/use.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA"}
@@ -96,9 +96,8 @@ var balanceForRange = /* @__PURE__ */ __name((address, results) => {
96
96
 
97
97
  // src/lib/buildGateway.ts
98
98
  import { assertEx, isDefined } from "@xylabs/sdk-js";
99
- import { basicRemoteRunnerLocator } from "@xyo-network/chain-orchestration";
100
- import { basicRemoteViewerLocator, DefaultNetworks, NetworkDataLakeUrls, XyoGatewayMoniker } from "@xyo-network/xl1-sdk";
101
- var buildGateway = /* @__PURE__ */ __name(async (gatewayName, account) => {
99
+ import { basicRemoteRunnerLocator, basicRemoteViewerLocator, DefaultNetworks, NetworkDataLakeUrls, XyoGatewayMoniker } from "@xyo-network/xl1-sdk";
100
+ var buildGateway = /* @__PURE__ */ __name(async (gatewayName, signerTransport) => {
102
101
  const network = DefaultNetworks.find((network2) => network2.id === gatewayName);
103
102
  const resolvedNetwork = assertEx(network, () => `No network found for id ${gatewayName}`);
104
103
  const remoteConfig = {
@@ -108,7 +107,7 @@ var buildGateway = /* @__PURE__ */ __name(async (gatewayName, account) => {
108
107
  }
109
108
  };
110
109
  const dataLakeEndpoint = NetworkDataLakeUrls[gatewayName];
111
- const locator = isDefined(account) ? await basicRemoteRunnerLocator(gatewayName, remoteConfig, account, dataLakeEndpoint) : await basicRemoteViewerLocator(gatewayName, remoteConfig, dataLakeEndpoint);
110
+ const locator = isDefined(signerTransport) ? await basicRemoteRunnerLocator(gatewayName, remoteConfig, signerTransport, dataLakeEndpoint) : await basicRemoteViewerLocator(gatewayName, remoteConfig, dataLakeEndpoint);
112
111
  return await locator.getInstance(XyoGatewayMoniker);
113
112
  }, "buildGateway");
114
113
 
@@ -742,40 +741,33 @@ var XL1CurrentBlockProvider = /* @__PURE__ */ __name(({ pollingConfig, viewer, c
742
741
  import { useContextEx } from "@xylabs/react-shared";
743
742
  var useXl1CurrentBlockContext = /* @__PURE__ */ __name((required = true) => useContextEx(XL1CurrentBlockContext, "XL1CurrentBlock", required), "useXl1CurrentBlockContext");
744
743
 
745
- // src/contexts/gateway/context.ts
746
- import { createContextEx as createContextEx2 } from "@xylabs/react-shared";
747
- var GatewayContext = createContextEx2();
748
-
749
744
  // src/contexts/gateway/Provider.tsx
750
- import { isDefinedNotNull as isDefinedNotNull3, isNull as isNull3 } from "@xylabs/sdk-js";
751
- import { useGatewayFromWallet as useGatewayFromWallet2 } from "@xyo-network/react-chain-client";
752
- import { ErrorRender as ErrorRender2 } from "@xyo-network/react-error";
753
- import React5, { useMemo as useMemo5 } from "react";
745
+ import { GatewayProvider } from "@xyo-network/react-chain-client";
754
746
 
755
747
  // src/contexts/in-page-gateways/context.ts
756
- import { createContextEx as createContextEx3 } from "@xylabs/react-shared";
757
- var InPageGatewaysContext = createContextEx3();
748
+ import { InPageGatewaysContext } from "@xyo-network/react-chain-client";
758
749
 
759
750
  // src/contexts/in-page-gateways/Provider.tsx
751
+ import { InPageGatewaysContext as InPageGatewaysContext2 } from "@xyo-network/react-chain-client";
760
752
  import { DefaultNetworks as DefaultNetworks2 } from "@xyo-network/xl1-sdk";
761
753
  import React4, { startTransition as startTransition2, useCallback as useCallback2, useEffect as useEffect5, useMemo as useMemo4, useState as useState6 } from "react";
762
- var InPageGatewaysProvider = /* @__PURE__ */ __name(({ account, children }) => {
754
+ var InPageGatewaysProvider = /* @__PURE__ */ __name(({ signerTransport, children }) => {
763
755
  const [gateways, setGateways] = useState6({});
764
756
  const [errors, setErrors] = useState6({});
765
- const [previousAccount, setPreviousAccount] = useState6(account);
757
+ const [previousSignerTransport, setPreviousSignerTransport] = useState6(signerTransport);
766
758
  const clearAll = useCallback2(() => {
767
759
  setGateways({});
768
760
  setErrors({});
769
761
  }, []);
770
- if (previousAccount !== account) {
762
+ if (previousSignerTransport !== signerTransport) {
771
763
  clearAll();
772
- setPreviousAccount(account);
764
+ setPreviousSignerTransport(signerTransport);
773
765
  }
774
766
  useEffect5(() => {
775
767
  let cancelled = false;
776
768
  const buildAll = /* @__PURE__ */ __name(async () => {
777
769
  const results = await Promise.allSettled(DefaultNetworks2.map(async (network) => {
778
- const gateway = await buildGateway(network.id, account);
770
+ const gateway = await buildGateway(network.id, signerTransport);
779
771
  return {
780
772
  id: network.id,
781
773
  gateway
@@ -802,7 +794,7 @@ var InPageGatewaysProvider = /* @__PURE__ */ __name(({ account, children }) => {
802
794
  cancelled = true;
803
795
  };
804
796
  }, [
805
- account
797
+ signerTransport
806
798
  ]);
807
799
  const value = useMemo4(() => {
808
800
  const value2 = {
@@ -817,77 +809,17 @@ var InPageGatewaysProvider = /* @__PURE__ */ __name(({ account, children }) => {
817
809
  errors,
818
810
  gateways
819
811
  ]);
820
- return /* @__PURE__ */ React4.createElement(InPageGatewaysContext, {
812
+ return /* @__PURE__ */ React4.createElement(InPageGatewaysContext2, {
821
813
  value
822
814
  }, children);
823
815
  }, "InPageGatewaysProvider");
824
816
 
825
817
  // src/contexts/in-page-gateways/use.ts
826
- import { useContextEx as useContextEx2 } from "@xylabs/react-shared";
827
- var useProvidedInPageGateways = /* @__PURE__ */ __name((required = true) => useContextEx2(InPageGatewaysContext, "InPageGateways", required), "useProvidedInPageGateways");
828
-
829
- // src/contexts/gateway/Provider.tsx
830
- var GatewayProvider = /* @__PURE__ */ __name(({ gatewayName, children }) => {
831
- const { gateway: gatewayFromWallet, error: gatewayFromWalletError } = useGatewayFromWallet2(gatewayName);
832
- const { gateways: allGateways, errors: allGatewayErrors, clearAll } = useProvidedInPageGateways(true);
833
- const gatewayFromConfig = gatewayName ? allGateways[gatewayName] : void 0;
834
- const gatewayFromConfigError = gatewayName ? allGatewayErrors[gatewayName] : void 0;
835
- const { defaultGateway, gateways } = useMemo5(() => {
836
- if (isNull3(gatewayFromWallet)) {
837
- return {
838
- defaultGateway: gatewayFromConfig,
839
- gateways: {
840
- inPageGateway: gatewayFromConfig,
841
- walletGateway: null
842
- }
843
- };
844
- } else if (isDefinedNotNull3(gatewayFromWallet)) {
845
- return {
846
- defaultGateway: gatewayFromWallet,
847
- gateways: {
848
- inPageGateway: gatewayFromConfig,
849
- walletGateway: gatewayFromWallet
850
- }
851
- };
852
- }
853
- return {
854
- defaultGateway: void 0,
855
- gateways: {
856
- inPageGateway: void 0,
857
- walletGateway: void 0
858
- }
859
- };
860
- }, [
861
- gatewayFromConfig,
862
- gatewayFromWallet
863
- ]);
864
- const value = useMemo5(() => {
865
- const value2 = {
866
- defaultGateway,
867
- error: gatewayFromWalletError || gatewayFromConfigError,
868
- gateways,
869
- provided: true,
870
- resetGatewaysFromConfig: clearAll
871
- };
872
- return value2;
873
- }, [
874
- defaultGateway,
875
- gatewayFromWalletError,
876
- gatewayFromConfigError,
877
- gateways,
878
- clearAll
879
- ]);
880
- return /* @__PURE__ */ React5.createElement(GatewayContext, {
881
- value
882
- }, /* @__PURE__ */ React5.createElement(ErrorRender2, {
883
- error: gatewayFromConfigError
884
- }), children);
885
- }, "GatewayProvider");
818
+ import { useProvidedInPageGateways } from "@xyo-network/react-chain-client";
886
819
  export {
887
820
  ConnectAccountsStack,
888
821
  ConnectedAccount,
889
822
  DEFAULT_POLLING_INTERVAL,
890
- GatewayContext,
891
823
  GatewayProvider,
892
824
  InPageGatewaysContext,
893
825
  InPageGatewaysProvider,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/connected/account/Connected.tsx","../../src/components/connected/ConnectAccountsStack.tsx","../../src/hooks/account/helpers/formatAccountBalanceHistory.ts","../../src/hooks/account/useAccountBalanceHistory.ts","../../src/lib/balanceForRange.ts","../../src/lib/buildGateway.ts","../../src/lib/findMinimumBlock.ts","../../src/hooks/gateway/useNetwork.ts","../../src/hooks/gateway/useRunner.ts","../../src/hooks/gateway/useViewer.ts","../../src/hooks/helpers/getXyoClient.ts","../../src/hooks/helpers/transaction/Confirmation.ts","../../src/hooks/useAddressBalance.ts","../../src/hooks/useConfirmTransactionBase.ts","../../src/hooks/useConnectAccount.ts","../../src/hooks/useCurrentBlock.ts","../../src/hooks/useNetwork.ts","../../src/hooks/useSigner.ts","../../src/hooks/viewer/useCheckRpc.ts","../../src/hooks/viewer/ViewerWithDataLake.ts","../../src/contexts/current-block/context.ts","../../src/contexts/current-block/Provider.tsx","../../src/contexts/current-block/usePollCurrentBlock.ts","../../src/contexts/current-block/use.ts","../../src/contexts/gateway/context.ts","../../src/contexts/gateway/Provider.tsx","../../src/contexts/in-page-gateways/context.ts","../../src/contexts/in-page-gateways/Provider.tsx","../../src/contexts/in-page-gateways/use.ts"],"sourcesContent":["import {\n Stack, Tooltip, Typography,\n} from '@mui/material'\nimport { EthAddressWrapper } from '@xylabs/sdk-js'\nimport { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'\nimport React from 'react'\n\nexport const ConnectedAccount: React.FC<{ address: string }> = ({ address }) => {\n const shortenedAddress = `${EthAddressWrapper.fromString(address)?.toShortString(4)}`\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <BlockiesAvatarAddress address={address} size={21} />\n <Tooltip title={address}>\n <Typography color=\"textSecondary\" variant=\"caption\" fontFamily=\"monospace\">{shortenedAddress}</Typography>\n </Tooltip>\n </Stack>\n )\n}\n","import type { StackProps } from '@mui/material'\nimport {\n Alert, AlertTitle, Button, Stack,\n Typography,\n} from '@mui/material'\nimport type { ButtonExProps } from '@xylabs/react-button'\nimport { ButtonEx } from '@xylabs/react-button'\nimport type { Address } from '@xylabs/sdk-js'\nimport { isDefined, isUndefined } from '@xylabs/sdk-js'\nimport { ErrorRender } from '@xyo-network/react-error'\nimport type { ComponentType, MouseEventHandler } from 'react'\nimport React, { useEffect } from 'react'\n\nimport { useConnectAccount } from '../../hooks/index.ts'\nimport { ConnectedAccount } from './account/index.ts'\n\nconst DefaultConnectComponent: React.FC<ButtonExProps> = props => (\n <ButtonEx variant=\"contained\" size=\"small\" {...props} />\n)\n\nconst DefaultNoWalletInstalledComponent: React.FC = () => (\n <Alert severity=\"warning\">\n <AlertTitle>XL1 Wallet Not Found</AlertTitle>\n <Typography gutterBottom>\n Please ensure that your XL1 Wallet is installed to connect your account.\n </Typography>\n <Button\n sx={{ display: 'flex', justifySelf: 'end' }}\n size=\"small\"\n variant=\"outlined\"\n href=\"https://chromewebstore.google.com/detail/xl1-wallet/fblbagcjeigmhakkfgjpdlcapcgmcfbm\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n Get XL1 Wallet\n </Button>\n </Alert>\n)\n\nexport interface ConnectClientAccountsStackProps extends StackProps {\n AccountComponent?: ComponentType<{ account?: string }>\n ConnectComponent?: ComponentType<{ onClick?: MouseEventHandler<HTMLElement> }>\n NoWalletInstalledComponent?: ComponentType\n onAccountConnected?: (account: Address) => void\n onCancel?: () => void\n timeout?: number\n}\n\n/** @deprecated - use version in @xyo-network/react-chain-client instead */\nexport const ConnectAccountsStack: React.FC<ConnectClientAccountsStackProps> = ({\n AccountComponent = ConnectedAccount,\n ConnectComponent = DefaultConnectComponent,\n NoWalletInstalledComponent = DefaultNoWalletInstalledComponent,\n onAccountConnected,\n onCancel,\n timeout,\n ...props\n}) => {\n const {\n address, connectSigner, error, timedout,\n } = useConnectAccount(undefined, timeout)\n\n useEffect(() => {\n if (isDefined(error) && isDefined(onCancel)) {\n onCancel()\n }\n }, [error, onCancel])\n\n useEffect(() => {\n if (isDefined(address) && isDefined(onAccountConnected)) {\n onAccountConnected(address)\n }\n }, [address, onAccountConnected])\n\n return (\n <Stack direction=\"row\" alignItems=\"start\" spacing={2} {...props}>\n {isDefined(address)\n ? <AccountComponent address={address} />\n : null}\n {isUndefined(address) && !timedout\n ? (\n <ConnectComponent onClick={() => void connectSigner()}>Connect</ConnectComponent>\n )\n : null}\n {isUndefined(address) && timedout\n ? (\n <NoWalletInstalledComponent />\n )\n : null}\n <ErrorRender error={error} scope=\"ConnectSigner:error\" />\n </Stack>\n )\n}\n","import type { Address, Hex } from '@xylabs/sdk-js'\nimport { hexToBigInt } from '@xylabs/sdk-js'\nimport { PayloadBuilder } from '@xyo-network/sdk-js'\nimport type { AccountBalanceHistoryItem } from '@xyo-network/xl1-sdk'\n\nimport type { AccountBalanceHistoryItemFormatted } from '../BalanceHistoryItemFormatted.ts'\n\nexport const formatAccountBalanceHistory = async (address: Address, history: AccountBalanceHistoryItem[]): Promise<AccountBalanceHistoryItemFormatted[]> => {\n const results: AccountBalanceHistoryItemFormatted[] = []\n for (const item of history) {\n const [blockBw, txBw, transfer] = item\n const transferHash = await PayloadBuilder.hash(transfer)\n const blockHash = await PayloadBuilder.hash(blockBw)\n if (address === transfer.from) {\n for (const [to, amount] of Object.entries(transfer.transfers)) {\n results.push({\n amount: hexToBigInt(amount as Hex),\n blockHash,\n blockNumber: blockBw.block,\n from: transfer.from,\n timestamp: blockBw.$epoch,\n key: globalThis.crypto.randomUUID(),\n to: to as Address,\n transferHash,\n txHash: txBw?._hash,\n debug: item,\n type: 'send',\n })\n }\n } else {\n results.push({\n amount: hexToBigInt(transfer.transfers[address] as Hex),\n blockHash,\n blockNumber: blockBw.block,\n from: transfer.from,\n key: globalThis.crypto.randomUUID(),\n timestamp: blockBw.$epoch,\n to: address,\n transferHash,\n txHash: txBw?._hash,\n debug: item,\n type: 'receive',\n })\n }\n }\n return results\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport {\n type Address,\n isUndefined,\n} from '@xylabs/sdk-js'\nimport type {\n AccountBalanceHistoryItem, XL1BlockRange, XyoViewer,\n} from '@xyo-network/xl1-sdk'\n\nimport { balanceForRange, findMinimumBlock } from '../../lib/index.ts'\nimport { formatAccountBalanceHistory } from './helpers/index.ts'\n\nexport const useAccountBalanceHistory = (address?: Address, viewer?: XyoViewer, maxPage = 10, blockRange?: XL1BlockRange, refresh?: number) => {\n return usePromise(async () => {\n if (isUndefined(viewer) || isUndefined(address)) return\n\n // Pagination Values\n let page = 1\n let lastBlock: number\n const pagedHistory: AccountBalanceHistoryItem[] = []\n const resolvedStartBlock = blockRange ? blockRange[0] : 0\n\n // Fetch first page to get starting lastBlock\n // If blockRange is provided, use that for the first fetch, otherwise the api will use [0, currentBlock]\n const history = await viewer.account.balance.accountBalanceHistory(address, blockRange ? { range: blockRange } : {})\n if (history.length > 0) {\n pagedHistory.push(...history)\n // Set lastBlock to one less than the lowest block in the first page\n lastBlock = findMinimumBlock(history)\n while (page < maxPage) {\n // Fetch next page\n const nextHistory = await viewer.account.balance.accountBalanceHistory(address, { range: [resolvedStartBlock, lastBlock] as XL1BlockRange })\n // Break if no more history\n if (nextHistory.length === 0) break\n // Update lastBlock and append to pagedHistory\n lastBlock = findMinimumBlock(nextHistory)\n pagedHistory.push(...nextHistory)\n // Increment page\n // Even if we are going to go over and break the loop, we still want to increment to show the answer was truncated\n page++\n }\n }\n const formattedHistory = await formatAccountBalanceHistory(address, pagedHistory)\n\n return {\n history: formattedHistory,\n balance: balanceForRange(address, pagedHistory),\n truncated: page >= maxPage,\n }\n }, [address, viewer, refresh, blockRange, maxPage])\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport {\n hexToBigInt, isHex, toHex,\n} from '@xylabs/sdk-js'\nimport type { AccountBalanceHistoryItem, AttoXL1 } from '@xyo-network/xl1-sdk'\n\nexport const balanceForRange = (address: Address, results: AccountBalanceHistoryItem[]): [AttoXL1, AttoXL1] => {\n const totalReceivedBalance = results?.reduce((a, [_block, _tx, transfer]) => {\n return a + hexToBigInt(transfer.transfers[address] ?? toHex(0))\n }, 0n)\n // eslint-disable-next-line unicorn/no-array-reduce\n const totalSentBalance = results?.reduce((a, [_block, _tx, transfer]) => {\n return (transfer.from === address) ? a + Object.values(transfer.transfers).reduce((a, v) => a + (isHex(v) ? hexToBigInt(v) : 0n), 0n) : a\n }, 0n)\n return [totalReceivedBalance, totalSentBalance] as [AttoXL1, AttoXL1]\n}\n","import { assertEx, isDefined } from '@xylabs/sdk-js'\nimport { basicRemoteRunnerLocator } from '@xyo-network/chain-orchestration'\nimport type { AccountInstance } from '@xyo-network/sdk-js'\nimport type {\n GatewayName, RemoteConfig, SimpleXyoGateway,\n} from '@xyo-network/xl1-sdk'\nimport {\n basicRemoteViewerLocator,\n DefaultNetworks, NetworkDataLakeUrls, XyoGatewayMoniker,\n} from '@xyo-network/xl1-sdk'\n\nexport const buildGateway = async (gatewayName: GatewayName, account?: AccountInstance) => {\n const network = DefaultNetworks.find(network => network.id === gatewayName)\n const resolvedNetwork = assertEx(network, () => `No network found for id ${gatewayName}`)\n\n const remoteConfig: RemoteConfig = {\n rpc: {\n protocol: 'http',\n url: `${resolvedNetwork.url}/rpc`,\n },\n }\n\n const dataLakeEndpoint = NetworkDataLakeUrls[gatewayName]\n\n const locator = isDefined(account)\n ? await basicRemoteRunnerLocator(gatewayName, remoteConfig, account, dataLakeEndpoint)\n : await basicRemoteViewerLocator(gatewayName, remoteConfig, dataLakeEndpoint)\n\n return await locator.getInstance<SimpleXyoGateway>(XyoGatewayMoniker)\n}\n","import type { AccountBalanceHistoryItem } from '@xyo-network/xl1-sdk'\n\nexport const findMinimumBlock = (history: AccountBalanceHistoryItem[]): number => {\n // since taking Math.min of an empty array returns Infinity\n if (history.length === 0) return 0\n const blockNumbers = history.map(([blockBw]) => blockBw.block)\n const min = Math.min(...blockNumbers)\n return Math.max(min - 1, 0)\n}\n","import { useProvidedGateway } from '@xyo-network/react-chain-client'\n\nexport const useNetworkFromGateway = () => {\n const { defaultGateway } = useProvidedGateway()\n return defaultGateway?.connection?.network\n}\n","import { useProvidedGateway } from '@xyo-network/react-chain-client'\n\nexport const useRunnerFromGateway = () => {\n const { defaultGateway } = useProvidedGateway()\n return defaultGateway?.connection?.runner\n}\n","import { useProvidedGateway } from '@xyo-network/react-chain-client'\n\nexport const useViewerFromGateway = () => {\n const { defaultGateway } = useProvidedGateway()\n return defaultGateway?.connection?.viewer\n}\n","/** @deprecated Import from `@xyo-network/react-chain-client` instead */\nexport { getXyoClient, listenForClientInjection } from '@xyo-network/react-chain-client'\n","import type { Hash, Promisable } from '@xylabs/sdk-js'\nimport {\n assertEx, delay, forget, isDefined, isNull,\n} from '@xylabs/sdk-js'\nimport type { SignedHydratedTransaction, XyoViewer } from '@xyo-network/xl1-sdk'\n\nexport interface ConfirmationStatusUpdate {\n blockNumber: number\n confirmed: boolean\n error?: Error\n progress?: number\n remainingBlocks?: number\n}\n\nexport interface TransactionConfirmationParams {\n onStatusUpdate?: (status: ConfirmationStatusUpdate) => void\n transaction: SignedHydratedTransaction\n txHash: Hash\n viewer: XyoViewer\n}\n\nexport class TransactionConfirmationStatus {\n private readonly _params: TransactionConfirmationParams\n private active = false\n\n constructor(params: TransactionConfirmationParams) {\n this._params = params\n }\n\n get exp(): number {\n return assertEx(this.transaction[0].exp, () => 'exp is not found, transaction is not set')\n }\n\n get nbf(): number {\n return assertEx(this.transaction[0].nbf, () => 'nbf is not found, transaction is not set')\n }\n\n get onStatusUpdate(): TransactionConfirmationParams['onStatusUpdate'] {\n return this._params.onStatusUpdate\n }\n\n get params(): TransactionConfirmationParams {\n return this._params\n }\n\n get transaction(): SignedHydratedTransaction {\n return this.params.transaction\n }\n\n get txHash(): Hash {\n return this.params.txHash\n }\n\n get viewer(): XyoViewer {\n return this.params.viewer\n }\n\n static create(params: TransactionConfirmationParams): Promisable<TransactionConfirmationStatus> {\n return new TransactionConfirmationStatus(params)\n }\n\n async start(): Promise<void> {\n this.active = true\n try {\n const currentBlockNumber = await this.viewer.currentBlockNumber()\n while (isDefined(currentBlockNumber) && this.active) {\n await this.checkBlock(currentBlockNumber)\n // check block every second to see if the transaction is confirmed\n await delay(1000)\n }\n } catch (error) {\n await this.stop()\n forget(this.onStatusUpdate?.({\n error: error instanceof Error ? error : new Error('Unknown error occurred'),\n confirmed: false,\n blockNumber: 0,\n progress: 0,\n remainingBlocks: 0,\n }))\n }\n }\n\n stop(): Promisable<void> {\n this.active = false\n }\n\n private async checkBlock(blockNumber: number): Promise<void> {\n if (blockNumber < this.nbf) {\n await this.stop()\n forget(this.onStatusUpdate?.({\n error: new Error(`Block number: ${blockNumber} is before ${this.nbf}`),\n confirmed: false,\n blockNumber,\n progress: 0,\n remainingBlocks: this.exp - blockNumber,\n }))\n }\n if (blockNumber > this.exp) {\n forget(this.onStatusUpdate?.({\n confirmed: false, blockNumber, progress: 100, remainingBlocks: 0,\n }))\n return\n }\n if (blockNumber < this.exp) {\n await this.checkConfirmation(blockNumber)\n }\n }\n\n private async checkConfirmation(blockNumber: number): Promise<void> {\n const remainingBlocks = this.exp - blockNumber\n const progress = Math.round(((blockNumber - this.nbf) / (this.exp - this.nbf)) * 100)\n\n const tx = await this.viewer.transaction.byHash?.(this.txHash)\n if (isNull(tx)) {\n this.onStatusUpdate?.({\n confirmed: false, blockNumber, progress, remainingBlocks,\n })\n } else {\n this.onStatusUpdate?.({\n confirmed: true, blockNumber, progress, remainingBlocks,\n })\n await this.stop()\n }\n }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { Address } from '@xylabs/sdk-js'\nimport { isUndefined, isUndefinedOrNull } from '@xylabs/sdk-js'\nimport type { AttoXL1, XyoViewer } from '@xyo-network/xl1-sdk'\nimport { ShiftedBigInt } from '@xyo-network/xl1-sdk'\nimport {\n useMemo, useRef, useState,\n} from 'react'\n\nexport const useAddressBalance = (\n // address to get balance for\n address?: Address,\n // viewer to use for fetching balance\n viewer?: XyoViewer,\n // refresh balance trigger\n refresh?: number,\n // reset balance trigger - clears state immediately\n reset?: number,\n) => {\n const [balancesResult, setBalancesResult] = useState<AttoXL1 | null>()\n const [loading, setLoading] = useState(false)\n const [balancesError, setBalancesError] = useState<Error>()\n\n const [previousReset, setPreviousReset] = useState<number | undefined>(reset)\n if (reset !== previousReset) {\n setPreviousReset(reset)\n setBalancesResult(undefined)\n setBalancesError(undefined)\n setLoading(false)\n }\n\n const balancePromiseRef = useRef<Promise<AttoXL1> | null>(null)\n usePromise(async () => {\n if (isUndefined(viewer) || isUndefined(address)) return\n\n setLoading(true)\n setBalancesError(undefined)\n\n // Create and store the current promise\n const currentPromise = viewer.account.balance.accountBalance(address) as Promise<AttoXL1>\n balancePromiseRef.current = currentPromise\n\n try {\n const result = await currentPromise\n // Only update state if this is still the latest promise\n if (balancePromiseRef.current === currentPromise) {\n setBalancesResult(result as AttoXL1)\n setLoading(false)\n }\n } catch (err) {\n // Only update state if this is still the latest promise\n if (balancePromiseRef.current === currentPromise) {\n console.error('Error in queued call:', err)\n setBalancesResult(undefined)\n setBalancesError(err as Error)\n setLoading(false)\n }\n }\n }, [address, viewer, refresh])\n\n const shiftedBigInt = useMemo(() => {\n if (typeof balancesResult !== 'bigint') return\n return new ShiftedBigInt(balancesResult, {\n places: 18, maxDecimal: 18, maxCharacters: 9, minDecimals: 1, locale: navigator.language,\n })\n }, [balancesResult])\n\n const balanceIntlFriendly = useMemo(() => {\n return shiftedBigInt?.toFullString()\n }, [shiftedBigInt])\n\n const shortBalanceIntlFriendly = useMemo(() => {\n return isUndefinedOrNull(balancesResult)\n ? undefined\n : (balancesResult < 1_000_000_000_000n && balancesResult > 0n) ? '<0.00001' : shiftedBigInt?.toShortString()\n }, [balancesResult, shiftedBigInt])\n\n return {\n address,\n balanceForAddress: balancesResult,\n balanceIntlFriendly,\n shortBalanceIntlFriendly,\n error: balancesError,\n loading,\n }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { Hash } from '@xylabs/sdk-js'\nimport {\n forget, isDefined, isHash,\n} from '@xylabs/sdk-js'\nimport { PayloadBuilder } from '@xyo-network/sdk-js'\nimport type {\n SignedHydratedTransaction, XyoRunner, XyoViewer,\n} from '@xyo-network/xl1-sdk'\nimport { useEffect, useState } from 'react'\n\nimport type { ConfirmationStatusUpdate, TransactionConfirmationParams } from './helpers/index.ts'\nimport { TransactionConfirmationStatus } from './helpers/index.ts'\n\nexport const useConfirmTransactionBase = (\n // The transaction to confirm\n transaction?: SignedHydratedTransaction,\n // Callback for when the transaction is broadcast to the network\n onBroadcast?: (hash: Hash) => void,\n // Optional callback for status updates during confirmation\n onStatusUpdate?: TransactionConfirmationParams['onStatusUpdate'],\n // Runner to use for broadcasting transactions\n runner?: XyoRunner,\n // Viewer to use for checking transaction status\n viewer?: XyoViewer,\n) => {\n const [status, setStatus] = useState<ConfirmationStatusUpdate>()\n const onStatusUpdateLocal = (newStatus: ConfirmationStatusUpdate) => {\n setStatus(newStatus)\n onStatusUpdate?.(newStatus)\n }\n\n const [transactionConfirmationStatus, transactionConfirmationError] = usePromise(async () => {\n const hasRunner = isDefined(runner)\n if (transaction && viewer) {\n const hash = hasRunner ? (await runner.broadcastTransaction(transaction)) : await PayloadBuilder.hash(transaction[0])\n if (isHash(hash)) {\n if (hasRunner && isDefined(onBroadcast)) onBroadcast(hash)\n const params: TransactionConfirmationParams = {\n onStatusUpdate: onStatusUpdateLocal,\n transaction,\n txHash: hash,\n viewer,\n }\n const instance = await TransactionConfirmationStatus.create(params)\n await instance.start()\n return instance\n } else {\n throw new Error('unexpected return type from broadcast transaction')\n }\n }\n }, [transaction, runner, viewer])\n\n useEffect(() => {\n return () => {\n if (transactionConfirmationStatus) {\n // Stop the transaction confirmation status instance when the component unmounts\n forget(transactionConfirmationStatus.stop())\n }\n }\n }, [transactionConfirmationStatus])\n\n return { status, transactionConfirmationError }\n}\n","import { type Address, asAddress } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport { useAccountPermissions, useGatewayFromWallet } from '@xyo-network/react-chain-client'\nimport type { GatewayName } from '@xyo-network/xl1-sdk'\nimport { MainNetwork } from '@xyo-network/xl1-sdk'\nimport { useCallback, useState } from 'react'\n\n/** @deprecated - use version in @xyo-network/react-chain-client instead */\nexport const useConnectAccount = (gatewayName: GatewayName = MainNetwork.id, timeout?: number) => {\n const [connectError, setConnectError] = useState<Error>()\n\n const {\n gateway, error, timedout,\n } = useGatewayFromWallet(gatewayName, timeout)\n\n const [accountPermissions, accountPermissionsError] = useAccountPermissions()\n\n const [address, setAddress] = useState<Address>()\n\n const connectSigner = useCallback(async () => {\n try {\n setConnectError(undefined)\n const assertedGateway = assertEx(gateway, () => `Gateway ${gatewayName} is not available`)\n const signer = assertedGateway.signer\n const address = await signer.address()\n setAddress(address)\n return address\n } catch (e) {\n setConnectError(e as Error)\n }\n }, [gateway, gatewayName])\n\n return {\n address: asAddress(accountPermissions?.[0] ?? address), connectSigner, error: error ?? accountPermissionsError ?? connectError, gateway, timedout,\n }\n}\n","import type { UsePromiseState } from '@xylabs/react-promise'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isDefinedNotNull } from '@xylabs/sdk-js'\nimport type { HydratedBlockWithHashMeta, XyoViewer } from '@xyo-network/xl1-sdk'\n\nimport { useViewerFromGateway } from './gateway/index.ts'\n\n/* @deprecated - use useCurrentBlockFromGateway instead */\nexport const useCurrentBlock = (refresh = 1, viewer?: XyoViewer | null): [HydratedBlockWithHashMeta | undefined,\n Error | undefined, UsePromiseState | undefined] => {\n return usePromise(async () => {\n if (isDefinedNotNull(viewer) && refresh > 0) {\n const block = await viewer.currentBlock()\n return block\n }\n }, [viewer, refresh])\n}\n\nexport const useCurrentBlockFromGateway = (refresh = 1) => {\n const viewer = useViewerFromGateway()\n return usePromise(async () => {\n if (isDefinedNotNull(viewer) && refresh > 0) {\n const block = await viewer.currentBlock()\n return block\n }\n }, [viewer, refresh])\n}\n","import { isUndefined } from '@xylabs/sdk-js'\nimport type { DefaultNetworkIds } from '@xyo-network/xl1-sdk'\nimport { SimpleXyoNetwork } from '@xyo-network/xl1-sdk'\nimport { useMemo } from 'react'\n\nexport const useNetwork = (id?: DefaultNetworkIds) => {\n const network = useMemo(() => {\n if (isUndefined(id)) return\n return new SimpleXyoNetwork(id)\n }, [id])\n\n return network\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { AccountInstance } from '@xyo-network/sdk-js'\nimport {\n SimpleXyoSigner, type XyoConnection, type XyoSigner,\n} from '@xyo-network/xl1-sdk'\n\nexport const useSigner = (_provider?: XyoConnection, account?: AccountInstance) => {\n return usePromise<XyoSigner | undefined>(async () => account ? await SimpleXyoSigner.create({ account }) : undefined, [account])\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport {\n delay, isDefined, isUndefined,\n} from '@xylabs/sdk-js'\nimport type { JsonRpcXyoViewer } from '@xyo-network/xl1-sdk'\nimport {\n basicRemoteViewerLocator,\n LocalNetwork,\n SequenceNetwork,\n XyoViewerMoniker,\n} from '@xyo-network/xl1-sdk'\nimport { useEffect, useState } from 'react'\n\nconst INTERVAL = 5000 // 5 seconds\n\nconst localRpcEndpoint = `${LocalNetwork.url}/rpc`\nconst sequenceRpcEndpoint = `${SequenceNetwork.url}/rpc`\n\nexport const useCheckLocalRpc = () => {\n const isLocalProducer = useCheckRpc(localRpcEndpoint)\n return isLocalProducer\n}\n\nexport const useCheckSequenceRpc = () => {\n const isSequenceRpc = useCheckRpc(sequenceRpcEndpoint)\n return isSequenceRpc\n}\n\nexport const useCheckRpc = (endpoint?: string) => {\n const [isLocalProducer, setIsLocalProducer] = useState(false)\n const [error, setError] = useState<Error>()\n\n const [viewer] = usePromise(async () => {\n if (isUndefined(endpoint)) return\n\n const locator = await basicRemoteViewerLocator(endpoint, { rpc: { protocol: 'http', url: endpoint } })\n\n const viewer = await locator.getInstance<JsonRpcXyoViewer>(XyoViewerMoniker)\n return viewer\n }, [endpoint])\n\n useEffect(() => {\n if (isUndefined(viewer)) return\n\n void (async () => {\n setError(undefined)\n while (!isLocalProducer) {\n try {\n const block = await viewer.currentBlock()\n setIsLocalProducer(isDefined(block))\n } catch (err) {\n setError(err as Error)\n setIsLocalProducer(false)\n }\n await delay(INTERVAL)\n }\n })()\n }, [isLocalProducer, viewer])\n\n return { isLocalProducer, error }\n}\n","import { type Hash, isNull } from '@xylabs/sdk-js'\nimport { PayloadBuilder } from '@xyo-network/sdk-js'\nimport type {\n DataLakeViewer, SignedHydratedBlockWithHashMeta, SignedHydratedTransactionWithHashMeta, XL1BlockNumber,\n} from '@xyo-network/xl1-sdk'\nimport {\n addDataLakePayloads,\n addDataLakePayloadsToPayloads, DataLakeViewerMoniker, JsonRpcXyoViewer,\n} from '@xyo-network/xl1-sdk'\n\n/**\n * A Viewer with data lake capabilities, it will attempt to fill in missing payloads from the\n * data lake viewer if available.\n *\n * THIS IS AN EXPERIMENTAL CLASS! Only intended to prove the data lake viewer functionality works.\n * In the future, it should be refactored to augment any viewer with data lake capabilities,\n * and not rely on inheritance from JsonRpcXyoViewer which has the 'creatable' pattern baked in.\n */\nexport class ViewerWithDataLake extends JsonRpcXyoViewer {\n protected dataLakeViewer: DataLakeViewer | undefined\n\n override async blocksByHash(hash: Hash, limit?: number): Promise<SignedHydratedBlockWithHashMeta[]> {\n const blocks = await super.blocksByHash(hash, limit)\n return await Promise.all(blocks.map(async block => (await addDataLakePayloads(block, this.dataLakeViewer))[0]))\n }\n\n override async blocksByNumber(blockNumber: XL1BlockNumber, limit?: number): Promise<SignedHydratedBlockWithHashMeta[]> {\n const blocks = await super.blocksByNumber(blockNumber, limit)\n return await Promise.all(blocks.map(async block => (await addDataLakePayloads(block, this.dataLakeViewer))[0]))\n }\n\n override async createHandler() {\n await super.createHandler()\n this.dataLakeViewer = await this.locator.tryGetInstance<DataLakeViewer>(DataLakeViewerMoniker)\n }\n\n override async payloadsByHash(hashes: Hash[]) {\n const payloads = await super.payloadsByHash(hashes)\n return (await addDataLakePayloadsToPayloads(hashes, payloads, this.dataLakeViewer))[0]\n }\n\n override async transactionByHash(hash: Hash): Promise<SignedHydratedTransactionWithHashMeta | null> {\n const transaction = await super.transaction.byHash(hash)\n if (!this.dataLakeViewer) return transaction ? [await PayloadBuilder.addHashMeta(transaction[0]), await PayloadBuilder.addHashMeta(transaction[1])] : null\n\n return isNull(transaction)\n ? transaction\n : (await addDataLakePayloads([await PayloadBuilder.addHashMeta(transaction[0]),\n await PayloadBuilder.addHashMeta(transaction[1])], this.dataLakeViewer))[0]\n }\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { XL1CurrentBlockState } from './state.ts'\n\nexport const XL1CurrentBlockContext = createContextEx<XL1CurrentBlockState>()\n","import type { XyoViewer } from '@xyo-network/xl1-sdk'\nimport type { PropsWithChildren } from 'react'\nimport React, { useMemo } from 'react'\n\nimport { XL1CurrentBlockContext } from './context.ts'\nimport type { XL1CurrentBlockPollingConfig, XL1CurrentBlockState } from './state.ts'\nimport { usePollCurrentBlock } from './usePollCurrentBlock.ts'\n\nexport const DEFAULT_POLLING_INTERVAL = 10_000\n\nexport interface XL1CurrentBlockProviderProps extends PropsWithChildren {\n pollingConfig?: XL1CurrentBlockPollingConfig\n viewer?: XyoViewer | null\n}\n\nexport const XL1CurrentBlockProvider: React.FC<XL1CurrentBlockProviderProps> = ({\n pollingConfig, viewer, children,\n}) => {\n const { interval } = useMemo(() => pollingConfig || { interval: DEFAULT_POLLING_INTERVAL }, [pollingConfig])\n const [currentBlock, currentBlockError] = usePollCurrentBlock(viewer, interval)\n\n const value: XL1CurrentBlockState = useMemo(() => ({\n block: currentBlock,\n blockNumber: currentBlock?.[0].block,\n chain: currentBlock?.[0].chain,\n error: currentBlockError,\n pollingConfig,\n provided: true,\n }), [currentBlock, currentBlockError, pollingConfig])\n\n return (\n <XL1CurrentBlockContext value={value}>\n {children}\n </XL1CurrentBlockContext>\n )\n}\n","import { isDefinedNotNull, isUndefinedOrNull } from '@xylabs/sdk-js'\nimport type { SignedHydratedBlock, XyoViewer } from '@xyo-network/xl1-sdk'\nimport {\n startTransition, useEffect, useState,\n} from 'react'\n\nconst DEFAULT_POLL_INTERVAL = 10_000\n\nexport const usePollCurrentBlock = (viewer?: XyoViewer | null, interval = DEFAULT_POLL_INTERVAL, pause = false) => {\n const [currentBlock, setCurrentBlock] = useState<SignedHydratedBlock | null>(null)\n const [error, setError] = useState<Error>()\n\n useEffect(() => {\n let isMounted = true\n // Function to fetch the current block\n const fetchBlock = async () => {\n if (isDefinedNotNull(viewer)) {\n try {\n const block = await viewer.currentBlock()\n // Safety check to ensure component is still mounted before updating state\n if (isMounted) {\n startTransition(() => {\n setCurrentBlock((existingBlock) => {\n if (isUndefinedOrNull(existingBlock)) {\n return block\n }\n if (\n isDefinedNotNull(block) && existingBlock?.[0].block !== block[0].block\n ) {\n return block\n }\n return existingBlock\n })\n })\n }\n } catch (err) {\n startTransition(() => {\n setError(err as Error)\n })\n }\n }\n }\n\n // Initial fetch\n void fetchBlock()\n\n // Polling mechanism\n const id = setInterval(() => {\n if (!pause) {\n void fetchBlock()\n }\n }, interval)\n\n return () => {\n isMounted = false\n clearInterval(id)\n }\n }, [viewer, interval, pause])\n\n return [currentBlock, error] as const\n}\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { XL1CurrentBlockContext } from './context.ts'\n\nexport const useXl1CurrentBlockContext = (required = true) => useContextEx(XL1CurrentBlockContext, 'XL1CurrentBlock', required)\n","import { createContextEx } from '@xylabs/react-shared'\nimport type { GatewayContextState } from '@xyo-network/react-chain-client'\n\nexport const GatewayContext = createContextEx<GatewayContextState>()\n","import { isDefinedNotNull, isNull } from '@xylabs/sdk-js'\nimport type { GatewayContextState, GatewayProviderProps } from '@xyo-network/react-chain-client'\nimport { useGatewayFromWallet } from '@xyo-network/react-chain-client'\nimport { ErrorRender } from '@xyo-network/react-error'\nimport React, { useMemo } from 'react'\n\nimport { useProvidedInPageGateways } from '../in-page-gateways/index.ts'\nimport { GatewayContext } from './context.ts'\n\nexport const GatewayProvider: React.FC<GatewayProviderProps> = ({ gatewayName, children }) => {\n const {\n gateway: gatewayFromWallet,\n error: gatewayFromWalletError,\n } = useGatewayFromWallet(gatewayName)\n\n const {\n gateways: allGateways,\n errors: allGatewayErrors,\n clearAll,\n } = useProvidedInPageGateways(true)\n\n const gatewayFromConfig = gatewayName ? allGateways[gatewayName] : undefined\n const gatewayFromConfigError = gatewayName ? allGatewayErrors[gatewayName] : undefined\n\n const { defaultGateway, gateways } = useMemo(() => {\n if (isNull(gatewayFromWallet)) {\n return {\n defaultGateway: gatewayFromConfig,\n gateways: {\n inPageGateway: gatewayFromConfig,\n walletGateway: null,\n },\n }\n } else if (isDefinedNotNull(gatewayFromWallet)) {\n return {\n defaultGateway: gatewayFromWallet,\n gateways: {\n inPageGateway: gatewayFromConfig,\n walletGateway: gatewayFromWallet,\n },\n }\n }\n return {\n defaultGateway: undefined,\n gateways: {\n inPageGateway: undefined,\n walletGateway: undefined,\n },\n }\n }, [gatewayFromConfig, gatewayFromWallet])\n\n const value = useMemo(() => {\n const value: GatewayContextState = {\n defaultGateway,\n error: gatewayFromWalletError || gatewayFromConfigError,\n gateways,\n provided: true,\n resetGatewaysFromConfig: clearAll,\n }\n return value\n }, [\n defaultGateway,\n gatewayFromWalletError,\n gatewayFromConfigError,\n gateways,\n clearAll,\n ])\n\n return (\n <GatewayContext value={value}>\n <ErrorRender error={gatewayFromConfigError} />\n {children}\n </GatewayContext>\n )\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { InPageGatewaysState } from './state.ts'\n\nexport const InPageGatewaysContext = createContextEx<InPageGatewaysState>()\n","import type { ContextGatewayType } from '@xyo-network/react-chain-client'\nimport type { AccountInstance } from '@xyo-network/sdk-js'\nimport type { GatewayName } from '@xyo-network/xl1-sdk'\nimport { DefaultNetworks } from '@xyo-network/xl1-sdk'\nimport type { PropsWithChildren } from 'react'\nimport React, {\n startTransition,\n useCallback, useEffect, useMemo, useState,\n} from 'react'\n\nimport { buildGateway } from '../../lib/index.ts'\nimport { InPageGatewaysContext } from './context.ts'\nimport type { InPageGatewaysState } from './state.ts'\n\nexport interface InPageGatewaysProviderProps extends PropsWithChildren {\n account?: AccountInstance\n}\n\n/**\n * Publishes an `InPageGatewaysContext` holding one in-page gateway per\n * network in `DefaultNetworks`. Unlike `WalletGatewayProvider`, gateways\n * here are constructed directly in the page (via `buildGateway`) against\n * each network's RPC endpoint — no browser wallet extension is required.\n *\n * Behavior:\n * - On mount, and whenever `account` changes, `buildGateway` is called in\n * parallel for every network in `DefaultNetworks` via\n * `Promise.allSettled`. Networks that resolve populate `gateways[id]`;\n * networks that reject populate `errors[id]`. One failed network does\n * not block the others.\n * - If `account` is provided, gateways are built with a remote *runner*\n * locator (can sign/send), otherwise with a remote *viewer* locator\n * (read-only).\n * - When `account` changes identity mid-life, the provider clears all\n * cached gateways and errors synchronously during render (via\n * `previousAccount` state) so consumers never see gateways bound to the\n * previous account, then rebuilds in the effect.\n * - State updates from the rebuild are wrapped in `startTransition` so a\n * slow network doesn't stall higher-priority UI updates.\n * - A `cancelled` flag in the effect's cleanup discards results from a\n * prior `account` once a new one is in flight.\n *\n * Published `InPageGatewaysState`:\n * - `gateways` — `Partial<Record<GatewayName, ContextGatewayType>>`. Keys\n * are only present for networks that built successfully.\n * - `errors` — `Partial<Record<GatewayName, Error>>`. Per-network build\n * failures, keyed by `GatewayName`.\n * - `clearAll()` — manually empties both maps. Also invoked internally on\n * account changes.\n * - `provided: true` — lets descendants detect a real provider.\n *\n * Note: the commented-out `SimpleXyoClient` at the top is intentionally\n * disabled pending a type unification between `XyoGateway` and\n * `XyoGatewayRunner`.\n */\nexport const InPageGatewaysProvider: React.FC<InPageGatewaysProviderProps> = ({ account, children }) => {\n const [gateways, setGateways] = useState<Partial<Record<GatewayName, ContextGatewayType>>>({})\n const [errors, setErrors] = useState<Partial<Record<GatewayName, Error>>>({})\n const [previousAccount, setPreviousAccount] = useState<AccountInstance | undefined>(account)\n\n // This can come back once we homogenize the type for XyoGateway.\n // Right now, SimpleXyoClient takes XyoGatewayRunners but ideally it would take XyoGateway.\n // const clientInPage = useMemo(() => new SimpleXyoClient(gateways, {}), [gateways])\n\n const clearAll = useCallback(() => {\n setGateways({})\n setErrors({})\n }, [])\n\n if (previousAccount !== account) {\n clearAll()\n setPreviousAccount(account)\n }\n\n useEffect(() => {\n let cancelled = false\n\n const buildAll = async () => {\n const results = await Promise.allSettled(\n DefaultNetworks.map(async (network) => {\n const gateway = await buildGateway(network.id as GatewayName, account)\n return { id: network.id as GatewayName, gateway }\n }),\n )\n\n if (cancelled) return\n\n const nextGateways: Partial<Record<GatewayName, ContextGatewayType>> = {}\n const nextErrors: Partial<Record<GatewayName, Error>> = {}\n\n for (const [index, result] of results.entries()) {\n const networkId = DefaultNetworks[index].id as GatewayName\n if (result.status === 'fulfilled') {\n nextGateways[networkId] = result.value.gateway\n } else {\n nextErrors[networkId] = result.reason instanceof Error ? result.reason : new Error(String(result.reason))\n }\n }\n\n startTransition(() => {\n setGateways(nextGateways)\n setErrors(nextErrors)\n })\n }\n\n void buildAll()\n return () => {\n cancelled = true\n }\n }, [account])\n\n const value = useMemo(() => {\n const value: InPageGatewaysState = {\n clearAll,\n errors,\n gateways,\n provided: true,\n }\n return value\n }, [clearAll, errors, gateways])\n\n return <InPageGatewaysContext value={value}>{children}</InPageGatewaysContext>\n}\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { InPageGatewaysContext } from './context.ts'\n\nexport const useProvidedInPageGateways = (required = true) => useContextEx(InPageGatewaysContext, 'InPageGateways', required)\n"],"mappings":"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","names":["Stack","Tooltip","Typography","EthAddressWrapper","BlockiesAvatarAddress","React","ConnectedAccount","address","shortenedAddress","EthAddressWrapper","fromString","toShortString","Stack","direction","alignItems","spacing","BlockiesAvatarAddress","size","Tooltip","title","Typography","color","variant","fontFamily","Alert","AlertTitle","Button","Stack","Typography","ButtonEx","isDefined","isUndefined","ErrorRender","React","useEffect","hexToBigInt","PayloadBuilder","formatAccountBalanceHistory","address","history","results","item","blockBw","txBw","transfer","transferHash","PayloadBuilder","hash","blockHash","from","to","amount","Object","entries","transfers","push","hexToBigInt","blockNumber","block","timestamp","$epoch","key","globalThis","crypto","randomUUID","txHash","_hash","debug","type","usePromise","isUndefined","hexToBigInt","isHex","toHex","balanceForRange","address","results","totalReceivedBalance","reduce","a","_block","_tx","transfer","hexToBigInt","transfers","toHex","totalSentBalance","from","Object","values","v","isHex","assertEx","isDefined","basicRemoteRunnerLocator","basicRemoteViewerLocator","DefaultNetworks","NetworkDataLakeUrls","XyoGatewayMoniker","buildGateway","gatewayName","account","network","DefaultNetworks","find","id","resolvedNetwork","assertEx","remoteConfig","rpc","protocol","url","dataLakeEndpoint","NetworkDataLakeUrls","locator","isDefined","basicRemoteRunnerLocator","basicRemoteViewerLocator","getInstance","XyoGatewayMoniker","findMinimumBlock","history","length","blockNumbers","map","blockBw","block","min","Math","max","useAccountBalanceHistory","address","viewer","maxPage","blockRange","refresh","usePromise","isUndefined","page","lastBlock","pagedHistory","resolvedStartBlock","history","account","balance","accountBalanceHistory","range","length","push","findMinimumBlock","nextHistory","formattedHistory","formatAccountBalanceHistory","balanceForRange","truncated","useProvidedGateway","useNetworkFromGateway","defaultGateway","useProvidedGateway","connection","network","useProvidedGateway","useRunnerFromGateway","defaultGateway","useProvidedGateway","connection","runner","useProvidedGateway","useViewerFromGateway","defaultGateway","useProvidedGateway","connection","viewer","getXyoClient","listenForClientInjection","assertEx","delay","forget","isDefined","isNull","TransactionConfirmationStatus","_params","active","params","exp","assertEx","transaction","nbf","onStatusUpdate","txHash","viewer","create","start","currentBlockNumber","isDefined","checkBlock","delay","error","stop","forget","Error","confirmed","blockNumber","progress","remainingBlocks","checkConfirmation","Math","round","tx","byHash","isNull","usePromise","isUndefined","isUndefinedOrNull","ShiftedBigInt","useMemo","useRef","useState","useAddressBalance","address","viewer","refresh","reset","balancesResult","setBalancesResult","useState","loading","setLoading","balancesError","setBalancesError","previousReset","setPreviousReset","undefined","balancePromiseRef","useRef","usePromise","isUndefined","currentPromise","account","balance","accountBalance","current","result","err","console","error","shiftedBigInt","useMemo","ShiftedBigInt","places","maxDecimal","maxCharacters","minDecimals","locale","navigator","language","balanceIntlFriendly","toFullString","shortBalanceIntlFriendly","isUndefinedOrNull","toShortString","balanceForAddress","usePromise","forget","isDefined","isHash","PayloadBuilder","useEffect","useState","useConfirmTransactionBase","transaction","onBroadcast","onStatusUpdate","runner","viewer","status","setStatus","useState","onStatusUpdateLocal","newStatus","transactionConfirmationStatus","transactionConfirmationError","usePromise","hasRunner","isDefined","hash","broadcastTransaction","PayloadBuilder","isHash","params","txHash","instance","TransactionConfirmationStatus","create","start","Error","useEffect","forget","stop","asAddress","assertEx","useAccountPermissions","useGatewayFromWallet","MainNetwork","useCallback","useState","useConnectAccount","gatewayName","MainNetwork","id","timeout","connectError","setConnectError","useState","gateway","error","timedout","useGatewayFromWallet","accountPermissions","accountPermissionsError","useAccountPermissions","address","setAddress","connectSigner","useCallback","undefined","assertedGateway","assertEx","signer","e","asAddress","usePromise","isDefinedNotNull","useCurrentBlock","refresh","viewer","usePromise","isDefinedNotNull","block","currentBlock","useCurrentBlockFromGateway","useViewerFromGateway","isUndefined","SimpleXyoNetwork","useMemo","useNetwork","id","network","useMemo","isUndefined","SimpleXyoNetwork","usePromise","SimpleXyoSigner","useSigner","_provider","account","usePromise","SimpleXyoSigner","create","undefined","usePromise","delay","isDefined","isUndefined","basicRemoteViewerLocator","LocalNetwork","SequenceNetwork","XyoViewerMoniker","useEffect","useState","INTERVAL","localRpcEndpoint","LocalNetwork","url","sequenceRpcEndpoint","SequenceNetwork","useCheckLocalRpc","isLocalProducer","useCheckRpc","useCheckSequenceRpc","isSequenceRpc","endpoint","setIsLocalProducer","useState","error","setError","viewer","usePromise","isUndefined","locator","basicRemoteViewerLocator","rpc","protocol","getInstance","XyoViewerMoniker","useEffect","undefined","block","currentBlock","isDefined","err","delay","isNull","PayloadBuilder","addDataLakePayloads","addDataLakePayloadsToPayloads","DataLakeViewerMoniker","JsonRpcXyoViewer","ViewerWithDataLake","JsonRpcXyoViewer","dataLakeViewer","blocksByHash","hash","limit","blocks","Promise","all","map","block","addDataLakePayloads","blocksByNumber","blockNumber","createHandler","locator","tryGetInstance","DataLakeViewerMoniker","payloadsByHash","hashes","payloads","addDataLakePayloadsToPayloads","transactionByHash","transaction","byHash","PayloadBuilder","addHashMeta","isNull","DefaultConnectComponent","props","React","ButtonEx","variant","size","DefaultNoWalletInstalledComponent","Alert","severity","AlertTitle","Typography","gutterBottom","Button","sx","display","justifySelf","href","target","rel","ConnectAccountsStack","AccountComponent","ConnectedAccount","ConnectComponent","NoWalletInstalledComponent","onAccountConnected","onCancel","timeout","address","connectSigner","error","timedout","useConnectAccount","undefined","useEffect","isDefined","Stack","direction","alignItems","spacing","isUndefined","onClick","ErrorRender","scope","createContextEx","XL1CurrentBlockContext","React","useMemo","isDefinedNotNull","isUndefinedOrNull","startTransition","useEffect","useState","DEFAULT_POLL_INTERVAL","usePollCurrentBlock","viewer","interval","pause","currentBlock","setCurrentBlock","useState","error","setError","useEffect","isMounted","fetchBlock","isDefinedNotNull","block","startTransition","existingBlock","isUndefinedOrNull","err","id","setInterval","clearInterval","DEFAULT_POLLING_INTERVAL","XL1CurrentBlockProvider","pollingConfig","viewer","children","interval","useMemo","currentBlock","currentBlockError","usePollCurrentBlock","value","block","blockNumber","chain","error","provided","React","XL1CurrentBlockContext","useContextEx","useXl1CurrentBlockContext","required","useContextEx","XL1CurrentBlockContext","createContextEx","GatewayContext","isDefinedNotNull","isNull","useGatewayFromWallet","ErrorRender","React","useMemo","createContextEx","InPageGatewaysContext","DefaultNetworks","React","startTransition","useCallback","useEffect","useMemo","useState","InPageGatewaysProvider","account","children","gateways","setGateways","useState","errors","setErrors","previousAccount","setPreviousAccount","clearAll","useCallback","useEffect","cancelled","buildAll","results","Promise","allSettled","DefaultNetworks","map","network","gateway","buildGateway","id","nextGateways","nextErrors","index","result","entries","networkId","status","value","reason","Error","String","startTransition","useMemo","provided","React","InPageGatewaysContext","useContextEx","useProvidedInPageGateways","required","useContextEx","InPageGatewaysContext","GatewayProvider","gatewayName","children","gateway","gatewayFromWallet","error","gatewayFromWalletError","useGatewayFromWallet","gateways","allGateways","errors","allGatewayErrors","clearAll","useProvidedInPageGateways","gatewayFromConfig","undefined","gatewayFromConfigError","defaultGateway","useMemo","isNull","inPageGateway","walletGateway","isDefinedNotNull","value","provided","resetGatewaysFromConfig","React","GatewayContext","ErrorRender"]}
1
+ {"version":3,"sources":["../../src/components/connected/account/Connected.tsx","../../src/components/connected/ConnectAccountsStack.tsx","../../src/hooks/account/helpers/formatAccountBalanceHistory.ts","../../src/hooks/account/useAccountBalanceHistory.ts","../../src/lib/balanceForRange.ts","../../src/lib/buildGateway.ts","../../src/lib/findMinimumBlock.ts","../../src/hooks/gateway/useNetwork.ts","../../src/hooks/gateway/useRunner.ts","../../src/hooks/gateway/useViewer.ts","../../src/hooks/helpers/getXyoClient.ts","../../src/hooks/helpers/transaction/Confirmation.ts","../../src/hooks/useAddressBalance.ts","../../src/hooks/useConfirmTransactionBase.ts","../../src/hooks/useConnectAccount.ts","../../src/hooks/useCurrentBlock.ts","../../src/hooks/useNetwork.ts","../../src/hooks/useSigner.ts","../../src/hooks/viewer/useCheckRpc.ts","../../src/hooks/viewer/ViewerWithDataLake.ts","../../src/contexts/current-block/context.ts","../../src/contexts/current-block/Provider.tsx","../../src/contexts/current-block/usePollCurrentBlock.ts","../../src/contexts/current-block/use.ts","../../src/contexts/gateway/Provider.tsx","../../src/contexts/in-page-gateways/context.ts","../../src/contexts/in-page-gateways/Provider.tsx","../../src/contexts/in-page-gateways/use.ts"],"sourcesContent":["import {\n Stack, Tooltip, Typography,\n} from '@mui/material'\nimport { EthAddressWrapper } from '@xylabs/sdk-js'\nimport { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'\nimport React from 'react'\n\nexport const ConnectedAccount: React.FC<{ address: string }> = ({ address }) => {\n const shortenedAddress = `${EthAddressWrapper.fromString(address)?.toShortString(4)}`\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <BlockiesAvatarAddress address={address} size={21} />\n <Tooltip title={address}>\n <Typography color=\"textSecondary\" variant=\"caption\" fontFamily=\"monospace\">{shortenedAddress}</Typography>\n </Tooltip>\n </Stack>\n )\n}\n","import type { StackProps } from '@mui/material'\nimport {\n Alert, AlertTitle, Button, Stack,\n Typography,\n} from '@mui/material'\nimport type { ButtonExProps } from '@xylabs/react-button'\nimport { ButtonEx } from '@xylabs/react-button'\nimport type { Address } from '@xylabs/sdk-js'\nimport { isDefined, isUndefined } from '@xylabs/sdk-js'\nimport { ErrorRender } from '@xyo-network/react-error'\nimport type { ComponentType, MouseEventHandler } from 'react'\nimport React, { useEffect } from 'react'\n\nimport { useConnectAccount } from '../../hooks/index.ts'\nimport { ConnectedAccount } from './account/index.ts'\n\nconst DefaultConnectComponent: React.FC<ButtonExProps> = props => (\n <ButtonEx variant=\"contained\" size=\"small\" {...props} />\n)\n\nconst DefaultNoWalletInstalledComponent: React.FC = () => (\n <Alert severity=\"warning\">\n <AlertTitle>XL1 Wallet Not Found</AlertTitle>\n <Typography gutterBottom>\n Please ensure that your XL1 Wallet is installed to connect your account.\n </Typography>\n <Button\n sx={{ display: 'flex', justifySelf: 'end' }}\n size=\"small\"\n variant=\"outlined\"\n href=\"https://chromewebstore.google.com/detail/xl1-wallet/fblbagcjeigmhakkfgjpdlcapcgmcfbm\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n Get XL1 Wallet\n </Button>\n </Alert>\n)\n\nexport interface ConnectClientAccountsStackProps extends StackProps {\n AccountComponent?: ComponentType<{ account?: string }>\n ConnectComponent?: ComponentType<{ onClick?: MouseEventHandler<HTMLElement> }>\n NoWalletInstalledComponent?: ComponentType\n onAccountConnected?: (account: Address) => void\n onCancel?: () => void\n timeout?: number\n}\n\n/** @deprecated - use version in @xyo-network/react-chain-client instead */\nexport const ConnectAccountsStack: React.FC<ConnectClientAccountsStackProps> = ({\n AccountComponent = ConnectedAccount,\n ConnectComponent = DefaultConnectComponent,\n NoWalletInstalledComponent = DefaultNoWalletInstalledComponent,\n onAccountConnected,\n onCancel,\n timeout,\n ...props\n}) => {\n const {\n address, connectSigner, error, timedout,\n } = useConnectAccount(undefined, timeout)\n\n useEffect(() => {\n if (isDefined(error) && isDefined(onCancel)) {\n onCancel()\n }\n }, [error, onCancel])\n\n useEffect(() => {\n if (isDefined(address) && isDefined(onAccountConnected)) {\n onAccountConnected(address)\n }\n }, [address, onAccountConnected])\n\n return (\n <Stack direction=\"row\" alignItems=\"start\" spacing={2} {...props}>\n {isDefined(address)\n ? <AccountComponent address={address} />\n : null}\n {isUndefined(address) && !timedout\n ? (\n <ConnectComponent onClick={() => void connectSigner()}>Connect</ConnectComponent>\n )\n : null}\n {isUndefined(address) && timedout\n ? (\n <NoWalletInstalledComponent />\n )\n : null}\n <ErrorRender error={error} scope=\"ConnectSigner:error\" />\n </Stack>\n )\n}\n","import type { Address, Hex } from '@xylabs/sdk-js'\nimport { hexToBigInt } from '@xylabs/sdk-js'\nimport { PayloadBuilder } from '@xyo-network/sdk-js'\nimport type { AccountBalanceHistoryItem } from '@xyo-network/xl1-sdk'\n\nimport type { AccountBalanceHistoryItemFormatted } from '../BalanceHistoryItemFormatted.ts'\n\nexport const formatAccountBalanceHistory = async (address: Address, history: AccountBalanceHistoryItem[]): Promise<AccountBalanceHistoryItemFormatted[]> => {\n const results: AccountBalanceHistoryItemFormatted[] = []\n for (const item of history) {\n const [blockBw, txBw, transfer] = item\n const transferHash = await PayloadBuilder.hash(transfer)\n const blockHash = await PayloadBuilder.hash(blockBw)\n if (address === transfer.from) {\n for (const [to, amount] of Object.entries(transfer.transfers)) {\n results.push({\n amount: hexToBigInt(amount as Hex),\n blockHash,\n blockNumber: blockBw.block,\n from: transfer.from,\n timestamp: blockBw.$epoch,\n key: globalThis.crypto.randomUUID(),\n to: to as Address,\n transferHash,\n txHash: txBw?._hash,\n debug: item,\n type: 'send',\n })\n }\n } else {\n results.push({\n amount: hexToBigInt(transfer.transfers[address] as Hex),\n blockHash,\n blockNumber: blockBw.block,\n from: transfer.from,\n key: globalThis.crypto.randomUUID(),\n timestamp: blockBw.$epoch,\n to: address,\n transferHash,\n txHash: txBw?._hash,\n debug: item,\n type: 'receive',\n })\n }\n }\n return results\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport {\n type Address,\n isUndefined,\n} from '@xylabs/sdk-js'\nimport type {\n AccountBalanceHistoryItem, XL1BlockRange, XyoViewer,\n} from '@xyo-network/xl1-sdk'\n\nimport { balanceForRange, findMinimumBlock } from '../../lib/index.ts'\nimport { formatAccountBalanceHistory } from './helpers/index.ts'\n\nexport const useAccountBalanceHistory = (address?: Address, viewer?: XyoViewer, maxPage = 10, blockRange?: XL1BlockRange, refresh?: number) => {\n return usePromise(async () => {\n if (isUndefined(viewer) || isUndefined(address)) return\n\n // Pagination Values\n let page = 1\n let lastBlock: number\n const pagedHistory: AccountBalanceHistoryItem[] = []\n const resolvedStartBlock = blockRange ? blockRange[0] : 0\n\n // Fetch first page to get starting lastBlock\n // If blockRange is provided, use that for the first fetch, otherwise the api will use [0, currentBlock]\n const history = await viewer.account.balance.accountBalanceHistory(address, blockRange ? { range: blockRange } : {})\n if (history.length > 0) {\n pagedHistory.push(...history)\n // Set lastBlock to one less than the lowest block in the first page\n lastBlock = findMinimumBlock(history)\n while (page < maxPage) {\n // Fetch next page\n const nextHistory = await viewer.account.balance.accountBalanceHistory(address, { range: [resolvedStartBlock, lastBlock] as XL1BlockRange })\n // Break if no more history\n if (nextHistory.length === 0) break\n // Update lastBlock and append to pagedHistory\n lastBlock = findMinimumBlock(nextHistory)\n pagedHistory.push(...nextHistory)\n // Increment page\n // Even if we are going to go over and break the loop, we still want to increment to show the answer was truncated\n page++\n }\n }\n const formattedHistory = await formatAccountBalanceHistory(address, pagedHistory)\n\n return {\n history: formattedHistory,\n balance: balanceForRange(address, pagedHistory),\n truncated: page >= maxPage,\n }\n }, [address, viewer, refresh, blockRange, maxPage])\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport {\n hexToBigInt, isHex, toHex,\n} from '@xylabs/sdk-js'\nimport type { AccountBalanceHistoryItem, AttoXL1 } from '@xyo-network/xl1-sdk'\n\nexport const balanceForRange = (address: Address, results: AccountBalanceHistoryItem[]): [AttoXL1, AttoXL1] => {\n const totalReceivedBalance = results?.reduce((a, [_block, _tx, transfer]) => {\n return a + hexToBigInt(transfer.transfers[address] ?? toHex(0))\n }, 0n)\n // eslint-disable-next-line unicorn/no-array-reduce\n const totalSentBalance = results?.reduce((a, [_block, _tx, transfer]) => {\n return (transfer.from === address) ? a + Object.values(transfer.transfers).reduce((a, v) => a + (isHex(v) ? hexToBigInt(v) : 0n), 0n) : a\n }, 0n)\n return [totalReceivedBalance, totalSentBalance] as [AttoXL1, AttoXL1]\n}\n","import { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type {\n GatewayName,\n RemoteConfig, RpcTransport, SimpleXyoGateway,\n XyoSignerRpcSchemas,\n} from '@xyo-network/xl1-sdk'\nimport {\n basicRemoteRunnerLocator,\n basicRemoteViewerLocator,\n DefaultNetworks, NetworkDataLakeUrls, XyoGatewayMoniker,\n} from '@xyo-network/xl1-sdk'\n\nexport const buildGateway = async (gatewayName: GatewayName, signerTransport?: RpcTransport<XyoSignerRpcSchemas>) => {\n const network = DefaultNetworks.find(network => network.id === gatewayName)\n const resolvedNetwork = assertEx(network, () => `No network found for id ${gatewayName}`)\n\n const remoteConfig: RemoteConfig = {\n rpc: {\n protocol: 'http',\n url: `${resolvedNetwork.url}/rpc`,\n },\n }\n\n const dataLakeEndpoint = NetworkDataLakeUrls[gatewayName]\n\n const locator = isDefined(signerTransport)\n ? await basicRemoteRunnerLocator(gatewayName, remoteConfig, signerTransport, dataLakeEndpoint)\n : await basicRemoteViewerLocator(gatewayName, remoteConfig, dataLakeEndpoint)\n\n return await locator.getInstance<SimpleXyoGateway>(XyoGatewayMoniker)\n}\n","import type { AccountBalanceHistoryItem } from '@xyo-network/xl1-sdk'\n\nexport const findMinimumBlock = (history: AccountBalanceHistoryItem[]): number => {\n // since taking Math.min of an empty array returns Infinity\n if (history.length === 0) return 0\n const blockNumbers = history.map(([blockBw]) => blockBw.block)\n const min = Math.min(...blockNumbers)\n return Math.max(min - 1, 0)\n}\n","import { useProvidedGateway } from '@xyo-network/react-chain-client'\n\nexport const useNetworkFromGateway = () => {\n const { defaultGateway } = useProvidedGateway()\n return defaultGateway?.connection?.network\n}\n","import { useProvidedGateway } from '@xyo-network/react-chain-client'\n\nexport const useRunnerFromGateway = () => {\n const { defaultGateway } = useProvidedGateway()\n return defaultGateway?.connection?.runner\n}\n","import { useProvidedGateway } from '@xyo-network/react-chain-client'\n\nexport const useViewerFromGateway = () => {\n const { defaultGateway } = useProvidedGateway()\n return defaultGateway?.connection?.viewer\n}\n","/** @deprecated Import from `@xyo-network/react-chain-client` instead */\nexport { getXyoClient, listenForClientInjection } from '@xyo-network/react-chain-client'\n","import type { Hash, Promisable } from '@xylabs/sdk-js'\nimport {\n assertEx, delay, forget, isDefined, isNull,\n} from '@xylabs/sdk-js'\nimport type { SignedHydratedTransaction, XyoViewer } from '@xyo-network/xl1-sdk'\n\nexport interface ConfirmationStatusUpdate {\n blockNumber: number\n confirmed: boolean\n error?: Error\n progress?: number\n remainingBlocks?: number\n}\n\nexport interface TransactionConfirmationParams {\n onStatusUpdate?: (status: ConfirmationStatusUpdate) => void\n transaction: SignedHydratedTransaction\n txHash: Hash\n viewer: XyoViewer\n}\n\nexport class TransactionConfirmationStatus {\n private readonly _params: TransactionConfirmationParams\n private active = false\n\n constructor(params: TransactionConfirmationParams) {\n this._params = params\n }\n\n get exp(): number {\n return assertEx(this.transaction[0].exp, () => 'exp is not found, transaction is not set')\n }\n\n get nbf(): number {\n return assertEx(this.transaction[0].nbf, () => 'nbf is not found, transaction is not set')\n }\n\n get onStatusUpdate(): TransactionConfirmationParams['onStatusUpdate'] {\n return this._params.onStatusUpdate\n }\n\n get params(): TransactionConfirmationParams {\n return this._params\n }\n\n get transaction(): SignedHydratedTransaction {\n return this.params.transaction\n }\n\n get txHash(): Hash {\n return this.params.txHash\n }\n\n get viewer(): XyoViewer {\n return this.params.viewer\n }\n\n static create(params: TransactionConfirmationParams): Promisable<TransactionConfirmationStatus> {\n return new TransactionConfirmationStatus(params)\n }\n\n async start(): Promise<void> {\n this.active = true\n try {\n const currentBlockNumber = await this.viewer.currentBlockNumber()\n while (isDefined(currentBlockNumber) && this.active) {\n await this.checkBlock(currentBlockNumber)\n // check block every second to see if the transaction is confirmed\n await delay(1000)\n }\n } catch (error) {\n await this.stop()\n forget(this.onStatusUpdate?.({\n error: error instanceof Error ? error : new Error('Unknown error occurred'),\n confirmed: false,\n blockNumber: 0,\n progress: 0,\n remainingBlocks: 0,\n }))\n }\n }\n\n stop(): Promisable<void> {\n this.active = false\n }\n\n private async checkBlock(blockNumber: number): Promise<void> {\n if (blockNumber < this.nbf) {\n await this.stop()\n forget(this.onStatusUpdate?.({\n error: new Error(`Block number: ${blockNumber} is before ${this.nbf}`),\n confirmed: false,\n blockNumber,\n progress: 0,\n remainingBlocks: this.exp - blockNumber,\n }))\n }\n if (blockNumber > this.exp) {\n forget(this.onStatusUpdate?.({\n confirmed: false, blockNumber, progress: 100, remainingBlocks: 0,\n }))\n return\n }\n if (blockNumber < this.exp) {\n await this.checkConfirmation(blockNumber)\n }\n }\n\n private async checkConfirmation(blockNumber: number): Promise<void> {\n const remainingBlocks = this.exp - blockNumber\n const progress = Math.round(((blockNumber - this.nbf) / (this.exp - this.nbf)) * 100)\n\n const tx = await this.viewer.transaction.byHash?.(this.txHash)\n if (isNull(tx)) {\n this.onStatusUpdate?.({\n confirmed: false, blockNumber, progress, remainingBlocks,\n })\n } else {\n this.onStatusUpdate?.({\n confirmed: true, blockNumber, progress, remainingBlocks,\n })\n await this.stop()\n }\n }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { Address } from '@xylabs/sdk-js'\nimport { isUndefined, isUndefinedOrNull } from '@xylabs/sdk-js'\nimport type { AttoXL1, XyoViewer } from '@xyo-network/xl1-sdk'\nimport { ShiftedBigInt } from '@xyo-network/xl1-sdk'\nimport {\n useMemo, useRef, useState,\n} from 'react'\n\nexport const useAddressBalance = (\n // address to get balance for\n address?: Address,\n // viewer to use for fetching balance\n viewer?: XyoViewer,\n // refresh balance trigger\n refresh?: number,\n // reset balance trigger - clears state immediately\n reset?: number,\n) => {\n const [balancesResult, setBalancesResult] = useState<AttoXL1 | null>()\n const [loading, setLoading] = useState(false)\n const [balancesError, setBalancesError] = useState<Error>()\n\n const [previousReset, setPreviousReset] = useState<number | undefined>(reset)\n if (reset !== previousReset) {\n setPreviousReset(reset)\n setBalancesResult(undefined)\n setBalancesError(undefined)\n setLoading(false)\n }\n\n const balancePromiseRef = useRef<Promise<AttoXL1> | null>(null)\n usePromise(async () => {\n if (isUndefined(viewer) || isUndefined(address)) return\n\n setLoading(true)\n setBalancesError(undefined)\n\n // Create and store the current promise\n const currentPromise = viewer.account.balance.accountBalance(address) as Promise<AttoXL1>\n balancePromiseRef.current = currentPromise\n\n try {\n const result = await currentPromise\n // Only update state if this is still the latest promise\n if (balancePromiseRef.current === currentPromise) {\n setBalancesResult(result as AttoXL1)\n setLoading(false)\n }\n } catch (err) {\n // Only update state if this is still the latest promise\n if (balancePromiseRef.current === currentPromise) {\n console.error('Error in queued call:', err)\n setBalancesResult(undefined)\n setBalancesError(err as Error)\n setLoading(false)\n }\n }\n }, [address, viewer, refresh])\n\n const shiftedBigInt = useMemo(() => {\n if (typeof balancesResult !== 'bigint') return\n return new ShiftedBigInt(balancesResult, {\n places: 18, maxDecimal: 18, maxCharacters: 9, minDecimals: 1, locale: navigator.language,\n })\n }, [balancesResult])\n\n const balanceIntlFriendly = useMemo(() => {\n return shiftedBigInt?.toFullString()\n }, [shiftedBigInt])\n\n const shortBalanceIntlFriendly = useMemo(() => {\n return isUndefinedOrNull(balancesResult)\n ? undefined\n : (balancesResult < 1_000_000_000_000n && balancesResult > 0n) ? '<0.00001' : shiftedBigInt?.toShortString()\n }, [balancesResult, shiftedBigInt])\n\n return {\n address,\n balanceForAddress: balancesResult,\n balanceIntlFriendly,\n shortBalanceIntlFriendly,\n error: balancesError,\n loading,\n }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { Hash } from '@xylabs/sdk-js'\nimport {\n forget, isDefined, isHash,\n} from '@xylabs/sdk-js'\nimport { PayloadBuilder } from '@xyo-network/sdk-js'\nimport type {\n SignedHydratedTransaction, XyoRunner, XyoViewer,\n} from '@xyo-network/xl1-sdk'\nimport { useEffect, useState } from 'react'\n\nimport type { ConfirmationStatusUpdate, TransactionConfirmationParams } from './helpers/index.ts'\nimport { TransactionConfirmationStatus } from './helpers/index.ts'\n\nexport const useConfirmTransactionBase = (\n // The transaction to confirm\n transaction?: SignedHydratedTransaction,\n // Callback for when the transaction is broadcast to the network\n onBroadcast?: (hash: Hash) => void,\n // Optional callback for status updates during confirmation\n onStatusUpdate?: TransactionConfirmationParams['onStatusUpdate'],\n // Runner to use for broadcasting transactions\n runner?: XyoRunner,\n // Viewer to use for checking transaction status\n viewer?: XyoViewer,\n) => {\n const [status, setStatus] = useState<ConfirmationStatusUpdate>()\n const onStatusUpdateLocal = (newStatus: ConfirmationStatusUpdate) => {\n setStatus(newStatus)\n onStatusUpdate?.(newStatus)\n }\n\n const [transactionConfirmationStatus, transactionConfirmationError] = usePromise(async () => {\n const hasRunner = isDefined(runner)\n if (transaction && viewer) {\n const hash = hasRunner ? (await runner.broadcastTransaction(transaction)) : await PayloadBuilder.hash(transaction[0])\n if (isHash(hash)) {\n if (hasRunner && isDefined(onBroadcast)) onBroadcast(hash)\n const params: TransactionConfirmationParams = {\n onStatusUpdate: onStatusUpdateLocal,\n transaction,\n txHash: hash,\n viewer,\n }\n const instance = await TransactionConfirmationStatus.create(params)\n await instance.start()\n return instance\n } else {\n throw new Error('unexpected return type from broadcast transaction')\n }\n }\n }, [transaction, runner, viewer])\n\n useEffect(() => {\n return () => {\n if (transactionConfirmationStatus) {\n // Stop the transaction confirmation status instance when the component unmounts\n forget(transactionConfirmationStatus.stop())\n }\n }\n }, [transactionConfirmationStatus])\n\n return { status, transactionConfirmationError }\n}\n","import { type Address, asAddress } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport { useAccountPermissions, useGatewayFromWallet } from '@xyo-network/react-chain-client'\nimport type { GatewayName } from '@xyo-network/xl1-sdk'\nimport { MainNetwork } from '@xyo-network/xl1-sdk'\nimport { useCallback, useState } from 'react'\n\n/** @deprecated - use version in @xyo-network/react-chain-client instead */\nexport const useConnectAccount = (gatewayName: GatewayName = MainNetwork.id, timeout?: number) => {\n const [connectError, setConnectError] = useState<Error>()\n\n const {\n gateway, error, timedout,\n } = useGatewayFromWallet(gatewayName, timeout)\n\n const [accountPermissions, accountPermissionsError] = useAccountPermissions()\n\n const [address, setAddress] = useState<Address>()\n\n const connectSigner = useCallback(async () => {\n try {\n setConnectError(undefined)\n const assertedGateway = assertEx(gateway, () => `Gateway ${gatewayName} is not available`)\n const signer = assertedGateway.signer\n const address = await signer.address()\n setAddress(address)\n return address\n } catch (e) {\n setConnectError(e as Error)\n }\n }, [gateway, gatewayName])\n\n return {\n address: asAddress(accountPermissions?.[0] ?? address), connectSigner, error: error ?? accountPermissionsError ?? connectError, gateway, timedout,\n }\n}\n","import type { UsePromiseState } from '@xylabs/react-promise'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isDefinedNotNull } from '@xylabs/sdk-js'\nimport type { HydratedBlockWithHashMeta, XyoViewer } from '@xyo-network/xl1-sdk'\n\nimport { useViewerFromGateway } from './gateway/index.ts'\n\n/* @deprecated - use useCurrentBlockFromGateway instead */\nexport const useCurrentBlock = (refresh = 1, viewer?: XyoViewer | null): [HydratedBlockWithHashMeta | undefined,\n Error | undefined, UsePromiseState | undefined] => {\n return usePromise(async () => {\n if (isDefinedNotNull(viewer) && refresh > 0) {\n const block = await viewer.currentBlock()\n return block\n }\n }, [viewer, refresh])\n}\n\nexport const useCurrentBlockFromGateway = (refresh = 1) => {\n const viewer = useViewerFromGateway()\n return usePromise(async () => {\n if (isDefinedNotNull(viewer) && refresh > 0) {\n const block = await viewer.currentBlock()\n return block\n }\n }, [viewer, refresh])\n}\n","import { isUndefined } from '@xylabs/sdk-js'\nimport type { DefaultNetworkIds } from '@xyo-network/xl1-sdk'\nimport { SimpleXyoNetwork } from '@xyo-network/xl1-sdk'\nimport { useMemo } from 'react'\n\nexport const useNetwork = (id?: DefaultNetworkIds) => {\n const network = useMemo(() => {\n if (isUndefined(id)) return\n return new SimpleXyoNetwork(id)\n }, [id])\n\n return network\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { AccountInstance } from '@xyo-network/sdk-js'\nimport {\n SimpleXyoSigner, type XyoConnection, type XyoSigner,\n} from '@xyo-network/xl1-sdk'\n\nexport const useSigner = (_provider?: XyoConnection, account?: AccountInstance) => {\n return usePromise<XyoSigner | undefined>(async () => account ? await SimpleXyoSigner.create({ account }) : undefined, [account])\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport {\n delay, isDefined, isUndefined,\n} from '@xylabs/sdk-js'\nimport type { JsonRpcXyoViewer } from '@xyo-network/xl1-sdk'\nimport {\n basicRemoteViewerLocator,\n LocalNetwork,\n SequenceNetwork,\n XyoViewerMoniker,\n} from '@xyo-network/xl1-sdk'\nimport { useEffect, useState } from 'react'\n\nconst INTERVAL = 5000 // 5 seconds\n\nconst localRpcEndpoint = `${LocalNetwork.url}/rpc`\nconst sequenceRpcEndpoint = `${SequenceNetwork.url}/rpc`\n\nexport const useCheckLocalRpc = () => {\n const isLocalProducer = useCheckRpc(localRpcEndpoint)\n return isLocalProducer\n}\n\nexport const useCheckSequenceRpc = () => {\n const isSequenceRpc = useCheckRpc(sequenceRpcEndpoint)\n return isSequenceRpc\n}\n\nexport const useCheckRpc = (endpoint?: string) => {\n const [isLocalProducer, setIsLocalProducer] = useState(false)\n const [error, setError] = useState<Error>()\n\n const [viewer] = usePromise(async () => {\n if (isUndefined(endpoint)) return\n\n const locator = await basicRemoteViewerLocator(endpoint, { rpc: { protocol: 'http', url: endpoint } })\n\n const viewer = await locator.getInstance<JsonRpcXyoViewer>(XyoViewerMoniker)\n return viewer\n }, [endpoint])\n\n useEffect(() => {\n if (isUndefined(viewer)) return\n\n void (async () => {\n setError(undefined)\n while (!isLocalProducer) {\n try {\n const block = await viewer.currentBlock()\n setIsLocalProducer(isDefined(block))\n } catch (err) {\n setError(err as Error)\n setIsLocalProducer(false)\n }\n await delay(INTERVAL)\n }\n })()\n }, [isLocalProducer, viewer])\n\n return { isLocalProducer, error }\n}\n","import { type Hash, isNull } from '@xylabs/sdk-js'\nimport { PayloadBuilder } from '@xyo-network/sdk-js'\nimport type {\n DataLakeViewer, SignedHydratedBlockWithHashMeta, SignedHydratedTransactionWithHashMeta, XL1BlockNumber,\n} from '@xyo-network/xl1-sdk'\nimport {\n addDataLakePayloads,\n addDataLakePayloadsToPayloads, DataLakeViewerMoniker, JsonRpcXyoViewer,\n} from '@xyo-network/xl1-sdk'\n\n/**\n * A Viewer with data lake capabilities, it will attempt to fill in missing payloads from the\n * data lake viewer if available.\n *\n * THIS IS AN EXPERIMENTAL CLASS! Only intended to prove the data lake viewer functionality works.\n * In the future, it should be refactored to augment any viewer with data lake capabilities,\n * and not rely on inheritance from JsonRpcXyoViewer which has the 'creatable' pattern baked in.\n */\nexport class ViewerWithDataLake extends JsonRpcXyoViewer {\n protected dataLakeViewer: DataLakeViewer | undefined\n\n override async blocksByHash(hash: Hash, limit?: number): Promise<SignedHydratedBlockWithHashMeta[]> {\n const blocks = await super.blocksByHash(hash, limit)\n return await Promise.all(blocks.map(async block => (await addDataLakePayloads(block, this.dataLakeViewer))[0]))\n }\n\n override async blocksByNumber(blockNumber: XL1BlockNumber, limit?: number): Promise<SignedHydratedBlockWithHashMeta[]> {\n const blocks = await super.blocksByNumber(blockNumber, limit)\n return await Promise.all(blocks.map(async block => (await addDataLakePayloads(block, this.dataLakeViewer))[0]))\n }\n\n override async createHandler() {\n await super.createHandler()\n this.dataLakeViewer = await this.locator.tryGetInstance<DataLakeViewer>(DataLakeViewerMoniker)\n }\n\n override async payloadsByHash(hashes: Hash[]) {\n const payloads = await super.payloadsByHash(hashes)\n return (await addDataLakePayloadsToPayloads(hashes, payloads, this.dataLakeViewer))[0]\n }\n\n override async transactionByHash(hash: Hash): Promise<SignedHydratedTransactionWithHashMeta | null> {\n const transaction = await super.transaction.byHash(hash)\n if (!this.dataLakeViewer) return transaction ? [await PayloadBuilder.addHashMeta(transaction[0]), await PayloadBuilder.addHashMeta(transaction[1])] : null\n\n return isNull(transaction)\n ? transaction\n : (await addDataLakePayloads([await PayloadBuilder.addHashMeta(transaction[0]),\n await PayloadBuilder.addHashMeta(transaction[1])], this.dataLakeViewer))[0]\n }\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { XL1CurrentBlockState } from './state.ts'\n\nexport const XL1CurrentBlockContext = createContextEx<XL1CurrentBlockState>()\n","import type { XyoViewer } from '@xyo-network/xl1-sdk'\nimport type { PropsWithChildren } from 'react'\nimport React, { useMemo } from 'react'\n\nimport { XL1CurrentBlockContext } from './context.ts'\nimport type { XL1CurrentBlockPollingConfig, XL1CurrentBlockState } from './state.ts'\nimport { usePollCurrentBlock } from './usePollCurrentBlock.ts'\n\nexport const DEFAULT_POLLING_INTERVAL = 10_000\n\nexport interface XL1CurrentBlockProviderProps extends PropsWithChildren {\n pollingConfig?: XL1CurrentBlockPollingConfig\n viewer?: XyoViewer | null\n}\n\nexport const XL1CurrentBlockProvider: React.FC<XL1CurrentBlockProviderProps> = ({\n pollingConfig, viewer, children,\n}) => {\n const { interval } = useMemo(() => pollingConfig || { interval: DEFAULT_POLLING_INTERVAL }, [pollingConfig])\n const [currentBlock, currentBlockError] = usePollCurrentBlock(viewer, interval)\n\n const value: XL1CurrentBlockState = useMemo(() => ({\n block: currentBlock,\n blockNumber: currentBlock?.[0].block,\n chain: currentBlock?.[0].chain,\n error: currentBlockError,\n pollingConfig,\n provided: true,\n }), [currentBlock, currentBlockError, pollingConfig])\n\n return (\n <XL1CurrentBlockContext value={value}>\n {children}\n </XL1CurrentBlockContext>\n )\n}\n","import { isDefinedNotNull, isUndefinedOrNull } from '@xylabs/sdk-js'\nimport type { SignedHydratedBlock, XyoViewer } from '@xyo-network/xl1-sdk'\nimport {\n startTransition, useEffect, useState,\n} from 'react'\n\nconst DEFAULT_POLL_INTERVAL = 10_000\n\nexport const usePollCurrentBlock = (viewer?: XyoViewer | null, interval = DEFAULT_POLL_INTERVAL, pause = false) => {\n const [currentBlock, setCurrentBlock] = useState<SignedHydratedBlock | null>(null)\n const [error, setError] = useState<Error>()\n\n useEffect(() => {\n let isMounted = true\n // Function to fetch the current block\n const fetchBlock = async () => {\n if (isDefinedNotNull(viewer)) {\n try {\n const block = await viewer.currentBlock()\n // Safety check to ensure component is still mounted before updating state\n if (isMounted) {\n startTransition(() => {\n setCurrentBlock((existingBlock) => {\n if (isUndefinedOrNull(existingBlock)) {\n return block\n }\n if (\n isDefinedNotNull(block) && existingBlock?.[0].block !== block[0].block\n ) {\n return block\n }\n return existingBlock\n })\n })\n }\n } catch (err) {\n startTransition(() => {\n setError(err as Error)\n })\n }\n }\n }\n\n // Initial fetch\n void fetchBlock()\n\n // Polling mechanism\n const id = setInterval(() => {\n if (!pause) {\n void fetchBlock()\n }\n }, interval)\n\n return () => {\n isMounted = false\n clearInterval(id)\n }\n }, [viewer, interval, pause])\n\n return [currentBlock, error] as const\n}\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { XL1CurrentBlockContext } from './context.ts'\n\nexport const useXl1CurrentBlockContext = (required = true) => useContextEx(XL1CurrentBlockContext, 'XL1CurrentBlock', required)\n","/**\n * @deprecated Moved to `@xyo-network/react-chain-client`. Import\n * `GatewayProvider` from there instead. This re-export exists only for\n * backward compatibility and will be removed in a future release.\n */\n\nexport { GatewayProvider } from '@xyo-network/react-chain-client'\n","/**\n * @deprecated Moved to `@xyo-network/react-chain-client`. Import\n * `InPageGatewaysContext` from there instead. This re-export exists only\n * for backward compatibility and will be removed in a future release.\n */\n\nexport { InPageGatewaysContext } from '@xyo-network/react-chain-client'\n","import type { ContextGatewayType, InPageGatewaysState } from '@xyo-network/react-chain-client'\nimport { InPageGatewaysContext } from '@xyo-network/react-chain-client'\nimport type {\n GatewayName, RpcTransport, XyoSignerRpcSchemas,\n} from '@xyo-network/xl1-sdk'\nimport { DefaultNetworks } from '@xyo-network/xl1-sdk'\nimport type { PropsWithChildren } from 'react'\nimport React, {\n startTransition,\n useCallback, useEffect, useMemo, useState,\n} from 'react'\n\nimport { buildGateway } from '../../lib/index.ts'\n\nexport interface InPageGatewaysProviderProps extends PropsWithChildren {\n signerTransport?: RpcTransport<XyoSignerRpcSchemas>\n}\n\n/**\n * Publishes a keyed map of in-page gateways — one per network in\n * `DefaultNetworks` — under the narrow `InPageGatewaysContext`.\n *\n * This provider is deliberately *not* a direct publisher of the shared\n * `GatewayContext` that `useProvidedGateway` reads. Its consumer is the\n * wrapping `GatewayProvider` in this same package, which picks the\n * `gatewayName` the consumer asked for out of this map, adapts it into\n * the single-gateway `GatewayContextState` shape, and then publishes *that*\n * to the shared context. Splitting the work this way lets one\n * `InPageGatewaysProvider` near the root build every network's gateway\n * once, while many `GatewayProvider` instances deeper in the tree each\n * expose whichever gateway their subtree cares about.\n *\n * Unlike `WalletGatewayProvider`, gateways here are constructed directly\n * in the page (via `buildGateway`) against each network's RPC endpoint\n * — no browser wallet extension is required. `signerTransport` switches\n * between viewer (read-only) and runner (can sign/send) locators; supply\n * it only when the app needs to sign.\n *\n * Behavior:\n * - On mount, and whenever `signerTransport` changes, `buildGateway` is\n * called in parallel for every network in `DefaultNetworks` via\n * `Promise.allSettled`. Networks that resolve populate `gateways[id]`;\n * networks that reject populate `errors[id]`. One failed network does\n * not block the others.\n * - If `signerTransport` is provided, gateways are built with a remote\n * *runner* locator, otherwise with a remote *viewer* locator.\n * - When `signerTransport` changes identity mid-life, the provider clears\n * all cached gateways and errors synchronously during render (via\n * `previousSignerTransport` state) so consumers never see gateways\n * bound to the previous transport, then rebuilds in the effect.\n * - State updates from the rebuild are wrapped in `startTransition` so a\n * slow network doesn't stall higher-priority UI updates.\n * - A `cancelled` flag in the effect's cleanup discards results from a\n * prior `signerTransport` once a new one is in flight.\n *\n * Published `InPageGatewaysState` (narrower than `GatewayContextState` —\n * this is an internal handoff shape, not the cross-publisher surface):\n * - `gateways` — `Partial<Record<GatewayName, ContextGatewayType>>`. Keys\n * are only present for networks that built successfully.\n * - `errors` — `Partial<Record<GatewayName, Error>>`. Per-network build\n * failures, keyed by `GatewayName`.\n * - `clearAll()` — manually empties both maps. Also invoked internally on\n * transport changes. Forwarded by `GatewayProvider` to consumers as\n * `resetGatewaysFromConfig`.\n * - `provided: true` — lets descendants detect a real provider.\n *\n * Note: the commented-out `SimpleXyoClient` at the top is intentionally\n * disabled pending a type unification between `XyoGateway` and\n * `XyoGatewayRunner`.\n */\nexport const InPageGatewaysProvider: React.FC<InPageGatewaysProviderProps> = ({ signerTransport, children }) => {\n const [gateways, setGateways] = useState<Partial<Record<GatewayName, ContextGatewayType>>>({})\n const [errors, setErrors] = useState<Partial<Record<GatewayName, Error>>>({})\n const [previousSignerTransport, setPreviousSignerTransport] = useState<RpcTransport<XyoSignerRpcSchemas> | undefined>(signerTransport)\n\n // This can come back once we homogenize the type for XyoGateway.\n // Right now, SimpleXyoClient takes XyoGatewayRunners but ideally it would take XyoGateway.\n // const clientInPage = useMemo(() => new SimpleXyoClient(gateways, {}), [gateways])\n\n const clearAll = useCallback(() => {\n setGateways({})\n setErrors({})\n }, [])\n\n if (previousSignerTransport !== signerTransport) {\n clearAll()\n setPreviousSignerTransport(signerTransport)\n }\n\n useEffect(() => {\n let cancelled = false\n\n const buildAll = async () => {\n const results = await Promise.allSettled(\n DefaultNetworks.map(async (network) => {\n const gateway = await buildGateway(network.id as GatewayName, signerTransport)\n return { id: network.id as GatewayName, gateway }\n }),\n )\n\n if (cancelled) return\n\n const nextGateways: Partial<Record<GatewayName, ContextGatewayType>> = {}\n const nextErrors: Partial<Record<GatewayName, Error>> = {}\n\n for (const [index, result] of results.entries()) {\n const networkId = DefaultNetworks[index].id as GatewayName\n if (result.status === 'fulfilled') {\n nextGateways[networkId] = result.value.gateway\n } else {\n nextErrors[networkId] = result.reason instanceof Error ? result.reason : new Error(String(result.reason))\n }\n }\n\n startTransition(() => {\n setGateways(nextGateways)\n setErrors(nextErrors)\n })\n }\n\n void buildAll()\n return () => {\n cancelled = true\n }\n }, [signerTransport])\n\n const value = useMemo(() => {\n const value: InPageGatewaysState = {\n clearAll,\n errors,\n gateways,\n provided: true,\n }\n return value\n }, [clearAll, errors, gateways])\n\n return <InPageGatewaysContext value={value}>{children}</InPageGatewaysContext>\n}\n","/**\n * @deprecated Moved to `@xyo-network/react-chain-client`. Import\n * `useProvidedInPageGateways` from there instead. This re-export exists\n * only for backward compatibility and will be removed in a future\n * release.\n */\n\nexport { useProvidedInPageGateways } from '@xyo-network/react-chain-client'\n"],"mappings":"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","names":["Stack","Tooltip","Typography","EthAddressWrapper","BlockiesAvatarAddress","React","ConnectedAccount","address","shortenedAddress","EthAddressWrapper","fromString","toShortString","Stack","direction","alignItems","spacing","BlockiesAvatarAddress","size","Tooltip","title","Typography","color","variant","fontFamily","Alert","AlertTitle","Button","Stack","Typography","ButtonEx","isDefined","isUndefined","ErrorRender","React","useEffect","hexToBigInt","PayloadBuilder","formatAccountBalanceHistory","address","history","results","item","blockBw","txBw","transfer","transferHash","PayloadBuilder","hash","blockHash","from","to","amount","Object","entries","transfers","push","hexToBigInt","blockNumber","block","timestamp","$epoch","key","globalThis","crypto","randomUUID","txHash","_hash","debug","type","usePromise","isUndefined","hexToBigInt","isHex","toHex","balanceForRange","address","results","totalReceivedBalance","reduce","a","_block","_tx","transfer","hexToBigInt","transfers","toHex","totalSentBalance","from","Object","values","v","isHex","assertEx","isDefined","basicRemoteRunnerLocator","basicRemoteViewerLocator","DefaultNetworks","NetworkDataLakeUrls","XyoGatewayMoniker","buildGateway","gatewayName","signerTransport","network","DefaultNetworks","find","id","resolvedNetwork","assertEx","remoteConfig","rpc","protocol","url","dataLakeEndpoint","NetworkDataLakeUrls","locator","isDefined","basicRemoteRunnerLocator","basicRemoteViewerLocator","getInstance","XyoGatewayMoniker","findMinimumBlock","history","length","blockNumbers","map","blockBw","block","min","Math","max","useAccountBalanceHistory","address","viewer","maxPage","blockRange","refresh","usePromise","isUndefined","page","lastBlock","pagedHistory","resolvedStartBlock","history","account","balance","accountBalanceHistory","range","length","push","findMinimumBlock","nextHistory","formattedHistory","formatAccountBalanceHistory","balanceForRange","truncated","useProvidedGateway","useNetworkFromGateway","defaultGateway","useProvidedGateway","connection","network","useProvidedGateway","useRunnerFromGateway","defaultGateway","useProvidedGateway","connection","runner","useProvidedGateway","useViewerFromGateway","defaultGateway","useProvidedGateway","connection","viewer","getXyoClient","listenForClientInjection","assertEx","delay","forget","isDefined","isNull","TransactionConfirmationStatus","_params","active","params","exp","assertEx","transaction","nbf","onStatusUpdate","txHash","viewer","create","start","currentBlockNumber","isDefined","checkBlock","delay","error","stop","forget","Error","confirmed","blockNumber","progress","remainingBlocks","checkConfirmation","Math","round","tx","byHash","isNull","usePromise","isUndefined","isUndefinedOrNull","ShiftedBigInt","useMemo","useRef","useState","useAddressBalance","address","viewer","refresh","reset","balancesResult","setBalancesResult","useState","loading","setLoading","balancesError","setBalancesError","previousReset","setPreviousReset","undefined","balancePromiseRef","useRef","usePromise","isUndefined","currentPromise","account","balance","accountBalance","current","result","err","console","error","shiftedBigInt","useMemo","ShiftedBigInt","places","maxDecimal","maxCharacters","minDecimals","locale","navigator","language","balanceIntlFriendly","toFullString","shortBalanceIntlFriendly","isUndefinedOrNull","toShortString","balanceForAddress","usePromise","forget","isDefined","isHash","PayloadBuilder","useEffect","useState","useConfirmTransactionBase","transaction","onBroadcast","onStatusUpdate","runner","viewer","status","setStatus","useState","onStatusUpdateLocal","newStatus","transactionConfirmationStatus","transactionConfirmationError","usePromise","hasRunner","isDefined","hash","broadcastTransaction","PayloadBuilder","isHash","params","txHash","instance","TransactionConfirmationStatus","create","start","Error","useEffect","forget","stop","asAddress","assertEx","useAccountPermissions","useGatewayFromWallet","MainNetwork","useCallback","useState","useConnectAccount","gatewayName","MainNetwork","id","timeout","connectError","setConnectError","useState","gateway","error","timedout","useGatewayFromWallet","accountPermissions","accountPermissionsError","useAccountPermissions","address","setAddress","connectSigner","useCallback","undefined","assertedGateway","assertEx","signer","e","asAddress","usePromise","isDefinedNotNull","useCurrentBlock","refresh","viewer","usePromise","isDefinedNotNull","block","currentBlock","useCurrentBlockFromGateway","useViewerFromGateway","isUndefined","SimpleXyoNetwork","useMemo","useNetwork","id","network","useMemo","isUndefined","SimpleXyoNetwork","usePromise","SimpleXyoSigner","useSigner","_provider","account","usePromise","SimpleXyoSigner","create","undefined","usePromise","delay","isDefined","isUndefined","basicRemoteViewerLocator","LocalNetwork","SequenceNetwork","XyoViewerMoniker","useEffect","useState","INTERVAL","localRpcEndpoint","LocalNetwork","url","sequenceRpcEndpoint","SequenceNetwork","useCheckLocalRpc","isLocalProducer","useCheckRpc","useCheckSequenceRpc","isSequenceRpc","endpoint","setIsLocalProducer","useState","error","setError","viewer","usePromise","isUndefined","locator","basicRemoteViewerLocator","rpc","protocol","getInstance","XyoViewerMoniker","useEffect","undefined","block","currentBlock","isDefined","err","delay","isNull","PayloadBuilder","addDataLakePayloads","addDataLakePayloadsToPayloads","DataLakeViewerMoniker","JsonRpcXyoViewer","ViewerWithDataLake","JsonRpcXyoViewer","dataLakeViewer","blocksByHash","hash","limit","blocks","Promise","all","map","block","addDataLakePayloads","blocksByNumber","blockNumber","createHandler","locator","tryGetInstance","DataLakeViewerMoniker","payloadsByHash","hashes","payloads","addDataLakePayloadsToPayloads","transactionByHash","transaction","byHash","PayloadBuilder","addHashMeta","isNull","DefaultConnectComponent","props","React","ButtonEx","variant","size","DefaultNoWalletInstalledComponent","Alert","severity","AlertTitle","Typography","gutterBottom","Button","sx","display","justifySelf","href","target","rel","ConnectAccountsStack","AccountComponent","ConnectedAccount","ConnectComponent","NoWalletInstalledComponent","onAccountConnected","onCancel","timeout","address","connectSigner","error","timedout","useConnectAccount","undefined","useEffect","isDefined","Stack","direction","alignItems","spacing","isUndefined","onClick","ErrorRender","scope","createContextEx","XL1CurrentBlockContext","React","useMemo","isDefinedNotNull","isUndefinedOrNull","startTransition","useEffect","useState","DEFAULT_POLL_INTERVAL","usePollCurrentBlock","viewer","interval","pause","currentBlock","setCurrentBlock","useState","error","setError","useEffect","isMounted","fetchBlock","isDefinedNotNull","block","startTransition","existingBlock","isUndefinedOrNull","err","id","setInterval","clearInterval","DEFAULT_POLLING_INTERVAL","XL1CurrentBlockProvider","pollingConfig","viewer","children","interval","useMemo","currentBlock","currentBlockError","usePollCurrentBlock","value","block","blockNumber","chain","error","provided","React","XL1CurrentBlockContext","useContextEx","useXl1CurrentBlockContext","required","useContextEx","XL1CurrentBlockContext","GatewayProvider","InPageGatewaysContext","InPageGatewaysContext","DefaultNetworks","React","startTransition","useCallback","useEffect","useMemo","useState","InPageGatewaysProvider","signerTransport","children","gateways","setGateways","useState","errors","setErrors","previousSignerTransport","setPreviousSignerTransport","clearAll","useCallback","useEffect","cancelled","buildAll","results","Promise","allSettled","DefaultNetworks","map","network","gateway","buildGateway","id","nextGateways","nextErrors","index","result","entries","networkId","status","value","reason","Error","String","startTransition","useMemo","provided","React","InPageGatewaysContext","useProvidedInPageGateways"]}
@@ -1,4 +1,3 @@
1
- import type { AccountInstance } from '@xyo-network/sdk-js';
2
- import type { GatewayName, SimpleXyoGateway } from '@xyo-network/xl1-sdk';
3
- export declare const buildGateway: (gatewayName: GatewayName, account?: AccountInstance) => Promise<import("@xyo-network/xl1-sdk").CreatableProviderInstance<SimpleXyoGateway>>;
1
+ import type { GatewayName, RpcTransport, SimpleXyoGateway, XyoSignerRpcSchemas } from '@xyo-network/xl1-sdk';
2
+ export declare const buildGateway: (gatewayName: GatewayName, signerTransport?: RpcTransport<XyoSignerRpcSchemas>) => Promise<import("@xyo-network/xl1-sdk").CreatableProviderInstance<SimpleXyoGateway>>;
4
3
  //# sourceMappingURL=buildGateway.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildGateway.d.ts","sourceRoot":"","sources":["../../../src/lib/buildGateway.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EACV,WAAW,EAAgB,gBAAgB,EAC5C,MAAM,sBAAsB,CAAA;AAM7B,eAAO,MAAM,YAAY,GAAU,aAAa,WAAW,EAAE,UAAU,eAAe,wFAkBrF,CAAA"}
1
+ {"version":3,"file":"buildGateway.d.ts","sourceRoot":"","sources":["../../../src/lib/buildGateway.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACG,YAAY,EAAE,gBAAgB,EAC5C,mBAAmB,EACpB,MAAM,sBAAsB,CAAA;AAO7B,eAAO,MAAM,YAAY,GAAU,aAAa,WAAW,EAAE,kBAAkB,YAAY,CAAC,mBAAmB,CAAC,wFAkB/G,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/react-chain-provider",
3
- "version": "1.20.24",
3
+ "version": "1.20.25",
4
4
  "description": "XYO Layer One API",
5
5
  "homepage": "https://xylabs.com",
6
6
  "bugs": {
@@ -42,8 +42,7 @@
42
42
  "@xylabs/react-button": "~7.1.20",
43
43
  "@xylabs/react-shared": "~7.1.20",
44
44
  "@xyo-network/react-error": "~7.5.8",
45
- "@xyo-network/xl1-sdk": "^1.26.36",
46
- "@xyo-network/chain-orchestration": "~1.20.24"
45
+ "@xyo-network/xl1-sdk": "^1.26.36"
47
46
  },
48
47
  "devDependencies": {
49
48
  "@emotion/react": "~11.14.0",
@@ -133,12 +132,12 @@
133
132
  "vite": "^8.0.9",
134
133
  "vitest": "^4.1.5",
135
134
  "zod": "^4.3.6",
136
- "@xyo-network/chain-services": "~1.20.24",
137
- "@xyo-network/chain-telemetry": "~1.20.24",
138
- "@xyo-network/react-chain-client": "~1.20.24",
139
- "@xyo-network/react-chain-model": "~1.20.24",
140
- "@xyo-network/react-chain-shared": "~1.20.24",
141
- "@xyo-network/react-chain-blockies": "~1.20.24"
135
+ "@xyo-network/chain-telemetry": "~1.20.25",
136
+ "@xyo-network/react-chain-model": "~1.20.25",
137
+ "@xyo-network/react-chain-shared": "~1.20.25",
138
+ "@xyo-network/react-chain-blockies": "~1.20.25",
139
+ "@xyo-network/react-chain-client": "~1.20.25",
140
+ "@xyo-network/chain-services": "~1.20.25"
142
141
  },
143
142
  "peerDependencies": {
144
143
  "@mui/material": "~7.3.9",
@@ -1,8 +0,0 @@
1
- export declare const GatewayContext: import("react").Context<(import("@xylabs/react-shared").FixedValues<import("@xylabs/react-shared").ProvidedContextExState<import("@xyo-network/react-chain-client").GatewayStateFields>, never> & {
2
- provided: false;
3
- }) | (import("@xylabs/react-shared").FixedValues<import("@xylabs/react-shared").NotProvidedContextExState<import("@xyo-network/react-chain-client").GatewayStateFields>, never> & {
4
- provided: false;
5
- }) | (import("@xyo-network/react-chain-client").GatewayStateFields & {
6
- provided: true;
7
- })>;
8
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/contexts/gateway/context.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc;;;;;;GAAyC,CAAA"}
@@ -1,9 +0,0 @@
1
- import type { AccountInstance } from '@xyo-network/sdk-js';
2
- import type { GatewayName } from '@xyo-network/xl1-sdk';
3
- export interface GatewayStatsProps {
4
- account?: AccountInstance;
5
- id?: GatewayName;
6
- url?: string;
7
- }
8
- export declare const GatewayStats: React.FC<GatewayStatsProps>;
9
- //# sourceMappingURL=GatewayStats.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GatewayStats.d.ts","sourceRoot":"","sources":["../../../../../src/contexts/gateway/story/GatewayStats.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAMvD,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,EAAE,CAAC,EAAE,WAAW,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAkBpD,CAAA"}
@@ -1,3 +0,0 @@
1
- /** Inner component that consumes the GatewayContext to display load status */
2
- export declare const GatewayStatus: React.FC;
3
- //# sourceMappingURL=GatewayStatus.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GatewayStatus.d.ts","sourceRoot":"","sources":["../../../../../src/contexts/gateway/story/GatewayStatus.tsx"],"names":[],"mappings":"AAKA,8EAA8E;AAC9E,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EA6CjC,CAAA"}