@xyo-network/xl1-react-client-sdk 1.28.5 → 1.28.6

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.
@@ -9,10 +9,28 @@ import { BlockiesAvatarAddress } from "@xyo-network/xl1-blockies";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
  var ConnectedAccount = ({ address }) => {
11
11
  const shortenedAddress = `${EthAddressWrapper.fromString(address)?.toShortString(4)}`;
12
- return /* @__PURE__ */ jsxs(Stack, { direction: "row", alignItems: "center", spacing: 1, children: [
13
- /* @__PURE__ */ jsx(BlockiesAvatarAddress, { address, size: 21 }),
14
- /* @__PURE__ */ jsx(Tooltip, { title: address, children: /* @__PURE__ */ jsx(Typography, { color: "textSecondary", variant: "caption", fontFamily: "monospace", children: shortenedAddress }) })
15
- ] });
12
+ return /* @__PURE__ */ jsxs(
13
+ Stack,
14
+ {
15
+ direction: "row",
16
+ spacing: 1,
17
+ sx: { alignItems: "center" },
18
+ children: [
19
+ /* @__PURE__ */ jsx(BlockiesAvatarAddress, { address, size: 21 }),
20
+ /* @__PURE__ */ jsx(Tooltip, { title: address, children: /* @__PURE__ */ jsx(
21
+ Typography,
22
+ {
23
+ variant: "caption",
24
+ sx: {
25
+ color: "text.secondary",
26
+ fontFamily: "monospace"
27
+ },
28
+ children: shortenedAddress
29
+ }
30
+ ) })
31
+ ]
32
+ }
33
+ );
16
34
  };
17
35
 
18
36
  // src/client/components/connected/ConnectAccountsStack.tsx
@@ -309,12 +327,115 @@ var ConnectAccountsStack = ({
309
327
  onAccountConnected(address);
310
328
  }
311
329
  }, [address, onAccountConnected]);
