@xyo-network/react-chain-boundwitness 1.18.0 → 1.18.2

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.
Files changed (37) hide show
  1. package/dist/browser/components/block/BlockBoundWitnessDetails.d.ts +1 -2
  2. package/dist/browser/components/block/BlockBoundWitnessDetails.d.ts.map +1 -1
  3. package/dist/browser/components/block/card/Card.d.ts +1 -1
  4. package/dist/browser/components/block/card/Card.d.ts.map +1 -1
  5. package/dist/browser/components/block/card/CardHeader.d.ts +1 -1
  6. package/dist/browser/components/block/card/CardHeader.d.ts.map +1 -1
  7. package/dist/browser/components/block/card/hooks/useDetails.d.ts +4 -4
  8. package/dist/browser/components/block/card/hooks/useDetails.d.ts.map +1 -1
  9. package/dist/browser/components/transactions/TransactionBoundWitnessDetails.d.ts +1 -1
  10. package/dist/browser/components/transactions/TransactionBoundWitnessDetails.d.ts.map +1 -1
  11. package/dist/browser/components/transactions/card/Card.d.ts +1 -1
  12. package/dist/browser/components/transactions/card/Card.d.ts.map +1 -1
  13. package/dist/browser/components/transactions/card/actions/TransactionActions.d.ts +1 -1
  14. package/dist/browser/components/transactions/card/actions/TransactionActions.d.ts.map +1 -1
  15. package/dist/browser/components/transactions/card/actions/TransactionVerification.d.ts +1 -1
  16. package/dist/browser/components/transactions/card/actions/TransactionVerification.d.ts.map +1 -1
  17. package/dist/browser/components/transactions/card/hooks/useDetails.d.ts +5 -5
  18. package/dist/browser/components/transactions/card/hooks/useDetails.d.ts.map +1 -1
  19. package/dist/browser/components/transactions/hooks/usePayloadTypes.d.ts +4 -5
  20. package/dist/browser/components/transactions/hooks/usePayloadTypes.d.ts.map +1 -1
  21. package/dist/browser/index.mjs +40 -37
  22. package/dist/browser/index.mjs.map +1 -1
  23. package/dist/browser/lib/formatPayloadsForTable.d.ts +1 -1
  24. package/package.json +26 -30
  25. package/src/components/block/BlockBoundWitnessDetails.stories.tsx +2 -2
  26. package/src/components/block/BlockBoundWitnessDetails.tsx +2 -3
  27. package/src/components/block/card/Card.tsx +3 -3
  28. package/src/components/block/card/CardHeader.tsx +1 -1
  29. package/src/components/block/card/actions/BlockBoundWitnessVerification.tsx +2 -2
  30. package/src/components/block/card/hooks/useDetails.ts +23 -21
  31. package/src/components/transactions/TransactionBoundWitnessDetails.stories.tsx +2 -2
  32. package/src/components/transactions/TransactionBoundWitnessDetails.tsx +2 -2
  33. package/src/components/transactions/card/Card.tsx +5 -4
  34. package/src/components/transactions/card/actions/TransactionActions.tsx +1 -1
  35. package/src/components/transactions/card/actions/TransactionVerification.tsx +2 -3
  36. package/src/components/transactions/card/hooks/useDetails.ts +6 -2
  37. package/src/components/transactions/hooks/usePayloadTypes.ts +7 -9
@@ -1,6 +1,5 @@
1
1
  import type { FlexBoxProps } from '@xylabs/react-flexbox';
