@xyo-network/react-chain-provider 1.20.2 → 1.20.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/contexts/gateway/Provider.d.ts +0 -2
- package/dist/browser/contexts/gateway/Provider.d.ts.map +1 -1
- package/dist/browser/contexts/gateway/state.d.ts +1 -2
- package/dist/browser/contexts/gateway/state.d.ts.map +1 -1
- package/dist/browser/contexts/gateway/story/GatewayStats.d.ts.map +1 -1
- package/dist/browser/contexts/in-page-gateways/Provider.d.ts +8 -0
- package/dist/browser/contexts/in-page-gateways/Provider.d.ts.map +1 -0
- package/dist/browser/contexts/in-page-gateways/context.d.ts +8 -0
- package/dist/browser/contexts/in-page-gateways/context.d.ts.map +1 -0
- package/dist/browser/contexts/in-page-gateways/index.d.ts +5 -0
- package/dist/browser/contexts/in-page-gateways/index.d.ts.map +1 -0
- package/dist/browser/contexts/in-page-gateways/state.d.ts +10 -0
- package/dist/browser/contexts/in-page-gateways/state.d.ts.map +1 -0
- package/dist/browser/contexts/in-page-gateways/use.d.ts +4 -0
- package/dist/browser/contexts/in-page-gateways/use.d.ts.map +1 -0
- package/dist/browser/contexts/index.d.ts +1 -0
- package/dist/browser/contexts/index.d.ts.map +1 -1
- package/dist/browser/hooks/client/helpers/index.d.ts +0 -1
- package/dist/browser/hooks/client/helpers/index.d.ts.map +1 -1
- package/dist/browser/hooks/client/index.d.ts +0 -1
- package/dist/browser/hooks/client/index.d.ts.map +1 -1
- package/dist/browser/index.d.ts +1 -0
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.mjs +177 -132
- package/dist/browser/index.mjs.map +1 -1
- package/dist/browser/lib/buildGateway.d.ts.map +1 -0
- package/dist/browser/lib/index.d.ts +1 -0
- package/dist/browser/lib/index.d.ts.map +1 -1
- package/dist/browser/types/ContextGatewayType.d.ts +3 -0
- package/dist/browser/types/ContextGatewayType.d.ts.map +1 -0
- package/dist/browser/types/index.d.ts +1 -0
- package/dist/browser/types/index.d.ts.map +1 -1
- package/package.json +15 -15
- package/src/contexts/gateway/Provider.tsx +26 -17
- package/src/contexts/gateway/state.ts +1 -3
- package/src/contexts/gateway/story/GatewayStats.tsx +14 -11
- package/src/contexts/gateway/story/Provider.stories.tsx +1 -1
- package/src/contexts/gateway/story/ProviderWithWallet.stories.tsx +1 -1
- package/src/contexts/in-page-gateways/Provider.tsx +82 -0
- package/src/contexts/in-page-gateways/context.ts +5 -0
- package/src/contexts/in-page-gateways/index.ts +4 -0
- package/src/contexts/in-page-gateways/state.ts +12 -0
- package/src/contexts/in-page-gateways/use.ts +5 -0
- package/src/contexts/index.ts +1 -0
- package/src/hooks/client/helpers/index.ts +0 -1
- package/src/hooks/client/index.ts +0 -1
- package/src/index.ts +1 -0
- package/src/lib/index.ts +1 -0
- package/src/types/ContextGatewayType.ts +4 -0
- package/src/types/index.ts +1 -0
- package/dist/browser/hooks/client/helpers/buildGateway.d.ts.map +0 -1
- package/dist/browser/hooks/client/useGatewayFromConfig.d.ts +0 -9
- package/dist/browser/hooks/client/useGatewayFromConfig.d.ts.map +0 -1
- package/src/hooks/client/useGatewayFromConfig.ts +0 -43
- /package/dist/browser/{hooks/client/helpers → lib}/buildGateway.d.ts +0 -0
- /package/src/{hooks/client/helpers → lib}/buildGateway.ts +0 -0
package/dist/browser/index.mjs
CHANGED
|
@@ -27,9 +27,9 @@ var ConnectedAccount = /* @__PURE__ */ __name(({ address }) => {
|
|
|
27
27
|
// src/components/connected/ConnectAccountsStack.tsx
|
|
28
28
|
import { Alert, AlertTitle, Button, Stack as Stack2, Typography as Typography2 } from "@mui/material";
|
|
29
29
|
import { ButtonEx } from "@xylabs/react-button";
|
|
30
|
-
import { isDefined as
|
|
31
|
-
import { ErrorRender } from "@xyo-network/react-error";
|
|
32
|
-
import
|
|
30
|
+
import { isDefined as isDefined10, isUndefined as isUndefined8 } from "@xylabs/sdk-js";
|
|
31
|
+
import { ErrorRender as ErrorRender2 } from "@xyo-network/react-error";
|
|
32
|
+
import React5, { useEffect as useEffect7 } from "react";
|
|
33
33
|
|
|
34
34
|
// src/hooks/account/helpers/formatAccountBalanceHistory.ts
|
|
35
35
|
import { hexToBigInt } from "@xylabs/sdk-js";
|
|
@@ -87,6 +87,24 @@ var balanceForRange = /* @__PURE__ */ __name((address, results) => {
|
|
|
87
87
|
];
|
|
88
88
|
}, "balanceForRange");
|
|
89
89
|
|
|
90
|
+
// src/lib/buildGateway.ts
|
|
91
|
+
import { assertEx, isDefined } from "@xylabs/sdk-js";
|
|
92
|
+
import { basicRemoteRunnerLocator, basicRemoteViewerLocator } from "@xyo-network/chain-orchestration";
|
|
93
|
+
import { DefaultNetworks, NetworkDataLakeUrls, XyoGatewayMoniker } from "@xyo-network/xl1-sdk";
|
|
94
|
+
var buildGateway = /* @__PURE__ */ __name(async (gatewayName, account) => {
|
|
95
|
+
const network = DefaultNetworks.find((network2) => network2.id === gatewayName);
|
|
96
|
+
const resolvedNetwork = assertEx(network, () => `No network found for id ${gatewayName}`);
|
|
97
|
+
const remoteConfig = {
|
|
98
|
+
rpc: {
|
|
99
|
+
protocol: "http",
|
|
100
|
+
url: `${resolvedNetwork.url}/rpc`
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
const dataLakeEndpoint = NetworkDataLakeUrls[gatewayName];
|
|
104
|
+
const locator = isDefined(account) ? await basicRemoteRunnerLocator(gatewayName, remoteConfig, account, dataLakeEndpoint) : await basicRemoteViewerLocator(gatewayName, remoteConfig, dataLakeEndpoint);
|
|
105
|
+
return await locator.getInstance(XyoGatewayMoniker);
|
|
106
|
+
}, "buildGateway");
|
|
107
|
+
|
|
90
108
|
// src/lib/findMinimumBlock.ts
|
|
91
109
|
var findMinimumBlock = /* @__PURE__ */ __name((history) => {
|
|
92
110
|
if (history.length === 0) return 0;
|
|
@@ -176,7 +194,7 @@ async function getXyoClient(timeout = CLIENT_LISTENER_TIMEOUT) {
|
|
|
176
194
|
__name(getXyoClient, "getXyoClient");
|
|
177
195
|
|
|
178
196
|
// src/hooks/helpers/transaction/Confirmation.ts
|
|
179
|
-
import { assertEx, delay, forget, isDefined, isNull } from "@xylabs/sdk-js";
|
|
197
|
+
import { assertEx as assertEx2, delay, forget, isDefined as isDefined2, isNull } from "@xylabs/sdk-js";
|
|
180
198
|
var TransactionConfirmationStatus = class _TransactionConfirmationStatus {
|
|
181
199
|
static {
|
|
182
200
|
__name(this, "TransactionConfirmationStatus");
|
|
@@ -187,10 +205,10 @@ var TransactionConfirmationStatus = class _TransactionConfirmationStatus {
|
|
|
187
205
|
this._params = params;
|
|
188
206
|
}
|
|
189
207
|
get exp() {
|
|
190
|
-
return
|
|
208
|
+
return assertEx2(this.transaction[0].exp, () => "exp is not found, transaction is not set");
|
|
191
209
|
}
|
|
192
210
|
get nbf() {
|
|
193
|
-
return
|
|
211
|
+
return assertEx2(this.transaction[0].nbf, () => "nbf is not found, transaction is not set");
|
|
194
212
|
}
|
|
195
213
|
get onStatusUpdate() {
|
|
196
214
|
return this._params.onStatusUpdate;
|
|
@@ -214,7 +232,7 @@ var TransactionConfirmationStatus = class _TransactionConfirmationStatus {
|
|
|
214
232
|
this.active = true;
|
|
215
233
|
try {
|
|
216
234
|
const currentBlockNumber = await this.viewer.currentBlockNumber();
|
|
217
|
-
while (
|
|
235
|
+
while (isDefined2(currentBlockNumber) && this.active) {
|
|
218
236
|
await this.checkBlock(currentBlockNumber);
|
|
219
237
|
await delay(1e3);
|
|
220
238
|
}
|
|
@@ -374,24 +392,6 @@ var usePermissions = /* @__PURE__ */ __name(() => {
|
|
|
374
392
|
import { usePromise as usePromise2 } from "@xylabs/react-promise";
|
|
375
393
|
import { isArray, isDefined as isDefined4, isDefinedNotNull, isString } from "@xylabs/sdk-js";
|
|
376
394
|
|
|
377
|
-
// src/hooks/client/helpers/buildGateway.ts
|
|
378
|
-
import { assertEx as assertEx2, isDefined as isDefined2 } from "@xylabs/sdk-js";
|
|
379
|
-
import { basicRemoteRunnerLocator, basicRemoteViewerLocator } from "@xyo-network/chain-orchestration";
|
|
380
|
-
import { DefaultNetworks, NetworkDataLakeUrls, XyoGatewayMoniker } from "@xyo-network/xl1-sdk";
|
|
381
|
-
var buildGateway = /* @__PURE__ */ __name(async (gatewayName, account) => {
|
|
382
|
-
const network = DefaultNetworks.find((network2) => network2.id === gatewayName);
|
|
383
|
-
const resolvedNetwork = assertEx2(network, () => `No network found for id ${gatewayName}`);
|
|
384
|
-
const remoteConfig = {
|
|
385
|
-
rpc: {
|
|
386
|
-
protocol: "http",
|
|
387
|
-
url: `${resolvedNetwork.url}/rpc`
|
|
388
|
-
}
|
|
389
|
-
};
|
|
390
|
-
const dataLakeEndpoint = NetworkDataLakeUrls[gatewayName];
|
|
391
|
-
const locator = isDefined2(account) ? await basicRemoteRunnerLocator(gatewayName, remoteConfig, account, dataLakeEndpoint) : await basicRemoteViewerLocator(gatewayName, remoteConfig, dataLakeEndpoint);
|
|
392
|
-
return await locator.getInstance(XyoGatewayMoniker);
|
|
393
|
-
}, "buildGateway");
|
|
394
|
-
|
|
395
395
|
// src/hooks/client/helpers/findCaveat.ts
|
|
396
396
|
import { isDefined as isDefined3 } from "@xylabs/sdk-js";
|
|
397
397
|
var findCaveat = /* @__PURE__ */ __name(async (permissions, targetCapability, targetCaveatType) => {
|
|
@@ -435,52 +435,13 @@ var useAccountPermissions = /* @__PURE__ */ __name(() => {
|
|
|
435
435
|
]);
|
|
436
436
|
}, "useAccountPermissions");
|
|
437
437
|
|
|
438
|
-
// src/hooks/client/useGatewayFromConfig.ts
|
|
439
|
-
import { usePromise as usePromise3 } from "@xylabs/react-promise";
|
|
440
|
-
import { isDefined as isDefined5 } from "@xylabs/sdk-js";
|
|
441
|
-
import { useState } from "react";
|
|
442
|
-
var useGatewayFromConfig = /* @__PURE__ */ __name((gatewayName, account) => {
|
|
443
|
-
const [gatewayCache, setGatewayCache] = useState({});
|
|
444
|
-
const clearGateways = /* @__PURE__ */ __name(() => setGatewayCache({}), "clearGateways");
|
|
445
|
-
const [previousAccount, setPreviousAccount] = useState(account);
|
|
446
|
-
if (previousAccount !== account) {
|
|
447
|
-
clearGateways();
|
|
448
|
-
setPreviousAccount(account);
|
|
449
|
-
}
|
|
450
|
-
const builtGatewayResults = usePromise3(async () => {
|
|
451
|
-
if (isDefined5(gatewayName)) {
|
|
452
|
-
if (isDefined5(gatewayCache[gatewayName])) {
|
|
453
|
-
return gatewayCache[gatewayName];
|
|
454
|
-
} else {
|
|
455
|
-
const gateway2 = await buildGateway(gatewayName, account);
|
|
456
|
-
setGatewayCache((prev) => ({
|
|
457
|
-
...prev,
|
|
458
|
-
[gatewayName]: gateway2
|
|
459
|
-
}));
|
|
460
|
-
return gateway2;
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
}, [
|
|
464
|
-
gatewayName,
|
|
465
|
-
account,
|
|
466
|
-
gatewayCache
|
|
467
|
-
]);
|
|
468
|
-
const [gateway, error, state] = builtGatewayResults;
|
|
469
|
-
return {
|
|
470
|
-
gateway,
|
|
471
|
-
error,
|
|
472
|
-
state,
|
|
473
|
-
clearGateways
|
|
474
|
-
};
|
|
475
|
-
}, "useGatewayFromConfig");
|
|
476
|
-
|
|
477
438
|
// src/hooks/client/useGatewayFromWallet.ts
|
|
478
|
-
import { isDefined as
|
|
439
|
+
import { isDefined as isDefined5, isNull as isNull3 } from "@xylabs/sdk-js";
|
|
479
440
|
var useGatewayFromWallet = /* @__PURE__ */ __name((gatewayName, timeout) => {
|
|
480
441
|
const { client, isLoading, error, timedout } = useClientFromWallet(timeout);
|
|
481
442
|
const resolveGateway = /* @__PURE__ */ __name(() => {
|
|
482
443
|
if (isNull3(client)) return null;
|
|
483
|
-
if (timedout && !isLoading &&
|
|
444
|
+
if (timedout && !isLoading && isDefined5(gatewayName)) {
|
|
484
445
|
return null;
|
|
485
446
|
}
|
|
486
447
|
return client?.gateways?.[gatewayName];
|
|
@@ -503,11 +464,11 @@ import React2, { useMemo } from "react";
|
|
|
503
464
|
|
|
504
465
|
// src/contexts/current-block/usePollCurrentBlock.ts
|
|
505
466
|
import { isDefinedNotNull as isDefinedNotNull2, isUndefinedOrNull } from "@xylabs/sdk-js";
|
|
506
|
-
import { startTransition, useEffect as useEffect2, useState
|
|
467
|
+
import { startTransition, useEffect as useEffect2, useState } from "react";
|
|
507
468
|
var DEFAULT_POLL_INTERVAL = 1e4;
|
|
508
469
|
var usePollCurrentBlock = /* @__PURE__ */ __name((viewer, interval = DEFAULT_POLL_INTERVAL, pause = false) => {
|
|
509
|
-
const [currentBlock, setCurrentBlock] =
|
|
510
|
-
const [error, setError] =
|
|
470
|
+
const [currentBlock, setCurrentBlock] = useState(null);
|
|
471
|
+
const [error, setError] = useState();
|
|
511
472
|
useEffect2(() => {
|
|
512
473
|
let isMounted = true;
|
|
513
474
|
const fetchBlock = /* @__PURE__ */ __name(async () => {
|
|
@@ -591,16 +552,95 @@ var GatewayContext = createContextEx2();
|
|
|
591
552
|
|
|
592
553
|
// src/contexts/gateway/Provider.tsx
|
|
593
554
|
import { isDefinedNotNull as isDefinedNotNull3, isNull as isNull4 } from "@xylabs/sdk-js";
|
|
594
|
-
import
|
|
595
|
-
|
|
555
|
+
import { ErrorRender } from "@xyo-network/react-error";
|
|
556
|
+
import React4, { useEffect as useEffect4, useMemo as useMemo3, useState as useState3 } from "react";
|
|
557
|
+
|
|
558
|
+
// src/contexts/in-page-gateways/context.ts
|
|
559
|
+
import { createContextEx as createContextEx3 } from "@xylabs/react-shared";
|
|
560
|
+
var InPageGatewaysContext = createContextEx3();
|
|
561
|
+
|
|
562
|
+
// src/contexts/in-page-gateways/Provider.tsx
|
|
563
|
+
import { DefaultNetworks as DefaultNetworks2 } from "@xyo-network/xl1-sdk";
|
|
564
|
+
import React3, { startTransition as startTransition2, useCallback as useCallback2, useEffect as useEffect3, useMemo as useMemo2, useState as useState2 } from "react";
|
|
565
|
+
var InPageGatewaysProvider = /* @__PURE__ */ __name(({ account, children }) => {
|
|
566
|
+
const [gateways, setGateways] = useState2({});
|
|
567
|
+
const [errors, setErrors] = useState2({});
|
|
568
|
+
const [previousAccount, setPreviousAccount] = useState2(account);
|
|
569
|
+
const clearAll = useCallback2(() => {
|
|
570
|
+
setGateways({});
|
|
571
|
+
setErrors({});
|
|
572
|
+
}, []);
|
|
573
|
+
if (previousAccount !== account) {
|
|
574
|
+
clearAll();
|
|
575
|
+
setPreviousAccount(account);
|
|
576
|
+
}
|
|
577
|
+
useEffect3(() => {
|
|
578
|
+
let cancelled = false;
|
|
579
|
+
const buildAll = /* @__PURE__ */ __name(async () => {
|
|
580
|
+
const results = await Promise.allSettled(DefaultNetworks2.map(async (network) => {
|
|
581
|
+
const gateway = await buildGateway(network.id, account);
|
|
582
|
+
return {
|
|
583
|
+
id: network.id,
|
|
584
|
+
gateway
|
|
585
|
+
};
|
|
586
|
+
}));
|
|
587
|
+
if (cancelled) return;
|
|
588
|
+
const nextGateways = {};
|
|
589
|
+
const nextErrors = {};
|
|
590
|
+
for (const [index, result] of results.entries()) {
|
|
591
|
+
const networkId = DefaultNetworks2[index].id;
|
|
592
|
+
if (result.status === "fulfilled") {
|
|
593
|
+
nextGateways[networkId] = result.value.gateway;
|
|
594
|
+
} else {
|
|
595
|
+
nextErrors[networkId] = result.reason instanceof Error ? result.reason : new Error(String(result.reason));
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
startTransition2(() => {
|
|
599
|
+
setGateways(nextGateways);
|
|
600
|
+
setErrors(nextErrors);
|
|
601
|
+
});
|
|
602
|
+
}, "buildAll");
|
|
603
|
+
void buildAll();
|
|
604
|
+
return () => {
|
|
605
|
+
cancelled = true;
|
|
606
|
+
};
|
|
607
|
+
}, [
|
|
608
|
+
account
|
|
609
|
+
]);
|
|
610
|
+
const value = useMemo2(() => {
|
|
611
|
+
const value2 = {
|
|
612
|
+
clearAll,
|
|
613
|
+
errors,
|
|
614
|
+
gateways,
|
|
615
|
+
provided: true
|
|
616
|
+
};
|
|
617
|
+
return value2;
|
|
618
|
+
}, [
|
|
619
|
+
clearAll,
|
|
620
|
+
errors,
|
|
621
|
+
gateways
|
|
622
|
+
]);
|
|
623
|
+
return /* @__PURE__ */ React3.createElement(InPageGatewaysContext, {
|
|
624
|
+
value
|
|
625
|
+
}, children);
|
|
626
|
+
}, "InPageGatewaysProvider");
|
|
627
|
+
|
|
628
|
+
// src/contexts/in-page-gateways/use.ts
|
|
629
|
+
import { useContextEx as useContextEx2 } from "@xylabs/react-shared";
|
|
630
|
+
var useProvidedInPageGateways = /* @__PURE__ */ __name((required = true) => useContextEx2(InPageGatewaysContext, "InPageGateways", required), "useProvidedInPageGateways");
|
|
631
|
+
|
|
632
|
+
// src/contexts/gateway/Provider.tsx
|
|
633
|
+
var GatewayProvider = /* @__PURE__ */ __name(({ gatewayName, children }) => {
|
|
596
634
|
const [defaultGateway, setDefaultGateway] = useState3();
|
|
597
635
|
const [gateways, setGateways] = useState3({
|
|
598
636
|
inPageGateway: void 0,
|
|
599
637
|
walletGateway: void 0
|
|
600
638
|
});
|
|
601
639
|
const { gateway: gatewayFromWallet, error: gatewayFromWalletError } = useGatewayFromWallet(gatewayName);
|
|
602
|
-
const {
|
|
603
|
-
|
|
640
|
+
const { gateways: allGateways, errors: allGatewayErrors, clearAll } = useProvidedInPageGateways(true);
|
|
641
|
+
const gatewayFromConfig = gatewayName ? allGateways[gatewayName] : void 0;
|
|
642
|
+
const gatewayFromConfigError = gatewayName ? allGatewayErrors[gatewayName] : void 0;
|
|
643
|
+
useEffect4(() => {
|
|
604
644
|
if (isNull4(gatewayFromWallet)) {
|
|
605
645
|
setDefaultGateway(gatewayFromConfig);
|
|
606
646
|
setGateways({
|
|
@@ -618,13 +658,13 @@ var GatewayProvider = /* @__PURE__ */ __name(({ account, gatewayName, children }
|
|
|
618
658
|
gatewayFromConfig,
|
|
619
659
|
gatewayFromWallet
|
|
620
660
|
]);
|
|
621
|
-
const value =
|
|
661
|
+
const value = useMemo3(() => {
|
|
622
662
|
const value2 = {
|
|
623
663
|
defaultGateway,
|
|
624
664
|
error: gatewayFromWalletError || gatewayFromConfigError,
|
|
625
665
|
gateways,
|
|
626
666
|
provided: true,
|
|
627
|
-
resetGatewaysFromConfig:
|
|
667
|
+
resetGatewaysFromConfig: clearAll
|
|
628
668
|
};
|
|
629
669
|
return value2;
|
|
630
670
|
}, [
|
|
@@ -632,16 +672,18 @@ var GatewayProvider = /* @__PURE__ */ __name(({ account, gatewayName, children }
|
|
|
632
672
|
gatewayFromWalletError,
|
|
633
673
|
gatewayFromConfigError,
|
|
634
674
|
gateways,
|
|
635
|
-
|
|
675
|
+
clearAll
|
|
636
676
|
]);
|
|
637
|
-
return /* @__PURE__ */
|
|
677
|
+
return /* @__PURE__ */ React4.createElement(GatewayContext, {
|
|
638
678
|
value
|
|
639
|
-
},
|
|
679
|
+
}, /* @__PURE__ */ React4.createElement(ErrorRender, {
|
|
680
|
+
error: gatewayFromConfigError
|
|
681
|
+
}), children);
|
|
640
682
|
}, "GatewayProvider");
|
|
641
683
|
|
|
642
684
|
// src/contexts/gateway/use.ts
|
|
643
|
-
import { useContextEx as
|
|
644
|
-
var useProvidedGateway = /* @__PURE__ */ __name((required = true) =>
|
|
685
|
+
import { useContextEx as useContextEx3 } from "@xylabs/react-shared";
|
|
686
|
+
var useProvidedGateway = /* @__PURE__ */ __name((required = true) => useContextEx3(GatewayContext, "Gateway", required), "useProvidedGateway");
|
|
645
687
|
|
|
646
688
|
// src/hooks/gateway/useNetwork.ts
|
|
647
689
|
var useNetworkFromGateway = /* @__PURE__ */ __name(() => {
|
|
@@ -662,16 +704,16 @@ var useViewerFromGateway = /* @__PURE__ */ __name(() => {
|
|
|
662
704
|
}, "useViewerFromGateway");
|
|
663
705
|
|
|
664
706
|
// src/hooks/useAddressBalance.ts
|
|
665
|
-
import { usePromise as
|
|
707
|
+
import { usePromise as usePromise3 } from "@xylabs/react-promise";
|
|
666
708
|
import { isUndefined as isUndefined3, isUndefinedOrNull as isUndefinedOrNull2 } from "@xylabs/sdk-js";
|
|
667
709
|
import { ShiftedBigInt } from "@xyo-network/xl1-sdk";
|
|
668
|
-
import { useMemo as
|
|
710
|
+
import { useMemo as useMemo4, useRef, useState as useState4 } from "react";
|
|
669
711
|
var useAddressBalance = /* @__PURE__ */ __name((address, viewer, refresh) => {
|
|
670
712
|
const [balancesResult, setBalancesResult] = useState4();
|
|
671
713
|
const [loading, setLoading] = useState4(false);
|
|
672
714
|
const [balancesError, setBalancesError] = useState4();
|
|
673
715
|
const balancePromiseRef = useRef(null);
|
|
674
|
-
|
|
716
|
+
usePromise3(async () => {
|
|
675
717
|
if (isUndefined3(viewer) || isUndefined3(address)) return;
|
|
676
718
|
setLoading(true);
|
|
677
719
|
setBalancesError(void 0);
|
|
@@ -696,14 +738,14 @@ var useAddressBalance = /* @__PURE__ */ __name((address, viewer, refresh) => {
|
|
|
696
738
|
viewer,
|
|
697
739
|
refresh
|
|
698
740
|
]);
|
|
699
|
-
|
|
741
|
+
useMemo4(() => {
|
|
700
742
|
if (balancesError) {
|
|
701
743
|
setLoading(false);
|
|
702
744
|
}
|
|
703
745
|
}, [
|
|
704
746
|
balancesError
|
|
705
747
|
]);
|
|
706
|
-
const shiftedBigInt =
|
|
748
|
+
const shiftedBigInt = useMemo4(() => {
|
|
707
749
|
if (typeof balancesResult !== "bigint") return;
|
|
708
750
|
return new ShiftedBigInt(balancesResult, {
|
|
709
751
|
places: 18,
|
|
@@ -715,12 +757,12 @@ var useAddressBalance = /* @__PURE__ */ __name((address, viewer, refresh) => {
|
|
|
715
757
|
}, [
|
|
716
758
|
balancesResult
|
|
717
759
|
]);
|
|
718
|
-
const balanceIntlFriendly =
|
|
760
|
+
const balanceIntlFriendly = useMemo4(() => {
|
|
719
761
|
return shiftedBigInt?.toFullString();
|
|
720
762
|
}, [
|
|
721
763
|
shiftedBigInt
|
|
722
764
|
]);
|
|
723
|
-
const shortBalanceIntlFriendly =
|
|
765
|
+
const shortBalanceIntlFriendly = useMemo4(() => {
|
|
724
766
|
return isUndefinedOrNull2(balancesResult) ? void 0 : balancesResult < 1000000000000n && balancesResult > 0n ? "<0.00001" : shiftedBigInt?.toShortString();
|
|
725
767
|
}, [
|
|
726
768
|
balancesResult,
|
|
@@ -737,22 +779,22 @@ var useAddressBalance = /* @__PURE__ */ __name((address, viewer, refresh) => {
|
|
|
737
779
|
}, "useAddressBalance");
|
|
738
780
|
|
|
739
781
|
// src/hooks/useConfirmTransactionBase.ts
|
|
740
|
-
import { usePromise as
|
|
741
|
-
import { forget as forget2, isDefined as
|
|
782
|
+
import { usePromise as usePromise4 } from "@xylabs/react-promise";
|
|
783
|
+
import { forget as forget2, isDefined as isDefined6, isHash } from "@xylabs/sdk-js";
|
|
742
784
|
import { PayloadBuilder } from "@xyo-network/sdk-js";
|
|
743
|
-
import { useEffect as
|
|
785
|
+
import { useEffect as useEffect5, useState as useState5 } from "react";
|
|
744
786
|
var useConfirmTransactionBase = /* @__PURE__ */ __name((transaction, onBroadcast, onStatusUpdate, runner, viewer) => {
|
|
745
787
|
const [status, setStatus] = useState5();
|
|
746
788
|
const onStatusUpdateLocal = /* @__PURE__ */ __name((newStatus) => {
|
|
747
789
|
setStatus(newStatus);
|
|
748
790
|
onStatusUpdate?.(newStatus);
|
|
749
791
|
}, "onStatusUpdateLocal");
|
|
750
|
-
const [transactionConfirmationStatus, transactionConfirmationError] =
|
|
751
|
-
const hasRunner =
|
|
792
|
+
const [transactionConfirmationStatus, transactionConfirmationError] = usePromise4(async () => {
|
|
793
|
+
const hasRunner = isDefined6(runner);
|
|
752
794
|
if (transaction && viewer) {
|
|
753
795
|
const hash = hasRunner ? await runner.broadcastTransaction(transaction) : await PayloadBuilder.hash(transaction[0]);
|
|
754
796
|
if (isHash(hash)) {
|
|
755
|
-
if (hasRunner &&
|
|
797
|
+
if (hasRunner && isDefined6(onBroadcast)) onBroadcast(hash);
|
|
756
798
|
const params = {
|
|
757
799
|
onStatusUpdate: onStatusUpdateLocal,
|
|
758
800
|
transaction,
|
|
@@ -771,7 +813,7 @@ var useConfirmTransactionBase = /* @__PURE__ */ __name((transaction, onBroadcast
|
|
|
771
813
|
runner,
|
|
772
814
|
viewer
|
|
773
815
|
]);
|
|
774
|
-
|
|
816
|
+
useEffect5(() => {
|
|
775
817
|
return () => {
|
|
776
818
|
if (transactionConfirmationStatus) {
|
|
777
819
|
forget2(transactionConfirmationStatus.stop());
|
|
@@ -790,13 +832,13 @@ var useConfirmTransactionBase = /* @__PURE__ */ __name((transaction, onBroadcast
|
|
|
790
832
|
import { asAddress } from "@xylabs/sdk-js";
|
|
791
833
|
import { assertEx as assertEx3 } from "@xylabs/sdk-js";
|
|
792
834
|
import { MainNetwork } from "@xyo-network/xl1-sdk";
|
|
793
|
-
import { useCallback as
|
|
835
|
+
import { useCallback as useCallback3, useState as useState6 } from "react";
|
|
794
836
|
var useConnectAccount = /* @__PURE__ */ __name((gatewayName = MainNetwork.id, timeout) => {
|
|
795
837
|
const [connectError, setConnectError] = useState6();
|
|
796
838
|
const { gateway, error, timedout } = useGatewayFromWallet(gatewayName, timeout);
|
|
797
839
|
const [accountPermissions, accountPermissionsError] = useAccountPermissions();
|
|
798
840
|
const [address, setAddress] = useState6();
|
|
799
|
-
const connectSigner =
|
|
841
|
+
const connectSigner = useCallback3(async () => {
|
|
800
842
|
try {
|
|
801
843
|
setConnectError(void 0);
|
|
802
844
|
const assertedGateway = assertEx3(gateway, () => `Gateway ${gatewayName} is not available`);
|
|
@@ -821,10 +863,10 @@ var useConnectAccount = /* @__PURE__ */ __name((gatewayName = MainNetwork.id, ti
|
|
|
821
863
|
}, "useConnectAccount");
|
|
822
864
|
|
|
823
865
|
// src/hooks/useCurrentBlock.ts
|
|
824
|
-
import { usePromise as
|
|
866
|
+
import { usePromise as usePromise5 } from "@xylabs/react-promise";
|
|
825
867
|
import { isDefinedNotNull as isDefinedNotNull4 } from "@xylabs/sdk-js";
|
|
826
868
|
var useCurrentBlock = /* @__PURE__ */ __name((refresh = 1, viewer) => {
|
|
827
|
-
return
|
|
869
|
+
return usePromise5(async () => {
|
|
828
870
|
if (isDefinedNotNull4(viewer) && refresh > 0) {
|
|
829
871
|
const block = await viewer.currentBlock();
|
|
830
872
|
return block;
|
|
@@ -836,7 +878,7 @@ var useCurrentBlock = /* @__PURE__ */ __name((refresh = 1, viewer) => {
|
|
|
836
878
|
}, "useCurrentBlock");
|
|
837
879
|
var useCurrentBlockFromGateway = /* @__PURE__ */ __name((refresh = 1) => {
|
|
838
880
|
const viewer = useViewerFromGateway();
|
|
839
|
-
return
|
|
881
|
+
return usePromise5(async () => {
|
|
840
882
|
if (isDefinedNotNull4(viewer) && refresh > 0) {
|
|
841
883
|
const block = await viewer.currentBlock();
|
|
842
884
|
return block;
|
|
@@ -848,11 +890,11 @@ var useCurrentBlockFromGateway = /* @__PURE__ */ __name((refresh = 1) => {
|
|
|
848
890
|
}, "useCurrentBlockFromGateway");
|
|
849
891
|
|
|
850
892
|
// src/hooks/useHttpRpcRunner.ts
|
|
851
|
-
import { usePromise as
|
|
893
|
+
import { usePromise as usePromise6 } from "@xylabs/react-promise";
|
|
852
894
|
import { isUndefined as isUndefined4 } from "@xylabs/sdk-js";
|
|
853
895
|
import { AccountBalanceViewerRpcSchemas, buildJsonRpcProviderLocator, HttpRpcTransport, JsonRpcAccountBalanceViewer, SimpleTransactionViewer, XyoRunnerMoniker } from "@xyo-network/xl1-sdk";
|
|
854
896
|
var useHttpRpcRunner = /* @__PURE__ */ __name((url) => {
|
|
855
|
-
return
|
|
897
|
+
return usePromise6(async () => {
|
|
856
898
|
if (isUndefined4(url)) {
|
|
857
899
|
return;
|
|
858
900
|
}
|
|
@@ -873,9 +915,9 @@ var useHttpRpcRunner = /* @__PURE__ */ __name((url) => {
|
|
|
873
915
|
// src/hooks/useNetwork.ts
|
|
874
916
|
import { isUndefined as isUndefined5 } from "@xylabs/sdk-js";
|
|
875
917
|
import { SimpleXyoNetwork } from "@xyo-network/xl1-sdk";
|
|
876
|
-
import { useMemo as
|
|
918
|
+
import { useMemo as useMemo5 } from "react";
|
|
877
919
|
var useNetwork = /* @__PURE__ */ __name((id) => {
|
|
878
|
-
const network =
|
|
920
|
+
const network = useMemo5(() => {
|
|
879
921
|
if (isUndefined5(id)) return;
|
|
880
922
|
return new SimpleXyoNetwork(id);
|
|
881
923
|
}, [
|
|
@@ -885,10 +927,10 @@ var useNetwork = /* @__PURE__ */ __name((id) => {
|
|
|
885
927
|
}, "useNetwork");
|
|
886
928
|
|
|
887
929
|
// src/hooks/useSigner.ts
|
|
888
|
-
import { usePromise as
|
|
930
|
+
import { usePromise as usePromise7 } from "@xylabs/react-promise";
|
|
889
931
|
import { SimpleXyoSigner } from "@xyo-network/xl1-sdk";
|
|
890
932
|
var useSigner = /* @__PURE__ */ __name((_provider, account) => {
|
|
891
|
-
return
|
|
933
|
+
return usePromise7(async () => account ? await SimpleXyoSigner.create({
|
|
892
934
|
account
|
|
893
935
|
}) : void 0, [
|
|
894
936
|
account
|
|
@@ -896,11 +938,11 @@ var useSigner = /* @__PURE__ */ __name((_provider, account) => {
|
|
|
896
938
|
}, "useSigner");
|
|
897
939
|
|
|
898
940
|
// src/hooks/viewer/useCheckRpc.ts
|
|
899
|
-
import { usePromise as
|
|
900
|
-
import { delay as delay2, isDefined as
|
|
941
|
+
import { usePromise as usePromise8 } from "@xylabs/react-promise";
|
|
942
|
+
import { delay as delay2, isDefined as isDefined7, isUndefined as isUndefined6 } from "@xylabs/sdk-js";
|
|
901
943
|
import { basicRemoteViewerLocator as basicRemoteViewerLocator2 } from "@xyo-network/chain-orchestration";
|
|
902
944
|
import { LocalNetwork, SequenceNetwork, XyoViewerMoniker } from "@xyo-network/xl1-sdk";
|
|
903
|
-
import { useEffect as
|
|
945
|
+
import { useEffect as useEffect6, useState as useState7 } from "react";
|
|
904
946
|
var INTERVAL = 5e3;
|
|
905
947
|
var localRpcEndpoint = `${LocalNetwork.url}/rpc`;
|
|
906
948
|
var sequenceRpcEndpoint = `${SequenceNetwork.url}/rpc`;
|
|
@@ -915,7 +957,7 @@ var useCheckSequenceRpc = /* @__PURE__ */ __name(() => {
|
|
|
915
957
|
var useCheckRpc = /* @__PURE__ */ __name((endpoint) => {
|
|
916
958
|
const [isLocalProducer, setIsLocalProducer] = useState7(false);
|
|
917
959
|
const [error, setError] = useState7();
|
|
918
|
-
const [viewer] =
|
|
960
|
+
const [viewer] = usePromise8(async () => {
|
|
919
961
|
if (isUndefined6(endpoint)) return;
|
|
920
962
|
const locator = await basicRemoteViewerLocator2(endpoint, {
|
|
921
963
|
rpc: {
|
|
@@ -928,14 +970,14 @@ var useCheckRpc = /* @__PURE__ */ __name((endpoint) => {
|
|
|
928
970
|
}, [
|
|
929
971
|
endpoint
|
|
930
972
|
]);
|
|
931
|
-
|
|
973
|
+
useEffect6(() => {
|
|
932
974
|
if (isUndefined6(viewer)) return;
|
|
933
975
|
void (async () => {
|
|
934
976
|
setError(void 0);
|
|
935
977
|
while (!isLocalProducer) {
|
|
936
978
|
try {
|
|
937
979
|
const block = await viewer.currentBlock();
|
|
938
|
-
setIsLocalProducer(
|
|
980
|
+
setIsLocalProducer(isDefined7(block));
|
|
939
981
|
} catch (err) {
|
|
940
982
|
setError(err);
|
|
941
983
|
setIsLocalProducer(false);
|
|
@@ -954,8 +996,8 @@ var useCheckRpc = /* @__PURE__ */ __name((endpoint) => {
|
|
|
954
996
|
}, "useCheckRpc");
|
|
955
997
|
|
|
956
998
|
// src/hooks/viewer/useHttpRpcViewer.ts
|
|
957
|
-
import { usePromise as
|
|
958
|
-
import { isDefined as
|
|
999
|
+
import { usePromise as usePromise9 } from "@xylabs/react-promise";
|
|
1000
|
+
import { isDefined as isDefined8, isString as isString2, isUndefined as isUndefined7 } from "@xylabs/sdk-js";
|
|
959
1001
|
import { AccountBalanceViewerRpcSchemas as AccountBalanceViewerRpcSchemas2, buildJsonRpcProviderLocator as buildJsonRpcProviderLocator2, HttpRpcTransport as HttpRpcTransport2, JsonRpcAccountBalanceViewer as JsonRpcAccountBalanceViewer2, JsonRpcXyoViewer as JsonRpcXyoViewer2, NetworkDataLakeUrls as NetworkDataLakeUrls2, RestDataLakeViewer, SimpleTransactionViewer as SimpleTransactionViewer2, XyoViewerMoniker as XyoViewerMoniker2, XyoViewerRpcSchemas } from "@xyo-network/xl1-sdk";
|
|
960
1002
|
|
|
961
1003
|
// src/hooks/viewer/ViewerWithDataLake.ts
|
|
@@ -1022,7 +1064,7 @@ var buildLocator = /* @__PURE__ */ __name(async (transportFactory, dataLakeViewe
|
|
|
1022
1064
|
transport: await transportFactory(AccountBalanceViewerRpcSchemas2)
|
|
1023
1065
|
}));
|
|
1024
1066
|
locator.register(SimpleTransactionViewer2.factory(SimpleTransactionViewer2.dependencies, {}));
|
|
1025
|
-
if (
|
|
1067
|
+
if (isDefined8(dataLakeViewerParams)) {
|
|
1026
1068
|
locator.register(RestDataLakeViewer.factory(RestDataLakeViewer.dependencies, dataLakeViewerParams));
|
|
1027
1069
|
}
|
|
1028
1070
|
locator.register(ViewerWithDataLake.factory(JsonRpcXyoViewer2.dependencies, {
|
|
@@ -1031,7 +1073,7 @@ var buildLocator = /* @__PURE__ */ __name(async (transportFactory, dataLakeViewe
|
|
|
1031
1073
|
return locator;
|
|
1032
1074
|
}, "buildLocator");
|
|
1033
1075
|
var useHttpRpcViewer = /* @__PURE__ */ __name((urlOrNetwork) => {
|
|
1034
|
-
const [resolvedViewer] =
|
|
1076
|
+
const [resolvedViewer] = usePromise9(async () => {
|
|
1035
1077
|
if (isUndefined7(urlOrNetwork)) {
|
|
1036
1078
|
return;
|
|
1037
1079
|
}
|
|
@@ -1045,16 +1087,16 @@ var useHttpRpcViewer = /* @__PURE__ */ __name((urlOrNetwork) => {
|
|
|
1045
1087
|
}, "useHttpRpcViewer");
|
|
1046
1088
|
|
|
1047
1089
|
// src/hooks/viewer/useViewerFromWallet.ts
|
|
1048
|
-
import { usePromise as
|
|
1049
|
-
import { isDefined as
|
|
1090
|
+
import { usePromise as usePromise10 } from "@xylabs/react-promise";
|
|
1091
|
+
import { isDefined as isDefined9, isDefinedNotNull as isDefinedNotNull5, isNull as isNull6 } from "@xylabs/sdk-js";
|
|
1050
1092
|
var useViewerFromWallet = /* @__PURE__ */ __name((networkId, timeout) => {
|
|
1051
1093
|
const { gateway, error, isLoading, timedout } = useGatewayFromWallet(networkId, timeout);
|
|
1052
|
-
const result =
|
|
1094
|
+
const result = usePromise10(async () => {
|
|
1053
1095
|
await Promise.resolve();
|
|
1054
1096
|
if (isDefinedNotNull5(error)) return null;
|
|
1055
1097
|
if (timedout && isNull6(gateway)) return null;
|
|
1056
1098
|
if (isLoading) return;
|
|
1057
|
-
if (
|
|
1099
|
+
if (isDefined9(gateway) && isDefined9(networkId)) {
|
|
1058
1100
|
const connection = gateway?.connection;
|
|
1059
1101
|
return connection?.viewer;
|
|
1060
1102
|
}
|
|
@@ -1067,16 +1109,16 @@ var useViewerFromWallet = /* @__PURE__ */ __name((networkId, timeout) => {
|
|
|
1067
1109
|
}, "useViewerFromWallet");
|
|
1068
1110
|
|
|
1069
1111
|
// src/components/connected/ConnectAccountsStack.tsx
|
|
1070
|
-
var DefaultConnectComponent = /* @__PURE__ */ __name((props) => /* @__PURE__ */
|
|
1112
|
+
var DefaultConnectComponent = /* @__PURE__ */ __name((props) => /* @__PURE__ */ React5.createElement(ButtonEx, {
|
|
1071
1113
|
variant: "contained",
|
|
1072
1114
|
size: "small",
|
|
1073
1115
|
...props
|
|
1074
1116
|
}), "DefaultConnectComponent");
|
|
1075
|
-
var DefaultNoWalletInstalledComponent = /* @__PURE__ */ __name(() => /* @__PURE__ */
|
|
1117
|
+
var DefaultNoWalletInstalledComponent = /* @__PURE__ */ __name(() => /* @__PURE__ */ React5.createElement(Alert, {
|
|
1076
1118
|
severity: "warning"
|
|
1077
|
-
}, /* @__PURE__ */
|
|
1119
|
+
}, /* @__PURE__ */ React5.createElement(AlertTitle, null, "XL1 Wallet Not Found"), /* @__PURE__ */ React5.createElement(Typography2, {
|
|
1078
1120
|
gutterBottom: true
|
|
1079
|
-
}, "Please ensure that your XL1 Wallet is installed to connect your account."), /* @__PURE__ */
|
|
1121
|
+
}, "Please ensure that your XL1 Wallet is installed to connect your account."), /* @__PURE__ */ React5.createElement(Button, {
|
|
1080
1122
|
sx: {
|
|
1081
1123
|
display: "flex",
|
|
1082
1124
|
justifySelf: "end"
|
|
@@ -1089,32 +1131,32 @@ var DefaultNoWalletInstalledComponent = /* @__PURE__ */ __name(() => /* @__PURE_
|
|
|
1089
1131
|
}, "Get XL1 Wallet")), "DefaultNoWalletInstalledComponent");
|
|
1090
1132
|
var ConnectAccountsStack = /* @__PURE__ */ __name(({ AccountComponent = ConnectedAccount, ConnectComponent = DefaultConnectComponent, NoWalletInstalledComponent = DefaultNoWalletInstalledComponent, onAccountConnected, onCancel, timeout, ...props }) => {
|
|
1091
1133
|
const { address, connectSigner, error, timedout } = useConnectAccount(void 0, timeout);
|
|
1092
|
-
|
|
1093
|
-
if (
|
|
1134
|
+
useEffect7(() => {
|
|
1135
|
+
if (isDefined10(error) && isDefined10(onCancel)) {
|
|
1094
1136
|
onCancel();
|
|
1095
1137
|
}
|
|
1096
1138
|
}, [
|
|
1097
1139
|
error,
|
|
1098
1140
|
onCancel
|
|
1099
1141
|
]);
|
|
1100
|
-
|
|
1101
|
-
if (
|
|
1142
|
+
useEffect7(() => {
|
|
1143
|
+
if (isDefined10(address) && isDefined10(onAccountConnected)) {
|
|
1102
1144
|
onAccountConnected(address);
|
|
1103
1145
|
}
|
|
1104
1146
|
}, [
|
|
1105
1147
|
address,
|
|
1106
1148
|
onAccountConnected
|
|
1107
1149
|
]);
|
|
1108
|
-
return /* @__PURE__ */
|
|
1150
|
+
return /* @__PURE__ */ React5.createElement(Stack2, {
|
|
1109
1151
|
direction: "row",
|
|
1110
1152
|
alignItems: "start",
|
|
1111
1153
|
spacing: 2,
|
|
1112
1154
|
...props
|
|
1113
|
-
},
|
|
1155
|
+
}, isDefined10(address) ? /* @__PURE__ */ React5.createElement(AccountComponent, {
|
|
1114
1156
|
address
|
|
1115
|
-
}) : null, isUndefined8(address) && !timedout ? /* @__PURE__ */
|
|
1157
|
+
}) : null, isUndefined8(address) && !timedout ? /* @__PURE__ */ React5.createElement(ConnectComponent, {
|
|
1116
1158
|
onClick: /* @__PURE__ */ __name(() => void connectSigner(), "onClick")
|
|
1117
|
-
}, "Connect") : null, isUndefined8(address) && timedout ? /* @__PURE__ */
|
|
1159
|
+
}, "Connect") : null, isUndefined8(address) && timedout ? /* @__PURE__ */ React5.createElement(NoWalletInstalledComponent, null) : null, /* @__PURE__ */ React5.createElement(ErrorRender2, {
|
|
1118
1160
|
error,
|
|
1119
1161
|
scope: "ConnectSigner:error"
|
|
1120
1162
|
}));
|
|
@@ -1125,11 +1167,14 @@ export {
|
|
|
1125
1167
|
DEFAULT_POLLING_INTERVAL,
|
|
1126
1168
|
GatewayContext,
|
|
1127
1169
|
GatewayProvider,
|
|
1170
|
+
InPageGatewaysContext,
|
|
1171
|
+
InPageGatewaysProvider,
|
|
1128
1172
|
TransactionConfirmationStatus,
|
|
1129
1173
|
ViewerWithDataLake,
|
|
1130
1174
|
XL1CurrentBlockContext,
|
|
1131
1175
|
XL1CurrentBlockProvider,
|
|
1132
1176
|
balanceForRange,
|
|
1177
|
+
buildGateway,
|
|
1133
1178
|
findMinimumBlock,
|
|
1134
1179
|
formatAccountBalanceHistory,
|
|
1135
1180
|
getXyoClient,
|
|
@@ -1147,7 +1192,6 @@ export {
|
|
|
1147
1192
|
useCurrentBlock,
|
|
1148
1193
|
useCurrentBlockFromGateway,
|
|
1149
1194
|
useGateway,
|
|
1150
|
-
useGatewayFromConfig,
|
|
1151
1195
|
useGatewayFromWallet,
|
|
1152
1196
|
useHttpRpcRunner,
|
|
1153
1197
|
useHttpRpcViewer,
|
|
@@ -1156,6 +1200,7 @@ export {
|
|
|
1156
1200
|
usePermissions,
|
|
1157
1201
|
usePollCurrentBlock,
|
|
1158
1202
|
useProvidedGateway,
|
|
1203
|
+
useProvidedInPageGateways,
|
|
1159
1204
|
useRunnerFromGateway,
|
|
1160
1205
|
useSigner,
|
|
1161
1206
|
useViewerFromGateway,
|