312
- return /* @__PURE__ */ jsxs2(Stack2, { direction: "row", alignItems: "start", spacing: 2, ...props, children: [
313
- isDefined3(address) ? /* @__PURE__ */ jsx2(AccountComponent, { address }) : null,
314
- isUndefined3(address) && !timedout ? /* @__PURE__ */ jsx2(ConnectComponent, { onClick: () => void connectSigner(), children: "Connect" }) : null,
315
- isUndefined3(address) && timedout ? /* @__PURE__ */ jsx2(NoWalletInstalledComponent, {}) : null,
316
- /* @__PURE__ */ jsx2(ErrorRender, { error, scope: "ConnectSigner:error" })
317
- ] });
330
+ return /* @__PURE__ */ jsxs2(
331
+ Stack2,
332
+ {
333
+ direction: "row",
334
+ spacing: 2,
335
+ ...props,
336
+ sx: { alignItems: "start", ...props.sx },
337
+ children: [
338
+ isDefined3(address) ? /* @__PURE__ */ jsx2(AccountComponent, { address }) : null,
339
+ isUndefined3(address) && !timedout ? /* @__PURE__ */ jsx2(ConnectComponent, { onClick: () => void connectSigner(), children: "Connect" }) : null,
340
+ isUndefined3(address) && timedout ? /* @__PURE__ */ jsx2(NoWalletInstalledComponent, {}) : null,
341
+ /* @__PURE__ */ jsx2(ErrorRender, { error, scope: "ConnectSigner:error" })
342
+ ]
343
+ }
344
+ );
345
+ };
346
+
347
+ // src/client/components/connected/RequestPermissionsButton.tsx
348
+ import {
349
+ Alert as Alert2,
350
+ Stack as Stack3,
351
+ Typography as Typography3
352
+ } from "@mui/material";
353
+ import { ButtonEx as ButtonEx2 } from "@xylabs/react-button";
354
+ import { ErrorRender as ErrorRender2 } from "@xylabs/react-error";
355
+ import { isDefined as isDefined4, isDefinedNotNull as isDefinedNotNull2 } from "@xylabs/sdk-js";
356
+ import { useState as useState3 } from "react";
357
+ import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
358
+ var RequestPermissionsButton = ({
359
+ permissions,
360
+ timeout,
361
+ ...props
362
+ }) => {
363
+ const {
364
+ client,
365
+ error: clientError,
366
+ isLoading,
367
+ timedout
368
+ } = useClientFromWallet(timeout);
369
+ const [acks, setAcks] = useState3();
370
+ const [requestError, setRequestError] = useState3();
371
+ const [requesting, setRequesting] = useState3(false);
372
+ const handleClick = async () => {
373
+ if (!isDefinedNotNull2(client)) return;
374
+ setRequestError(void 0);
375
+ setAcks(void 0);
376
+ setRequesting(true);
377
+ try {
378
+ const result = await client.permissions.requestPermissions(permissions);
379
+ setAcks(result);
380
+ } catch (e) {
381
+ setRequestError(e);
382
+ } finally {
383
+ setRequesting(false);
384
+ }
385
+ };
386
+ return /* @__PURE__ */ jsxs3(
387
+ Stack3,
388
+ {
389
+ ...props,
390
+ sx: {
391
+ gap: 2,
392
+ alignItems: "start",
393
+ ...props.sx
394
+ },
395
+ children: [
396
+ timedout ? /* @__PURE__ */ jsx3(Alert2, { severity: "warning", children: "Wallet not detected." }) : null,
397
+ /* @__PURE__ */ jsxs3(
398
+ ButtonEx2,
399
+ {
400
+ variant: "contained",
401
+ size: "small",
402
+ disabled: !isDefinedNotNull2(client) || requesting,
403
+ busy: isLoading || requesting,
404
+ onClick: () => void handleClick(),
405
+ children: [
406
+ "Request",
407
+ " ",
408
+ permissions.length,
409
+ " ",
410
+ "permission",
411
+ permissions.length === 1 ? "" : "s"
412
+ ]
413
+ }
414
+ ),
415
+ isDefined4(acks) ? /* @__PURE__ */ jsxs3(Stack3, { sx: { gap: 0.5 }, children: [
416
+ /* @__PURE__ */ jsx3(Typography3, { variant: "subtitle2", children: "Granted:" }),
417
+ acks.map((ack) => /* @__PURE__ */ jsx3(
418
+ Typography3,
419
+ {
420
+ variant: "body2",
421
+ sx: { fontFamily: "monospace" },
422
+ children: ack.parentCapability
423
+ },
424
+ `${ack.parentCapability}`
425
+ )),
426
+ acks.length === 0 ? /* @__PURE__ */ jsx3(
427
+ Typography3,
428
+ {
429
+ variant: "body2",
430
+ sx: { color: "text.secondary" },
431
+ children: "(empty \u2014 wallet returned no acks)"
432
+ }
433
+ ) : null
434
+ ] }) : null,
435
+ /* @__PURE__ */ jsx3(ErrorRender2, { error: clientError ?? requestError, scope: "RequestPermissionsButton" })
436
+ ]
437
+ }
438
+ );
318
439
  };
319
440
 
320
441
  // src/client/context/GatewayContext.ts
@@ -332,11 +453,11 @@ import {
332
453
  useCallback as useCallback2,
333
454
  useEffect as useEffect3,
334
455
  useMemo,
335
- useState as useState3
456
+ useState as useState4
336
457
  } from "react";
337
458
 
338
459
  // src/client/context/in-page/lib/buildGateway.ts
339
- import { assertEx as assertEx2, isDefined as isDefined4 } from "@xylabs/sdk-js";
460
+ import { assertEx as assertEx2, isDefined as isDefined5 } from "@xylabs/sdk-js";
340
461
  import {
341
462
  basicRemoteRunnerLocator,
342
463
  basicRemoteViewerLocator,
@@ -354,16 +475,16 @@ var buildGateway = async (gatewayName, signerTransport) => {
354
475
  }
355
476
  };
356
477
  const dataLakeEndpoint = NetworkDataLakeUrls[gatewayName];
