@xyo-network/react-chain-provider 2.0.17 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,19 +1,8 @@
1
- import type { StackProps } from '@mui/material';
2
- import type { Address } from '@xylabs/sdk-js';
3
- import type { ComponentType, MouseEventHandler } from 'react';
4
- import React from 'react';
5
- export interface ConnectClientAccountsStackProps extends StackProps {
6
- AccountComponent?: ComponentType<{
7
- account?: string;
8
- }>;
9
- ConnectComponent?: ComponentType<{
10
- onClick?: MouseEventHandler<HTMLElement>;
11
- }>;
12
- NoWalletInstalledComponent?: ComponentType;
13
- onAccountConnected?: (account: Address) => void;
14
- onCancel?: () => void;
15
- timeout?: number;
16
- }
17
- /** @deprecated - use version in @xyo-network/xl1-react-client-sdk instead */
18
- export declare const ConnectAccountsStack: React.FC<ConnectClientAccountsStackProps>;
1
+ /**
2
+ * @deprecated Moved to `@xyo-network/xl1-react-client-sdk`. Import from there
3
+ * instead. This re-export exists only for backward compatibility and will be
4
+ * removed in a future release.
5
+ */
6
+ export type { ConnectClientAccountsStackProps } from '@xyo-network/xl1-react-client-sdk';
7
+ export { ConnectAccountsStack } from '@xyo-network/xl1-react-client-sdk';
19
8
  //# sourceMappingURL=ConnectAccountsStack.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectAccountsStack.d.ts","sourceRoot":"","sources":["../../../../src/components/connected/ConnectAccountsStack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAO/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAG7C,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAC7D,OAAO,KAAoB,MAAM,OAAO,CAAA;AA4BxC,MAAM,WAAW,+BAAgC,SAAQ,UAAU;IACjE,gBAAgB,CAAC,EAAE,aAAa,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACtD,gBAAgB,CAAC,EAAE,aAAa,CAAC;QAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAA;KAAE,CAAC,CAAA;IAC9E,0BAA0B,CAAC,EAAE,aAAa,CAAA;IAC1C,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CAgD1E,CAAA"}