2
- import type { SignedHydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol';
3
- import type { XyoViewer } from '@xyo-network/xl1-protocol-sdk';
2
+ import type { SignedHydratedBlockWithHashMeta, XyoViewer } from '@xyo-network/xl1-sdk';
4
3
  export interface BoundWitnessDetailsProps extends FlexBoxProps {
5
4
  block?: SignedHydratedBlockWithHashMeta;
6
5
  viewer?: XyoViewer;
@@ -1 +1 @@
1
- {"version":3,"file":"BlockBoundWitnessDetails.d.ts","sourceRoot":"","sources":["../../../../src/components/block/BlockBoundWitnessDetails.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAgBzD,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAA;AAEhF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAW9D,MAAM,WAAW,wBAAyB,SAAQ,YAAY;IAC5D,KAAK,CAAC,EAAE,+BAA+B,CAAA;IACvC,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB;AAED,eAAO,MAAM,wBAAwB,GAAI,8CAEtC,wBAAwB,4CAuE1B,CAAA"}
1
+ {"version":3,"file":"BlockBoundWitnessDetails.d.ts","sourceRoot":"","sources":["../../../../src/components/block/BlockBoundWitnessDetails.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAgBzD,OAAO,KAAK,EAAE,+BAA+B,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAYtF,MAAM,WAAW,wBAAyB,SAAQ,YAAY;IAC5D,KAAK,CAAC,EAAE,+BAA+B,CAAA;IACvC,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB;AAED,eAAO,MAAM,wBAAwB,GAAI,8CAEtC,wBAAwB,4CAuE1B,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { CardProps } from '@mui/material';
2
- import type { HydratedBlockInstance, XyoViewer } from '@xyo-network/xl1-protocol-sdk';
2
+ import type { HydratedBlockInstance, XyoViewer } from '@xyo-network/xl1-sdk';
3
3
  import React from 'react';
4
4
  export interface BlockBoundWitnessCardProps extends CardProps {
5
5
  linkedAddress?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../../src/components/block/card/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAQ9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AACrF,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,MAAM,WAAW,0BAA2B,SAAQ,SAAS;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,OAAO,CAAC,EAAE,qBAAqB,CAAA;CAChC;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CA4DtE,CAAA"}
1
+ {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../../src/components/block/card/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAS9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAC5E,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,MAAM,WAAW,0BAA2B,SAAQ,SAAS;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,OAAO,CAAC,EAAE,qBAAqB,CAAA;CAChC;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CA2DtE,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import type { CardHeaderProps } from '@mui/material';
2
2
  import type { Address } from '@xylabs/sdk-js';
3
- import type { ChainId } from '@xyo-network/xl1-protocol';
3
+ import type { ChainId } from '@xyo-network/xl1-sdk';
4
4
  import React from 'react';
5
5
  export interface BlockBoundWitnessCardHeaderProps extends CardHeaderProps {
6
6
  address?: Address;
@@ -1 +1 @@
1
- {"version":3,"file":"CardHeader.d.ts","sourceRoot":"","sources":["../../../../../src/components/block/card/CardHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAKpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAI7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,MAAM,WAAW,gCAAiC,SAAQ,eAAe;IACvE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,CAqDlF,CAAA"}
1
+ {"version":3,"file":"CardHeader.d.ts","sourceRoot":"","sources":["../../../../../src/components/block/card/CardHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAKpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAI7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,MAAM,WAAW,gCAAiC,SAAQ,eAAe;IACvE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,CAqDlF,CAAA"}
@@ -1,13 +1,13 @@
1
- import type { HydratedBlockInstance, XyoViewer } from '@xyo-network/xl1-protocol-sdk';
2
- export declare const useBlockDetails: (wrapper: HydratedBlockInstance, viewer?: XyoViewer) => {
1
+ import type { HydratedBlockInstance, XyoViewer } from '@xyo-network/xl1-sdk';
2
+ export declare const useBlockDetails: (wrapper: HydratedBlockInstance | undefined, viewer?: XyoViewer) => {
3
3
  stats: {
4
4
  labels: string[];
5
5
  values: string[];
6
- };
6
+ } | undefined;
7
7
  payloads: {
8
8
  labels: string[];
9
9
  values: string[];
10
- };
10
+ } | undefined;
11
11
  stepHashes: {
12
12
  labels: string[];
13
13
  values: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"useDetails.d.ts","sourceRoot":"","sources":["../../../../../../src/components/block/card/hooks/useDetails.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAarF,eAAO,MAAM,eAAe,GAAI,SAAS,qBAAqB,EAAE,SAAS,SAAS;;;;;;;;;;;;;;;CAmDjF,CAAA"}
1
+ {"version":3,"file":"useDetails.d.ts","sourceRoot":"","sources":["../../../../../../src/components/block/card/hooks/useDetails.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAc5E,eAAO,MAAM,eAAe,GAAI,SAAS,qBAAqB,GAAG,SAAS,EAAE,SAAS,SAAS;;;;;;;;;;;;;;;CAoD7F,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { type FlexBoxProps } from '@xylabs/react-flexbox';
2
- import type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol';
2
+ import type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-sdk';
3
3
  import React from 'react';
4
4
  export interface TransactionBoundWitnessDetailsProps extends FlexBoxProps {
5
5
  linkedProducerAddress?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionBoundWitnessDetails.d.ts","sourceRoot":"","sources":["../../../../src/components/transactions/TransactionBoundWitnessDetails.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,uBAAuB,CAAA;AAMlE,OAAO,KAAK,EAAE,wCAAwC,EAAE,MAAM,2BAA2B,CAAA;AAEzF,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,MAAM,WAAW,mCAAoC,SAAQ,YAAY;IACvE,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,WAAW,CAAC,EAAE,wCAAwC,GAAG,IAAI,CAAA;CAC9D;AAED,eAAO,MAAM,8BAA8B,EAAE,KAAK,CAAC,EAAE,CAAC,mCAAmC,CAyExF,CAAA"}
1
+ {"version":3,"file":"TransactionBoundWitnessDetails.d.ts","sourceRoot":"","sources":["../../../../src/components/transactions/TransactionBoundWitnessDetails.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,uBAAuB,CAAA;AAMlE,OAAO,KAAK,EAAE,wCAAwC,EAAE,MAAM,sBAAsB,CAAA;AAEpF,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,MAAM,WAAW,mCAAoC,SAAQ,YAAY;IACvE,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,WAAW,CAAC,EAAE,wCAAwC,GAAG,IAAI,CAAA;CAC9D;AAED,eAAO,MAAM,8BAA8B,EAAE,KAAK,CAAC,EAAE,CAAC,mCAAmC,CAyExF,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { CardProps } from '@mui/material';
2
- import type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk';
2
+ import type { HydratedTransactionInstance } from '@xyo-network/xl1-sdk';
3
3
  import React from 'react';
4
4
  export interface TransactionBoundWitnessCardProps extends CardProps {
5
5
  linkedAddress?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../../src/components/transactions/card/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAQ9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAChF,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,MAAM,WAAW,gCAAiC,SAAQ,SAAS;IACjE,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,OAAO,CAAC,EAAE,2BAA2B,CAAA;CACtC;AAED,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,CA0FlF,CAAA"}
1
+ {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../../src/components/transactions/card/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAU9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AACvE,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,MAAM,WAAW,gCAAiC,SAAQ,SAAS;IACjE,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,OAAO,CAAC,EAAE,2BAA2B,CAAA;CACtC;AAED,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,CAyFlF,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { FlexBoxProps } from '@xylabs/react-flexbox';
2
- import type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol';
2
+ import type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-sdk';
3
3
  import React from 'react';
4
4
  export interface TransactionActionsProps extends FlexBoxProps {
5
5
  transaction?: SignedHydratedTransactionWithStorageMeta | null;
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionActions.d.ts","sourceRoot":"","sources":["../../../../../../src/components/transactions/card/actions/TransactionActions.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAMzD,OAAO,KAAK,EAAE,wCAAwC,EAAE,MAAM,2BAA2B,CAAA;AACzF,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,WAAW,CAAC,EAAE,wCAAwC,GAAG,IAAI,CAAA;IAC7D,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAoBhE,CAAA"}
1
+ {"version":3,"file":"TransactionActions.d.ts","sourceRoot":"","sources":["../../../../../../src/components/transactions/card/actions/TransactionActions.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAMzD,OAAO,KAAK,EAAE,wCAAwC,EAAE,MAAM,sBAAsB,CAAA;AACpF,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,WAAW,CAAC,EAAE,wCAAwC,GAAG,IAAI,CAAA;IAC7D,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAoBhE,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button';
2
- import type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol';
2
+ import type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-sdk';
3
3
  import React from 'react';
4
4
  export interface TxVerification extends QuickTipButtonProps {
5
5
  iconColors?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionVerification.d.ts","sourceRoot":"","sources":["../../../../../../src/components/transactions/card/actions/TransactionVerification.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AAEzE,OAAO,KAAK,EAAsC,wCAAwC,EAAE,MAAM,2BAA2B,CAAA;AAG7H,OAAO,KAAkB,MAAM,OAAO,CAAA;AAMtC,MAAM,WAAW,cAAe,SAAQ,mBAAmB;IACzD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,wCAAwC,GAAG,IAAI,CAAA;CAC9D;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAuB5D,CAAA"}
1
+ {"version":3,"file":"TransactionVerification.d.ts","sourceRoot":"","sources":["../../../../../../src/components/transactions/card/actions/TransactionVerification.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AAEzE,OAAO,KAAK,EAAsC,wCAAwC,EAAE,MAAM,sBAAsB,CAAA;AAExH,OAAO,KAAkB,MAAM,OAAO,CAAA;AAMtC,MAAM,WAAW,cAAe,SAAQ,mBAAmB;IACzD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,wCAAwC,GAAG,IAAI,CAAA;CAC9D;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAuB5D,CAAA"}
@@ -1,16 +1,16 @@
1
- import type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk';
2
- export declare const useTransactionDetails: (wrapper: HydratedTransactionInstance) => {
1
+ import type { HydratedTransactionInstance } from '@xyo-network/xl1-sdk';
2
+ export declare const useTransactionDetails: (wrapper: HydratedTransactionInstance | undefined) => {
3
3
  stats: {
4
4
  labels: string[];
5
5
  values: string[];
6
- };
6
+ } | undefined;
7
7
  fees: {
8
8
  labels: string[];
9
9
  values: string[];
10
- };
10
+ } | undefined;
11
11
  blockDuration: {
12
12
  labels: string[];
13
13
  values: string[];
14
- };
14
+ } | undefined;
15
15
  };
16
16
  //# sourceMappingURL=useDetails.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDetails.d.ts","sourceRoot":"","sources":["../../../../../../src/components/transactions/card/hooks/useDetails.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAOhF,eAAO,MAAM,qBAAqB,GAAI,SAAS,2BAA2B;;;;;;;;;;;;;CAoCzE,CAAA"}
1
+ {"version":3,"file":"useDetails.d.ts","sourceRoot":"","sources":["../../../../../../src/components/transactions/card/hooks/useDetails.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAOvE,eAAO,MAAM,qBAAqB,GAAI,SAAS,2BAA2B,GAAG,SAAS;;;;;;;;;;;;;CAuCrF,CAAA"}
@@ -1,13 +1,12 @@
1
- import type { Hash } from '@xylabs/sdk-js';
2
- import type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk';
1
+ import type { HydratedTransactionInstance } from '@xyo-network/xl1-sdk';
3
2
  export declare const useTransactionPayloadTypes: (wrapper?: HydratedTransactionInstance) => {
4
- elevatedPayloadHashes: Hash[] | undefined;
3
+ elevatedPayloadHashes: import("@xylabs/sdk-js").BrandedHash[] | undefined;
5
4
  elevatedPayloadSchemas: string[] | undefined;
6
5
  elevatedPayloadSetsError: Error | undefined;
7
- publicPayloadHashes: Hash[] | undefined;
6
+ publicPayloadHashes: import("@xylabs/sdk-js").BrandedHash[] | undefined;
8
7
  publicPayloadSchemas: string[] | undefined;
9
8
  publicPayloadsError: Error | undefined;
10
- referencedPayloadHashes: Hash[];
9
+ referencedPayloadHashes: import("@xylabs/sdk-js").BrandedHash[];
11
10
  referencedPayloadSchemas: string[];
12
11
  referencedPayloadsError: Error[];
13
12
  };
@@ -1 +1 @@
1
- {"version":3,"file":"usePayloadTypes.d.ts","sourceRoot":"","sources":["../../../../../src/components/transactions/hooks/usePayloadTypes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAK1C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAKhF,eAAO,MAAM,0BAA0B,GAAI,UAAU,2BAA2B;;;;;;;;;;CA6D/E,CAAA"}
1
+ {"version":3,"file":"usePayloadTypes.d.ts","sourceRoot":"","sources":["../../../../../src/components/transactions/hooks/usePayloadTypes.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAKvE,eAAO,MAAM,0BAA0B,GAAI,UAAU,2BAA2B;;;;;;;;;;CA2D/E,CAAA"}
@@ -12,7 +12,7 @@ import { PayloadBuilder } from "@xyo-network/payload-builder";
12
12
  import { BoundWitnessPayloadsTable, BoundWitnessSignatureTable, HashHeadingPaper, HeadingPaper as HeadingPaper2 } from "@xyo-network/react-boundwitness-plugin";
13
13
  import { useTxsFromBlock } from "@xyo-network/react-chain-blockchain";
14
14
  import { usePayloadHash as usePayloadHash2 } from "@xyo-network/react-shared";
15
- import { isTransactionBoundWitness } from "@xyo-network/xl1-protocol";
15
+ import { isTransactionBoundWitness } from "@xyo-network/xl1-sdk";
16
16
  import React6, { useMemo as useMemo3 } from "react";
17
17
  import { FaSignature } from "react-icons/fa";
18
18
  import { GrTransaction } from "react-icons/gr";
@@ -110,7 +110,7 @@ import { ErrorQuickTipButton } from "@xylabs/react-error";
110
110
  import { usePromise } from "@xylabs/react-promise";
111
111
  import { assertEx, isDefined as isDefined2 } from "@xylabs/sdk-js";
112
112
  import { validateBlock } from "@xyo-network/chain-validation";
113
- import { isBlockBoundWitness } from "@xyo-network/xl1-protocol";
113
+ import { isBlockBoundWitness } from "@xyo-network/xl1-sdk";
114
114
  import React2, { useMemo } from "react";
115
115
  var InvalidIcon = /* @__PURE__ */ __name(({ ref, ...props }) => /* @__PURE__ */ React2.createElement(CancelRoundedIcon, {
116
116
  color: "error",
@@ -171,6 +171,7 @@ var BlockBoundWitnessActions = /* @__PURE__ */ __name(({ boundwitness, validatio
171
171
  // src/components/block/card/Card.tsx
172
172
  import { Card, CardContent, Grid, Skeleton, Stack } from "@mui/material";
173
173
  import { ErrorRender } from "@xylabs/react-error";
174
+ import { isUndefined as isUndefined3 } from "@xylabs/sdk-js";
174
175
  import { DetailsStack, LabelValueStack } from "@xyo-network/react-chain-shared";
175
176
  import React5 from "react";
176
177
  import { GrSteps } from "react-icons/gr";
@@ -234,7 +235,8 @@ var BlockBoundWitnessCardHeader = /* @__PURE__ */ __name(({ linked = true, addre
234
235
 
235
236
  // src/components/block/card/hooks/useDetails.ts
236
237
  import { usePromise as usePromise2 } from "@xylabs/react-promise";
237
- import { StepSizes } from "@xyo-network/xl1-protocol";
238
+ import { isUndefined as isUndefined2 } from "@xylabs/sdk-js";
239
+ import { StepSizes } from "@xyo-network/xl1-sdk";
238
240
  import { useMemo as useMemo2 } from "react";
239
241
  var generateStepHashText = /* @__PURE__ */ __name((blockNumber, stepHashIndex) => {
240
242
  const stepSize = StepSizes[stepHashIndex];
@@ -247,6 +249,7 @@ var generateStepHashText = /* @__PURE__ */ __name((blockNumber, stepHashIndex) =
247
249
  }, "generateStepHashText");
248
250
  var useBlockDetails = /* @__PURE__ */ __name((wrapper, viewer) => {
249
251
  const stats = useMemo2(() => {
252
+ if (isUndefined2(wrapper)) return;
250
253
  const epochDate = new Date(wrapper.boundWitness.$epoch);
251
254
  const stats2 = {
252
255
  Height: formatNumber(wrapper.boundWitness.block),
@@ -260,6 +263,7 @@ var useBlockDetails = /* @__PURE__ */ __name((wrapper, viewer) => {
260
263
  wrapper
261
264
  ]);
262
265
  const payloads = useMemo2(() => {
266
+ if (isUndefined2(wrapper)) return;
263
267
  const payloads2 = {
264
268
  "Transactions": formatNumber(wrapper.transactionCount),
265
269
  "Total Payloads": formatNumber(wrapper.payloadCount)
@@ -269,26 +273,25 @@ var useBlockDetails = /* @__PURE__ */ __name((wrapper, viewer) => {
269
273
  wrapper
270
274
  ]);
271
275
  const [stepHashes, stepHashesError, stepHashesLoading] = usePromise2(async () => {
272
- if (viewer) {
273
- const stepHashes2 = {};
274
- for (const [index, hash] of (wrapper.boundWitness.step_hashes ?? []).entries()) {
275
- try {
276
- const block = await viewer.blockByHash(hash);
277
- if (block === null) {
278
- console.warn(`Block not found for step hash ${hash}`);
279
- stepHashes2[`Step ${index}`] = "N/A";
280
- continue;
281
- }
282
- const blockNumber = block[0].block;
283
- const [label, value] = generateStepHashText(blockNumber, index);
284
- stepHashes2[label] = value;
285
- } catch (e) {
286
- console.error(`Error fetching block for step hash ${hash}:`, e);
276
+ if (isUndefined2(wrapper) || isUndefined2(viewer)) return;
277
+ const stepHashes2 = {};
278
+ for (const [index, hash] of (wrapper.boundWitness.step_hashes ?? []).entries()) {
279
+ try {
280
+ const block = await viewer.blockByHash(hash);
281
+ if (block === null) {
282
+ console.warn(`Block not found for step hash ${hash}`);
287
283
  stepHashes2[`Step ${index}`] = "N/A";
284
+ continue;
288
285
  }
286
+ const blockNumber = block[0].block;
287
+ const [label, value] = generateStepHashText(blockNumber, index);
288
+ stepHashes2[label] = value;
289
+ } catch (e) {
290
+ console.error(`Error fetching block for step hash ${hash}:`, e);
291
+ stepHashes2[`Step ${index}`] = "N/A";
289
292
  }
290
- return formatResults(stepHashes2);
291
293
  }
294
+ return formatResults(stepHashes2);
292
295
  }, [
293
296
  wrapper,
294
297
  viewer
@@ -309,8 +312,8 @@ var useBlockDetails = /* @__PURE__ */ __name((wrapper, viewer) => {
309
312
 
310
313
  // src/components/block/card/Card.tsx
311
314
  var BlockBoundWitnessCard = /* @__PURE__ */ __name(({ linkedAddress = true, viewer, wrapper, ...props }) => {
312
- if (!wrapper) return null;
313
315
  const { stats, payloads, stepHashes, stepHashesError, stepHashesLoading } = useBlockDetails(wrapper, viewer);
316
+ if (isUndefined3(wrapper) || isUndefined3(stats) || isUndefined3(payloads) || isUndefined3(stepHashes)) return null;
314
317
  return /* @__PURE__ */ React5.createElement(Card, props, wrapper?.boundWitness.addresses.map((address) => /* @__PURE__ */ React5.createElement(BlockBoundWitnessCardHeader, {
315
318
  key: address,
316
319
  address,
@@ -499,8 +502,7 @@ import { CancelRounded as CancelRoundedIcon2 } from "@mui/icons-material";
499
502
  import { ErrorQuickTipButton as ErrorQuickTipButton2 } from "@xylabs/react-error";
500
503
  import { usePromise as usePromise4 } from "@xylabs/react-promise";
501
504
  import { assertEx as assertEx2, isDefined as isDefined4 } from "@xylabs/sdk-js";
502
- import { isSignedHydratedTransactionWithStorageMeta } from "@xyo-network/xl1-protocol";
503
- import { validateTransaction } from "@xyo-network/xl1-validation";
505
+ import { isSignedHydratedTransactionWithStorageMeta, validateTransaction } from "@xyo-network/xl1-sdk";
504
506
  import React7, { useMemo as useMemo4 } from "react";
505
507
  var InvalidIcon2 = /* @__PURE__ */ __name(({ ref, ...props }) => /* @__PURE__ */ React7.createElement(CancelRoundedIcon2, {
506
508
  color: "error",
@@ -561,7 +563,7 @@ var TransactionActions = /* @__PURE__ */ __name(({ transaction, validationIconCo
561
563
 
562
564
  // src/components/transactions/card/Card.tsx
563
565
  import { Card as Card2, CardContent as CardContent2, CardHeader as CardHeader2, Grid as Grid2, Icon as Icon2, IconButton as IconButton2, Link as Link2, Tooltip as Tooltip3, Typography as Typography2 } from "@mui/material";
564
- import { ellipsize as ellipsize4, isDefined as isDefined5 } from "@xylabs/sdk-js";
566
+ import { ellipsize as ellipsize4, isDefined as isDefined5, isUndefined as isUndefined5 } from "@xylabs/sdk-js";
565
567
  import { BlockiesAvatarAddress as BlockiesAvatarAddress2 } from "@xyo-network/react-chain-blockies";
566
568
  import { DetailsStack as DetailsStack2, LabelValueStack as LabelValueStack2 } from "@xyo-network/react-chain-shared";
567
569
  import { useEvent as useEvent2 } from "@xyo-network/react-event";
@@ -571,9 +573,11 @@ import { GiReceiveMoney, GiSandsOfTime } from "react-icons/gi";
571
573
  import { IoStatsChartOutline as IoStatsChartOutline2 } from "react-icons/io5";
572
574
 
573
575
  // src/components/transactions/card/hooks/useDetails.ts
576
+ import { isUndefined as isUndefined4 } from "@xylabs/sdk-js";
574
577
  import { useMemo as useMemo5 } from "react";
575
578
  var useTransactionDetails = /* @__PURE__ */ __name((wrapper) => {
576
579
  const stats = useMemo5(() => {
580
+ if (isUndefined4(wrapper)) return;
577
581
  const stats2 = {
578
582
  "Reward": formatNumber(wrapper.reward()),
579
583
  "On Chain Payloads": formatNumber(wrapper.elevatedPayloadCount),
@@ -586,6 +590,7 @@ var useTransactionDetails = /* @__PURE__ */ __name((wrapper) => {
586
590
  wrapper
587
591
  ]);
588
592
  const fees = useMemo5(() => {
593
+ if (isUndefined4(wrapper)) return;
589
594
  const fees2 = {
590
595
  "Base": formatFee(wrapper.fees.base),
591
596
  "Gas": formatFee(wrapper.fees.gasPrice),
@@ -597,6 +602,7 @@ var useTransactionDetails = /* @__PURE__ */ __name((wrapper) => {
597
602
  wrapper
598
603
  ]);
599
604
  const blockDuration = useMemo5(() => {
605
+ if (isUndefined4(wrapper)) return;
600
606
  const blockDuration2 = {
601
607
  "Expiration": wrapper.boundWitness.exp.toLocaleString(navigator.language ?? "en-US"),
602
608
  "Not Before": wrapper.boundWitness.nbf.toLocaleString(navigator.language ?? "en-US")
@@ -614,10 +620,10 @@ var useTransactionDetails = /* @__PURE__ */ __name((wrapper) => {
614
620
 
615
621
  // src/components/transactions/card/Card.tsx
616
622
  var TransactionBoundWitnessCard = /* @__PURE__ */ __name(({ linkedAddress = true, wrapper, ...props }) => {
617
- if (!wrapper) return null;
618
623
  const chainId = wrapper?.boundWitness.chain;
619
624
  const { stats, fees, blockDuration } = useTransactionDetails(wrapper);
620
625
  const [ref, dispatch] = useEvent2();
626
+ if (isUndefined5(wrapper) || isUndefined5(stats) || isUndefined5(fees) || isUndefined5(blockDuration)) return null;
621
627
  return /* @__PURE__ */ React9.createElement(Card2, {
622
628
  ref,
623
629
  ...props
@@ -716,7 +722,7 @@ import { ErrorRender as ErrorRender3 } from "@xylabs/react-error";
716
722
  import { FlexCol as FlexCol3 } from "@xylabs/react-flexbox";
717
723
  import { usePromise as usePromise6 } from "@xylabs/react-promise";
718
724
  import { BoundWitnessSignatureTable as BoundWitnessSignatureTable2, HashHeadingPaper as HashHeadingPaper2, HeadingPaper as HeadingPaper3 } from "@xyo-network/react-boundwitness-plugin";
719
- import { HydratedTransactionWrapper } from "@xyo-network/xl1-wrappers";
725
+ import { HydratedTransactionWrapper } from "@xyo-network/xl1-sdk";
720
726
  import React10 from "react";
721
727
  import { FaSignature as FaSignature2 } from "react-icons/fa";
722
728
  import { VscSymbolNamespace as VscSymbolNamespace3 } from "react-icons/vsc";
@@ -726,7 +732,7 @@ import { usePromise as usePromise5 } from "@xylabs/react-promise";
726
732
  import { isDefined as isDefined6, isHash } from "@xylabs/sdk-js";
727
733
  import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
728
734
  import { isSchema } from "@xyo-network/payload-model";
729
- import { useMemo as useMemo6, useState } from "react";
735
+ import { useMemo as useMemo6 } from "react";
730
736
  var useTransactionPayloadTypes = /* @__PURE__ */ __name((wrapper) => {
731
737
  const [elevatedPayloadSets, elevatedPayloadSetsError] = usePromise5(async () => {
732
738
  if (isDefined6(wrapper)) {
@@ -756,12 +762,12 @@ var useTransactionPayloadTypes = /* @__PURE__ */ __name((wrapper) => {
756
762
  }, [
757
763
  wrapper
758
764
  ]);
759
- const [referencedPayloadsError, setReferencedPayloadsError] = useState([]);
760
- const referencedPayloads = useMemo6(() => {
765
+ const [referencedPayloads, referencedPayloadsError] = useMemo6(() => {
761
766
  const ret = {
762
767
  hashes: [],
763
768
  schemas: []
764
769
  };
770
+ const errors = [];
765
771
  if (isDefined6(wrapper)) {
766
772
  const referencedPayloads2 = wrapper.privateExternalPayloads;
767
773
  for (const [hash, schema] of Object.entries(referencedPayloads2)) {
@@ -775,19 +781,16 @@ var useTransactionPayloadTypes = /* @__PURE__ */ __name((wrapper) => {
775
781
  resolved = true;
776
782
  }
777
783
  if (!resolved) {
778
- setReferencedPayloadsError((prev) => [
779
- ...prev,
780
- new Error(`Unexpected payload or schema type for hash ${hash}: ${schema}`)
781
- ]);
784
+ errors.push(new Error(`Unexpected payload or schema type for hash ${hash}: ${schema}`));
782
785
  }
783
786
  }
784
- return ret;
785
- } else {
786
- return ret;
787
787
  }
788
+ return [
789
+ ret,
790
+ errors
791
+ ];
788
792
  }, [
789
- wrapper,
790
- elevatedPayloadSets
793
+ wrapper
791
794
  ]);
792
795
  const { hashes: elevatedPayloadHashes, schemas: elevatedPayloadSchemas } = elevatedPayloadSets ?? {};
793
796
  const { hashes: publicPayloadHashes, schemas: publicPayloadSchemas } = publicPayloads ?? {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/block/BlockBoundWitnessDetails.tsx","../../src/lib/formatFees.ts","../../src/lib/formatNumber.ts","../../src/lib/formatPayloadsForTable.ts","../../src/lib/formatResults.ts","../../src/components/PayloadTable.tsx","../../src/components/block/card/actions/BlockBoundWitnessActions.tsx","../../src/components/block/card/actions/BlockBoundWitnessVerification.tsx","../../src/components/block/card/Card.tsx","../../src/components/block/card/CardHeader.tsx","../../src/components/block/card/hooks/useDetails.ts","../../src/components/transactions/card/actions/TransactionActions.tsx","../../src/components/transactions/card/actions/TransactionVerification.tsx","../../src/components/transactions/card/Card.tsx","../../src/components/transactions/card/hooks/useDetails.ts","../../src/components/transactions/TransactionBoundWitnessDetails.tsx","../../src/components/transactions/hooks/usePayloadTypes.ts"],"sourcesContent":["import { ErrorRender } from '@xylabs/react-error'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { filterAs } from '@xylabs/sdk-js'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { HydratedBlockWrapper } from '@xyo-network/chain-wrappers'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport {\n BoundWitnessPayloadsTable,\n BoundWitnessSignatureTable,\n HashHeadingPaper,\n HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport { useTxsFromBlock } from '@xyo-network/react-chain-blockchain'\nimport type { EventNoun } from '@xyo-network/react-event'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport type { SignedHydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'\nimport { isTransactionBoundWitness } from '@xyo-network/xl1-protocol'\nimport type { XyoViewer } from '@xyo-network/xl1-protocol-sdk'\nimport React, { useMemo } from 'react'\nimport { FaSignature } from 'react-icons/fa'\nimport { GrTransaction } from 'react-icons/gr'\nimport { VscSymbolMethod, VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { formatPayloadsForTable } from '../../lib/index.ts'\nimport type { TransactionBoundWitnessEvents } from '../../types/index.ts'\nimport { PayloadTableFlexbox } from '../PayloadTable.tsx'\nimport { BlockBoundWitnessActions, BlockBoundWitnessCard } from './card/index.ts'\n\nexport interface BoundWitnessDetailsProps extends FlexBoxProps {\n block?: SignedHydratedBlockWithHashMeta\n viewer?: XyoViewer\n}\n\nexport const BlockBoundWitnessDetails = ({\n block, paper, viewer, children, ...props\n}: BoundWitnessDetailsProps) => {\n const [wrapper, wrapperError] = usePromise(async () => {\n if (block) {\n return await HydratedBlockWrapper.parse(block)\n }\n }, [block])\n\n const boundWitness = block?.[0]\n const payloads = block?.[1]\n\n const hash = usePayloadHash(boundWitness)\n\n const [transactions, txFromBlockError] = useTxsFromBlock(block)\n\n const { hashes: txHashes, schemas: txSchemas } = useMemo(() => formatPayloadsForTable(transactions ?? []), [transactions])\n\n const [nonTxBoundWitnesses, bwsFromBlockError] = usePromise(async () => {\n const bws = filterAs(payloads ?? [], payload =>\n (!isTransactionBoundWitness(payload) && isBoundWitness(payload)) ? payload : undefined)\n return await PayloadBuilder.hashPairs(bws)\n }, [payloads])\n\n const { hashes: nonTxBwHashes, schemas: nonTxBwSchemas } = useMemo(() => formatPayloadsForTable(nonTxBoundWitnesses ?? []), [nonTxBoundWitnesses])\n const hasNonTxBoundWitnesses = (nonTxBoundWitnesses?.length ?? 0) > 0\n\n return (\n <FlexCol alignItems=\"stretch\" rowGap={4} {...props}>\n <ErrorRender error={txFromBlockError ?? bwsFromBlockError} scope=\"BlockBoundWitnessDetails.tsx\" />\n <ErrorRender error={wrapperError} scope=\"BlockBoundWitnessDetails.tsx:wrapperError\" />\n <HashHeadingPaper\n hash={hash}\n paperProps={{ sx: { p: 2 } }}\n AdornmentEnd={<BlockBoundWitnessActions boundwitness={boundWitness} />}\n identiconProps={{ p: 0.75, size: 24 }}\n />\n <BlockBoundWitnessCard elevation={4} viewer={viewer} wrapper={wrapper} />\n {(transactions?.length ?? 0) > 0\n ? (\n <PayloadTableFlexbox<TransactionBoundWitnessEvents>\n IconComponent={<GrTransaction />}\n eventNoun=\"transaction\"\n clickableFields={['hash']}\n hashes={txHashes}\n headingTitle=\"Transactions\"\n schemas={txSchemas}\n sx={{ mb: 1 }}\n />\n )\n : null}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<VscSymbolNamespace />} heading=\"Payloads\" />\n <BoundWitnessPayloadsTable boundwitness={boundWitness} eventNoun=\"payload\" clickableFields={['hash']} />\n </FlexCol>\n {hasNonTxBoundWitnesses\n ? (\n <PayloadTableFlexbox<EventNoun>\n IconComponent={<VscSymbolMethod />}\n eventNoun=\"boundwitness\"\n hashes={nonTxBwHashes}\n headingTitle=\"Bound Witnesses\"\n schemas={nonTxBwSchemas}\n sx={{ mb: 1 }}\n />\n )\n : null}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<FaSignature />} heading=\"Signatures\" />\n <BoundWitnessSignatureTable block={boundWitness} />\n </FlexCol>\n </FlexCol>\n )\n}\n","import { isUndefined } from '@xylabs/sdk-js'\nimport { bigIntToFixedPointString } from '@xyo-network/chain-utils'\n\nexport const formatFee = (fee?: bigint) => {\n if (isUndefined(fee)) return 'N/A'\n const stringValue = bigIntToFixedPointString(fee, 12)\n if (stringValue === '0') return stringValue\n return stringValue\n}\n","export const formatNumber = (num: number | bigint): string => {\n return num.toLocaleString(navigator.language ?? 'en-US')\n}\n","import type { Hash } from '@xylabs/sdk-js'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport const formatPayloadsForTable = (pairs: [Payload, Hash][]) => {\n let hashes: Hash[] = []\n let schemas: string[] = []\n for (const [bw, hash] of pairs ?? []) {\n hashes.push(hash)\n schemas.push(bw?.schema ?? '')\n }\n return { hashes, schemas }\n}\n","export const formatResults = (results: Record<string, string>) => {\n const result = { labels: [] as string[], values: [] as string[] }\n for (const [label, value] of Object.entries(results)) {\n result.labels.push(label)\n result.values.push(value)\n }\n return result\n}\n","import { InfoOutline } from '@mui/icons-material'\nimport { Tooltip } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { Hash } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { ClickableFields } from '@xyo-network/react-boundwitness-plugin'\nimport {\n BoundWitnessPayloadTableBody, BoundWitnessPayloadTableHead, HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport type { EventNoun, ExtendEventNoun } from '@xyo-network/react-event'\nimport { TableEx } from '@xyo-network/react-table'\nimport React from 'react'\nimport { VscSymbolMethod } from 'react-icons/vsc'\n\nexport interface BWPayloadTableFlexboxProps<TNoun extends ExtendEventNoun<string> = EventNoun> extends FlexBoxProps {\n IconComponent?: React.ReactNode\n clickableFields?: ClickableFields[]\n eventNoun?: TNoun\n hashes?: Hash[]\n headingTitle?: string\n schemas?: string[]\n tooltip?: string\n}\n\nexport const PayloadTableFlexbox = <TNoun extends ExtendEventNoun<string> = EventNoun>({\n IconComponent,\n eventNoun,\n hashes,\n schemas,\n headingTitle,\n clickableFields,\n tooltip,\n ...props\n}: BWPayloadTableFlexboxProps<TNoun>) => {\n const resolvedIconComponent = IconComponent ?? <VscSymbolMethod />\n return (\n <FlexCol alignItems=\"stretch\" rowGap={1} {...props}>\n <HeadingPaper\n AdornmentEnd={isDefined(tooltip)\n ? (\n <Tooltip title={tooltip}>\n <InfoOutline fontSize=\"small\" sx={{ py: 2, px: 1 }} />\n </Tooltip>\n )\n : null}\n IconComponent={resolvedIconComponent}\n heading={headingTitle}\n />\n <TableEx>\n <BoundWitnessPayloadTableHead />\n <BoundWitnessPayloadTableBody<TNoun> payloadHashes={hashes} payloadSchemas={schemas} eventNoun={eventNoun} clickableFields={clickableFields} />\n </TableEx>\n </FlexCol>\n )\n}\n","import { DataObject as DataObjectIcon } from '@mui/icons-material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport { ellipsize } from '@xylabs/sdk-js'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BWPreviousHashQuickTipButton } from '@xyo-network/react-boundwitness-plugin'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport React from 'react'\n\nimport { BlockBoundWitnessVerification } from './BlockBoundWitnessVerification.tsx'\n\nexport interface BlockBoundWitnessActionsProps extends FlexBoxProps {\n boundwitness?: BoundWitness\n validationIconColors?: boolean\n}\n\nexport const BlockBoundWitnessActions: React.FC<BlockBoundWitnessActionsProps> = ({\n boundwitness,\n validationIconColors = false,\n ...props\n}) => {\n const hash = usePayloadHash(boundwitness)\n\n return (\n <FlexRow {...props}>\n {boundwitness?.previous_hashes.length === 0 ? null : <BWPreviousHashQuickTipButton boundwitness={boundwitness} />}\n <BlockBoundWitnessVerification iconColors={validationIconColors} block={boundwitness} />\n <QuickTipButton\n Icon={DataObjectIcon}\n title={`JSON for ${ellipsize(hash ?? '', 8)}`}\n dialogProps={{ fullWidth: true, maxWidth: 'md' }}\n >\n <pre style={{ wordBreak: 'break-all' }}>{boundwitness ? JSON.stringify(boundwitness, null, 2) : null}</pre>\n </QuickTipButton>\n </FlexRow>\n )\n}\n","import { CancelRounded as CancelRoundedIcon } from '@mui/icons-material'\nimport type { SvgIconProps } from '@mui/material'\nimport { ErrorQuickTipButton } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { validateBlock } from '@xyo-network/chain-validation'\nimport { isBlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport type { BlockValidationError } from '@xyo-network/xl1-protocol-sdk'\nimport React, { useMemo } from 'react'\n\nconst InvalidIcon = ({ ref, ...props }: SvgIconProps\n & { ref?: React.Ref<SVGSVGElement | null> }) => <CancelRoundedIcon color=\"error\" ref={ref} {...props} />\nInvalidIcon.displayName = 'InvalidIcon'\n\nexport interface BWVerification extends QuickTipButtonProps {\n block?: BoundWitness\n iconColors?: boolean\n}\n\nexport const BlockBoundWitnessVerification: React.FC<BWVerification> = ({ block, ...props }) => {\n const [validationErrors, validateError] = usePromise(async () => {\n if (isDefined(block)) {\n const resolvedBlock = assertEx(isBlockBoundWitness(block) ? block : undefined, () => 'Block must be a BlockBoundWitness')\n return await validateBlock(resolvedBlock)\n }\n }, [block])\n\n const resolvedErrors = useMemo(() => {\n const errors: (Error | BlockValidationError)[] = []\n if (isDefined(validationErrors)) {\n if (Array.isArray(validationErrors)) errors.push(...validationErrors)\n if (validationErrors instanceof Error) errors.push(validationErrors)\n if (isDefined(validateError)) errors.push(validateError)\n return errors\n }\n }, [validateError, validationErrors])\n\n return (\n <ErrorQuickTipButton boundWitnessType=\"Block\" errors={resolvedErrors} {...props} />\n )\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, Grid,\n Skeleton,\n Stack,\n} from '@mui/material'\nimport { ErrorRender } from '@xylabs/react-error'\nimport { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'\nimport type { HydratedBlockInstance, XyoViewer } from '@xyo-network/xl1-protocol-sdk'\nimport React from 'react'\nimport { GrSteps } from 'react-icons/gr'\nimport { IoStatsChartOutline } from 'react-icons/io5'\nimport { VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { BlockBoundWitnessCardHeader } from './CardHeader.tsx'\nimport { useBlockDetails } from './hooks/index.ts'\n\nexport interface BlockBoundWitnessCardProps extends CardProps {\n linkedAddress?: boolean\n viewer?: XyoViewer\n wrapper?: HydratedBlockInstance\n}\n\nexport const BlockBoundWitnessCard: React.FC<BlockBoundWitnessCardProps> = ({\n linkedAddress = true, viewer, wrapper, ...props\n}) => {\n if (!wrapper) return null\n\n const {\n stats, payloads, stepHashes, stepHashesError, stepHashesLoading,\n } = useBlockDetails(wrapper, viewer)\n\n return (\n <Card {...props}>\n {wrapper?.boundWitness.addresses.map(address => (\n <BlockBoundWitnessCardHeader\n key={address}\n address={address}\n linked={linkedAddress}\n chainId={wrapper.boundWitness.chain}\n />\n ))}\n <ErrorRender error={stepHashesError} scope=\"BlockBoundWitnessCard.tsx:stepHashesError\" />\n <CardContent>\n <Grid container spacing={6} sx={{ width: '100%' }}>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={IoStatsChartOutline} heading=\"Stats\" tooltipTitle=\"Block Statistics\">\n <LabelValueStack labels={stats.labels} values={stats.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={VscSymbolNamespace} heading=\"Payloads\" tooltipTitle=\"Payloads within the Block\">\n <LabelValueStack labels={payloads.labels} values={payloads.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GrSteps} heading=\"Step Hashes\" tooltipTitle=\"Step Hashes for the Block\">\n {stepHashesLoading === 'pending'\n ? (\n <Stack gap={0.25}>\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n </Stack>\n )\n : null}\n <LabelValueStack labels={stepHashes?.labels ?? []} values={stepHashes?.values ?? []} />\n </DetailsStack>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n","import type { CardHeaderProps } from '@mui/material'\nimport {\n CardHeader, Icon, IconButton, Link,\n Tooltip, Typography,\n} from '@mui/material'\nimport type { Address } from '@xylabs/sdk-js'\nimport { ellipsize, isDefined } from '@xylabs/sdk-js'\nimport { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'\nimport { useEvent } from '@xyo-network/react-event'\nimport type { ChainId } from '@xyo-network/xl1-protocol'\nimport React from 'react'\nimport { FaCopy } from 'react-icons/fa'\n\nexport interface BlockBoundWitnessCardHeaderProps extends CardHeaderProps {\n address?: Address\n chainId?: ChainId\n linked?: boolean\n}\n\nexport const BlockBoundWitnessCardHeader: React.FC<BlockBoundWitnessCardHeaderProps> = ({\n linked = true, address, chainId,\n}) => {\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n\n return (\n <CardHeader\n ref={ref}\n title={(\n <Typography\n onClick={() => linked && dispatch('address', 'click', address)}\n variant=\"body2\"\n sx={{\n maxWidth: '100%', textOverflow: 'ellipsis', overflow: 'hidden', fontFamily: 'monospace',\n }}\n >\n {linked\n ? (\n <Link sx={{ cursor: 'pointer' }}>{address}</Link>\n )\n : address}\n </Typography>\n )}\n subheader={isDefined(chainId)\n ? (\n <Typography\n variant=\"subtitle2\"\n sx={{\n fontFamily: 'monospace', fontSize: 12, opacity: 0.5, mt: 0.25,\n }}\n title={`chain: ${chainId}`}\n >\n {ellipsize(chainId, 8)}\n <IconButton size=\"small\" onClick={() => void navigator.clipboard.writeText(chainId)}>\n <Icon sx={{ fontSize: '0.7rem' }}>\n <FaCopy />\n </Icon>\n </IconButton>\n </Typography>\n )\n : null}\n avatar={(\n <Tooltip title={`Address - ${address}`}>\n <BlockiesAvatarAddress\n address={address}\n onClick={() => dispatch('address', 'click', address)}\n size={21}\n sx={{ cursor: 'pointer' }}\n />\n </Tooltip>\n )}\n />\n )\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { StepSizes } from '@xyo-network/xl1-protocol'\nimport type { HydratedBlockInstance, XyoViewer } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo } from 'react'\n\nimport { formatNumber, formatResults } from '../../../../lib/index.ts'\n\nconst generateStepHashText = (blockNumber: number, stepHashIndex: number): [string, string] => {\n const stepSize = StepSizes[stepHashIndex]\n const stepStart = blockNumber - stepSize + 1\n const stepStop = blockNumber\n\n return [`Step ${stepHashIndex} (${stepSize})`, `${formatNumber(stepStart)} - ${formatNumber(stepStop)}`]\n}\n\nexport const useBlockDetails = (wrapper: HydratedBlockInstance, viewer?: XyoViewer) => {\n const stats = useMemo(() => {\n const epochDate = new Date(wrapper.boundWitness.$epoch)\n const stats = {\n Height: formatNumber(wrapper.boundWitness.block),\n // protocol should always be defined except for malformed blocks and very early blocks in the chain\n Protocol: wrapper.boundWitness.protocol?.toString() ?? 'N/A',\n Signatures: formatNumber(wrapper.signatureCount),\n $epoch: `${epochDate.toLocaleDateString()} ${epochDate.toLocaleTimeString()}`,\n }\n\n return formatResults(stats)\n }, [wrapper])\n\n const payloads = useMemo(() => {\n const payloads = {\n 'Transactions': formatNumber(wrapper.transactionCount),\n 'Total Payloads': formatNumber(wrapper.payloadCount),\n }\n\n return formatResults(payloads)\n }, [wrapper])\n\n const [stepHashes, stepHashesError, stepHashesLoading] = usePromise(async () => {\n if (viewer) {\n const stepHashes: Record<string, string> = {}\n for (const [index, hash] of (wrapper.boundWitness.step_hashes ?? []).entries()) {\n try {\n const block = await viewer.blockByHash(hash)\n if (block === null) {\n console.warn(`Block not found for step hash ${hash}`)\n stepHashes[`Step ${index}`] = 'N/A'\n continue\n }\n\n const blockNumber = block[0].block\n const [label, value] = generateStepHashText(blockNumber, index)\n stepHashes[label] = value\n } catch (e) {\n console.error(`Error fetching block for step hash ${hash}:`, e)\n stepHashes[`Step ${index}`] = 'N/A'\n }\n }\n\n return formatResults(stepHashes)\n }\n }, [wrapper, viewer], { defaultValue: { labels: [], values: [] } })\n\n return {\n stats, payloads, stepHashes, stepHashesError, stepHashesLoading,\n }\n}\n","import { DataObject as DataObjectIcon } from '@mui/icons-material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport { ellipsize } from '@xylabs/sdk-js'\nimport { BWPreviousHashQuickTipButton } from '@xyo-network/react-boundwitness-plugin'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport React from 'react'\n\nimport { TransactionVerification } from './TransactionVerification.tsx'\n\nexport interface TransactionActionsProps extends FlexBoxProps {\n transaction?: SignedHydratedTransactionWithStorageMeta | null\n validationIconColors?: boolean\n}\n\nexport const TransactionActions: React.FC<TransactionActionsProps> = ({\n transaction,\n validationIconColors = false,\n ...props\n}) => {\n const txBw = transaction?.[0]\n const hash = usePayloadHash(txBw)\n return (\n <FlexRow {...props}>\n {txBw?.previous_hashes.length === 0 ? null : <BWPreviousHashQuickTipButton boundwitness={txBw} />}\n <TransactionVerification iconColors={validationIconColors} transaction={transaction} />\n <QuickTipButton\n Icon={DataObjectIcon}\n title={`JSON for ${ellipsize(hash ?? '', 8)}`}\n dialogProps={{ fullWidth: true, maxWidth: 'md' }}\n >\n <pre style={{ wordBreak: 'break-all' }}>{transaction ? JSON.stringify(transaction, null, 2) : null}</pre>\n </QuickTipButton>\n </FlexRow>\n )\n}\n","import { CancelRounded as CancelRoundedIcon } from '@mui/icons-material'\nimport type { SvgIconProps } from '@mui/material'\nimport { ErrorQuickTipButton } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type { HydratedTransactionValidationError, SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { isSignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { validateTransaction } from '@xyo-network/xl1-validation'\nimport React, { useMemo } from 'react'\n\nconst InvalidIcon = ({ ref, ...props }: SvgIconProps\n & { ref?: React.Ref<SVGSVGElement | null> }) => <CancelRoundedIcon color=\"error\" ref={ref} {...props} />\nInvalidIcon.displayName = 'InvalidIcon'\n\nexport interface TxVerification extends QuickTipButtonProps {\n iconColors?: boolean\n transaction?: SignedHydratedTransactionWithStorageMeta | null\n}\n\nexport const TransactionVerification: React.FC<TxVerification> = ({ transaction, ...props }) => {\n const [validationErrors, validateError] = usePromise(async () => {\n if (isDefined(transaction)) {\n const resolvedTransaction = assertEx(isSignedHydratedTransactionWithStorageMeta(transaction)\n ? transaction\n : undefined, () => 'Transaction must be a SignedHydratedTransactionWithStorageMeta')\n return await validateTransaction(resolvedTransaction)\n }\n }, [transaction])\n\n const resolvedErrors = useMemo(() => {\n const errors: (Error | HydratedTransactionValidationError)[] = []\n if (isDefined(validationErrors)) {\n if (Array.isArray(validationErrors)) errors.push(...validationErrors)\n if (validationErrors instanceof Error) errors.push(validationErrors)\n if (isDefined(validateError)) errors.push(validateError)\n return errors\n }\n }, [validateError, validationErrors])\n\n return (\n <ErrorQuickTipButton boundWitnessType=\"Transaction\" errors={resolvedErrors} {...props} />\n )\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, CardHeader, Grid, Icon, IconButton, Link, Tooltip, Typography,\n} from '@mui/material'\nimport { ellipsize, isDefined } from '@xylabs/sdk-js'\nimport { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'\nimport { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'\nimport { useEvent } from '@xyo-network/react-event'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'\nimport React from 'react'\nimport { FaCopy } from 'react-icons/fa'\nimport { GiReceiveMoney, GiSandsOfTime } from 'react-icons/gi'\nimport { IoStatsChartOutline } from 'react-icons/io5'\n\nimport { useTransactionDetails } from './hooks/index.ts'\n\nexport interface TransactionBoundWitnessCardProps extends CardProps {\n linkedAddress?: boolean\n wrapper?: HydratedTransactionInstance\n}\n\nexport const TransactionBoundWitnessCard: React.FC<TransactionBoundWitnessCardProps> = ({\n linkedAddress = true, wrapper, ...props\n}) => {\n if (!wrapper) return null\n\n const chainId = wrapper?.boundWitness.chain\n\n const {\n stats, fees, blockDuration,\n } = useTransactionDetails(wrapper)\n\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n\n return (\n <Card ref={ref} {...props}>\n <CardHeader\n title={(\n <Typography\n onClick={() => linkedAddress && dispatch('address', 'click', wrapper.boundWitness.from)}\n variant=\"body2\"\n sx={{\n maxWidth: '100%', textOverflow: 'ellipsis', overflow: 'hidden', fontFamily: 'monospace',\n }}\n >\n {linkedAddress\n ? (\n <Link sx={{ cursor: 'pointer' }}>{wrapper?.boundWitness.from}</Link>\n )\n : wrapper?.boundWitness.from}\n </Typography>\n )}\n subheader={isDefined(chainId)\n ? (\n <Typography\n variant=\"subtitle2\"\n sx={{\n fontFamily: 'monospace', fontSize: 12, opacity: 0.5, mt: 0.25,\n }}\n title={`chain: ${chainId}`}\n >\n {ellipsize(chainId, 8)}\n <IconButton size=\"small\" onClick={() => void navigator.clipboard.writeText(chainId)}>\n <Icon sx={{ fontSize: '0.7rem' }}>\n <FaCopy />\n </Icon>\n </IconButton>\n </Typography>\n )\n : null}\n avatar={(\n <Tooltip title={`From Address - ${wrapper?.boundWitness.from}`}>\n <BlockiesAvatarAddress\n address={wrapper?.boundWitness.from}\n onClick={() => dispatch('address', 'click', wrapper.boundWitness.from)}\n size={21}\n sx={{ cursor: 'pointer' }}\n />\n </Tooltip>\n )}\n />\n <CardContent>\n <Grid container spacing={6} sx={{ width: '100%' }}>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={IoStatsChartOutline} heading=\"Stats\" tooltipTitle=\"Transaction Statistics\">\n <LabelValueStack labels={stats.labels} values={stats.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GiReceiveMoney} heading=\"Fees\" tooltipTitle=\"Fees offered to the producer\">\n <LabelValueStack labels={fees.labels} values={fees.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GiSandsOfTime} heading=\"Block Duration\" tooltipTitle=\"Block window for the transaction to be valid\">\n <LabelValueStack labels={blockDuration.labels} values={blockDuration.values} />\n </DetailsStack>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n","import type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo } from 'react'\n\nimport {\n formatFee, formatNumber, formatResults,\n} from '../../../../lib/index.ts'\n\nexport const useTransactionDetails = (wrapper: HydratedTransactionInstance) => {\n const stats = useMemo(() => {\n const stats = {\n 'Reward': formatNumber(wrapper.reward()),\n 'On Chain Payloads': formatNumber(wrapper.elevatedPayloadCount),\n 'Public Payloads': formatNumber(Object.values(wrapper.publicExternalPayloads).length),\n 'Referenced Payloads': formatNumber(Object.entries(wrapper.privateExternalPayloads).length),\n 'Signatures': formatNumber(wrapper.signatureCount),\n }\n\n return formatResults(stats)\n }, [wrapper])\n\n const fees = useMemo(() => {\n const fees = {\n 'Base': formatFee(wrapper.fees.base),\n 'Gas': formatFee(wrapper.fees.gasPrice),\n 'Priority': formatFee(wrapper.fees.priority),\n 'Gas Limit': formatFee(wrapper.fees.gasLimit),\n }\n\n return formatResults(fees)\n }, [wrapper])\n\n const blockDuration = useMemo(() => {\n const blockDuration = {\n 'Expiration': wrapper.boundWitness.exp.toLocaleString(navigator.language ?? 'en-US'),\n 'Not Before': wrapper.boundWitness.nbf.toLocaleString(navigator.language ?? 'en-US'),\n }\n\n return formatResults(blockDuration)\n }, [wrapper])\n\n return {\n stats, fees, blockDuration,\n }\n}\n","import { ErrorRender } from '@xylabs/react-error'\nimport { type FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { ClickableFields } from '@xyo-network/react-boundwitness-plugin'\nimport {\n BoundWitnessSignatureTable, HashHeadingPaper, HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { HydratedTransactionWrapper } from '@xyo-network/xl1-wrappers'\nimport React from 'react'\nimport { FaSignature } from 'react-icons/fa'\nimport { VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { PayloadTableFlexbox } from '../PayloadTable.tsx'\nimport { TransactionActions, TransactionBoundWitnessCard } from './card/index.ts'\nimport { useTransactionPayloadTypes } from './hooks/index.ts'\n\nconst noClickableFields: ClickableFields[] = []\n\nexport interface TransactionBoundWitnessDetailsProps extends FlexBoxProps {\n linkedProducerAddress?: boolean\n transaction?: SignedHydratedTransactionWithStorageMeta | null\n}\n\nexport const TransactionBoundWitnessDetails: React.FC<TransactionBoundWitnessDetailsProps> = ({\n linkedProducerAddress, transaction, ...props\n}) => {\n const [wrapper, wrapperError] = usePromise(async () => {\n if (transaction) {\n return await HydratedTransactionWrapper.parse(transaction)\n }\n }, [transaction])\n\n const {\n elevatedPayloadHashes, elevatedPayloadSchemas, elevatedPayloadSetsError,\n publicPayloadHashes, publicPayloadSchemas, publicPayloadsError,\n referencedPayloadHashes, referencedPayloadSchemas, referencedPayloadsError,\n } = useTransactionPayloadTypes(wrapper)\n\n return (\n <FlexCol alignItems=\"stretch\" rowGap={2} {...props}>\n <HashHeadingPaper\n hash={wrapper?.boundWitness?._hash}\n paperProps={{ sx: { p: 2 } }}\n AdornmentEnd={<TransactionActions transaction={transaction} />}\n identiconProps={{ p: 0.75, size: 24 }}\n />\n <ErrorRender error={wrapperError} scope=\"wrapperError:TransactionBoundWitnessDetails.tsx\" />\n <ErrorRender error={elevatedPayloadSetsError} scope=\"elevatedPayloadSetsError:TransactionBoundWitnessDetails.tsx\" />\n <ErrorRender error={publicPayloadsError} scope=\"publicPayloadsError:TransactionBoundWitnessDetails.tsx\" />\n {referencedPayloadsError.map(error =>\n <ErrorRender key={error.message} error={error} scope=\"referencedPayloadsError:TransactionBoundWitnessDetails.tsx\" />)}\n <TransactionBoundWitnessCard elevation={4} linkedAddress={linkedProducerAddress} wrapper={wrapper} />\n <PayloadTableFlexbox\n eventNoun=\"payload\"\n clickableFields={['hash']}\n tooltip=\"Payloads included in the transaction that are elevated and validated.\"\n IconComponent={<VscSymbolNamespace />}\n hashes={elevatedPayloadHashes}\n headingTitle=\"On Chain Payloads\"\n schemas={elevatedPayloadSchemas}\n sx={{ mb: 1 }}\n />\n {(publicPayloadHashes?.length ?? 0) > 0\n ? (\n <PayloadTableFlexbox\n eventNoun=\"payload\"\n clickableFields={['hash']}\n tooltip=\"Public payloads included in the transaction.\"\n IconComponent={<VscSymbolNamespace />}\n hashes={publicPayloadHashes}\n headingTitle=\"Public Payloads\"\n schemas={publicPayloadSchemas}\n sx={{ mb: 1 }}\n />\n )\n : null}\n {(referencedPayloadHashes?.length ?? 0) > 0\n ? (\n <PayloadTableFlexbox\n // TODO - bring back once the hashes can be searched via datalake\n tooltip=\"Payload hashes referenced by the transaction but not included.\"\n IconComponent={<VscSymbolNamespace />}\n clickableFields={noClickableFields}\n hashes={referencedPayloadHashes}\n headingTitle=\"Referenced Payloads\"\n schemas={referencedPayloadSchemas}\n sx={{ mb: 1 }}\n />\n )\n : null}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<FaSignature />} heading=\"Signatures\" />\n <BoundWitnessSignatureTable block={wrapper?.boundWitness} />\n </FlexCol>\n </FlexCol>\n )\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { Hash } from '@xylabs/sdk-js'\nimport { isDefined, isHash } from '@xylabs/sdk-js'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Schema } from '@xyo-network/payload-model'\nimport { isSchema } from '@xyo-network/payload-model'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo, useState } from 'react'\n\nimport { formatPayloadsForTable } from '../../../lib/index.ts'\n\nexport const useTransactionPayloadTypes = (wrapper?: HydratedTransactionInstance) => {\n const [elevatedPayloadSets, elevatedPayloadSetsError] = usePromise(async () => {\n if (isDefined(wrapper)) {\n const elevatedPayloads = wrapper.elevatedPayloads\n const pairs = await PayloadBuilder.hashPairs(elevatedPayloads)\n return formatPayloadsForTable(pairs)\n } else {\n return { hashes: [], schemas: [] }\n }\n }, [wrapper])\n\n const [publicPayloads, publicPayloadsError] = usePromise(async () => {\n if (isDefined(wrapper)) {\n const publicPayloads = wrapper.publicExternalPayloads\n const pairs = await PayloadBuilder.hashPairs(publicPayloads)\n return formatPayloadsForTable(pairs)\n } else {\n return { hashes: [], schemas: [] }\n }\n }, [wrapper])\n\n const [referencedPayloadsError, setReferencedPayloadsError] = useState<Error[]>([])\n const referencedPayloads = useMemo(() => {\n const ret = { hashes: [] as Hash[], schemas: [] as Schema[] }\n if (isDefined(wrapper)) {\n const referencedPayloads = wrapper.privateExternalPayloads\n for (const [hash, schema] of Object.entries(referencedPayloads)) {\n let resolved = false\n if (isHash(hash)) {\n ret.hashes.push(hash)\n resolved = true\n }\n if (isSchema(schema)) {\n ret.schemas.push(schema)\n resolved = true\n }\n if (!resolved) {\n setReferencedPayloadsError(prev => [...prev, new Error(`Unexpected payload or schema type for hash ${hash}: ${schema}`)])\n }\n }\n return ret\n } else {\n return ret\n }\n }, [wrapper, elevatedPayloadSets])\n\n const { hashes: elevatedPayloadHashes, schemas: elevatedPayloadSchemas } = elevatedPayloadSets ?? {}\n const { hashes: publicPayloadHashes, schemas: publicPayloadSchemas } = publicPayloads ?? {}\n const { hashes: referencedPayloadHashes, schemas: referencedPayloadSchemas } = referencedPayloads ?? {}\n\n return {\n elevatedPayloadHashes,\n elevatedPayloadSchemas,\n elevatedPayloadSetsError,\n publicPayloadHashes,\n publicPayloadSchemas,\n publicPayloadsError,\n referencedPayloadHashes,\n referencedPayloadSchemas,\n referencedPayloadsError,\n }\n}\n"],"mappings":"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","names":["ErrorRender","FlexCol","usePromise","filterAs","isBoundWitness","HydratedBlockWrapper","PayloadBuilder","BoundWitnessPayloadsTable","BoundWitnessSignatureTable","HashHeadingPaper","HeadingPaper","useTxsFromBlock","usePayloadHash","isTransactionBoundWitness","React","useMemo","FaSignature","GrTransaction","VscSymbolMethod","VscSymbolNamespace","isUndefined","bigIntToFixedPointString","formatFee","fee","isUndefined","stringValue","bigIntToFixedPointString","formatNumber","num","toLocaleString","navigator","language","formatPayloadsForTable","pairs","hashes","schemas","bw","hash","push","schema","formatResults","results","result","labels","values","label","value","Object","entries","push","InfoOutline","Tooltip","FlexCol","isDefined","BoundWitnessPayloadTableBody","BoundWitnessPayloadTableHead","HeadingPaper","TableEx","React","VscSymbolMethod","PayloadTableFlexbox","IconComponent","eventNoun","hashes","schemas","headingTitle","clickableFields","tooltip","props","resolvedIconComponent","VscSymbolMethod","FlexCol","alignItems","rowGap","HeadingPaper","AdornmentEnd","isDefined","Tooltip","title","InfoOutline","fontSize","sx","py","px","heading","TableEx","BoundWitnessPayloadTableHead","BoundWitnessPayloadTableBody","payloadHashes","payloadSchemas","DataObject","DataObjectIcon","FlexRow","QuickTipButton","ellipsize","BWPreviousHashQuickTipButton","usePayloadHash","React","CancelRounded","CancelRoundedIcon","ErrorQuickTipButton","usePromise","assertEx","isDefined","validateBlock","isBlockBoundWitness","React","useMemo","InvalidIcon","ref","props","React","CancelRoundedIcon","color","displayName","BlockBoundWitnessVerification","block","validationErrors","validateError","usePromise","isDefined","resolvedBlock","assertEx","isBlockBoundWitness","undefined","validateBlock","resolvedErrors","useMemo","errors","Array","isArray","push","Error","ErrorQuickTipButton","boundWitnessType","BlockBoundWitnessActions","boundwitness","validationIconColors","props","hash","usePayloadHash","React","FlexRow","previous_hashes","length","BWPreviousHashQuickTipButton","BlockBoundWitnessVerification","iconColors","block","QuickTipButton","Icon","DataObjectIcon","title","ellipsize","dialogProps","fullWidth","maxWidth","pre","style","wordBreak","JSON","stringify","Card","CardContent","Grid","Skeleton","Stack","ErrorRender","DetailsStack","LabelValueStack","React","GrSteps","IoStatsChartOutline","VscSymbolNamespace","CardHeader","Icon","IconButton","Link","Tooltip","Typography","ellipsize","isDefined","BlockiesAvatarAddress","useEvent","React","FaCopy","BlockBoundWitnessCardHeader","linked","address","chainId","ref","dispatch","useEvent","React","CardHeader","title","Typography","onClick","variant","sx","maxWidth","textOverflow","overflow","fontFamily","Link","cursor","subheader","isDefined","fontSize","opacity","mt","ellipsize","IconButton","size","navigator","clipboard","writeText","Icon","FaCopy","avatar","Tooltip","BlockiesAvatarAddress","usePromise","StepSizes","useMemo","generateStepHashText","blockNumber","stepHashIndex","stepSize","StepSizes","stepStart","stepStop","formatNumber","useBlockDetails","wrapper","viewer","stats","useMemo","epochDate","Date","boundWitness","$epoch","Height","block","Protocol","protocol","toString","Signatures","signatureCount","toLocaleDateString","toLocaleTimeString","formatResults","payloads","transactionCount","payloadCount","stepHashes","stepHashesError","stepHashesLoading","usePromise","index","hash","step_hashes","entries","blockByHash","console","warn","label","value","e","error","defaultValue","labels","values","BlockBoundWitnessCard","linkedAddress","viewer","wrapper","props","stats","payloads","stepHashes","stepHashesError","stepHashesLoading","useBlockDetails","React","Card","boundWitness","addresses","map","address","BlockBoundWitnessCardHeader","key","linked","chainId","chain","ErrorRender","error","scope","CardContent","Grid","container","spacing","sx","width","size","xs","sm","md","DetailsStack","IconComponent","IoStatsChartOutline","heading","tooltipTitle","LabelValueStack","labels","values","VscSymbolNamespace","GrSteps","Stack","gap","Skeleton","variant","height","BlockBoundWitnessDetails","block","paper","viewer","children","props","wrapper","wrapperError","usePromise","HydratedBlockWrapper","parse","boundWitness","payloads","hash","usePayloadHash","transactions","txFromBlockError","useTxsFromBlock","hashes","txHashes","schemas","txSchemas","useMemo","formatPayloadsForTable","nonTxBoundWitnesses","bwsFromBlockError","bws","filterAs","payload","isTransactionBoundWitness","isBoundWitness","undefined","PayloadBuilder","hashPairs","nonTxBwHashes","nonTxBwSchemas","hasNonTxBoundWitnesses","length","React","FlexCol","alignItems","rowGap","ErrorRender","error","scope","HashHeadingPaper","paperProps","sx","p","AdornmentEnd","BlockBoundWitnessActions","boundwitness","identiconProps","size","BlockBoundWitnessCard","elevation","PayloadTableFlexbox","IconComponent","GrTransaction","eventNoun","clickableFields","headingTitle","mb","HeadingPaper","VscSymbolNamespace","heading","BoundWitnessPayloadsTable","VscSymbolMethod","FaSignature","BoundWitnessSignatureTable","DataObject","DataObjectIcon","FlexRow","QuickTipButton","ellipsize","BWPreviousHashQuickTipButton","usePayloadHash","React","CancelRounded","CancelRoundedIcon","ErrorQuickTipButton","usePromise","assertEx","isDefined","isSignedHydratedTransactionWithStorageMeta","validateTransaction","React","useMemo","InvalidIcon","ref","props","React","CancelRoundedIcon","color","displayName","TransactionVerification","transaction","validationErrors","validateError","usePromise","isDefined","resolvedTransaction","assertEx","isSignedHydratedTransactionWithStorageMeta","undefined","validateTransaction","resolvedErrors","useMemo","errors","Array","isArray","push","Error","ErrorQuickTipButton","boundWitnessType","TransactionActions","transaction","validationIconColors","props","txBw","hash","usePayloadHash","React","FlexRow","previous_hashes","length","BWPreviousHashQuickTipButton","boundwitness","TransactionVerification","iconColors","QuickTipButton","Icon","DataObjectIcon","title","ellipsize","dialogProps","fullWidth","maxWidth","pre","style","wordBreak","JSON","stringify","Card","CardContent","CardHeader","Grid","Icon","IconButton","Link","Tooltip","Typography","ellipsize","isDefined","BlockiesAvatarAddress","DetailsStack","LabelValueStack","useEvent","React","FaCopy","GiReceiveMoney","GiSandsOfTime","IoStatsChartOutline","useMemo","useTransactionDetails","wrapper","stats","useMemo","formatNumber","reward","elevatedPayloadCount","Object","values","publicExternalPayloads","length","entries","privateExternalPayloads","signatureCount","formatResults","fees","formatFee","base","gasPrice","priority","gasLimit","blockDuration","boundWitness","exp","toLocaleString","navigator","language","nbf","TransactionBoundWitnessCard","linkedAddress","wrapper","props","chainId","boundWitness","chain","stats","fees","blockDuration","useTransactionDetails","ref","dispatch","useEvent","React","Card","CardHeader","title","Typography","onClick","from","variant","sx","maxWidth","textOverflow","overflow","fontFamily","Link","cursor","subheader","isDefined","fontSize","opacity","mt","ellipsize","IconButton","size","navigator","clipboard","writeText","Icon","FaCopy","avatar","Tooltip","BlockiesAvatarAddress","address","CardContent","Grid","container","spacing","width","xs","sm","md","DetailsStack","IconComponent","IoStatsChartOutline","heading","tooltipTitle","LabelValueStack","labels","values","GiReceiveMoney","GiSandsOfTime","ErrorRender","FlexCol","usePromise","BoundWitnessSignatureTable","HashHeadingPaper","HeadingPaper","HydratedTransactionWrapper","React","FaSignature","VscSymbolNamespace","usePromise","isDefined","isHash","PayloadBuilder","isSchema","useMemo","useState","useTransactionPayloadTypes","wrapper","elevatedPayloadSets","elevatedPayloadSetsError","usePromise","isDefined","elevatedPayloads","pairs","PayloadBuilder","hashPairs","formatPayloadsForTable","hashes","schemas","publicPayloads","publicPayloadsError","publicExternalPayloads","referencedPayloadsError","setReferencedPayloadsError","useState","referencedPayloads","useMemo","ret","privateExternalPayloads","hash","schema","Object","entries","resolved","isHash","push","isSchema","prev","Error","elevatedPayloadHashes","elevatedPayloadSchemas","publicPayloadHashes","publicPayloadSchemas","referencedPayloadHashes","referencedPayloadSchemas","noClickableFields","TransactionBoundWitnessDetails","linkedProducerAddress","transaction","props","wrapper","wrapperError","usePromise","HydratedTransactionWrapper","parse","elevatedPayloadHashes","elevatedPayloadSchemas","elevatedPayloadSetsError","publicPayloadHashes","publicPayloadSchemas","publicPayloadsError","referencedPayloadHashes","referencedPayloadSchemas","referencedPayloadsError","useTransactionPayloadTypes","React","FlexCol","alignItems","rowGap","HashHeadingPaper","hash","boundWitness","_hash","paperProps","sx","p","AdornmentEnd","TransactionActions","identiconProps","size","ErrorRender","error","scope","map","key","message","TransactionBoundWitnessCard","elevation","linkedAddress","PayloadTableFlexbox","eventNoun","clickableFields","tooltip","IconComponent","VscSymbolNamespace","hashes","headingTitle","schemas","mb","length","HeadingPaper","FaSignature","heading","BoundWitnessSignatureTable","block"]}
1
+ {"version":3,"sources":["../../src/components/block/BlockBoundWitnessDetails.tsx","../../src/lib/formatFees.ts","../../src/lib/formatNumber.ts","../../src/lib/formatPayloadsForTable.ts","../../src/lib/formatResults.ts","../../src/components/PayloadTable.tsx","../../src/components/block/card/actions/BlockBoundWitnessActions.tsx","../../src/components/block/card/actions/BlockBoundWitnessVerification.tsx","../../src/components/block/card/Card.tsx","../../src/components/block/card/CardHeader.tsx","../../src/components/block/card/hooks/useDetails.ts","../../src/components/transactions/card/actions/TransactionActions.tsx","../../src/components/transactions/card/actions/TransactionVerification.tsx","../../src/components/transactions/card/Card.tsx","../../src/components/transactions/card/hooks/useDetails.ts","../../src/components/transactions/TransactionBoundWitnessDetails.tsx","../../src/components/transactions/hooks/usePayloadTypes.ts"],"sourcesContent":["import { ErrorRender } from '@xylabs/react-error'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { filterAs } from '@xylabs/sdk-js'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { HydratedBlockWrapper } from '@xyo-network/chain-wrappers'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport {\n BoundWitnessPayloadsTable,\n BoundWitnessSignatureTable,\n HashHeadingPaper,\n HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport { useTxsFromBlock } from '@xyo-network/react-chain-blockchain'\nimport type { EventNoun } from '@xyo-network/react-event'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport type { SignedHydratedBlockWithHashMeta, XyoViewer } from '@xyo-network/xl1-sdk'\nimport { isTransactionBoundWitness } from '@xyo-network/xl1-sdk'\nimport React, { useMemo } from 'react'\nimport { FaSignature } from 'react-icons/fa'\nimport { GrTransaction } from 'react-icons/gr'\nimport { VscSymbolMethod, VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { formatPayloadsForTable } from '../../lib/index.ts'\nimport type { TransactionBoundWitnessEvents } from '../../types/index.ts'\nimport { PayloadTableFlexbox } from '../PayloadTable.tsx'\nimport { BlockBoundWitnessActions, BlockBoundWitnessCard } from './card/index.ts'\n\nexport interface BoundWitnessDetailsProps extends FlexBoxProps {\n block?: SignedHydratedBlockWithHashMeta\n viewer?: XyoViewer\n}\n\nexport const BlockBoundWitnessDetails = ({\n block, paper, viewer, children, ...props\n}: BoundWitnessDetailsProps) => {\n const [wrapper, wrapperError] = usePromise(async () => {\n if (block) {\n return await HydratedBlockWrapper.parse(block)\n }\n }, [block])\n\n const boundWitness = block?.[0]\n const payloads = block?.[1]\n\n const hash = usePayloadHash(boundWitness)\n\n const [transactions, txFromBlockError] = useTxsFromBlock(block)\n\n const { hashes: txHashes, schemas: txSchemas } = useMemo(() => formatPayloadsForTable(transactions ?? []), [transactions])\n\n const [nonTxBoundWitnesses, bwsFromBlockError] = usePromise(async () => {\n const bws = filterAs(payloads ?? [], payload =>\n (!isTransactionBoundWitness(payload) && isBoundWitness(payload)) ? payload : undefined)\n return await PayloadBuilder.hashPairs(bws)\n }, [payloads])\n\n const { hashes: nonTxBwHashes, schemas: nonTxBwSchemas } = useMemo(() => formatPayloadsForTable(nonTxBoundWitnesses ?? []), [nonTxBoundWitnesses])\n const hasNonTxBoundWitnesses = (nonTxBoundWitnesses?.length ?? 0) > 0\n\n return (\n <FlexCol alignItems=\"stretch\" rowGap={4} {...props}>\n <ErrorRender error={txFromBlockError ?? bwsFromBlockError} scope=\"BlockBoundWitnessDetails.tsx\" />\n <ErrorRender error={wrapperError} scope=\"BlockBoundWitnessDetails.tsx:wrapperError\" />\n <HashHeadingPaper\n hash={hash}\n paperProps={{ sx: { p: 2 } }}\n AdornmentEnd={<BlockBoundWitnessActions boundwitness={boundWitness} />}\n identiconProps={{ p: 0.75, size: 24 }}\n />\n <BlockBoundWitnessCard elevation={4} viewer={viewer} wrapper={wrapper} />\n {(transactions?.length ?? 0) > 0\n ? (\n <PayloadTableFlexbox<TransactionBoundWitnessEvents>\n IconComponent={<GrTransaction />}\n eventNoun=\"transaction\"\n clickableFields={['hash']}\n hashes={txHashes}\n headingTitle=\"Transactions\"\n schemas={txSchemas}\n sx={{ mb: 1 }}\n />\n )\n : null}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<VscSymbolNamespace />} heading=\"Payloads\" />\n <BoundWitnessPayloadsTable boundwitness={boundWitness} eventNoun=\"payload\" clickableFields={['hash']} />\n </FlexCol>\n {hasNonTxBoundWitnesses\n ? (\n <PayloadTableFlexbox<EventNoun>\n IconComponent={<VscSymbolMethod />}\n eventNoun=\"boundwitness\"\n hashes={nonTxBwHashes}\n headingTitle=\"Bound Witnesses\"\n schemas={nonTxBwSchemas}\n sx={{ mb: 1 }}\n />\n )\n : null}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<FaSignature />} heading=\"Signatures\" />\n <BoundWitnessSignatureTable block={boundWitness} />\n </FlexCol>\n </FlexCol>\n )\n}\n","import { isUndefined } from '@xylabs/sdk-js'\nimport { bigIntToFixedPointString } from '@xyo-network/chain-utils'\n\nexport const formatFee = (fee?: bigint) => {\n if (isUndefined(fee)) return 'N/A'\n const stringValue = bigIntToFixedPointString(fee, 12)\n if (stringValue === '0') return stringValue\n return stringValue\n}\n","export const formatNumber = (num: number | bigint): string => {\n return num.toLocaleString(navigator.language ?? 'en-US')\n}\n","import type { Hash } from '@xylabs/sdk-js'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport const formatPayloadsForTable = (pairs: [Payload, Hash][]) => {\n let hashes: Hash[] = []\n let schemas: string[] = []\n for (const [bw, hash] of pairs ?? []) {\n hashes.push(hash)\n schemas.push(bw?.schema ?? '')\n }\n return { hashes, schemas }\n}\n","export const formatResults = (results: Record<string, string>) => {\n const result = { labels: [] as string[], values: [] as string[] }\n for (const [label, value] of Object.entries(results)) {\n result.labels.push(label)\n result.values.push(value)\n }\n return result\n}\n","import { InfoOutline } from '@mui/icons-material'\nimport { Tooltip } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { Hash } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { ClickableFields } from '@xyo-network/react-boundwitness-plugin'\nimport {\n BoundWitnessPayloadTableBody, BoundWitnessPayloadTableHead, HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport type { EventNoun, ExtendEventNoun } from '@xyo-network/react-event'\nimport { TableEx } from '@xyo-network/react-table'\nimport React from 'react'\nimport { VscSymbolMethod } from 'react-icons/vsc'\n\nexport interface BWPayloadTableFlexboxProps<TNoun extends ExtendEventNoun<string> = EventNoun> extends FlexBoxProps {\n IconComponent?: React.ReactNode\n clickableFields?: ClickableFields[]\n eventNoun?: TNoun\n hashes?: Hash[]\n headingTitle?: string\n schemas?: string[]\n tooltip?: string\n}\n\nexport const PayloadTableFlexbox = <TNoun extends ExtendEventNoun<string> = EventNoun>({\n IconComponent,\n eventNoun,\n hashes,\n schemas,\n headingTitle,\n clickableFields,\n tooltip,\n ...props\n}: BWPayloadTableFlexboxProps<TNoun>) => {\n const resolvedIconComponent = IconComponent ?? <VscSymbolMethod />\n return (\n <FlexCol alignItems=\"stretch\" rowGap={1} {...props}>\n <HeadingPaper\n AdornmentEnd={isDefined(tooltip)\n ? (\n <Tooltip title={tooltip}>\n <InfoOutline fontSize=\"small\" sx={{ py: 2, px: 1 }} />\n </Tooltip>\n )\n : null}\n IconComponent={resolvedIconComponent}\n heading={headingTitle}\n />\n <TableEx>\n <BoundWitnessPayloadTableHead />\n <BoundWitnessPayloadTableBody<TNoun> payloadHashes={hashes} payloadSchemas={schemas} eventNoun={eventNoun} clickableFields={clickableFields} />\n </TableEx>\n </FlexCol>\n )\n}\n","import { DataObject as DataObjectIcon } from '@mui/icons-material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport { ellipsize } from '@xylabs/sdk-js'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BWPreviousHashQuickTipButton } from '@xyo-network/react-boundwitness-plugin'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport React from 'react'\n\nimport { BlockBoundWitnessVerification } from './BlockBoundWitnessVerification.tsx'\n\nexport interface BlockBoundWitnessActionsProps extends FlexBoxProps {\n boundwitness?: BoundWitness\n validationIconColors?: boolean\n}\n\nexport const BlockBoundWitnessActions: React.FC<BlockBoundWitnessActionsProps> = ({\n boundwitness,\n validationIconColors = false,\n ...props\n}) => {\n const hash = usePayloadHash(boundwitness)\n\n return (\n <FlexRow {...props}>\n {boundwitness?.previous_hashes.length === 0 ? null : <BWPreviousHashQuickTipButton boundwitness={boundwitness} />}\n <BlockBoundWitnessVerification iconColors={validationIconColors} block={boundwitness} />\n <QuickTipButton\n Icon={DataObjectIcon}\n title={`JSON for ${ellipsize(hash ?? '', 8)}`}\n dialogProps={{ fullWidth: true, maxWidth: 'md' }}\n >\n <pre style={{ wordBreak: 'break-all' }}>{boundwitness ? JSON.stringify(boundwitness, null, 2) : null}</pre>\n </QuickTipButton>\n </FlexRow>\n )\n}\n","import { CancelRounded as CancelRoundedIcon } from '@mui/icons-material'\nimport type { SvgIconProps } from '@mui/material'\nimport { ErrorQuickTipButton } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { validateBlock } from '@xyo-network/chain-validation'\nimport type { BlockValidationError } from '@xyo-network/xl1-sdk'\nimport { isBlockBoundWitness } from '@xyo-network/xl1-sdk'\nimport React, { useMemo } from 'react'\n\nconst InvalidIcon = ({ ref, ...props }: SvgIconProps\n & { ref?: React.Ref<SVGSVGElement | null> }) => <CancelRoundedIcon color=\"error\" ref={ref} {...props} />\nInvalidIcon.displayName = 'InvalidIcon'\n\nexport interface BWVerification extends QuickTipButtonProps {\n block?: BoundWitness\n iconColors?: boolean\n}\n\nexport const BlockBoundWitnessVerification: React.FC<BWVerification> = ({ block, ...props }) => {\n const [validationErrors, validateError] = usePromise(async () => {\n if (isDefined(block)) {\n const resolvedBlock = assertEx(isBlockBoundWitness(block) ? block : undefined, () => 'Block must be a BlockBoundWitness')\n return await validateBlock(resolvedBlock)\n }\n }, [block])\n\n const resolvedErrors = useMemo(() => {\n const errors: (Error | BlockValidationError)[] = []\n if (isDefined(validationErrors)) {\n if (Array.isArray(validationErrors)) errors.push(...validationErrors)\n if (validationErrors instanceof Error) errors.push(validationErrors)\n if (isDefined(validateError)) errors.push(validateError)\n return errors\n }\n }, [validateError, validationErrors])\n\n return (\n <ErrorQuickTipButton boundWitnessType=\"Block\" errors={resolvedErrors} {...props} />\n )\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, Grid,\n Skeleton,\n Stack,\n} from '@mui/material'\nimport { ErrorRender } from '@xylabs/react-error'\nimport { isUndefined } from '@xylabs/sdk-js'\nimport { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'\nimport type { HydratedBlockInstance, XyoViewer } from '@xyo-network/xl1-sdk'\nimport React from 'react'\nimport { GrSteps } from 'react-icons/gr'\nimport { IoStatsChartOutline } from 'react-icons/io5'\nimport { VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { BlockBoundWitnessCardHeader } from './CardHeader.tsx'\nimport { useBlockDetails } from './hooks/index.ts'\n\nexport interface BlockBoundWitnessCardProps extends CardProps {\n linkedAddress?: boolean\n viewer?: XyoViewer\n wrapper?: HydratedBlockInstance\n}\n\nexport const BlockBoundWitnessCard: React.FC<BlockBoundWitnessCardProps> = ({\n linkedAddress = true, viewer, wrapper, ...props\n}) => {\n const {\n stats, payloads, stepHashes, stepHashesError, stepHashesLoading,\n } = useBlockDetails(wrapper, viewer)\n\n if (isUndefined(wrapper) || isUndefined(stats) || isUndefined(payloads) || isUndefined(stepHashes)) return null\n return (\n <Card {...props}>\n {wrapper?.boundWitness.addresses.map(address => (\n <BlockBoundWitnessCardHeader\n key={address}\n address={address}\n linked={linkedAddress}\n chainId={wrapper.boundWitness.chain}\n />\n ))}\n <ErrorRender error={stepHashesError} scope=\"BlockBoundWitnessCard.tsx:stepHashesError\" />\n <CardContent>\n <Grid container spacing={6} sx={{ width: '100%' }}>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={IoStatsChartOutline} heading=\"Stats\" tooltipTitle=\"Block Statistics\">\n <LabelValueStack labels={stats.labels} values={stats.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={VscSymbolNamespace} heading=\"Payloads\" tooltipTitle=\"Payloads within the Block\">\n <LabelValueStack labels={payloads.labels} values={payloads.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GrSteps} heading=\"Step Hashes\" tooltipTitle=\"Step Hashes for the Block\">\n {stepHashesLoading === 'pending'\n ? (\n <Stack gap={0.25}>\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n </Stack>\n )\n : null}\n <LabelValueStack labels={stepHashes?.labels ?? []} values={stepHashes?.values ?? []} />\n </DetailsStack>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n","import type { CardHeaderProps } from '@mui/material'\nimport {\n CardHeader, Icon, IconButton, Link,\n Tooltip, Typography,\n} from '@mui/material'\nimport type { Address } from '@xylabs/sdk-js'\nimport { ellipsize, isDefined } from '@xylabs/sdk-js'\nimport { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'\nimport { useEvent } from '@xyo-network/react-event'\nimport type { ChainId } from '@xyo-network/xl1-sdk'\nimport React from 'react'\nimport { FaCopy } from 'react-icons/fa'\n\nexport interface BlockBoundWitnessCardHeaderProps extends CardHeaderProps {\n address?: Address\n chainId?: ChainId\n linked?: boolean\n}\n\nexport const BlockBoundWitnessCardHeader: React.FC<BlockBoundWitnessCardHeaderProps> = ({\n linked = true, address, chainId,\n}) => {\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n\n return (\n <CardHeader\n ref={ref}\n title={(\n <Typography\n onClick={() => linked && dispatch('address', 'click', address)}\n variant=\"body2\"\n sx={{\n maxWidth: '100%', textOverflow: 'ellipsis', overflow: 'hidden', fontFamily: 'monospace',\n }}\n >\n {linked\n ? (\n <Link sx={{ cursor: 'pointer' }}>{address}</Link>\n )\n : address}\n </Typography>\n )}\n subheader={isDefined(chainId)\n ? (\n <Typography\n variant=\"subtitle2\"\n sx={{\n fontFamily: 'monospace', fontSize: 12, opacity: 0.5, mt: 0.25,\n }}\n title={`chain: ${chainId}`}\n >\n {ellipsize(chainId, 8)}\n <IconButton size=\"small\" onClick={() => void navigator.clipboard.writeText(chainId)}>\n <Icon sx={{ fontSize: '0.7rem' }}>\n <FaCopy />\n </Icon>\n </IconButton>\n </Typography>\n )\n : null}\n avatar={(\n <Tooltip title={`Address - ${address}`}>\n <BlockiesAvatarAddress\n address={address}\n onClick={() => dispatch('address', 'click', address)}\n size={21}\n sx={{ cursor: 'pointer' }}\n />\n </Tooltip>\n )}\n />\n )\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { isUndefined } from '@xylabs/sdk-js'\nimport type { HydratedBlockInstance, XyoViewer } from '@xyo-network/xl1-sdk'\nimport { StepSizes } from '@xyo-network/xl1-sdk'\nimport { useMemo } from 'react'\n\nimport { formatNumber, formatResults } from '../../../../lib/index.ts'\n\nconst generateStepHashText = (blockNumber: number, stepHashIndex: number): [string, string] => {\n const stepSize = StepSizes[stepHashIndex]\n const stepStart = blockNumber - stepSize + 1\n const stepStop = blockNumber\n\n return [`Step ${stepHashIndex} (${stepSize})`, `${formatNumber(stepStart)} - ${formatNumber(stepStop)}`]\n}\n\nexport const useBlockDetails = (wrapper: HydratedBlockInstance | undefined, viewer?: XyoViewer) => {\n const stats = useMemo(() => {\n if (isUndefined(wrapper)) return\n const epochDate = new Date(wrapper.boundWitness.$epoch)\n const stats = {\n Height: formatNumber(wrapper.boundWitness.block),\n // protocol should always be defined except for malformed blocks and very early blocks in the chain\n Protocol: wrapper.boundWitness.protocol?.toString() ?? 'N/A',\n Signatures: formatNumber(wrapper.signatureCount),\n $epoch: `${epochDate.toLocaleDateString()} ${epochDate.toLocaleTimeString()}`,\n }\n\n return formatResults(stats)\n }, [wrapper])\n\n const payloads = useMemo(() => {\n if (isUndefined(wrapper)) return\n const payloads = {\n 'Transactions': formatNumber(wrapper.transactionCount),\n 'Total Payloads': formatNumber(wrapper.payloadCount),\n }\n\n return formatResults(payloads)\n }, [wrapper])\n\n const [stepHashes, stepHashesError, stepHashesLoading] = usePromise(async () => {\n if (isUndefined(wrapper) || isUndefined(viewer)) return\n const stepHashes: Record<string, string> = {}\n for (const [index, hash] of (wrapper.boundWitness.step_hashes ?? []).entries()) {\n try {\n const block = await viewer.blockByHash(hash)\n if (block === null) {\n console.warn(`Block not found for step hash ${hash}`)\n stepHashes[`Step ${index}`] = 'N/A'\n continue\n }\n\n const blockNumber = block[0].block\n const [label, value] = generateStepHashText(blockNumber, index)\n stepHashes[label] = value\n } catch (e) {\n console.error(`Error fetching block for step hash ${hash}:`, e)\n stepHashes[`Step ${index}`] = 'N/A'\n }\n }\n\n return formatResults(stepHashes)\n }, [wrapper, viewer], { defaultValue: { labels: [], values: [] } })\n\n return {\n stats, payloads, stepHashes, stepHashesError, stepHashesLoading,\n }\n}\n","import { DataObject as DataObjectIcon } from '@mui/icons-material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport { ellipsize } from '@xylabs/sdk-js'\nimport { BWPreviousHashQuickTipButton } from '@xyo-network/react-boundwitness-plugin'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-sdk'\nimport React from 'react'\n\nimport { TransactionVerification } from './TransactionVerification.tsx'\n\nexport interface TransactionActionsProps extends FlexBoxProps {\n transaction?: SignedHydratedTransactionWithStorageMeta | null\n validationIconColors?: boolean\n}\n\nexport const TransactionActions: React.FC<TransactionActionsProps> = ({\n transaction,\n validationIconColors = false,\n ...props\n}) => {\n const txBw = transaction?.[0]\n const hash = usePayloadHash(txBw)\n return (\n <FlexRow {...props}>\n {txBw?.previous_hashes.length === 0 ? null : <BWPreviousHashQuickTipButton boundwitness={txBw} />}\n <TransactionVerification iconColors={validationIconColors} transaction={transaction} />\n <QuickTipButton\n Icon={DataObjectIcon}\n title={`JSON for ${ellipsize(hash ?? '', 8)}`}\n dialogProps={{ fullWidth: true, maxWidth: 'md' }}\n >\n <pre style={{ wordBreak: 'break-all' }}>{transaction ? JSON.stringify(transaction, null, 2) : null}</pre>\n </QuickTipButton>\n </FlexRow>\n )\n}\n","import { CancelRounded as CancelRoundedIcon } from '@mui/icons-material'\nimport type { SvgIconProps } from '@mui/material'\nimport { ErrorQuickTipButton } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type { HydratedTransactionValidationError, SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-sdk'\nimport { isSignedHydratedTransactionWithStorageMeta, validateTransaction } from '@xyo-network/xl1-sdk'\nimport React, { useMemo } from 'react'\n\nconst InvalidIcon = ({ ref, ...props }: SvgIconProps\n & { ref?: React.Ref<SVGSVGElement | null> }) => <CancelRoundedIcon color=\"error\" ref={ref} {...props} />\nInvalidIcon.displayName = 'InvalidIcon'\n\nexport interface TxVerification extends QuickTipButtonProps {\n iconColors?: boolean\n transaction?: SignedHydratedTransactionWithStorageMeta | null\n}\n\nexport const TransactionVerification: React.FC<TxVerification> = ({ transaction, ...props }) => {\n const [validationErrors, validateError] = usePromise(async () => {\n if (isDefined(transaction)) {\n const resolvedTransaction = assertEx(isSignedHydratedTransactionWithStorageMeta(transaction)\n ? transaction\n : undefined, () => 'Transaction must be a SignedHydratedTransactionWithStorageMeta')\n return await validateTransaction(resolvedTransaction)\n }\n }, [transaction])\n\n const resolvedErrors = useMemo(() => {\n const errors: (Error | HydratedTransactionValidationError)[] = []\n if (isDefined(validationErrors)) {\n if (Array.isArray(validationErrors)) errors.push(...validationErrors)\n if (validationErrors instanceof Error) errors.push(validationErrors)\n if (isDefined(validateError)) errors.push(validateError)\n return errors\n }\n }, [validateError, validationErrors])\n\n return (\n <ErrorQuickTipButton boundWitnessType=\"Transaction\" errors={resolvedErrors} {...props} />\n )\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, CardHeader, Grid, Icon, IconButton, Link, Tooltip, Typography,\n} from '@mui/material'\nimport {\n ellipsize, isDefined, isUndefined,\n} from '@xylabs/sdk-js'\nimport { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'\nimport { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'\nimport { useEvent } from '@xyo-network/react-event'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-sdk'\nimport React from 'react'\nimport { FaCopy } from 'react-icons/fa'\nimport { GiReceiveMoney, GiSandsOfTime } from 'react-icons/gi'\nimport { IoStatsChartOutline } from 'react-icons/io5'\n\nimport { useTransactionDetails } from './hooks/index.ts'\n\nexport interface TransactionBoundWitnessCardProps extends CardProps {\n linkedAddress?: boolean\n wrapper?: HydratedTransactionInstance\n}\n\nexport const TransactionBoundWitnessCard: React.FC<TransactionBoundWitnessCardProps> = ({\n linkedAddress = true, wrapper, ...props\n}) => {\n const chainId = wrapper?.boundWitness.chain\n\n const {\n stats, fees, blockDuration,\n } = useTransactionDetails(wrapper)\n\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n\n if (isUndefined(wrapper) || isUndefined(stats) || isUndefined(fees) || isUndefined(blockDuration)) return null\n return (\n <Card ref={ref} {...props}>\n <CardHeader\n title={(\n <Typography\n onClick={() => linkedAddress && dispatch('address', 'click', wrapper.boundWitness.from)}\n variant=\"body2\"\n sx={{\n maxWidth: '100%', textOverflow: 'ellipsis', overflow: 'hidden', fontFamily: 'monospace',\n }}\n >\n {linkedAddress\n ? (\n <Link sx={{ cursor: 'pointer' }}>{wrapper?.boundWitness.from}</Link>\n )\n : wrapper?.boundWitness.from}\n </Typography>\n )}\n subheader={isDefined(chainId)\n ? (\n <Typography\n variant=\"subtitle2\"\n sx={{\n fontFamily: 'monospace', fontSize: 12, opacity: 0.5, mt: 0.25,\n }}\n title={`chain: ${chainId}`}\n >\n {ellipsize(chainId, 8)}\n <IconButton size=\"small\" onClick={() => void navigator.clipboard.writeText(chainId)}>\n <Icon sx={{ fontSize: '0.7rem' }}>\n <FaCopy />\n </Icon>\n </IconButton>\n </Typography>\n )\n : null}\n avatar={(\n <Tooltip title={`From Address - ${wrapper?.boundWitness.from}`}>\n <BlockiesAvatarAddress\n address={wrapper?.boundWitness.from}\n onClick={() => dispatch('address', 'click', wrapper.boundWitness.from)}\n size={21}\n sx={{ cursor: 'pointer' }}\n />\n </Tooltip>\n )}\n />\n <CardContent>\n <Grid container spacing={6} sx={{ width: '100%' }}>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={IoStatsChartOutline} heading=\"Stats\" tooltipTitle=\"Transaction Statistics\">\n <LabelValueStack labels={stats.labels} values={stats.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GiReceiveMoney} heading=\"Fees\" tooltipTitle=\"Fees offered to the producer\">\n <LabelValueStack labels={fees.labels} values={fees.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GiSandsOfTime} heading=\"Block Duration\" tooltipTitle=\"Block window for the transaction to be valid\">\n <LabelValueStack labels={blockDuration.labels} values={blockDuration.values} />\n </DetailsStack>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n","import { isUndefined } from '@xylabs/sdk-js'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-sdk'\nimport { useMemo } from 'react'\n\nimport {\n formatFee, formatNumber, formatResults,\n} from '../../../../lib/index.ts'\n\nexport const useTransactionDetails = (wrapper: HydratedTransactionInstance | undefined) => {\n const stats = useMemo(() => {\n if (isUndefined(wrapper)) return\n const stats = {\n 'Reward': formatNumber(wrapper.reward()),\n 'On Chain Payloads': formatNumber(wrapper.elevatedPayloadCount),\n 'Public Payloads': formatNumber(Object.values(wrapper.publicExternalPayloads).length),\n 'Referenced Payloads': formatNumber(Object.entries(wrapper.privateExternalPayloads).length),\n 'Signatures': formatNumber(wrapper.signatureCount),\n }\n\n return formatResults(stats)\n }, [wrapper])\n\n const fees = useMemo(() => {\n if (isUndefined(wrapper)) return\n const fees = {\n 'Base': formatFee(wrapper.fees.base),\n 'Gas': formatFee(wrapper.fees.gasPrice),\n 'Priority': formatFee(wrapper.fees.priority),\n 'Gas Limit': formatFee(wrapper.fees.gasLimit),\n }\n\n return formatResults(fees)\n }, [wrapper])\n\n const blockDuration = useMemo(() => {\n if (isUndefined(wrapper)) return\n const blockDuration = {\n 'Expiration': wrapper.boundWitness.exp.toLocaleString(navigator.language ?? 'en-US'),\n 'Not Before': wrapper.boundWitness.nbf.toLocaleString(navigator.language ?? 'en-US'),\n }\n\n return formatResults(blockDuration)\n }, [wrapper])\n\n return {\n stats, fees, blockDuration,\n }\n}\n","import { ErrorRender } from '@xylabs/react-error'\nimport { type FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { ClickableFields } from '@xyo-network/react-boundwitness-plugin'\nimport {\n BoundWitnessSignatureTable, HashHeadingPaper, HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-sdk'\nimport { HydratedTransactionWrapper } from '@xyo-network/xl1-sdk'\nimport React from 'react'\nimport { FaSignature } from 'react-icons/fa'\nimport { VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { PayloadTableFlexbox } from '../PayloadTable.tsx'\nimport { TransactionActions, TransactionBoundWitnessCard } from './card/index.ts'\nimport { useTransactionPayloadTypes } from './hooks/index.ts'\n\nconst noClickableFields: ClickableFields[] = []\n\nexport interface TransactionBoundWitnessDetailsProps extends FlexBoxProps {\n linkedProducerAddress?: boolean\n transaction?: SignedHydratedTransactionWithStorageMeta | null\n}\n\nexport const TransactionBoundWitnessDetails: React.FC<TransactionBoundWitnessDetailsProps> = ({\n linkedProducerAddress, transaction, ...props\n}) => {\n const [wrapper, wrapperError] = usePromise(async () => {\n if (transaction) {\n return await HydratedTransactionWrapper.parse(transaction)\n }\n }, [transaction])\n\n const {\n elevatedPayloadHashes, elevatedPayloadSchemas, elevatedPayloadSetsError,\n publicPayloadHashes, publicPayloadSchemas, publicPayloadsError,\n referencedPayloadHashes, referencedPayloadSchemas, referencedPayloadsError,\n } = useTransactionPayloadTypes(wrapper)\n\n return (\n <FlexCol alignItems=\"stretch\" rowGap={2} {...props}>\n <HashHeadingPaper\n hash={wrapper?.boundWitness?._hash}\n paperProps={{ sx: { p: 2 } }}\n AdornmentEnd={<TransactionActions transaction={transaction} />}\n identiconProps={{ p: 0.75, size: 24 }}\n />\n <ErrorRender error={wrapperError} scope=\"wrapperError:TransactionBoundWitnessDetails.tsx\" />\n <ErrorRender error={elevatedPayloadSetsError} scope=\"elevatedPayloadSetsError:TransactionBoundWitnessDetails.tsx\" />\n <ErrorRender error={publicPayloadsError} scope=\"publicPayloadsError:TransactionBoundWitnessDetails.tsx\" />\n {referencedPayloadsError.map(error =>\n <ErrorRender key={error.message} error={error} scope=\"referencedPayloadsError:TransactionBoundWitnessDetails.tsx\" />)}\n <TransactionBoundWitnessCard elevation={4} linkedAddress={linkedProducerAddress} wrapper={wrapper} />\n <PayloadTableFlexbox\n eventNoun=\"payload\"\n clickableFields={['hash']}\n tooltip=\"Payloads included in the transaction that are elevated and validated.\"\n IconComponent={<VscSymbolNamespace />}\n hashes={elevatedPayloadHashes}\n headingTitle=\"On Chain Payloads\"\n schemas={elevatedPayloadSchemas}\n sx={{ mb: 1 }}\n />\n {(publicPayloadHashes?.length ?? 0) > 0\n ? (\n <PayloadTableFlexbox\n eventNoun=\"payload\"\n clickableFields={['hash']}\n tooltip=\"Public payloads included in the transaction.\"\n IconComponent={<VscSymbolNamespace />}\n hashes={publicPayloadHashes}\n headingTitle=\"Public Payloads\"\n schemas={publicPayloadSchemas}\n sx={{ mb: 1 }}\n />\n )\n : null}\n {(referencedPayloadHashes?.length ?? 0) > 0\n ? (\n <PayloadTableFlexbox\n // TODO - bring back once the hashes can be searched via datalake\n tooltip=\"Payload hashes referenced by the transaction but not included.\"\n IconComponent={<VscSymbolNamespace />}\n clickableFields={noClickableFields}\n hashes={referencedPayloadHashes}\n headingTitle=\"Referenced Payloads\"\n schemas={referencedPayloadSchemas}\n sx={{ mb: 1 }}\n />\n )\n : null}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<FaSignature />} heading=\"Signatures\" />\n <BoundWitnessSignatureTable block={wrapper?.boundWitness} />\n </FlexCol>\n </FlexCol>\n )\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { Hash } from '@xylabs/sdk-js'\nimport { isDefined, isHash } from '@xylabs/sdk-js'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Schema } from '@xyo-network/payload-model'\nimport { isSchema } from '@xyo-network/payload-model'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-sdk'\nimport { useMemo } from 'react'\n\nimport { formatPayloadsForTable } from '../../../lib/index.ts'\n\nexport const useTransactionPayloadTypes = (wrapper?: HydratedTransactionInstance) => {\n const [elevatedPayloadSets, elevatedPayloadSetsError] = usePromise(async () => {\n if (isDefined(wrapper)) {\n const elevatedPayloads = wrapper.elevatedPayloads\n const pairs = await PayloadBuilder.hashPairs(elevatedPayloads)\n return formatPayloadsForTable(pairs)\n } else {\n return { hashes: [], schemas: [] }\n }\n }, [wrapper])\n\n const [publicPayloads, publicPayloadsError] = usePromise(async () => {\n if (isDefined(wrapper)) {\n const publicPayloads = wrapper.publicExternalPayloads\n const pairs = await PayloadBuilder.hashPairs(publicPayloads)\n return formatPayloadsForTable(pairs)\n } else {\n return { hashes: [], schemas: [] }\n }\n }, [wrapper])\n\n const [referencedPayloads, referencedPayloadsError] = useMemo(() => {\n const ret = { hashes: [] as Hash[], schemas: [] as Schema[] }\n const errors: Error[] = []\n if (isDefined(wrapper)) {\n const referencedPayloads = wrapper.privateExternalPayloads\n for (const [hash, schema] of Object.entries(referencedPayloads)) {\n let resolved = false\n if (isHash(hash)) {\n ret.hashes.push(hash)\n resolved = true\n }\n if (isSchema(schema)) {\n ret.schemas.push(schema)\n resolved = true\n }\n if (!resolved) {\n errors.push(new Error(`Unexpected payload or schema type for hash ${hash}: ${schema}`))\n }\n }\n }\n return [ret, errors] as const\n }, [wrapper])\n\n const { hashes: elevatedPayloadHashes, schemas: elevatedPayloadSchemas } = elevatedPayloadSets ?? {}\n const { hashes: publicPayloadHashes, schemas: publicPayloadSchemas } = publicPayloads ?? {}\n const { hashes: referencedPayloadHashes, schemas: referencedPayloadSchemas } = referencedPayloads ?? {}\n\n return {\n elevatedPayloadHashes,\n elevatedPayloadSchemas,\n elevatedPayloadSetsError,\n publicPayloadHashes,\n publicPayloadSchemas,\n publicPayloadsError,\n referencedPayloadHashes,\n referencedPayloadSchemas,\n referencedPayloadsError,\n }\n}\n"],"mappings":"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","names":["ErrorRender","FlexCol","usePromise","filterAs","isBoundWitness","HydratedBlockWrapper","PayloadBuilder","BoundWitnessPayloadsTable","BoundWitnessSignatureTable","HashHeadingPaper","HeadingPaper","useTxsFromBlock","usePayloadHash","isTransactionBoundWitness","React","useMemo","FaSignature","GrTransaction","VscSymbolMethod","VscSymbolNamespace","isUndefined","bigIntToFixedPointString","formatFee","fee","isUndefined","stringValue","bigIntToFixedPointString","formatNumber","num","toLocaleString","navigator","language","formatPayloadsForTable","pairs","hashes","schemas","bw","hash","push","schema","formatResults","results","result","labels","values","label","value","Object","entries","push","InfoOutline","Tooltip","FlexCol","isDefined","BoundWitnessPayloadTableBody","BoundWitnessPayloadTableHead","HeadingPaper","TableEx","React","VscSymbolMethod","PayloadTableFlexbox","IconComponent","eventNoun","hashes","schemas","headingTitle","clickableFields","tooltip","props","resolvedIconComponent","VscSymbolMethod","FlexCol","alignItems","rowGap","HeadingPaper","AdornmentEnd","isDefined","Tooltip","title","InfoOutline","fontSize","sx","py","px","heading","TableEx","BoundWitnessPayloadTableHead","BoundWitnessPayloadTableBody","payloadHashes","payloadSchemas","DataObject","DataObjectIcon","FlexRow","QuickTipButton","ellipsize","BWPreviousHashQuickTipButton","usePayloadHash","React","CancelRounded","CancelRoundedIcon","ErrorQuickTipButton","usePromise","assertEx","isDefined","validateBlock","isBlockBoundWitness","React","useMemo","InvalidIcon","ref","props","React","CancelRoundedIcon","color","displayName","BlockBoundWitnessVerification","block","validationErrors","validateError","usePromise","isDefined","resolvedBlock","assertEx","isBlockBoundWitness","undefined","validateBlock","resolvedErrors","useMemo","errors","Array","isArray","push","Error","ErrorQuickTipButton","boundWitnessType","BlockBoundWitnessActions","boundwitness","validationIconColors","props","hash","usePayloadHash","React","FlexRow","previous_hashes","length","BWPreviousHashQuickTipButton","BlockBoundWitnessVerification","iconColors","block","QuickTipButton","Icon","DataObjectIcon","title","ellipsize","dialogProps","fullWidth","maxWidth","pre","style","wordBreak","JSON","stringify","Card","CardContent","Grid","Skeleton","Stack","ErrorRender","isUndefined","DetailsStack","LabelValueStack","React","GrSteps","IoStatsChartOutline","VscSymbolNamespace","CardHeader","Icon","IconButton","Link","Tooltip","Typography","ellipsize","isDefined","BlockiesAvatarAddress","useEvent","React","FaCopy","BlockBoundWitnessCardHeader","linked","address","chainId","ref","dispatch","useEvent","React","CardHeader","title","Typography","onClick","variant","sx","maxWidth","textOverflow","overflow","fontFamily","Link","cursor","subheader","isDefined","fontSize","opacity","mt","ellipsize","IconButton","size","navigator","clipboard","writeText","Icon","FaCopy","avatar","Tooltip","BlockiesAvatarAddress","usePromise","isUndefined","StepSizes","useMemo","generateStepHashText","blockNumber","stepHashIndex","stepSize","StepSizes","stepStart","stepStop","formatNumber","useBlockDetails","wrapper","viewer","stats","useMemo","isUndefined","epochDate","Date","boundWitness","$epoch","Height","block","Protocol","protocol","toString","Signatures","signatureCount","toLocaleDateString","toLocaleTimeString","formatResults","payloads","transactionCount","payloadCount","stepHashes","stepHashesError","stepHashesLoading","usePromise","index","hash","step_hashes","entries","blockByHash","console","warn","label","value","e","error","defaultValue","labels","values","BlockBoundWitnessCard","linkedAddress","viewer","wrapper","props","stats","payloads","stepHashes","stepHashesError","stepHashesLoading","useBlockDetails","isUndefined","React","Card","boundWitness","addresses","map","address","BlockBoundWitnessCardHeader","key","linked","chainId","chain","ErrorRender","error","scope","CardContent","Grid","container","spacing","sx","width","size","xs","sm","md","DetailsStack","IconComponent","IoStatsChartOutline","heading","tooltipTitle","LabelValueStack","labels","values","VscSymbolNamespace","GrSteps","Stack","gap","Skeleton","variant","height","BlockBoundWitnessDetails","block","paper","viewer","children","props","wrapper","wrapperError","usePromise","HydratedBlockWrapper","parse","boundWitness","payloads","hash","usePayloadHash","transactions","txFromBlockError","useTxsFromBlock","hashes","txHashes","schemas","txSchemas","useMemo","formatPayloadsForTable","nonTxBoundWitnesses","bwsFromBlockError","bws","filterAs","payload","isTransactionBoundWitness","isBoundWitness","undefined","PayloadBuilder","hashPairs","nonTxBwHashes","nonTxBwSchemas","hasNonTxBoundWitnesses","length","React","FlexCol","alignItems","rowGap","ErrorRender","error","scope","HashHeadingPaper","paperProps","sx","p","AdornmentEnd","BlockBoundWitnessActions","boundwitness","identiconProps","size","BlockBoundWitnessCard","elevation","PayloadTableFlexbox","IconComponent","GrTransaction","eventNoun","clickableFields","headingTitle","mb","HeadingPaper","VscSymbolNamespace","heading","BoundWitnessPayloadsTable","VscSymbolMethod","FaSignature","BoundWitnessSignatureTable","DataObject","DataObjectIcon","FlexRow","QuickTipButton","ellipsize","BWPreviousHashQuickTipButton","usePayloadHash","React","CancelRounded","CancelRoundedIcon","ErrorQuickTipButton","usePromise","assertEx","isDefined","isSignedHydratedTransactionWithStorageMeta","validateTransaction","React","useMemo","InvalidIcon","ref","props","React","CancelRoundedIcon","color","displayName","TransactionVerification","transaction","validationErrors","validateError","usePromise","isDefined","resolvedTransaction","assertEx","isSignedHydratedTransactionWithStorageMeta","undefined","validateTransaction","resolvedErrors","useMemo","errors","Array","isArray","push","Error","ErrorQuickTipButton","boundWitnessType","TransactionActions","transaction","validationIconColors","props","txBw","hash","usePayloadHash","React","FlexRow","previous_hashes","length","BWPreviousHashQuickTipButton","boundwitness","TransactionVerification","iconColors","QuickTipButton","Icon","DataObjectIcon","title","ellipsize","dialogProps","fullWidth","maxWidth","pre","style","wordBreak","JSON","stringify","Card","CardContent","CardHeader","Grid","Icon","IconButton","Link","Tooltip","Typography","ellipsize","isDefined","isUndefined","BlockiesAvatarAddress","DetailsStack","LabelValueStack","useEvent","React","FaCopy","GiReceiveMoney","GiSandsOfTime","IoStatsChartOutline","isUndefined","useMemo","useTransactionDetails","wrapper","stats","useMemo","isUndefined","formatNumber","reward","elevatedPayloadCount","Object","values","publicExternalPayloads","length","entries","privateExternalPayloads","signatureCount","formatResults","fees","formatFee","base","gasPrice","priority","gasLimit","blockDuration","boundWitness","exp","toLocaleString","navigator","language","nbf","TransactionBoundWitnessCard","linkedAddress","wrapper","props","chainId","boundWitness","chain","stats","fees","blockDuration","useTransactionDetails","ref","dispatch","useEvent","isUndefined","React","Card","CardHeader","title","Typography","onClick","from","variant","sx","maxWidth","textOverflow","overflow","fontFamily","Link","cursor","subheader","isDefined","fontSize","opacity","mt","ellipsize","IconButton","size","navigator","clipboard","writeText","Icon","FaCopy","avatar","Tooltip","BlockiesAvatarAddress","address","CardContent","Grid","container","spacing","width","xs","sm","md","DetailsStack","IconComponent","IoStatsChartOutline","heading","tooltipTitle","LabelValueStack","labels","values","GiReceiveMoney","GiSandsOfTime","ErrorRender","FlexCol","usePromise","BoundWitnessSignatureTable","HashHeadingPaper","HeadingPaper","HydratedTransactionWrapper","React","FaSignature","VscSymbolNamespace","usePromise","isDefined","isHash","PayloadBuilder","isSchema","useMemo","useTransactionPayloadTypes","wrapper","elevatedPayloadSets","elevatedPayloadSetsError","usePromise","isDefined","elevatedPayloads","pairs","PayloadBuilder","hashPairs","formatPayloadsForTable","hashes","schemas","publicPayloads","publicPayloadsError","publicExternalPayloads","referencedPayloads","referencedPayloadsError","useMemo","ret","errors","privateExternalPayloads","hash","schema","Object","entries","resolved","isHash","push","isSchema","Error","elevatedPayloadHashes","elevatedPayloadSchemas","publicPayloadHashes","publicPayloadSchemas","referencedPayloadHashes","referencedPayloadSchemas","noClickableFields","TransactionBoundWitnessDetails","linkedProducerAddress","transaction","props","wrapper","wrapperError","usePromise","HydratedTransactionWrapper","parse","elevatedPayloadHashes","elevatedPayloadSchemas","elevatedPayloadSetsError","publicPayloadHashes","publicPayloadSchemas","publicPayloadsError","referencedPayloadHashes","referencedPayloadSchemas","referencedPayloadsError","useTransactionPayloadTypes","React","FlexCol","alignItems","rowGap","HashHeadingPaper","hash","boundWitness","_hash","paperProps","sx","p","AdornmentEnd","TransactionActions","identiconProps","size","ErrorRender","error","scope","map","key","message","TransactionBoundWitnessCard","elevation","linkedAddress","PayloadTableFlexbox","eventNoun","clickableFields","tooltip","IconComponent","VscSymbolNamespace","hashes","headingTitle","schemas","mb","length","HeadingPaper","FaSignature","heading","BoundWitnessSignatureTable","block"]}
@@ -1,7 +1,7 @@
1
1
  import type { Hash } from '@xylabs/sdk-js';
2
2
  import type { Payload } from '@xyo-network/payload-model';
3
3
  export declare const formatPayloadsForTable: (pairs: [Payload, Hash][]) => {
4
- hashes: Hash[];
4
+ hashes: import("@xylabs/sdk-js").BrandedHash[];
5
5
  schemas: string[];
6
6
  };
7
7
  //# sourceMappingURL=formatPayloadsForTable.d.ts.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xyo-network/react-chain-boundwitness",
4
- "version": "1.18.0",
4
+ "version": "1.18.2",
5
5
  "description": "XYO Layer One React SDK BoundWitness",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -48,44 +48,40 @@
48
48
  "@xylabs/react-flexbox": "~7.1.9",
49
49
  "@xylabs/react-promise": "~7.1.9",
50
50
  "@xylabs/react-quick-tip-button": "~7.1.9",
51
- "@xylabs/sdk-js": "~5.0.51",
52
- "@xyo-network/boundwitness-model": "~5.2.17",
53
- "@xyo-network/chain-utils": "~1.18.0",
54
- "@xyo-network/chain-validation": "~1.18.0",
55
- "@xyo-network/chain-wrappers": "~1.18.0",
56
- "@xyo-network/payload-builder": "~5.2.17",
57
- "@xyo-network/payload-model": "~5.2.17",
51
+ "@xylabs/sdk-js": "~5.0.64",
52
+ "@xyo-network/boundwitness-model": "~5.2.25",
53
+ "@xyo-network/chain-utils": "~1.18.2",
54
+ "@xyo-network/chain-validation": "~1.18.2",
55
+ "@xyo-network/chain-wrappers": "~1.18.2",
56
+ "@xyo-network/payload-builder": "~5.2.25",
57
+ "@xyo-network/payload-model": "~5.2.25",
58
58
  "@xyo-network/react-boundwitness-plugin": "~7.4.2",
59
- "@xyo-network/react-chain-blockchain": "~1.18.0",
60
- "@xyo-network/react-chain-blockies": "~1.18.0",
61
- "@xyo-network/react-chain-shared": "~1.18.0",
59
+ "@xyo-network/react-chain-blockchain": "~1.18.2",
60
+ "@xyo-network/react-chain-blockies": "~1.18.2",
61
+ "@xyo-network/react-chain-shared": "~1.18.2",
62
62
  "@xyo-network/react-event": "~7.4.2",
63
63
  "@xyo-network/react-shared": "~7.4.2",
64
64
  "@xyo-network/react-table": "~7.4.2",
65
- "@xyo-network/xl1-protocol": "~1.14.17",
66
- "@xyo-network/xl1-protocol-sdk": "~1.18.0",
67
- "@xyo-network/xl1-validation": "~1.18.0",
68
- "@xyo-network/xl1-wrappers": "~1.18.0",
65
+ "@xyo-network/xl1-sdk": "~1.19.4",
69
66
  "react-icons": "~5.5.0"
70
67
  },
71
68
  "devDependencies": {
72
69
  "@emotion/react": "~11.14.0",
73
70
  "@emotion/styled": "~11.14.1",
74
- "@mui/icons-material": "~7.3.6",
75
- "@mui/material": "~7.3.6",
76
- "@storybook/react-vite": "~10.1.9",
77
- "@xylabs/ts-scripts-yarn3": "~7.2.32",
78
- "@xylabs/tsconfig": "~7.2.32",
79
- "@xylabs/tsconfig-dom": "~7.2.32",
80
- "@xylabs/tsconfig-react": "~7.2.32",
81
- "@xyo-network/account": "~5.2.17",
82
- "@xyo-network/react-chain-network": "~1.18.0",
83
- "@xyo-network/react-chain-provider": "~1.18.0",
84
- "@xyo-network/xl1-network-model": "~1.18.0",
71
+ "@mui/icons-material": "~7.3.7",
72
+ "@mui/material": "~7.3.7",
73
+ "@storybook/react-vite": "~10.2.0",
74
+ "@xylabs/ts-scripts-yarn3": "~7.3.2",
75
+ "@xylabs/tsconfig": "~7.3.2",
76
+ "@xylabs/tsconfig-dom": "~7.3.2",
77
+ "@xylabs/tsconfig-react": "~7.3.2",
78
+ "@xyo-network/account": "~5.2.25",
79
+ "@xyo-network/react-chain-network": "~1.18.2",
80
+ "@xyo-network/react-chain-provider": "~1.18.2",
85
81
  "eslint": "^9.39.2",
86
- "react": "~19.2.3",
87
- "react-dom": "~19.2.3",
88
- "react-router-dom": "^7.10.1",
82
+ "react": "~19.2.4",
83
+ "react-dom": "~19.2.4",
84
+ "react-router-dom": "^7.13.0",
89
85
  "typescript": "~5.9.3"
90
86
  },
91
87
  "peerDependencies": {
@@ -101,4 +97,4 @@
101
97
  "access": "restricted"
102
98
  },
103
99
  "docs": "dist/docs.json"
104
- }
100
+ }
@@ -10,8 +10,8 @@ import { ChainNetworkProvider } from '@xyo-network/react-chain-network'
10
10
  import { useHttpRpcViewer } from '@xyo-network/react-chain-provider'
11
11
  import { buildRandomBlockChain } from '@xyo-network/react-chain-shared'
12
12
  import type { Event } from '@xyo-network/react-event'
13
- import { SequenceNetwork } from '@xyo-network/xl1-network-model'
14
- import type { XyoViewer } from '@xyo-network/xl1-protocol-sdk'
13
+ import type { XyoViewer } from '@xyo-network/xl1-sdk'
14
+ import { SequenceNetwork } from '@xyo-network/xl1-sdk'
15
15
  import React, { useState } from 'react'
16
16
 
17
17
  import { BlockBoundWitnessDetails } from './BlockBoundWitnessDetails.tsx'
@@ -15,9 +15,8 @@ import {
15
15
  import { useTxsFromBlock } from '@xyo-network/react-chain-blockchain'
16
16
  import type { EventNoun } from '@xyo-network/react-event'
17
17
  import { usePayloadHash } from '@xyo-network/react-shared'
18
- import type { SignedHydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'
19
- import { isTransactionBoundWitness } from '@xyo-network/xl1-protocol'
20
- import type { XyoViewer } from '@xyo-network/xl1-protocol-sdk'
18
+ import type { SignedHydratedBlockWithHashMeta, XyoViewer } from '@xyo-network/xl1-sdk'
19
+ import { isTransactionBoundWitness } from '@xyo-network/xl1-sdk'
21
20
  import React, { useMemo } from 'react'
22
21
  import { FaSignature } from 'react-icons/fa'
23
22
  import { GrTransaction } from 'react-icons/gr'
@@ -5,8 +5,9 @@ import {
5
5
  Stack,
6
6
  } from '@mui/material'
7
7
  import { ErrorRender } from '@xylabs/react-error'
8
+ import { isUndefined } from '@xylabs/sdk-js'
8
9
  import { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'
9
- import type { HydratedBlockInstance, XyoViewer } from '@xyo-network/xl1-protocol-sdk'
10
+ import type { HydratedBlockInstance, XyoViewer } from '@xyo-network/xl1-sdk'
10
11
  import React from 'react'
11
12
  import { GrSteps } from 'react-icons/gr'
12
13
  import { IoStatsChartOutline } from 'react-icons/io5'
@@ -24,12 +25,11 @@ export interface BlockBoundWitnessCardProps extends CardProps {
24
25
  export const BlockBoundWitnessCard: React.FC<BlockBoundWitnessCardProps> = ({
25
26
  linkedAddress = true, viewer, wrapper, ...props
26
27
  }) => {
27
- if (!wrapper) return null
28
-
29
28
  const {
30
29
  stats, payloads, stepHashes, stepHashesError, stepHashesLoading,
31
30
  } = useBlockDetails(wrapper, viewer)
32
31
 
32
+ if (isUndefined(wrapper) || isUndefined(stats) || isUndefined(payloads) || isUndefined(stepHashes)) return null
33
33
  return (
34
34
  <Card {...props}>
35
35
  {wrapper?.boundWitness.addresses.map(address => (
@@ -7,7 +7,7 @@ import type { Address } from '@xylabs/sdk-js'
7
7
  import { ellipsize, isDefined } from '@xylabs/sdk-js'
8
8
  import { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'
9
9
  import { useEvent } from '@xyo-network/react-event'
10
- import type { ChainId } from '@xyo-network/xl1-protocol'
10
+ import type { ChainId } from '@xyo-network/xl1-sdk'
11
11
  import React from 'react'
12
12
  import { FaCopy } from 'react-icons/fa'
13
13
 
@@ -6,8 +6,8 @@ import type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'
6
6
  import { assertEx, isDefined } from '@xylabs/sdk-js'
7
7
  import type { BoundWitness } from '@xyo-network/boundwitness-model'
8
8
  import { validateBlock } from '@xyo-network/chain-validation'
9
- import { isBlockBoundWitness } from '@xyo-network/xl1-protocol'
10
- import type { BlockValidationError } from '@xyo-network/xl1-protocol-sdk'
9
+ import type { BlockValidationError } from '@xyo-network/xl1-sdk'
10
+ import { isBlockBoundWitness } from '@xyo-network/xl1-sdk'
11
11
  import React, { useMemo } from 'react'
12
12
 
13
13
  const InvalidIcon = ({ ref, ...props }: SvgIconProps
@@ -1,6 +1,7 @@
1
1
  import { usePromise } from '@xylabs/react-promise'
2
- import { StepSizes } from '@xyo-network/xl1-protocol'
3
- import type { HydratedBlockInstance, XyoViewer } from '@xyo-network/xl1-protocol-sdk'
2
+ import { isUndefined } from '@xylabs/sdk-js'
3
+ import type { HydratedBlockInstance, XyoViewer } from '@xyo-network/xl1-sdk'
4
+ import { StepSizes } from '@xyo-network/xl1-sdk'
4
5
  import { useMemo } from 'react'
5
6
 
6
7
  import { formatNumber, formatResults } from '../../../../lib/index.ts'
@@ -13,8 +14,9 @@ const generateStepHashText = (blockNumber: number, stepHashIndex: number): [stri
13
14
  return [`Step ${stepHashIndex} (${stepSize})`, `${formatNumber(stepStart)} - ${formatNumber(stepStop)}`]
14
15
  }
15
16
 
16
- export const useBlockDetails = (wrapper: HydratedBlockInstance, viewer?: XyoViewer) => {
17
+ export const useBlockDetails = (wrapper: HydratedBlockInstance | undefined, viewer?: XyoViewer) => {
17
18
  const stats = useMemo(() => {
19
+ if (isUndefined(wrapper)) return
18
20
  const epochDate = new Date(wrapper.boundWitness.$epoch)
19
21
  const stats = {
20
22
  Height: formatNumber(wrapper.boundWitness.block),
@@ -28,6 +30,7 @@ export const useBlockDetails = (wrapper: HydratedBlockInstance, viewer?: XyoView
28
30
  }, [wrapper])
29
31
 
30
32
  const payloads = useMemo(() => {
33
+ if (isUndefined(wrapper)) return
31
34
  const payloads = {
32
35
  'Transactions': formatNumber(wrapper.transactionCount),
33
36
  'Total Payloads': formatNumber(wrapper.payloadCount),
@@ -37,28 +40,27 @@ export const useBlockDetails = (wrapper: HydratedBlockInstance, viewer?: XyoView
37
40
  }, [wrapper])
38
41
 
39
42
  const [stepHashes, stepHashesError, stepHashesLoading] = usePromise(async () => {
40
- if (viewer) {
41
- const stepHashes: Record<string, string> = {}
42
- for (const [index, hash] of (wrapper.boundWitness.step_hashes ?? []).entries()) {
43
- try {
44
- const block = await viewer.blockByHash(hash)
45
- if (block === null) {
46
- console.warn(`Block not found for step hash ${hash}`)
47
- stepHashes[`Step ${index}`] = 'N/A'
48
- continue
49
- }
50
-
51
- const blockNumber = block[0].block
52
- const [label, value] = generateStepHashText(blockNumber, index)
53
- stepHashes[label] = value
54
- } catch (e) {
55
- console.error(`Error fetching block for step hash ${hash}:`, e)
43
+ if (isUndefined(wrapper) || isUndefined(viewer)) return
44
+ const stepHashes: Record<string, string> = {}
45
+ for (const [index, hash] of (wrapper.boundWitness.step_hashes ?? []).entries()) {
46
+ try {
47
+ const block = await viewer.blockByHash(hash)
48
+ if (block === null) {
49
+ console.warn(`Block not found for step hash ${hash}`)
56
50
  stepHashes[`Step ${index}`] = 'N/A'
51
+ continue
57
52
  }
58
- }
59
53
 
60
- return formatResults(stepHashes)
54
+ const blockNumber = block[0].block
55
+ const [label, value] = generateStepHashText(blockNumber, index)
56
+ stepHashes[label] = value
57
+ } catch (e) {
58
+ console.error(`Error fetching block for step hash ${hash}:`, e)
59
+ stepHashes[`Step ${index}`] = 'N/A'
60
+ }
61
61
  }
62
+
63
+ return formatResults(stepHashes)
62
64
  }, [wrapper, viewer], { defaultValue: { labels: [], values: [] } })
63
65
 
64
66
  return {
@@ -7,8 +7,8 @@ import { Account } from '@xyo-network/account'
7
7
  import { useEvent } from '@xyo-network/react-event'
8
8
  import {
9
9
  asXL1BlockNumber, type HashPayload, type SignedHydratedTransactionWithStorageMeta,
10
- } from '@xyo-network/xl1-protocol'
11
- import { buildTransaction } from '@xyo-network/xl1-protocol-sdk'
10
+ } from '@xyo-network/xl1-sdk'
11
+ import { buildTransaction } from '@xyo-network/xl1-sdk'
12
12
  import React from 'react'
13
13
 
14
14
  import { TransactionBoundWitnessDetails } from './TransactionBoundWitnessDetails.tsx'
@@ -5,8 +5,8 @@ import type { ClickableFields } from '@xyo-network/react-boundwitness-plugin'
5
5
  import {
6
6
  BoundWitnessSignatureTable, HashHeadingPaper, HeadingPaper,
7
7
  } from '@xyo-network/react-boundwitness-plugin'
8
- import type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'
9
- import { HydratedTransactionWrapper } from '@xyo-network/xl1-wrappers'
8
+ import type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-sdk'
9
+ import { HydratedTransactionWrapper } from '@xyo-network/xl1-sdk'
10
10
  import React from 'react'
11
11
  import { FaSignature } from 'react-icons/fa'
12
12
  import { VscSymbolNamespace } from 'react-icons/vsc'
@@ -2,11 +2,13 @@ import type { CardProps } from '@mui/material'
2
2
  import {
3
3
  Card, CardContent, CardHeader, Grid, Icon, IconButton, Link, Tooltip, Typography,
4
4
  } from '@mui/material'
5
- import { ellipsize, isDefined } from '@xylabs/sdk-js'
5
+ import {
6
+ ellipsize, isDefined, isUndefined,
7
+ } from '@xylabs/sdk-js'
6
8
  import { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'
7
9
  import { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'
8
10
  import { useEvent } from '@xyo-network/react-event'
9
- import type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'
11
+ import type { HydratedTransactionInstance } from '@xyo-network/xl1-sdk'
10
12
  import React from 'react'
11
13
  import { FaCopy } from 'react-icons/fa'
12
14
  import { GiReceiveMoney, GiSandsOfTime } from 'react-icons/gi'
@@ -22,8 +24,6 @@ export interface TransactionBoundWitnessCardProps extends CardProps {
22
24
  export const TransactionBoundWitnessCard: React.FC<TransactionBoundWitnessCardProps> = ({
23
25
  linkedAddress = true, wrapper, ...props
24
26
  }) => {
25
- if (!wrapper) return null
26
-
27
27
  const chainId = wrapper?.boundWitness.chain
28
28
 
29
29
  const {
@@ -32,6 +32,7 @@ export const TransactionBoundWitnessCard: React.FC<TransactionBoundWitnessCardPr
32
32
 
33
33
  const [ref, dispatch] = useEvent<HTMLDivElement>()
34
34
 
35
+ if (isUndefined(wrapper) || isUndefined(stats) || isUndefined(fees) || isUndefined(blockDuration)) return null
35
36
  return (
36
37
  <Card ref={ref} {...props}>
37
38
  <CardHeader
@@ -5,7 +5,7 @@ import { QuickTipButton } from '@xylabs/react-quick-tip-button'
5
5
  import { ellipsize } from '@xylabs/sdk-js'
6
6
  import { BWPreviousHashQuickTipButton } from '@xyo-network/react-boundwitness-plugin'
7
7
  import { usePayloadHash } from '@xyo-network/react-shared'
8
- import type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'
8
+ import type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-sdk'
9
9
  import React from 'react'
10
10
 
11
11
  import { TransactionVerification } from './TransactionVerification.tsx'
@@ -4,9 +4,8 @@ import { ErrorQuickTipButton } from '@xylabs/react-error'
4
4
  import { usePromise } from '@xylabs/react-promise'
5
5
  import type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'
6
6
  import { assertEx, isDefined } from '@xylabs/sdk-js'
7
- import type { HydratedTransactionValidationError, SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'
8
- import { isSignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'
9
- import { validateTransaction } from '@xyo-network/xl1-validation'
7
+ import type { HydratedTransactionValidationError, SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-sdk'
8
+ import { isSignedHydratedTransactionWithStorageMeta, validateTransaction } from '@xyo-network/xl1-sdk'
10
9
  import React, { useMemo } from 'react'
11
10
 
12
11
  const InvalidIcon = ({ ref, ...props }: SvgIconProps
@@ -1,12 +1,14 @@
1
- import type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'
1
+ import { isUndefined } from '@xylabs/sdk-js'
2
+ import type { HydratedTransactionInstance } from '@xyo-network/xl1-sdk'
2
3
  import { useMemo } from 'react'
3
4
 
4
5
  import {
5
6
  formatFee, formatNumber, formatResults,
6
7
  } from '../../../../lib/index.ts'
7
8
 
8
- export const useTransactionDetails = (wrapper: HydratedTransactionInstance) => {
9
+ export const useTransactionDetails = (wrapper: HydratedTransactionInstance | undefined) => {
9
10
  const stats = useMemo(() => {
11
+ if (isUndefined(wrapper)) return
10
12
  const stats = {
11
13
  'Reward': formatNumber(wrapper.reward()),
12
14
  'On Chain Payloads': formatNumber(wrapper.elevatedPayloadCount),
@@ -19,6 +21,7 @@ export const useTransactionDetails = (wrapper: HydratedTransactionInstance) => {
19
21
  }, [wrapper])
20
22
 
21
23
  const fees = useMemo(() => {
24
+ if (isUndefined(wrapper)) return
22
25
  const fees = {
23
26
  'Base': formatFee(wrapper.fees.base),
24
27
  'Gas': formatFee(wrapper.fees.gasPrice),
@@ -30,6 +33,7 @@ export const useTransactionDetails = (wrapper: HydratedTransactionInstance) => {
30
33
  }, [wrapper])
31
34
 
32
35
  const blockDuration = useMemo(() => {
36
+ if (isUndefined(wrapper)) return
33
37
  const blockDuration = {
34
38
  'Expiration': wrapper.boundWitness.exp.toLocaleString(navigator.language ?? 'en-US'),
35
39
  'Not Before': wrapper.boundWitness.nbf.toLocaleString(navigator.language ?? 'en-US'),
@@ -4,8 +4,8 @@ import { isDefined, isHash } from '@xylabs/sdk-js'
4
4
  import { PayloadBuilder } from '@xyo-network/payload-builder'
5
5
  import type { Schema } from '@xyo-network/payload-model'
6
6
  import { isSchema } from '@xyo-network/payload-model'
7
- import type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'
8
- import { useMemo, useState } from 'react'
7
+ import type { HydratedTransactionInstance } from '@xyo-network/xl1-sdk'
8
+ import { useMemo } from 'react'
9
9
 
10
10
  import { formatPayloadsForTable } from '../../../lib/index.ts'
11
11
 
@@ -30,9 +30,9 @@ export const useTransactionPayloadTypes = (wrapper?: HydratedTransactionInstance
30
30
  }
31
31
  }, [wrapper])
32
32
 
33
- const [referencedPayloadsError, setReferencedPayloadsError] = useState<Error[]>([])
34
- const referencedPayloads = useMemo(() => {
33
+ const [referencedPayloads, referencedPayloadsError] = useMemo(() => {
35
34
  const ret = { hashes: [] as Hash[], schemas: [] as Schema[] }
35
+ const errors: Error[] = []
36
36
  if (isDefined(wrapper)) {
37
37
  const referencedPayloads = wrapper.privateExternalPayloads
38
38
  for (const [hash, schema] of Object.entries(referencedPayloads)) {
@@ -46,14 +46,12 @@ export const useTransactionPayloadTypes = (wrapper?: HydratedTransactionInstance
46
46
  resolved = true
47
47
  }
48
48
  if (!resolved) {
49
- setReferencedPayloadsError(prev => [...prev, new Error(`Unexpected payload or schema type for hash ${hash}: ${schema}`)])
49
+ errors.push(new Error(`Unexpected payload or schema type for hash ${hash}: ${schema}`))
50
50
  }
51
51
  }
52
- return ret
53
- } else {
54
- return ret
55
52
  }
56
- }, [wrapper, elevatedPayloadSets])
53
+ return [ret, errors] as const
54
+ }, [wrapper])
57
55
 
58
56
  const { hashes: elevatedPayloadHashes, schemas: elevatedPayloadSchemas } = elevatedPayloadSets ?? {}
59
57
  const { hashes: publicPayloadHashes, schemas: publicPayloadSchemas } = publicPayloads ?? {}