357
- const locator = isDefined4(signerTransport) ? await basicRemoteRunnerLocator(gatewayName, remoteConfig, signerTransport, dataLakeEndpoint) : await basicRemoteViewerLocator(gatewayName, remoteConfig, dataLakeEndpoint);
478
+ const locator = isDefined5(signerTransport) ? await basicRemoteRunnerLocator(gatewayName, remoteConfig, signerTransport, dataLakeEndpoint) : await basicRemoteViewerLocator(gatewayName, remoteConfig, dataLakeEndpoint);
358
479
  return await locator.getInstance(XyoGatewayMoniker);
359
480
  };
360
481
 
361
482
  // src/client/context/in-page/Provider.tsx
362
- import { jsx as jsx3 } from "react/jsx-runtime";
483
+ import { jsx as jsx4 } from "react/jsx-runtime";
363
484
  var InPageGatewaysProvider = ({ signerTransport, children }) => {
364
- const [gateways, setGateways] = useState3({});
365
- const [errors, setErrors] = useState3({});
366
- const [previousSignerTransport, setPreviousSignerTransport] = useState3(signerTransport);
485
+ const [gateways, setGateways] = useState4({});
486
+ const [errors, setErrors] = useState4({});
487
+ const [previousSignerTransport, setPreviousSignerTransport] = useState4(signerTransport);
367
488
  const clearAll = useCallback2(() => {
368
489
  setGateways({});
369
490
  setErrors({});
@@ -411,7 +532,7 @@ var InPageGatewaysProvider = ({ signerTransport, children }) => {
411
532
  };
412
533
  return value2;
413
534
  }, [clearAll, errors, gateways]);
414
- return /* @__PURE__ */ jsx3(InPageGatewaysContext, { value, children });
535
+ return /* @__PURE__ */ jsx4(InPageGatewaysContext, { value, children });
415
536
  };
416
537
 
417
538
  // src/client/context/in-page/useProvidedInPageGateways.ts
@@ -419,10 +540,10 @@ import { useContextEx } from "@xylabs/react-shared";
419
540
  var useProvidedInPageGateways = (required = true) => useContextEx(InPageGatewaysContext, "InPageGateways", required);
420
541
 
421
542
  // src/client/context/providers/GatewayProvider.tsx
422
- import { ErrorRender as ErrorRender2 } from "@xylabs/react-error";
423
- import { isDefinedNotNull as isDefinedNotNull2, isNull as isNull2 } from "@xylabs/sdk-js";
543
+ import { ErrorRender as ErrorRender3 } from "@xylabs/react-error";
544
+ import { isDefinedNotNull as isDefinedNotNull3, isNull as isNull2 } from "@xylabs/sdk-js";
424
545
  import { useMemo as useMemo2 } from "react";