1
+ {"version":3,"file":"ConnectAccountsStack.d.ts","sourceRoot":"","sources":["../../../../src/components/connected/ConnectAccountsStack.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAA;AACxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA"}
@@ -3,11 +3,11 @@ export declare const usePollCurrentBlock: (viewer?: XyoViewer | null, interval?:
3
3
  schema: "network.xyo.boundwitness" & {
4
4
  readonly __schema: true;
5
5
  };
6
- addresses: (import("@xyo-network/address").XyoQuantAddress | (Lowercase<string> & {
6
+ addresses: ((Lowercase<string> & {
7
7
  readonly __hex: true;
8
8
  } & {
9
9
  readonly __address: true;
10
- }))[];
10
+ }) | import("@xyo-network/address").XyoQuantAddress)[];
11
11
  payload_hashes: import("@xylabs/sdk-js").BrandedHash[];
12
12
  payload_schemas: import("@xyo-network/sdk-protocol-js").BrandedSchema<string>[];
13
13
  previous_hashes: (import("@xylabs/sdk-js").BrandedHash | null)[];
@@ -1 +1 @@
1
- {"version":3,"file":"formatAccountBalanceHistory.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/account/helpers/formatAccountBalanceHistory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAErE,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAA;AAE3F,eAAO,MAAM,2BAA2B,GAAU,SAAS,UAAU,EAAE,SAAS,yBAAyB,EAAE,KAAG,OAAO,CAAC,kCAAkC,EAAE,CAuCzJ,CAAA"}
1
+ {"version":3,"file":"formatAccountBalanceHistory.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/account/helpers/formatAccountBalanceHistory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAErE,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAA;AAE3F,eAAO,MAAM,2BAA2B,GAAU,SAAS,UAAU,EAAE,SAAS,yBAAyB,EAAE,KAAG,OAAO,CAAC,kCAAkC,EAAE,CAuCzJ,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useConfirmTransactionBase.d.ts","sourceRoot":"","sources":["../../../src/hooks/useConfirmTransactionBase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAK1C,OAAO,KAAK,EACV,yBAAyB,EAAE,SAAS,EAAE,SAAS,EAChD,MAAM,sBAAsB,CAAA;AAG7B,OAAO,KAAK,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAA;AAGjG,eAAO,MAAM,yBAAyB,GAEpC,cAAc,yBAAyB,EAEvC,cAAc,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,EAElC,iBAAiB,6BAA6B,CAAC,gBAAgB,CAAC,EAEhE,SAAS,SAAS,EAElB,SAAS,SAAS;;;CAuCnB,CAAA"}
1
+ {"version":3,"file":"useConfirmTransactionBase.d.ts","sourceRoot":"","sources":["../../../src/hooks/useConfirmTransactionBase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAK1C,OAAO,KAAK,EACV,yBAAyB,EAAE,SAAS,EAAE,SAAS,EAChD,MAAM,sBAAsB,CAAA;AAG7B,OAAO,KAAK,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAA;AAGjG,eAAO,MAAM,yBAAyB,GAEpC,cAAc,yBAAyB,EAEvC,cAAc,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,EAElC,iBAAiB,6BAA6B,CAAC,gBAAgB,CAAC,EAEhE,SAAS,SAAS,EAElB,SAAS,SAAS;;;CAsCnB,CAAA"}
@@ -1,15 +1,7 @@
1
- import { type Address } from '@xylabs/sdk-js';
2
- import type { XyoAddress } from '@xyo-network/address';
3
- import type { GatewayFromWallet } from '@xyo-network/xl1-react-client-sdk';
4
- import type { GatewayName } from '@xyo-network/xl1-sdk';
5
- interface UseConnectAccountResult {
6
- address: Address | undefined;
7
- connectSigner: () => Promise<XyoAddress | undefined>;
8
- error: Error | null | undefined;
9
- gateway: GatewayFromWallet['gateway'];
10
- timedout: boolean | undefined;
11
- }
12
- /** @deprecated - use version in @xyo-network/xl1-react-client-sdk instead */
13
- export declare const useConnectAccount: (gatewayName?: GatewayName, timeout?: number) => UseConnectAccountResult;
14
- export {};
1
+ /**
2
+ * @deprecated Moved to `@xyo-network/xl1-react-client-sdk`. Import from there
3
+ * instead. This re-export exists only for backward compatibility and will be
4
+ * removed in a future release.
5
+ */
6
+ export { useConnectAccount } from '@xyo-network/xl1-react-client-sdk';
15
7
  //# sourceMappingURL=useConnectAccount.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useConnectAccount.d.ts","sourceRoot":"","sources":["../../../src/hooks/useConnectAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAa,MAAM,gBAAgB,CAAA;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AAE1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAIvD,UAAU,uBAAuB;IAC/B,OAAO,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5B,aAAa,EAAE,MAAM,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAA;IACpD,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,CAAA;IAC/B,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAA;IACrC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;CAC9B;AAED,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,GAAI,cAAa,WAA4B,EAAE,UAAU,MAAM,KAAG,uBA2B/F,CAAA"}
1
+ {"version":3,"file":"useConnectAccount.d.ts","sourceRoot":"","sources":["../../../src/hooks/useConnectAccount.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ViewerWithDataLake.d.ts","sourceRoot":"","sources":["../../../../src/hooks/viewer/ViewerWithDataLake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAU,MAAM,gBAAgB,CAAA;AAElD,OAAO,KAAK,EACV,cAAc,EAAE,+BAA+B,EAAE,qCAAqC,EAAE,cAAc,EACvG,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAEiD,gBAAgB,EACvE,MAAM,sBAAsB,CAAA;AAE7B;;;;;;;GAOG;AACH,qBAAa,kBAAmB,SAAQ,gBAAgB;IACtD,SAAS,CAAC,cAAc,EAAE,cAAc,GAAG,SAAS,CAAA;IAErC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,+BAA+B,EAAE,CAAC;IAKpF,cAAc,CAAC,WAAW,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,+BAA+B,EAAE,CAAC;IAKvG,aAAa;IAKb,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;;;IAK7B,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,qCAAqC,GAAG,IAAI,CAAC;CASpG"}
1
+ {"version":3,"file":"ViewerWithDataLake.d.ts","sourceRoot":"","sources":["../../../../src/hooks/viewer/ViewerWithDataLake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAU,MAAM,gBAAgB,CAAA;AAElD,OAAO,KAAK,EACV,cAAc,EAAE,+BAA+B,EAAE,qCAAqC,EAAE,cAAc,EACvG,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAEiD,gBAAgB,EACvE,MAAM,sBAAsB,CAAA;AAE7B;;;;;;;GAOG;AACH,qBAAa,kBAAmB,SAAQ,gBAAgB;IACtD,SAAS,CAAC,cAAc,EAAE,cAAc,GAAG,SAAS,CAAA;IAErC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,+BAA+B,EAAE,CAAC;IAQpF,cAAc,CAAC,WAAW,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,+BAA+B,EAAE,CAAC;IAQvG,aAAa;IAKb,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;;;IAM7B,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,qCAAqC,GAAG,IAAI,CAAC;CAiBpG"}
@@ -8,7 +8,7 @@ import { EthAddressWrapper } from "@xylabs/eth-address";
8
8
  import { BlockiesAvatarAddress } from "@xyo-network/xl1-blockies";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
  var ConnectedAccount = ({ address }) => {
11
- const shortenedAddress = `${EthAddressWrapper.fromString(address)?.toShortString(4)}`;
11
+ const shortenedAddress = EthAddressWrapper.fromString(address)?.toShortString(4);
12
12
  return /* @__PURE__ */ jsxs(
13
13
  Stack,
14
14
  {
@@ -34,17 +34,102 @@ var ConnectedAccount = ({ address }) => {
34
34
  };
35
35
 
36
36
  // src/components/connected/ConnectAccountsStack.tsx
37
+ import { ConnectAccountsStack } from "@xyo-network/xl1-react-client-sdk";
38
+
39
+ // src/contexts/current-block/context.ts
40
+ import { createContextEx } from "@xylabs/react-shared";
41
+ var XL1CurrentBlockContext = createContextEx();
42
+
43
+ // src/contexts/current-block/Provider.tsx
44
+ import { useMemo } from "react";
45
+
46
+ // src/contexts/current-block/usePollCurrentBlock.ts
47
+ import { isDefinedNotNull, isUndefinedOrNull } from "@xylabs/sdk-js";
37
48
  import {
38
- Alert,
39
- AlertTitle,
40
- Button,
41
- Stack as Stack2,
42
- Typography as Typography2
43
- } from "@mui/material";
44
- import { ButtonEx } from "@xylabs/react-button";
45
- import { isDefined as isDefined5, isUndefined as isUndefined5 } from "@xylabs/sdk-js";
46
- import { ErrorRender } from "@xyo-network/react-error";
47
- import { useEffect as useEffect3 } from "react";
49
+ startTransition,
50
+ useEffect,
51
+ useState
52
+ } from "react";
53
+ var DEFAULT_POLL_INTERVAL = 1e4;
54
+ var usePollCurrentBlock = (viewer, interval = DEFAULT_POLL_INTERVAL, pause = false) => {
55
+ const [currentBlock, setCurrentBlock] = useState(null);
56
+ const [error, setError] = useState();
57
+ useEffect(() => {
58
+ let isMounted = true;
59
+ const fetchBlock = async () => {
60
+ if (isDefinedNotNull(viewer)) {
61
+ try {
62
+ const block = await viewer.currentBlock();
63
+ if (isMounted) {
64
+ startTransition(() => {
65
+ setCurrentBlock((existingBlock) => {
66
+ if (isUndefinedOrNull(existingBlock)) {
67
+ return block;
68
+ }
69
+ if (isDefinedNotNull(block) && existingBlock?.[0].block !== block[0].block) {
70
+ return block;
71
+ }
72
+ return existingBlock;
73
+ });
74
+ });
75
+ }
76
+ } catch (err) {
77
+ startTransition(() => {
78
+ setError(err);
79
+ });
80
+ }
81
+ }
82
+ };
83
+ void fetchBlock();
84
+ const id = setInterval(() => {
85
+ if (!pause) {
86
+ void fetchBlock();
87
+ }
88
+ }, interval);
89
+ return () => {
90
+ isMounted = false;
91
+ clearInterval(id);
92
+ };
93
+ }, [viewer, interval, pause]);
94
+ return [currentBlock, error];
95
+ };
96
+
97
+ // src/contexts/current-block/Provider.tsx
98
+ import { jsx as jsx2 } from "react/jsx-runtime";
99
+ var DEFAULT_POLLING_INTERVAL = 1e4;
100
+ var XL1CurrentBlockProvider = ({
101
+ pollingConfig,
102
+ viewer,
103
+ children
104
+ }) => {
105
+ const { interval } = useMemo(() => pollingConfig ?? { interval: DEFAULT_POLLING_INTERVAL }, [pollingConfig]);
106
+ const [currentBlock, currentBlockError] = usePollCurrentBlock(viewer, interval);
107
+ const value = useMemo(() => ({
108
+ block: currentBlock,
109
+ blockNumber: currentBlock?.[0].block,
110
+ chain: currentBlock?.[0].chain,
111
+ error: currentBlockError,
112
+ pollingConfig,
113
+ provided: true
114
+ }), [currentBlock, currentBlockError, pollingConfig]);
115
+ return /* @__PURE__ */ jsx2(XL1CurrentBlockContext, { value, children });
116
+ };
117
+
118
+ // src/contexts/current-block/use.ts
119
+ import { useContextEx } from "@xylabs/react-shared";
120
+ var useXl1CurrentBlockContext = (required = true) => useContextEx(XL1CurrentBlockContext, "XL1CurrentBlock", required);
121
+
122
+ // src/contexts/gateway/Provider.tsx
123
+ import { GatewayProvider } from "@xyo-network/xl1-react-client-sdk";
124
+
125
+ // src/contexts/in-page-gateways/context.ts
126
+ import { InPageGatewaysContext } from "@xyo-network/xl1-react-client-sdk";
127
+
128
+ // src/contexts/in-page-gateways/Provider.tsx
129
+ import { InPageGatewaysProvider } from "@xyo-network/xl1-react-client-sdk";
130
+
131
+ // src/contexts/in-page-gateways/use.ts
132
+ import { useProvidedInPageGateways } from "@xyo-network/xl1-react-client-sdk";
48
133
 
49
134
  // src/hooks/account/helpers/formatAccountBalanceHistory.ts
50
135
  import { hexToBigInt } from "@xylabs/sdk-js";
@@ -63,7 +148,7 @@ var formatAccountBalanceHistory = async (address, history) => {
63
148
  blockNumber: blockBw.block,
64
149
  from: transfer.from,
65
150
  timestamp: blockBw.$epoch,
66
- key: globalThis.crypto.randomUUID(),
151
+ key: crypto.randomUUID(),
67
152
  to,
68
153
  transferHash,
69
154
  txHash: txBw?._hash,
@@ -77,7 +162,7 @@ var formatAccountBalanceHistory = async (address, history) => {
77
162
  blockHash,
78
163
  blockNumber: blockBw.block,
79
164
  from: transfer.from,
80
- key: globalThis.crypto.randomUUID(),
165
+ key: crypto.randomUUID(),
81
166
  timestamp: blockBw.$epoch,
82
167
  to: address,
83
168
  transferHash,
@@ -303,18 +388,18 @@ var TransactionConfirmationStatus = class _TransactionConfirmationStatus {
303
388
 
304
389
  // src/hooks/useAddressBalance.ts
305
390
  import { usePromise as usePromise2 } from "@xylabs/react-promise";
306
- import { isUndefined as isUndefined2, isUndefinedOrNull } from "@xylabs/sdk-js";
391
+ import { isUndefined as isUndefined2, isUndefinedOrNull as isUndefinedOrNull2 } from "@xylabs/sdk-js";
307
392
  import { ShiftedBigInt } from "@xyo-network/xl1-sdk";
308
393
  import {
309
- useMemo,
394
+ useMemo as useMemo2,
310
395
  useRef,
311
- useState
396
+ useState as useState2
312
397
  } from "react";
313
398
  var useAddressBalance = (address, viewer, refresh, reset) => {
314
- const [balancesResult, setBalancesResult] = useState();
315
- const [loading, setLoading] = useState(false);
316
- const [balancesError, setBalancesError] = useState();
317
- const [previousReset, setPreviousReset] = useState(reset);
399
+ const [balancesResult, setBalancesResult] = useState2();
400
+ const [loading, setLoading] = useState2(false);
401
+ const [balancesError, setBalancesError] = useState2();
402
+ const [previousReset, setPreviousReset] = useState2(reset);
318
403
  if (reset !== previousReset) {
319
404
  setPreviousReset(reset);
320
405
  setBalancesResult(void 0);
@@ -343,7 +428,7 @@ var useAddressBalance = (address, viewer, refresh, reset) => {
343
428
  }
344
429
  }
345
430
  }, [address, viewer, refresh]);
346
- const shiftedBigInt = useMemo(() => {
431
+ const shiftedBigInt = useMemo2(() => {
347
432
  if (typeof balancesResult !== "bigint") return;
348
433
  return new ShiftedBigInt(balancesResult, {
349
434
  places: 18,
@@ -353,11 +438,11 @@ var useAddressBalance = (address, viewer, refresh, reset) => {
353
438
  locale: navigator.language
354
439
  });
355
440
  }, [balancesResult]);
356
- const balanceIntlFriendly = useMemo(() => {
441
+ const balanceIntlFriendly = useMemo2(() => {
357
442
  return shiftedBigInt?.toFullString();
358
443
  }, [shiftedBigInt]);
359
- const shortBalanceIntlFriendly = useMemo(() => {
360
- return isUndefinedOrNull(balancesResult) ? void 0 : balancesResult < 1000000000000n && balancesResult > 0n ? "<0.00001" : shiftedBigInt?.toShortString();
444
+ const shortBalanceIntlFriendly = useMemo2(() => {
445
+ return isUndefinedOrNull2(balancesResult) ? void 0 : balancesResult < 1000000000000n && balancesResult > 0n ? "<0.00001" : shiftedBigInt?.toShortString();
361
446
  }, [balancesResult, shiftedBigInt]);
362
447
  return {
363
448
  address,
@@ -377,9 +462,9 @@ import {
377
462
  isHash
378
463
  } from "@xylabs/sdk-js";
379
464
  import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/sdk-js";
380
- import { useEffect, useState as useState2 } from "react";
465
+ import { useEffect as useEffect2, useState as useState3 } from "react";
381
466
  var useConfirmTransactionBase = (transaction, onBroadcast, onStatusUpdate, runner, viewer) => {
382
- const [status, setStatus] = useState2();
467
+ const [status, setStatus] = useState3();
383
468
  const onStatusUpdateLocal = (newStatus) => {
384
469
  setStatus(newStatus);
385
470
  onStatusUpdate?.(newStatus);
@@ -399,12 +484,11 @@ var useConfirmTransactionBase = (transaction, onBroadcast, onStatusUpdate, runne
399
484
  const instance = await TransactionConfirmationStatus.create(params);
400
485
  await instance.start();
401
486
  return instance;
402
- } else {
403
- throw new Error("unexpected return type from broadcast transaction");
404
487
  }
488
+ throw new Error("unexpected return type from broadcast transaction");
405
489
  }
406
490
  }, [transaction, runner, viewer]);
407
- useEffect(() => {
491
+ useEffect2(() => {
408
492
  return () => {
409
493
  if (transactionConfirmationStatus) {
410
494
  forget2(transactionConfirmationStatus.stop());
@@ -415,68 +499,35 @@ var useConfirmTransactionBase = (transaction, onBroadcast, onStatusUpdate, runne
415
499
  };
416
500
 
417
501
  // src/hooks/useConnectAccount.ts
418
- import { asAddress } from "@xylabs/sdk-js";
419
- import { assertEx as assertEx3 } from "@xylabs/sdk-js";
420
- import { useAccountPermissions, useGatewayFromWallet } from "@xyo-network/xl1-react-client-sdk";
421
- import { MainNetwork } from "@xyo-network/xl1-sdk";
422
- import { useCallback, useState as useState3 } from "react";
423
- var useConnectAccount = (gatewayName = MainNetwork.id, timeout) => {
424
- const [connectError, setConnectError] = useState3();
425
- const {
426
- gateway,
427
- error,
428
- timedout
429
- } = useGatewayFromWallet(gatewayName, timeout);
430
- const [accountPermissions, accountPermissionsError] = useAccountPermissions();
431
- const [address, setAddress] = useState3();
432
- const connectSigner = useCallback(async () => {
433
- try {
434
- setConnectError(void 0);
435
- const assertedGateway = assertEx3(gateway, () => `Gateway ${gatewayName} is not available`);
436
- const signer = assertedGateway.signer;
437
- const address2 = await signer.address();
438
- setAddress(address2);
439
- return address2;
440
- } catch (e) {
441
- setConnectError(e);
442
- }
443
- }, [gateway, gatewayName]);
444
- return {
445
- address: asAddress(accountPermissions?.[0] ?? address),
446
- connectSigner,
447
- error: error ?? accountPermissionsError ?? connectError,
448
- gateway,
449
- timedout
450
- };
451
- };
502
+ import { useConnectAccount } from "@xyo-network/xl1-react-client-sdk";
452
503
 
453
504
  // src/hooks/useCurrentBlock.ts
454
505
  import { usePromise as usePromise4 } from "@xylabs/react-promise";
455
- import { isDefinedNotNull } from "@xylabs/sdk-js";
506
+ import { isDefinedNotNull as isDefinedNotNull2 } from "@xylabs/sdk-js";
456
507
  var useCurrentBlock = (refresh = 1, viewer) => {
457
508
  return usePromise4(async () => {
458
- if (isDefinedNotNull(viewer) && refresh > 0) {
459
- const block = await viewer.currentBlock();
460
- return block;
509
+ if (!isDefinedNotNull2(viewer) || refresh <= 0) {
510
+ return;
461
511
  }
512
+ return await viewer.currentBlock();
462
513
  }, [viewer, refresh]);
463
514
  };
464
515
  var useCurrentBlockFromGateway = (refresh = 1) => {
465
516
  const viewer = useViewerFromGateway();
466
517
  return usePromise4(async () => {
467
- if (isDefinedNotNull(viewer) && refresh > 0) {
468
- const block = await viewer.currentBlock();
469
- return block;
518
+ if (!isDefinedNotNull2(viewer) || refresh <= 0) {
519
+ return;
470
520
  }
521
+ return await viewer.currentBlock();
471
522
  }, [viewer, refresh]);
472
523
  };
473
524
 
474
525
  // src/hooks/useNetwork.ts
475
526
  import { isUndefined as isUndefined3 } from "@xylabs/sdk-js";
476
527
  import { SimpleXyoNetwork } from "@xyo-network/xl1-sdk";
477
- import { useMemo as useMemo2 } from "react";
528
+ import { useMemo as useMemo3 } from "react";
478
529
  var useNetwork = (id) => {
479
- const network = useMemo2(() => {
530
+ const network = useMemo3(() => {
480
531
  if (isUndefined3(id)) return;
481
532
  return new SimpleXyoNetwork(id);
482
533
  }, [id]);
@@ -505,7 +556,7 @@ import {
505
556
  SequenceNetwork,
506
557
  XyoViewerMoniker
507
558
  } from "@xyo-network/xl1-sdk";
508
- import { useEffect as useEffect2, useState as useState4 } from "react";
559
+ import { useEffect as useEffect3, useState as useState4 } from "react";
509
560
  var INTERVAL = 5e3;
510
561
  var localRpcEndpoint = `${LocalNetwork.url}/rpc`;
511
562
  var sequenceRpcEndpoint = `${SequenceNetwork.url}/rpc`;
@@ -526,7 +577,7 @@ var useCheckRpc = (endpoint) => {
526
577
  const viewer2 = await locator.getInstance(XyoViewerMoniker);
527
578
  return viewer2;
528
579
  }, [endpoint]);
529
- useEffect2(() => {
580
+ useEffect3(() => {
530
581
  if (isUndefined4(viewer)) return;
531
582
  void (async () => {
532
583
  setError(void 0);
@@ -558,11 +609,17 @@ var ViewerWithDataLake = class extends JsonRpcXyoViewer {
558
609
  dataLakeViewer;
559
610
  async blocksByHash(hash, limit) {
560
611
  const blocks = await super.blocksByHash(hash, limit);
561
- return await Promise.all(blocks.map(async (block) => (await addDataLakePayloads(block, this.dataLakeViewer))[0]));
612
+ return await Promise.all(blocks.map(async (block) => {
613
+ const augmented = await addDataLakePayloads(block, this.dataLakeViewer);
614
+ return augmented[0];
615
+ }));
562
616
  }
563
617
  async blocksByNumber(blockNumber, limit) {
564
618
  const blocks = await super.blocksByNumber(blockNumber, limit);
565
- return await Promise.all(blocks.map(async (block) => (await addDataLakePayloads(block, this.dataLakeViewer))[0]));
619
+ return await Promise.all(blocks.map(async (block) => {
620
+ const augmented = await addDataLakePayloads(block, this.dataLakeViewer);
621
+ return augmented[0];
622
+ }));
566
623
  }
567
624
  async createHandler() {
568
625
  await super.createHandler();
@@ -570,173 +627,23 @@ var ViewerWithDataLake = class extends JsonRpcXyoViewer {
570
627
  }
571
628
  async payloadsByHash(hashes) {
572
629
  const payloads = await super.payloadsByHash(hashes);
573
- return (await addDataLakePayloadsToPayloads(hashes, payloads, this.dataLakeViewer))[0];
630
+ const augmented = await addDataLakePayloadsToPayloads(hashes, payloads, this.dataLakeViewer);
631
+ return augmented[0];
574
632
  }
575
633
  async transactionByHash(hash) {
576
634
  const transaction = await super.transaction.byHash(hash);
577
- if (!this.dataLakeViewer) return transaction ? [await PayloadBuilder3.addHashMeta(transaction[0]), await PayloadBuilder3.addHashMeta(transaction[1])] : null;
578
- return isNull2(transaction) ? transaction : (await addDataLakePayloads([
579
- await PayloadBuilder3.addHashMeta(transaction[0]),
580
- await PayloadBuilder3.addHashMeta(transaction[1])
581
- ], this.dataLakeViewer))[0];
582
- }
583
- };
584
-
585
- // src/components/connected/ConnectAccountsStack.tsx
586
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
587
- var DefaultConnectComponent = (props) => /* @__PURE__ */ jsx2(ButtonEx, { variant: "contained", size: "small", ...props });
588
- var DefaultNoWalletInstalledComponent = () => /* @__PURE__ */ jsxs2(Alert, { severity: "warning", children: [
589
- /* @__PURE__ */ jsx2(AlertTitle, { children: "XL1 Wallet Not Found" }),
590
- /* @__PURE__ */ jsx2(Typography2, { gutterBottom: true, children: "Please ensure that your XL1 Wallet is installed to connect your account." }),
591
- /* @__PURE__ */ jsx2(
592
- Button,
593
- {
594
- sx: { display: "flex", justifySelf: "end" },
595
- size: "small",
596
- variant: "outlined",
597
- href: "https://chromewebstore.google.com/detail/xl1-wallet/fblbagcjeigmhakkfgjpdlcapcgmcfbm",
598
- target: "_blank",
599
- rel: "noopener",
600
- children: "Get XL1 Wallet"
601
- }
602
- )
603
- ] });
604
- var ConnectAccountsStack = ({
605
- AccountComponent = ConnectedAccount,
606
- ConnectComponent = DefaultConnectComponent,
607
- NoWalletInstalledComponent = DefaultNoWalletInstalledComponent,
608
- onAccountConnected,
609
- onCancel,
610
- timeout,
611
- ...props
612
- }) => {
613
- const {
614
- address,
615
- connectSigner,
616
- error,
617
- timedout
618
- } = useConnectAccount(void 0, timeout);
619
- useEffect3(() => {
620
- if (isDefined5(error) && isDefined5(onCancel)) {
621
- onCancel();
635
+ if (!this.dataLakeViewer) {
636
+ return transaction ? [await PayloadBuilder3.addHashMeta(transaction[0]), await PayloadBuilder3.addHashMeta(transaction[1])] : null;
622
637
  }
623
- }, [error, onCancel]);
624
- useEffect3(() => {
625
- if (isDefined5(address) && isDefined5(onAccountConnected)) {
626
- onAccountConnected(address);
627
- }
628
- }, [address, onAccountConnected]);
629
- return /* @__PURE__ */ jsxs2(
630
- Stack2,
631
- {
632
- direction: "row",
633
- spacing: 2,
634
- ...props,
635
- sx: [{ alignItems: "start" }, ...Array.isArray(props.sx) ? props.sx : [props.sx]],
636
- children: [
637
- isDefined5(address) ? /* @__PURE__ */ jsx2(AccountComponent, { address }) : null,
638
- isUndefined5(address) && !timedout ? /* @__PURE__ */ jsx2(ConnectComponent, { onClick: () => void connectSigner(), children: "Connect" }) : null,
639
- isUndefined5(address) && timedout ? /* @__PURE__ */ jsx2(NoWalletInstalledComponent, {}) : null,
640
- /* @__PURE__ */ jsx2(ErrorRender, { error, scope: "ConnectSigner:error" })
641
- ]
638
+ if (isNull2(transaction)) {
639
+ return transaction;
642
640
  }
643
- );
644
- };
645
-
646
- // src/contexts/current-block/context.ts
647
- import { createContextEx } from "@xylabs/react-shared";
648
- var XL1CurrentBlockContext = createContextEx();
649
-
650
- // src/contexts/current-block/Provider.tsx
651
- import { useMemo as useMemo3 } from "react";
652
-
653
- // src/contexts/current-block/usePollCurrentBlock.ts
654
- import { isDefinedNotNull as isDefinedNotNull2, isUndefinedOrNull as isUndefinedOrNull2 } from "@xylabs/sdk-js";
655
- import {
656
- startTransition,
657
- useEffect as useEffect4,
658
- useState as useState5
659
- } from "react";
660
- var DEFAULT_POLL_INTERVAL = 1e4;
661
- var usePollCurrentBlock = (viewer, interval = DEFAULT_POLL_INTERVAL, pause = false) => {
662
- const [currentBlock, setCurrentBlock] = useState5(null);
663
- const [error, setError] = useState5();
664
- useEffect4(() => {
665
- let isMounted = true;
666
- const fetchBlock = async () => {
667
- if (isDefinedNotNull2(viewer)) {
668
- try {
669
- const block = await viewer.currentBlock();
670
- if (isMounted) {
671
- startTransition(() => {
672
- setCurrentBlock((existingBlock) => {
673
- if (isUndefinedOrNull2(existingBlock)) {
674
- return block;
675
- }
676
- if (isDefinedNotNull2(block) && existingBlock?.[0].block !== block[0].block) {
677
- return block;
678
- }
679
- return existingBlock;
680
- });
681
- });
682
- }
683
- } catch (err) {
684
- startTransition(() => {
685
- setError(err);
686
- });
687
- }
688
- }
689
- };
690
- void fetchBlock();
691
- const id = setInterval(() => {
692
- if (!pause) {
693
- void fetchBlock();
694
- }
695
- }, interval);
696
- return () => {
697
- isMounted = false;
698
- clearInterval(id);
699
- };
700
- }, [viewer, interval, pause]);
701
- return [currentBlock, error];
702
- };
703
-
704
- // src/contexts/current-block/Provider.tsx
705
- import { jsx as jsx3 } from "react/jsx-runtime";
706
- var DEFAULT_POLLING_INTERVAL = 1e4;
707
- var XL1CurrentBlockProvider = ({
708
- pollingConfig,
709
- viewer,
710
- children
711
- }) => {
712
- const { interval } = useMemo3(() => pollingConfig || { interval: DEFAULT_POLLING_INTERVAL }, [pollingConfig]);
713
- const [currentBlock, currentBlockError] = usePollCurrentBlock(viewer, interval);
714
- const value = useMemo3(() => ({
715
- block: currentBlock,
716
- blockNumber: currentBlock?.[0].block,
717
- chain: currentBlock?.[0].chain,
718
- error: currentBlockError,
719
- pollingConfig,
720
- provided: true
721
- }), [currentBlock, currentBlockError, pollingConfig]);
722
- return /* @__PURE__ */ jsx3(XL1CurrentBlockContext, { value, children });
641
+ const boundWitness = await PayloadBuilder3.addHashMeta(transaction[0]);
642
+ const payload = await PayloadBuilder3.addHashMeta(transaction[1]);
643
+ const augmented = await addDataLakePayloads([boundWitness, payload], this.dataLakeViewer);
644
+ return augmented[0];
645
+ }
723
646
  };
724
-
725
- // src/contexts/current-block/use.ts
726
- import { useContextEx } from "@xylabs/react-shared";
727
- var useXl1CurrentBlockContext = (required = true) => useContextEx(XL1CurrentBlockContext, "XL1CurrentBlock", required);
728
-
729
- // src/contexts/gateway/Provider.tsx
730
- import { GatewayProvider } from "@xyo-network/xl1-react-client-sdk";
731
-
732
- // src/contexts/in-page-gateways/context.ts
733
- import { InPageGatewaysContext } from "@xyo-network/xl1-react-client-sdk";
734
-
735
- // src/contexts/in-page-gateways/Provider.tsx
736
- import { InPageGatewaysProvider } from "@xyo-network/xl1-react-client-sdk";
737
-
738
- // src/contexts/in-page-gateways/use.ts
739
- import { useProvidedInPageGateways } from "@xyo-network/xl1-react-client-sdk";
740
647
  export {
741
648
  ConnectAccountsStack,
742
649
  ConnectedAccount,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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"],
4
- "sourcesContent": ["import {\n Stack, Tooltip, Typography,\n} from '@mui/material'\nimport { EthAddressWrapper } from '@xylabs/eth-address'\nimport { BlockiesAvatarAddress } from '@xyo-network/xl1-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\n direction=\"row\"\n spacing={1}\n sx={{ alignItems: 'center' }}\n >\n <BlockiesAvatarAddress address={address} size={21} />\n <Tooltip title={address}>\n <Typography\n variant=\"caption\"\n sx={{\n color: 'text.secondary',\n fontFamily: 'monospace',\n }}\n >\n {shortenedAddress}\n </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/xl1-react-client-sdk 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\n direction=\"row\"\n spacing={2}\n {...props}\n sx={[{ alignItems: 'start' }, ...(Array.isArray(props.sx) ? props.sx : [props.sx])]}\n >\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 { Hex } from '@xylabs/sdk-js'\nimport { hexToBigInt } from '@xylabs/sdk-js'\nimport type { XyoAddress } from '@xyo-network/address'\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: XyoAddress, 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 XyoAddress,\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 { isUndefined } from '@xylabs/sdk-js'\nimport type { XyoAddress } from '@xyo-network/address'\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?: XyoAddress, 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 {\n hexToBigInt, isHex, toHex,\n} from '@xylabs/sdk-js'\nimport type { XyoAddress } from '@xyo-network/address'\nimport type { AccountBalanceHistoryItem, AttoXL1 } from '@xyo-network/xl1-sdk'\n\nexport const balanceForRange = (address: XyoAddress, 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/xl1-react-client-sdk'\nimport type { XyoNetwork } from '@xyo-network/xl1-sdk'\n\nexport const useNetworkFromGateway = (): XyoNetwork | undefined => {\n const { defaultGateway } = useProvidedGateway()\n return defaultGateway?.connection?.network\n}\n", "import { useProvidedGateway } from '@xyo-network/xl1-react-client-sdk'\nimport type { XyoRunner } from '@xyo-network/xl1-sdk'\n\nexport const useRunnerFromGateway = (): XyoRunner | undefined => {\n const { defaultGateway } = useProvidedGateway()\n return defaultGateway?.connection?.runner\n}\n", "import { useProvidedGateway } from '@xyo-network/xl1-react-client-sdk'\nimport type { XyoViewer } from '@xyo-network/xl1-sdk'\n\nexport const useViewerFromGateway = (): XyoViewer | undefined => {\n const { defaultGateway } = useProvidedGateway()\n return defaultGateway?.connection?.viewer\n}\n", "/** @deprecated Import from `@xyo-network/xl1-react-client-sdk` instead */\nexport { getXyoClient, listenForClientInjection } from '@xyo-network/xl1-react-client-sdk'\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 type { XyoAddress } from '@xyo-network/address'\nimport type { GatewayFromWallet } from '@xyo-network/xl1-react-client-sdk'\nimport { useAccountPermissions, useGatewayFromWallet } from '@xyo-network/xl1-react-client-sdk'\nimport type { GatewayName } from '@xyo-network/xl1-sdk'\nimport { MainNetwork } from '@xyo-network/xl1-sdk'\nimport { useCallback, useState } from 'react'\n\ninterface UseConnectAccountResult {\n address: Address | undefined\n connectSigner: () => Promise<XyoAddress | undefined>\n error: Error | null | undefined\n gateway: GatewayFromWallet['gateway']\n timedout: boolean | undefined\n}\n\n/** @deprecated - use version in @xyo-network/xl1-react-client-sdk instead */\nexport const useConnectAccount = (gatewayName: GatewayName = MainNetwork.id, timeout?: number): UseConnectAccountResult => {\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<XyoAddress>()\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): [HydratedBlockWithHashMeta | undefined,\n Error | undefined, UsePromiseState | undefined] => {\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'\nimport type { XL1CurrentBlockState } from './state.ts'\n\nexport const useXl1CurrentBlockContext = (required = true) => useContextEx<XL1CurrentBlockState>(XL1CurrentBlockContext, 'XL1CurrentBlock', required)\n", "/**\n * @deprecated Moved to `@xyo-network/xl1-react-client-sdk`. 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/xl1-react-client-sdk'\n", "/**\n * @deprecated Moved to `@xyo-network/xl1-react-client-sdk`. 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/xl1-react-client-sdk'\n", "/**\n * @deprecated Moved to `@xyo-network/xl1-react-client-sdk`. Import\n * `InPageGatewaysProvider` and `InPageGatewaysProviderProps` from there\n * instead. This re-export exists only for backward compatibility and\n * will be removed in a future release.\n */\n\nexport type { InPageGatewaysProviderProps } from '@xyo-network/xl1-react-client-sdk'\nexport { InPageGatewaysProvider } from '@xyo-network/xl1-react-client-sdk'\n", "/**\n * @deprecated Moved to `@xyo-network/xl1-react-client-sdk`. 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/xl1-react-client-sdk'\n"],
5
- "mappings": "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",
6
- "names": ["Stack", "Typography", "isDefined", "isUndefined", "useEffect", "hexToBigInt", "a", "network", "useProvidedGateway", "useProvidedGateway", "assertEx", "isDefined", "usePromise", "isUndefined", "usePromise", "forget", "isDefined", "PayloadBuilder", "useState", "useState", "usePromise", "isDefined", "PayloadBuilder", "forget", "assertEx", "useState", "address", "usePromise", "usePromise", "isUndefined", "useMemo", "usePromise", "usePromise", "delay", "isDefined", "isUndefined", "basicRemoteViewerLocator", "useEffect", "useState", "viewer", "isNull", "PayloadBuilder", "jsx", "jsxs", "Typography", "useEffect", "isDefined", "Stack", "isUndefined", "useMemo", "isDefinedNotNull", "isUndefinedOrNull", "useEffect", "useState", "jsx", "useMemo"]
3
+ "sources": ["../../src/components/connected/account/Connected.tsx", "../../src/components/connected/ConnectAccountsStack.tsx", "../../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", "../../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"],
4
+ "sourcesContent": ["import {\n Stack, Tooltip, Typography,\n} from '@mui/material'\nimport { EthAddressWrapper } from '@xylabs/eth-address'\nimport { BlockiesAvatarAddress } from '@xyo-network/xl1-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\n direction=\"row\"\n spacing={1}\n sx={{ alignItems: 'center' }}\n >\n <BlockiesAvatarAddress address={address} size={21} />\n <Tooltip title={address}>\n <Typography\n variant=\"caption\"\n sx={{\n color: 'text.secondary',\n fontFamily: 'monospace',\n }}\n >\n {shortenedAddress}\n </Typography>\n </Tooltip>\n </Stack>\n )\n}\n", "/**\n * @deprecated Moved to `@xyo-network/xl1-react-client-sdk`. Import from there\n * instead. This re-export exists only for backward compatibility and will be\n * removed in a future release.\n */\n\nexport type { ConnectClientAccountsStackProps } from '@xyo-network/xl1-react-client-sdk'\nexport { ConnectAccountsStack } from '@xyo-network/xl1-react-client-sdk'\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'\nimport type { XL1CurrentBlockState } from './state.ts'\n\nexport const useXl1CurrentBlockContext = (required = true) => useContextEx<XL1CurrentBlockState>(XL1CurrentBlockContext, 'XL1CurrentBlock', required)\n", "/**\n * @deprecated Moved to `@xyo-network/xl1-react-client-sdk`. 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/xl1-react-client-sdk'\n", "/**\n * @deprecated Moved to `@xyo-network/xl1-react-client-sdk`. 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/xl1-react-client-sdk'\n", "/**\n * @deprecated Moved to `@xyo-network/xl1-react-client-sdk`. Import\n * `InPageGatewaysProvider` and `InPageGatewaysProviderProps` from there\n * instead. This re-export exists only for backward compatibility and\n * will be removed in a future release.\n */\n\nexport type { InPageGatewaysProviderProps } from '@xyo-network/xl1-react-client-sdk'\nexport { InPageGatewaysProvider } from '@xyo-network/xl1-react-client-sdk'\n", "/**\n * @deprecated Moved to `@xyo-network/xl1-react-client-sdk`. 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/xl1-react-client-sdk'\n", "import { hexToBigInt } from '@xylabs/sdk-js'\nimport type { XyoAddress } from '@xyo-network/address'\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: XyoAddress, 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),\n blockHash,\n blockNumber: blockBw.block,\n from: transfer.from,\n timestamp: blockBw.$epoch,\n key: crypto.randomUUID(),\n to: to as XyoAddress,\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]),\n blockHash,\n blockNumber: blockBw.block,\n from: transfer.from,\n key: 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 { isUndefined } from '@xylabs/sdk-js'\nimport type { XyoAddress } from '@xyo-network/address'\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?: XyoAddress, 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 {\n hexToBigInt, isHex, toHex,\n} from '@xylabs/sdk-js'\nimport type { XyoAddress } from '@xyo-network/address'\nimport type { AccountBalanceHistoryItem, AttoXL1 } from '@xyo-network/xl1-sdk'\n\nexport const balanceForRange = (address: XyoAddress, 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/xl1-react-client-sdk'\nimport type { XyoNetwork } from '@xyo-network/xl1-sdk'\n\nexport const useNetworkFromGateway = (): XyoNetwork | undefined => {\n const { defaultGateway } = useProvidedGateway()\n return defaultGateway?.connection?.network\n}\n", "import { useProvidedGateway } from '@xyo-network/xl1-react-client-sdk'\nimport type { XyoRunner } from '@xyo-network/xl1-sdk'\n\nexport const useRunnerFromGateway = (): XyoRunner | undefined => {\n const { defaultGateway } = useProvidedGateway()\n return defaultGateway?.connection?.runner\n}\n", "import { useProvidedGateway } from '@xyo-network/xl1-react-client-sdk'\nimport type { XyoViewer } from '@xyo-network/xl1-sdk'\n\nexport const useViewerFromGateway = (): XyoViewer | undefined => {\n const { defaultGateway } = useProvidedGateway()\n return defaultGateway?.connection?.viewer\n}\n", "/** @deprecated Import from `@xyo-network/xl1-react-client-sdk` instead */\nexport { getXyoClient, listenForClientInjection } from '@xyo-network/xl1-react-client-sdk'\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)\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 }\n throw new Error('unexpected return type from broadcast transaction')\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", "/**\n * @deprecated Moved to `@xyo-network/xl1-react-client-sdk`. Import from there\n * instead. This re-export exists only for backward compatibility and will be\n * removed in a future release.\n */\n\nexport { useConnectAccount } from '@xyo-network/xl1-react-client-sdk'\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 return\n }\n return await viewer.currentBlock()\n }, [viewer, refresh])\n}\n\nexport const useCurrentBlockFromGateway = (refresh = 1): [HydratedBlockWithHashMeta | undefined,\n Error | undefined, UsePromiseState | undefined] => {\n const viewer = useViewerFromGateway()\n return usePromise(async () => {\n if (!isDefinedNotNull(viewer) || refresh <= 0) {\n return\n }\n return await viewer.currentBlock()\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) => {\n const augmented = await addDataLakePayloads(block, this.dataLakeViewer)\n return augmented[0]\n }))\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) => {\n const augmented = await addDataLakePayloads(block, this.dataLakeViewer)\n return augmented[0]\n }))\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 const augmented = await addDataLakePayloadsToPayloads(hashes, payloads, this.dataLakeViewer)\n return augmented[0]\n }\n\n override async transactionByHash(hash: Hash): Promise<SignedHydratedTransactionWithHashMeta | null> {\n const transaction = await super.transaction.byHash(hash)\n if (!this.dataLakeViewer) {\n return transaction\n ? [await PayloadBuilder.addHashMeta(transaction[0]), await PayloadBuilder.addHashMeta(transaction[1])]\n : null\n }\n\n if (isNull(transaction)) {\n return transaction\n }\n\n const boundWitness = await PayloadBuilder.addHashMeta(transaction[0])\n const payload = await PayloadBuilder.addHashMeta(transaction[1])\n const augmented = await addDataLakePayloads([boundWitness, payload], this.dataLakeViewer)\n return augmented[0]\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "hexToBigInt", "a", "network", "useProvidedGateway", "useProvidedGateway", "assertEx", "isDefined", "usePromise", "isUndefined", "isUndefinedOrNull", "useMemo", "useState", "usePromise", "forget", "isDefined", "PayloadBuilder", "useEffect", "useState", "useState", "usePromise", "isDefined", "PayloadBuilder", "useEffect", "forget", "usePromise", "isDefinedNotNull", "usePromise", "isDefinedNotNull", "isUndefined", "useMemo", "usePromise", "usePromise", "delay", "isDefined", "isUndefined", "basicRemoteViewerLocator", "useEffect", "useState", "viewer", "isNull", "PayloadBuilder"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/react-chain-provider",
3
- "version": "2.0.17",
3
+ "version": "3.0.0",
4
4
  "description": "XYO Layer One API",
5
5
  "homepage": "https://xylabs.com",
6
6
  "bugs": {
@@ -42,64 +42,59 @@
42
42
  "@metamask/json-rpc-engine": "^10.5.0",
43
43
  "@metamask/providers": "^22.1.1",
44
44
  "@metamask/utils": "^11.11.0",
45
- "@mui/icons-material": "^9.1.0",
46
- "@mui/material": "^9.1.0",
45
+ "@mui/icons-material": "^9.1.1",
46
+ "@mui/material": "^9.1.1",
47
+ "@mui/system": "~9.1.1",
47
48
  "@noble/post-quantum": "~0.6.1",
48
49
  "@opentelemetry/api": "^1.9.1",
49
- "@opentelemetry/sdk-trace-base": "^2.7.1",
50
+ "@opentelemetry/sdk-trace-base": "^2.8.0",
50
51
  "@react-spring/web": "~10.1.1",
51
- "@rollbar/react": "~1.0.0",
52
52
  "@scure/base": "~2.2.0",
53
53
  "@scure/bip39": "~2.2.0",
54
- "@storybook/react-vite": "^10.4.3",
54
+ "@storybook/react-vite": "^10.4.6",
55
55
  "@types/react": "^19.2.17",
56
- "@xylabs/eth-address": "~6.1.1",
57
- "@xylabs/geo": "^6.1.1",
58
- "@xylabs/pixel": "~6.1.1",
59
- "@xylabs/react-button": "~9.1",
60
- "@xylabs/react-error": "~9.1",
61
- "@xylabs/react-flexbox": "~9.1",
62
- "@xylabs/react-promise": "~9.1",
63
- "@xylabs/react-shared": "~9.1",
64
- "@xylabs/react-theme": "^9.1.0",
65
- "@xylabs/sdk-js": "^6.1.1",
66
- "@xylabs/threads": "^6.1.1",
67
- "@xylabs/toolchain": "~8.1.20",
68
- "@xylabs/tsconfig": "~8.1.20",
69
- "@xylabs/tsconfig-dom": "~8.1.20",
70
- "@xylabs/tsconfig-react": "~8.1.20",
71
- "@xyo-network/address": "^6.1.0",
72
- "@xyo-network/react-error": "~9.1",
56
+ "@xylabs/eth-address": "^6.1.3",
57
+ "@xylabs/geo": "^6.1.3",
58
+ "@xylabs/pixel": "^6.1.3",
59
+ "@xylabs/react-button": "^9.1.2",
60
+ "@xylabs/react-error": "^9.1.2",
61
+ "@xylabs/react-promise": "^9.1.2",
62
+ "@xylabs/react-shared": "^9.1.2",
63
+ "@xylabs/react-theme": "^9.1.2",
64
+ "@xylabs/sdk-js": "^6.1.3",
65
+ "@xylabs/threads": "^6.1.3",
66
+ "@xylabs/toolchain": "~8.2.7",
67
+ "@xylabs/tsconfig": "~8.2.7",
68
+ "@xylabs/tsconfig-dom": "~8.2.7",
69
+ "@xylabs/tsconfig-react": "~8.2.7",
70
+ "@xyo-network/address": "^6.1.1",
73
71
  "@xyo-network/sdk-js": "^6.1.0",
74
- "@xyo-network/sdk-protocol-js": "~6.1.0",
75
- "@xyo-network/xl1-blockies": "~2.1.4",
76
- "@xyo-network/xl1-react-client-sdk": "^2.1.4",
77
- "@xyo-network/xl1-sdk": "^2.1.4",
72
+ "@xyo-network/sdk-protocol-js": "~6.1.1",
73
+ "@xyo-network/xl1-blockies": "~3.0",
74
+ "@xyo-network/xl1-react-client-sdk": "~3.0",
75
+ "@xyo-network/xl1-sdk": "~3.0",
78
76
  "ajv": "^8.20.0",
79
77
  "async-mutex": "^0.5.0",
80
78
  "cosmiconfig": "^9.0.2",
81
79
  "debug": "~4.4.3",
82
- "dotenv": "~17.4.2",
83
- "eslint": "^10.4.1",
80
+ "eslint": "^10.5.0",
84
81
  "ethers": "^6.16.0",
85
82
  "hash-wasm": "~4.12.0",
86
83
  "idb": "^8.0.3",
87
84
  "lru-cache": "^11.5.1",
88
85
  "observable-fns": "~0.6.1",
89
- "prop-types": "^15.8.1",
90
- "query-string": "~9.3",
86
+ "query-string": "~9.3.1",
91
87
  "react": "^19.2.7",
92
88
  "react-dom": "^19.2.7",
93
- "react-router-dom": "^7.17.0",
94
- "rollbar": "^3.1.0",
95
- "storybook": "^10.4.3",
89
+ "react-router-dom": "^7.18.0",
90
+ "storybook": "^10.4.6",
96
91
  "typescript": "~6.0.3",
97
92
  "uuid": "~14.0.0",
98
93
  "vite": "^8.0.16",
99
- "vitest": "^4.1.8",
94
+ "vitest": "^4.1.9",
100
95
  "webextension-polyfill": "^0.12.0",
101
96
  "zod": "~4.4.3",
102
- "@xyo-network/react-chain-model": "~2.0.17"
97
+ "@xyo-network/react-chain-shared": "~3.0.0"
103
98
  },
104
99
  "peerDependencies": {
105
100
  "@bitauth/libauth": "~3.0",
@@ -112,27 +107,24 @@
112
107
  "@opentelemetry/api": "^1.9",
113
108
  "@opentelemetry/sdk-trace-base": "^2.7",
114
109
  "@react-spring/web": "~10.1",
115
- "@rollbar/react": "~1.0",
116
110
  "@scure/base": "~2.2",
117
111
  "@scure/bip39": "~2.2",
118
112
  "@xylabs/eth-address": "^6.1",
119
113
  "@xylabs/geo": "^6.0",
120
114
  "@xylabs/pixel": "^6.1",
121
- "@xylabs/react-button": "~9.1",
122
- "@xylabs/react-error": "~9.1",
123
- "@xylabs/react-flexbox": "~9.1",
115
+ "@xylabs/react-button": "^9.1",
116
+ "@xylabs/react-error": "^9.1",
124
117
  "@xylabs/react-promise": "^9.1",
125
118
  "@xylabs/react-shared": "^9.1",
126
119
  "@xylabs/react-theme": "^9.1",
127
120
  "@xylabs/sdk-js": "^6.0",
128
121
  "@xylabs/threads": "^6.1",
129
122
  "@xyo-network/address": "^6.0",
130
- "@xyo-network/react-error": "~9.1",
131
123
  "@xyo-network/sdk-js": "^6.0",
132
124
  "@xyo-network/sdk-protocol-js": "~6.1",
133
- "@xyo-network/xl1-blockies": "^2.0",
134
- "@xyo-network/xl1-react-client-sdk": "^2.0",
135
- "@xyo-network/xl1-sdk": "^2.1",
125
+ "@xyo-network/xl1-blockies": "^3.0",
126
+ "@xyo-network/xl1-react-client-sdk": "^3.0",
127
+ "@xyo-network/xl1-sdk": "^3.0",
136
128
  "ajv": "^8.20",
137
129
  "async-mutex": "^0.5",
138
130
  "cosmiconfig": "^9.0",
@@ -142,12 +134,10 @@
142
134
  "idb": "^8.0",
143
135
  "lru-cache": "^11.3",
144
136
  "observable-fns": "~0.6",
145
- "prop-types": "^15.8",
146
137
  "query-string": "~9.3",
147
138
  "react": "^19.2",
148
139
  "react-dom": "^19.2",
149
140
  "react-router-dom": "^7.15",
150
- "rollbar": "^3.1",
151
141
  "uuid": "~14.0",
152
142
  "webextension-polyfill": "^0.12",
153
143
  "zod": "~4.4"