425
- import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
546
+ import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
426
547
  var GatewayProvider = ({ gatewayName, children }) => {
427
548
  const {
428
549
  gateway: gatewayFromWallet,
@@ -444,7 +565,7 @@ var GatewayProvider = ({ gatewayName, children }) => {
444
565
  walletGateway: null
445
566
  }
446
567
  };
447
- } else if (isDefinedNotNull2(gatewayFromWallet)) {
568
+ } else if (isDefinedNotNull3(gatewayFromWallet)) {
448
569
  return {
449
570
  defaultGateway: gatewayFromWallet,
450
571
  gateways: {
@@ -477,16 +598,16 @@ var GatewayProvider = ({ gatewayName, children }) => {
477
598
  gateways,
478
599
  clearAll
479
600
  ]);
480
- return /* @__PURE__ */ jsxs3(GatewayContext, { value, children: [
481
- /* @__PURE__ */ jsx4(ErrorRender2, { error: gatewayFromConfigError }),
601
+ return /* @__PURE__ */ jsxs4(GatewayContext, { value, children: [
602
+ /* @__PURE__ */ jsx5(ErrorRender3, { error: gatewayFromConfigError }),
482
603
  children
483
604
  ] });
484
605
  };
485
606
 
486
607
  // src/client/context/providers/WalletGatewayProvider.tsx
487
- import { ErrorRender as ErrorRender3 } from "@xylabs/react-error";
608
+ import { ErrorRender as ErrorRender4 } from "@xylabs/react-error";
488
609
  import { useMemo as useMemo3 } from "react";
489
- import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
610
+ import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
490
611
  var WalletGatewayProvider = ({ gatewayName, children }) => {
491
612
  const {
492
613
  gateway: gatewayFromWallet,
@@ -514,8 +635,8 @@ var WalletGatewayProvider = ({ gatewayName, children }) => {
514
635
  gatewayFromWalletError,
515
636
  gateways
516
637
  ]);
517
- return /* @__PURE__ */ jsxs4(GatewayContext, { value, children: [
518
- /* @__PURE__ */ jsx5(ErrorRender3, { error: gatewayFromWalletError }),
638
+ return /* @__PURE__ */ jsxs5(GatewayContext, { value, children: [
639
+ /* @__PURE__ */ jsx6(ErrorRender4, { error: gatewayFromWalletError }),
519
640
  children
520
641
  ] });
521
642
  };
@@ -525,12 +646,12 @@ import { useContextEx as useContextEx2 } from "@xylabs/react-shared";
525
646
  var useProvidedGateway = (required = true) => useContextEx2(GatewayContext, "Gateway", required);
526
647
 
527
648
  // src/model/types/XyoGlobal.ts
528
- import { isDefinedNotNull as isDefinedNotNull3, isObject } from "@xylabs/sdk-js";
649
+ import { isDefinedNotNull as isDefinedNotNull4, isObject } from "@xylabs/sdk-js";
529
650
  var isXyoGlobal = (obj) => {
530
- return isDefinedNotNull3(obj) && isObject(obj) && "client" in obj && "connections" in obj && "errors" in obj && "sessionId" in obj && "walletExtensionId" in obj;
651
+ return isDefinedNotNull4(obj) && isObject(obj) && "client" in obj && "connections" in obj && "errors" in obj && "sessionId" in obj && "walletExtensionId" in obj;
531
652
  };
532
653
  var isUninitializedXyoGlobal = (obj) => {
533
- return isDefinedNotNull3(obj) && isObject(obj) && "connections" in obj && "sessionId" in obj && "walletExtensionId" in obj && !("client" in obj) && "errors" in obj && Array.isArray(obj.errors) && obj.errors.length === 0;
654
+ return isDefinedNotNull4(obj) && isObject(obj) && "connections" in obj && "sessionId" in obj && "walletExtensionId" in obj && !("client" in obj) && "errors" in obj && Array.isArray(obj.errors) && obj.errors.length === 0;
534
655
  };
535
656
 
536
657
  // src/shared/components/menu-item/ActiveMenuItem.tsx
@@ -539,7 +660,7 @@ import {
539
660
  styled,
540
661
  useTheme
541
662
  } from "@mui/material";
542
- import { jsx as jsx6 } from "react/jsx-runtime";
663
+ import { jsx as jsx7 } from "react/jsx-runtime";
543
664
  var ActiveMenuItem = ({
544
665
  active,
545
666
  children,
@@ -547,7 +668,7 @@ var ActiveMenuItem = ({
547
668
  ...props
548
669
  }) => {
549
670
  const theme = useTheme();
550
- return /* @__PURE__ */ jsx6(
671
+ return /* @__PURE__ */ jsx7(
551
672
  StyledMenuItem,
552
673
  {
553
674
  disableRipple: true,
@@ -581,15 +702,15 @@ var StyledMenuItem = styled(MenuItem, { name: "StyledMenuItem" })(({ theme }) =>
581
702
 
582
703
  // src/shared/components/stack/DetailsStack.tsx
583
704
  import {
584
- Stack as Stack3,
705
+ Stack as Stack4,
585
706
  styled as styled2,
586
707
  Tooltip as Tooltip2,
587
- Typography as Typography3,
708
+ Typography as Typography4,
588
709
  useTheme as useTheme2
589
710
  } from "@mui/material";
590
- import { isDefined as isDefined5 } from "@xylabs/sdk-js";
711
+ import { isDefined as isDefined6 } from "@xylabs/sdk-js";
591
712
  import { useMemo as useMemo4 } from "react";
592
- import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
713
+ import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
593
714
  var isComponentType = (value) => typeof value === "function" || typeof value === "object" && value !== null && ("$$typeof" in value || "render" in value);
594
715
  var DetailsStack = ({
595
716
  IconComponent,
@@ -599,9 +720,9 @@ var DetailsStack = ({
599
720
  ...props
600
721
  }) => {
601
722
  const theme = useTheme2();
602
- const hasTooltip = isDefined5(tooltipTitle);
723
+ const hasTooltip = isDefined6(tooltipTitle);
603
724
  const resolvedIconComponent = useMemo4(() => {
604
- return isComponentType(IconComponent) ? /* @__PURE__ */ jsx7(
725
+ return isComponentType(IconComponent) ? /* @__PURE__ */ jsx8(
605
726
  IconComponent,
606
727
  {
607
728
  style: {
@@ -613,15 +734,28 @@ var DetailsStack = ({
613
734
  }
614
735
  ) : IconComponent ?? null;
615
736
  }, [IconComponent, theme]);
616
- return /* @__PURE__ */ jsxs5(Stack3, { direction: "column", flexGrow: 1, flexWrap: "wrap", minWidth: "1px", ...props, children: [
617
- /* @__PURE__ */ jsxs5(SectionHeadingTypography, { children: [
618
- heading,
619
- hasTooltip ? /* @__PURE__ */ jsx7(Tooltip2, { title: tooltipTitle, children: /* @__PURE__ */ jsx7("span", { children: resolvedIconComponent }) }) : resolvedIconComponent
620
- ] }),
621
- children
622
- ] });
737
+ return /* @__PURE__ */ jsxs6(
738
+ Stack4,
739
+ {
740
+ direction: "column",
741
+ ...props,
742
+ sx: {
743
+ flexGrow: 1,
744
+ flexWrap: "wrap",
745
+ minWidth: "1px",
746
+ ...props.sx
747
+ },
748
+ children: [
749
+ /* @__PURE__ */ jsxs6(SectionHeadingTypography, { children: [
750
+ heading,
751
+ hasTooltip ? /* @__PURE__ */ jsx8(Tooltip2, { title: tooltipTitle, children: /* @__PURE__ */ jsx8("span", { children: resolvedIconComponent }) }) : resolvedIconComponent
752
+ ] }),
753
+ children
754
+ ]
755
+ }
756
+ );
623
757
  };
624
- var SectionHeadingTypography = styled2(Typography3, { name: "SectionHeadingTypography" })(({ theme }) => ({
758
+ var SectionHeadingTypography = styled2(Typography4, { name: "SectionHeadingTypography" })(({ theme }) => ({
625
759
  display: "flex",
626
760
  fontFamily: "monospace",
627
761
  lineHeight: 1,
@@ -630,12 +764,12 @@ var SectionHeadingTypography = styled2(Typography3, { name: "SectionHeadingTypog
630
764
 
631
765
  // src/shared/components/stack/LabelValueStack.tsx
632
766
  import {
633
- Stack as Stack4,
634
- Typography as Typography4,
767
+ Stack as Stack5,
768
+ Typography as Typography5,
635
769
  useTheme as useTheme3
636
770
  } from "@mui/material";
637
771
  import { ellipsize, isAddress } from "@xylabs/sdk-js";
638
- import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
772
+ import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
639
773
  var LabelValueStack = ({
640
774
  labels,
641
775
  values,
@@ -648,49 +782,72 @@ var LabelValueStack = ({
648
782
  }
649
783
  return value;
650
784
  };
651
- return /* @__PURE__ */ jsxs6(Stack4, { flexDirection: "row", flexGrow: 1, ...props, children: [
652
- /* @__PURE__ */ jsx8(Stack4, { children: labels.map((label) => /* @__PURE__ */ jsxs6(
653
- Typography4,
654
- {
655
- fontWeight: "300",
656
- variant: "body2",
657
- sx: { borderBottom: `1px solid ${theme.vars?.palette.divider}`, opacity: 0.7 },
658
- children: [
659
- label,
660
- ":"
661
- ]
662
- },
663
- label
664
- )) }),
665
- /* @__PURE__ */ jsx8(Stack4, { alignItems: "end", flexGrow: 1, children: values.map((value, index) => /* @__PURE__ */ jsx8(
666
- Typography4,
667
- {
668
- title: value,
669
- fontFamily: "monospace",
670
- variant: "body2",
671
- width: "100%",
672
- sx: {
673
- display: "flex",
674
- justifyContent: "end",
675
- borderBottom: `1px solid ${theme.vars?.palette.divider}`
676
- },
677
- children: formattedValue(value)
785
+ return /* @__PURE__ */ jsxs7(
786
+ Stack5,
787
+ {
788
+ ...props,
789
+ sx: {
790
+ flexDirection: "row",
791
+ flexGrow: 1,
792
+ ...props.sx
678
793
  },
679
- labels[index]
680
- )) })
681
- ] });
794
+ children: [
795
+ /* @__PURE__ */ jsx9(Stack5, { children: labels.map((label) => /* @__PURE__ */ jsxs7(
796
+ Typography5,
797
+ {
798
+ variant: "body2",
799
+ sx: {
800
+ fontWeight: "300",
801
+ borderBottom: `1px solid ${theme.vars?.palette.divider}`,
802
+ opacity: 0.7
803
+ },
804
+ children: [
805
+ label,
806
+ ":"
807
+ ]
808
+ },
809
+ label
810
+ )) }),
811
+ /* @__PURE__ */ jsx9(
812
+ Stack5,
813
+ {
814
+ sx: {
815
+ alignItems: "end",
816
+ flexGrow: 1
817
+ },
818
+ children: values.map((value, index) => /* @__PURE__ */ jsx9(
819
+ Typography5,
820
+ {
821
+ title: value,
822
+ variant: "body2",
823
+ sx: {
824
+ fontFamily: "monospace",
825
+ width: "100%",
826
+ display: "flex",
827
+ justifyContent: "end",
828
+ borderBottom: `1px solid ${theme.vars?.palette.divider}`
829
+ },
830
+ children: formattedValue(value)
831
+ },
832
+ labels[index]
833
+ ))
834
+ }
835
+ )
836
+ ]
837
+ }
838
+ );
682
839
  };
683
840
 
684
841
  // src/shared/decorators/IframeWalletWarningDecorator.tsx
685
- import { Alert as Alert2, Stack as Stack5 } from "@mui/material";
686
- import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
842
+ import { Alert as Alert3, Stack as Stack6 } from "@mui/material";
843
+ import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
687
844
  var inIframe = globalThis.self !== window.top;
688
845
  var IframeWalletWarningDecorator = (Story, args) => {
689
846
  const hasXyoGlobal = isXyoGlobal(globalThis.xyo);
690
- return /* @__PURE__ */ jsxs7(Stack5, { gap: 2, children: [
691
- inIframe ? /* @__PURE__ */ jsx9(Alert2, { severity: "warning", children: "This story is running in an iframe. Please run it in a standalone browser window to test the wallet extension." }) : null,
692
- hasXyoGlobal ? null : /* @__PURE__ */ jsx9(Alert2, { severity: "warning", children: "No wallet extension found. Please install the Xyo Wallet Chrome Extension." }),
693
- /* @__PURE__ */ jsx9(Story, { ...args })
847
+ return /* @__PURE__ */ jsxs8(Stack6, { sx: { gap: 2 }, children: [
848
+ inIframe ? /* @__PURE__ */ jsx10(Alert3, { severity: "warning", children: "This story is running in an iframe. Please run it in a standalone browser window to test the wallet extension." }) : null,
849
+ hasXyoGlobal ? null : /* @__PURE__ */ jsx10(Alert3, { severity: "warning", children: "No wallet extension found. Please install the Xyo Wallet Chrome Extension." }),
850
+ /* @__PURE__ */ jsx10(Story, { ...args })
694
851
  ] });
695
852
  };
696
853
  export {
@@ -704,6 +861,7 @@ export {
704
861
  InPageGatewaysContext,
705
862
  InPageGatewaysProvider,
706
863
  LabelValueStack,
864
+ RequestPermissionsButton,
707
865
  WalletGatewayProvider,
708
866
  findCaveat,
709
867
  getXyoClient,