@tuwaio/nova-transactions 0.4.5 → 0.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,203 +1,165 @@
1
- # TUWA Nova Transactions
1
+ # @tuwaio/nova-transactions
2
2
 
3
3
  [![NPM Version](https://img.shields.io/npm/v/@tuwaio/nova-transactions.svg)](https://www.npmjs.com/package/@tuwaio/nova-transactions)
4
4
  [![License](https://img.shields.io/npm/l/@tuwaio/nova-transactions.svg)](./LICENSE)
5
- [![Build Status](https://img.shields.io/github/actions/workflow/status/TuwaIO/nova-uikit/release.yml?branch=main)](https://github.com/TuwaIO/nova-uikit/actions)
6
5
 
7
- The official React UI component library for the Pulsar transaction engine. It provides a suite of pre-built, accessible, and highly customizable modals, toasts, and history widgets to visualize the entire transaction lifecycle.
6
+ `@tuwaio/nova-transactions` is the **UI Components (L7)** package of the TUWA Ecosystem transaction lifecycle tracking system. It provides the visual layer to monitor, display, and manage active on-chain transactions, consuming state directly from the headless **[Pulsar Engine](https://github.com/TuwaIO/pulsar-core)** state machine.
8
7
 
9
- ---
10
-
11
- ## 🏛️ Architecture
12
-
13
- This package provides the **View Layer** for TUWA's transaction tracking ecosystem. It works by consuming the state from your headless Pulsar store and rendering the appropriate UI. You must connect your Pulsar store's state and actions to the `<NovaTransactionsProvider />` component, which acts as a self-contained UI manager that renders modals and toasts.
8
+ By coupling the UI manager to Pulsar stores, it automatically handles pending loaders, speed-up options, failure overlays, and success notifications, keeping the user in the loop even during congested block space periods.
14
9
 
15
10
  ---
16
11
 
17
- ## ✨ Core Features
12
+ ## 🏛️ Core Capabilities
18
13
 
19
- - **🧩 Pre-built UI Suite:** A set of accessible components including `TrackingTxModal`, `TransactionsInfoModal`, and `ToastTransaction`, all managed internally by the `NovaTransactionsProvider`.
20
- - **🔌 Plug-and-Play Integration:** Once connected to your Pulsar store, the UI automatically reacts to all transaction state changes.
21
- - **🌐 Internationalization (custom version of i18n):** Built-in support for multiple languages with easy overrides for all text content via the `labels` prop.
22
- - **🎨 Highly Customizable:** Styled with `@tuwaio/nova-core` to be easily themed using CSS variables. Almost every sub-component can be replaced with your own implementation via the `customization` prop.
14
+ - **🧩 Interactive Visual Nodes:** Built-in dialogs and widget cards (`TrackingTxModal` for individual status, `TransactionsInfoModal` for full transaction lists, and `ToastTransaction` feeds).
15
+ - **🔌 Isolated Provider Hooks:** The `<NovaTransactionsProvider />` bridges your React tree with Pulsar's transaction history pools and signature polling events.
16
+ - **🎨 Custom Styling overrides:** Style sub-components via CSS variables from `@tuwaio/nova-core` or replace components using the `customization` property.
17
+ - **🌍 Dynamic Internationalization:** Supports overriding labels configuration to localize status messages (`pending`, `success`, `failed`, `replaced`) and actions.
23
18
 
24
19
  ---
25
20
 
26
21
  ## 💾 Installation
27
22
 
28
- ### Basic Installation
29
-
30
- Install the main package:
31
-
32
23
  ```bash
33
- pnpm add @tuwaio/nova-transactions
24
+ pnpm add @tuwaio/nova-transactions @tuwaio/nova-core @tuwaio/pulsar-core @tuwaio/pulsar-react
34
25
  ```
35
26
 
36
- ### Peer Dependencies
27
+ ### Peer Dependencies Check
37
28
 
38
- This package requires several peer dependencies for UI rendering:
29
+ Make sure your project contains the required layout and utility engines:
39
30
 
40
31
  ```bash
41
- # Core dependencies
42
- pnpm add @tuwaio/nova-core @tuwaio/pulsar-core @tuwaio/orbit-core
43
-
44
- # React ecosystem
45
- pnpm add react react-dom zustand immer
46
-
47
- # UI libraries
48
- pnpm add framer-motion @radix-ui/react-dialog @heroicons/react
49
- pnpm add react-toastify @web3icons/common @web3icons/react
50
-
51
- # Utilities
52
- pnpm add dayjs clsx tailwind-merge
53
- ```
32
+ # State & Utilities
33
+ pnpm add zustand immer dayjs clsx tailwind-merge framer-motion
54
34
 
55
- ### Complete Installation (All Packages)
56
-
57
- For a complete setup with all TUWA packages:
58
-
59
- ```bash
60
- # Using pnpm (recommended), but you can use npm, yarn or bun as well
61
- pnpm add @tuwaio/nova-transactions @tuwaio/nova-core @tuwaio/pulsar-core @tuwaio/orbit-core react-toastify framer-motion @radix-ui/react-dialog @heroicons/react @web3icons/common @web3icons/react dayjs react immer zustand clsx tailwind-merge
35
+ # Dialog Primitives & Notifications
36
+ pnpm add @radix-ui/react-dialog @heroicons/react @web3icons/common @web3icons/react react-toastify
62
37
  ```
63
38
 
64
39
  ---
65
40
 
66
- ## 🚀 Getting Started
41
+ ## 🚀 Quick Start Setup
67
42
 
68
- To use this library, you must render the `<NovaTransactionsProvider />` component at a high level in your application and pass the state and actions from your Pulsar store to it as props.
43
+ ### 1. Create the Transaction Store (Pulsar)
69
44
 
70
- Here is a complete example of a `src/providers/index.tsx` file that configures the entire system.
71
-
72
- ### 1. Create Transaction Store
45
+ Initialize the local-first persistent transaction store with chain-specific state adapters:
73
46
 
74
47
  ```tsx
75
- // src/hooks/txTrackingHooks.tsx
76
- import { createBoundedUseStore, createPulsarStore } from '@tuwaio/pulsar-core';
77
- import { evmAdapter } from '@tuwaio/pulsar-evm';
48
+ // src/hooks/usePulsarStore.ts
49
+ 'use client';
78
50
 
79
- import { appChains, config } from '@/configs/wagmiConfig';
51
+ import { createBoundedUseStore, createPulsarStore, Transaction } from '@tuwaio/pulsar-core';
52
+ import { pulsarEvmAdapter } from '@tuwaio/pulsar-evm';
53
+ import { pulsarSolanaAdapter } from '@tuwaio/pulsar-solana';
54
+ import { wagmiConfig, appEVMChains, solanaRPCUrls } from '@/config/appConfig';
80
55
 
81
56
  const storageName = 'transactions-tracking-storage';
82
57
 
83
58
  export enum TxType {
84
- example = 'example',
59
+ swap = 'swap',
85
60
  }
86
61
 
87
- type ExampleTx = Transaction & {
88
- type: TxType.example;
89
- payload: {
90
- value: number;
91
- };
62
+ type SwapTx = Transaction & {
63
+ type: TxType.swap;
64
+ payload: { from: string; to: string; amount: string };
92
65
  };
93
66
 
94
- export type TransactionUnion = ExampleTx;
67
+ export type TransactionUnion = SwapTx;
95
68
 
96
69
  export const usePulsarStore = createBoundedUseStore(
97
70
  createPulsarStore<TransactionUnion>({
98
71
  name: storageName,
99
- adapter: evmAdapter(config, appChains),
72
+ adapter: [pulsarEvmAdapter(wagmiConfig, appEVMChains), pulsarSolanaAdapter({ rpcUrls: solanaRPCUrls })],
73
+ maxTransactions: 50, // prevent localStorage bloat
100
74
  }),
101
75
  );
102
76
  ```
103
77
 
104
- ### 2. Setup Provider Component
78
+ ### 2. Setup the Transactions UI Provider
79
+
80
+ Create a bridge component connecting your Pulsar store parameters and Satellite wallet state with the Nova Transactions UI:
105
81
 
106
82
  ```tsx
107
- // src/providers/NovaTransactionsProvider.tsx
108
- import { NovaTransactionsProvider as NP } from '@tuwaio/nova-transactions/providers';
109
- import { TransactionAdapter } from '@tuwaio/pulsar-core';
83
+ // src/providers/NovaTransactionsWrapper.tsx
84
+ 'use client';
85
+
86
+ import { useSatelliteConnectStore } from '@tuwaio/nova-connect/satellite';
87
+ import { NovaTransactionsProvider as NTP } from '@tuwaio/nova-transactions/providers';
88
+ import { getAdapterFromConnectorType } from '@tuwaio/orbit-core';
110
89
  import { useInitializeTransactionsPool } from '@tuwaio/pulsar-react';
111
- import { useAccount } from 'wagmi';
112
90
 
113
- import { usePulsarStore } from '@/hooks/txTrackingHooks';
91
+ import { usePulsarStore } from '@/hooks/usePulsarStore';
114
92
 
115
- export function NovaTransactionsProvider() {
116
- const transactionsPool = usePulsarStore((state) => state.transactionsPool);
93
+ export function NovaTransactionsWrapper() {
94
+ const getAdapter = usePulsarStore((state) => state.getAdapter);
117
95
  const initialTx = usePulsarStore((state) => state.initialTx);
118
96
  const closeTxTrackedModal = usePulsarStore((state) => state.closeTxTrackedModal);
119
- const handleTransaction = usePulsarStore((state) => state.handleTransaction);
97
+ const transactionsPool = usePulsarStore((state) => state.transactionsPool);
98
+ const executeTxAction = usePulsarStore((state) => state.executeTxAction);
120
99
  const initializeTransactionsPool = usePulsarStore((state) => state.initializeTransactionsPool);
121
- const getAdapter = usePulsarStore((state) => state.getAdapter);
122
100
 
123
- useInitializeTransactionsPool({ initializeTransactionsPool });
101
+ const activeConnection = useSatelliteConnectStore((state) => state.activeConnection);
124
102
 
125
- const { address } = useAccount();
103
+ // Resume tracking for active pending signatures on mount
104
+ useInitializeTransactionsPool({ initializeTransactionsPool });
126
105
 
127
106
  return (
128
- <NP
107
+ <NTP
129
108
  transactionsPool={transactionsPool}
130
109
  initialTx={initialTx}
131
110
  closeTxTrackedModal={closeTxTrackedModal}
132
- handleTransaction={handleTransaction}
133
- connectedWalletAddress={address}
134
- connectedAdapterType={TransactionAdapter.EVM}
111
+ executeTxAction={executeTxAction}
112
+ connectedWalletAddress={activeConnection?.isConnected ? activeConnection.address : undefined}
113
+ connectedAdapterType={getAdapterFromConnectorType(activeConnection?.connectorType ?? 'evm:')}
135
114
  adapter={getAdapter()}
136
115
  />
137
116
  );
138
117
  }
139
118
  ```
140
119
 
141
- ### 3. Integrate into App
120
+ ### 3. Usage in Action Buttons
142
121
 
143
- ```tsx
144
- // src/providers/index.tsx
145
- import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
146
- import { ReactNode } from 'react';
147
- import { WagmiProvider } from 'wagmi';
122
+ Call the action wrapper to trigger on-chain operations and auto-render status modals:
148
123
 
149
- import { config } from '@/configs/wagmiConfig';
150
-
151
- import { NovaTransactionsProvider } from './NovaTransactionsProvider';
152
-
153
- const queryClient = new QueryClient();
124
+ ```tsx
125
+ import { usePulsarStore, TxType } from '@/hooks/usePulsarStore';
126
+ import { OrbitAdapter } from '@tuwaio/orbit-core';
127
+ import { mainnet } from 'viem/chains';
128
+
129
+ export function SwapButton() {
130
+ const executeTxAction = usePulsarStore((state) => state.executeTxAction);
131
+
132
+ const triggerSwap = async () => {
133
+ const swapFunction = async () => {
134
+ // Execute smart contract write method and return the hash
135
+ return '0x...';
136
+ };
137
+
138
+ await executeTxAction({
139
+ actionFunction: swapFunction,
140
+ onSuccess: (tx) => console.log('Transaction succeeded!', tx.hash),
141
+ params: {
142
+ type: TxType.swap,
143
+ adapter: OrbitAdapter.EVM,
144
+ desiredChainID: mainnet.id,
145
+ title: 'Swap ETH',
146
+ description: 'Swapping 1 ETH for USDC',
147
+ payload: { from: 'ETH', to: 'USDC', amount: '1' },
148
+ withTrackedModal: true, // opens tracking overlay automatically
149
+ },
150
+ });
151
+ };
154
152
 
155
- export function Providers({ children }: { children: ReactNode }) {
156
153
  return (
157
- <WagmiProvider config={config}>
158
- <QueryClientProvider client={queryClient}>
159
- <NovaTransactionsProvider />
160
- {children}
161
- </QueryClientProvider>
162
- </WagmiProvider>
154
+ <button onClick={triggerSwap} className="btn-primary">
155
+ Execute Swap
156
+ </button>
163
157
  );
164
158
  }
165
159
  ```
166
160
 
167
- ## 🎨 Customization
168
-
169
- You can easily override the default English text by passing a `labels` prop, or replace entire components using the `customization` prop.
170
-
171
- ```tsx
172
- <NovaTransactionsProvider
173
- // 1. Override text labels
174
- labels={{
175
- statuses: {
176
- pending: 'В обработке...',
177
- success: 'Успешно!',
178
- failed: 'Ошибка!',
179
- },
180
- // ... other keys
181
- }}
182
- customization={{
183
- components: {
184
- statusBadge: ({ tx }) => <MyCustomBadge status={tx.status} />,
185
- },
186
- }}
187
- // ... other required props
188
- />
189
- ```
190
-
191
161
  ---
192
162
 
193
- ## 🤝 Contributing & Support
194
-
195
- Contributions are welcome! Please read our main **[Contribution Guidelines](https://github.com/TuwaIO/workflows/blob/main/CONTRIBUTING.md)**.
196
-
197
- If you find this library useful, please consider supporting its development. Every contribution helps!
198
-
199
- [**➡️ View Support Options**](https://github.com/TuwaIO/workflows/blob/main/Donation.md)
200
-
201
163
  ## 📄 License
202
164
 
203
- This project is licensed under the **Apache-2.0 License** - see the [LICENSE](./LICENSE) file for details.
165
+ Licensed under the **Apache-2.0 License**. See the [LICENSE](./LICENSE) file for details.
@@ -1,7 +1,7 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as react from 'react';
2
+ import { ReactNode, ComponentType, ComponentPropsWithoutRef, JSX } from 'react';
2
3
  import { ToastCloseButtonProps, DialogContent } from '@tuwaio/nova-core';
3
4
  import { TransactionStatus, Transaction, TxAdapter, TransactionPool, TxInMemoryPagination, ITxTrackingStore, InitialTransaction } from '@tuwaio/pulsar-core';
4
- import { ReactNode, ComponentType, ComponentPropsWithoutRef, JSX } from 'react';
5
5
  import { OrbitAdapter, TuwaErrorState } from '@tuwaio/orbit-core';
6
6
  import { ToastContentProps, ToastContainerProps } from 'react-toastify';
7
7
  import { MotionProps } from 'framer-motion';
@@ -35,7 +35,7 @@ type HashLinkProps = {
35
35
  linkIcon?: string;
36
36
  };
37
37
  };
38
- declare function HashLink({ label, hash, explorerUrl, variant, className, classNames }: HashLinkProps): react_jsx_runtime.JSX.Element;
38
+ declare function HashLink({ label, hash, explorerUrl, variant, className, classNames }: HashLinkProps): react.JSX.Element;
39
39
 
40
40
  /**
41
41
  * @file This file contains the `StatusAwareText` component, which displays different text based on a transaction's status.
@@ -518,7 +518,7 @@ type NovaTransactionsProviderProps<T extends Transaction> = {
518
518
  *
519
519
  * @template T The specific transaction type, extending the base `Transaction`.
520
520
  */
521
- declare function NovaTransactionsProvider<T extends Transaction>({ adapter, connectedWalletAddress, connectedAdapterType, transactionsPool, initialTx, executeTxAction, closeTxTrackedModal, labels, features, customization, pagination, ...toastProps }: NovaTransactionsProviderProps<T>): react_jsx_runtime.JSX.Element;
521
+ declare function NovaTransactionsProvider<T extends Transaction>({ adapter, connectedWalletAddress, connectedAdapterType, transactionsPool, initialTx, executeTxAction, closeTxTrackedModal, labels, features, customization, pagination, ...toastProps }: NovaTransactionsProviderProps<T>): react.JSX.Element;
522
522
 
523
523
  type TransactionKeyProps<T extends Transaction> = Pick<NovaTransactionsProviderProps<T>, 'adapter'> & {
524
524
  tx: T;
@@ -531,7 +531,7 @@ type TransactionKeyProps<T extends Transaction> = Pick<NovaTransactionsProviderP
531
531
  /** ClassNames for original hash link in replaced transactions (falls back to hashLinkClassNames) */
532
532
  originalHashLinkClassNames?: HashLinkProps['classNames'];
533
533
  };
534
- declare function TransactionKey<T extends Transaction>({ tx, adapter, variant, className, renderHashLink, confirmations, hashLinkClassNames, originalHashLinkClassNames, }: TransactionKeyProps<T>): react_jsx_runtime.JSX.Element | null;
534
+ declare function TransactionKey<T extends Transaction>({ tx, adapter, variant, className, renderHashLink, confirmations, hashLinkClassNames, originalHashLinkClassNames, }: TransactionKeyProps<T>): react.JSX.Element | null;
535
535
 
536
536
  type TransactionStatusBadgeProps<T extends Transaction> = {
537
537
  tx: T;
@@ -546,7 +546,7 @@ type TransactionStatusBadgeProps<T extends Transaction> = {
546
546
  label?: string;
547
547
  };
548
548
  };
549
- declare function TransactionStatusBadge<T extends Transaction>({ tx, className, classNames, }: TransactionStatusBadgeProps<T>): react_jsx_runtime.JSX.Element;
549
+ declare function TransactionStatusBadge<T extends Transaction>({ tx, className, classNames, }: TransactionStatusBadgeProps<T>): react.JSX.Element;
550
550
 
551
551
  /**
552
552
  * @file This file contains the `ToastTransaction` component, which serves as the main body for a transaction notification toast.
@@ -716,7 +716,7 @@ type TrackingTxModalProps<T extends Transaction> = Pick<NovaTransactionsProvider
716
716
  className?: string;
717
717
  customization?: TrackingTxModalCustomization<T>;
718
718
  };
719
- declare function TrackingTxModal<T extends Transaction>({ adapter, onClose, onOpenAllTransactions, className, customization, transactionsPool, executeTxAction, initialTx, connectedWalletAddress, }: TrackingTxModalProps<T>): react_jsx_runtime.JSX.Element | null;
719
+ declare function TrackingTxModal<T extends Transaction>({ adapter, onClose, onOpenAllTransactions, className, customization, transactionsPool, executeTxAction, initialTx, connectedWalletAddress, }: TrackingTxModalProps<T>): react.JSX.Element | null;
720
720
 
721
721
  type TxErrorBlockClassNames = {
722
722
  /** Classes for the container */
@@ -747,7 +747,7 @@ type TxErrorBlockProps = {
747
747
  * It includes a title, an icon, the error message in a scrollable area,
748
748
  * and a button to copy the message to the clipboard.
749
749
  */
750
- declare function TxErrorBlock({ error, className, classNames }: TxErrorBlockProps): react_jsx_runtime.JSX.Element | null;
750
+ declare function TxErrorBlock({ error, className, classNames }: TxErrorBlockProps): react.JSX.Element | null;
751
751
 
752
752
  type CustomInfoRowProps = {
753
753
  label: ReactNode;
@@ -793,7 +793,7 @@ type TxInfoBlockProps<T extends Transaction> = {
793
793
  * A component that displays a block of essential transaction details,
794
794
  * such as network, timestamps, Solana-specific details, and relevant hashes/keys.
795
795
  */
796
- declare function TxInfoBlock<T extends Transaction>({ tx, adapter, className, customization }: TxInfoBlockProps<T>): react_jsx_runtime.JSX.Element | null;
796
+ declare function TxInfoBlock<T extends Transaction>({ tx, adapter, className, customization }: TxInfoBlockProps<T>): react.JSX.Element | null;
797
797
 
798
798
  type StepStatus = 'active' | 'completed' | 'error' | 'inactive' | 'replaced';
799
799
  /** ClassNames for step styling overrides */
@@ -830,7 +830,7 @@ interface TxProgressIndicatorProps {
830
830
  /** ClassNames for step customization */
831
831
  stepClassNames?: StepClassNames;
832
832
  }
833
- declare function TxProgressIndicator({ isProcessing, isSucceed, isFailed, isReplaced, className, StepComponent, stepClassNames, }: TxProgressIndicatorProps): react_jsx_runtime.JSX.Element;
833
+ declare function TxProgressIndicator({ isProcessing, isSucceed, isFailed, isReplaced, className, StepComponent, stepClassNames, }: TxProgressIndicatorProps): react.JSX.Element;
834
834
 
835
835
  /**
836
836
  * @file This file contains the `TxStatusVisual` component, which displays a large icon representing the transaction's status.
@@ -860,7 +860,7 @@ type TxStatusVisualProps = {
860
860
  * A component that renders a large, animated icon to visually represent the
861
861
  * current state of a transaction within the tracking modal.
862
862
  */
863
- declare function TxStatusVisual({ isProcessing, isSucceed, isFailed, isReplaced, className: containerClassName, iconClassNames, }: TxStatusVisualProps): react_jsx_runtime.JSX.Element;
863
+ declare function TxStatusVisual({ isProcessing, isSucceed, isFailed, isReplaced, className: containerClassName, iconClassNames, }: TxStatusVisualProps): react.JSX.Element;
864
864
 
865
865
  /** Props for a copyable field block */
866
866
  type CopyableFieldProps = {
@@ -923,6 +923,7 @@ type TransactionDetailsCustomization = {
923
923
  statusIconContainer?: string;
924
924
  title?: string;
925
925
  subtitle?: string;
926
+ sectionHeader?: string;
926
927
  coreInfoCard?: string;
927
928
  networkBadge?: string;
928
929
  metadataSection?: string;
@@ -953,7 +954,7 @@ type TransactionDetailsProps<T extends Transaction> = Pick<NovaTransactionsProvi
953
954
  /**
954
955
  * TransactionDetails component provides a deep look into a specific transaction's metadata and execution state.
955
956
  */
956
- declare function TransactionDetails<T extends Transaction>({ tx, onBack, adapter, className, customization, }: TransactionDetailsProps<T>): react_jsx_runtime.JSX.Element;
957
+ declare function TransactionDetails<T extends Transaction>({ tx, onBack, adapter, className, customization, }: TransactionDetailsProps<T>): react.JSX.Element;
957
958
 
958
959
  /**
959
960
  * @file This file contains the `TransactionHistoryItem` component, which renders a single transaction
@@ -1130,7 +1131,7 @@ type TransactionsHistoryProps<T extends Transaction> = Pick<NovaTransactionsProv
1130
1131
  /** Whether transaction details can be viewed by clicking on history items. Defaults to true. */
1131
1132
  canViewDetails?: boolean;
1132
1133
  };
1133
- declare function TransactionsHistory<T extends Transaction>({ adapter, connectedWalletAddress, transactionsPool, className, customization, pagination, initialTxKey, canViewDetails, }: TransactionsHistoryProps<T>): react_jsx_runtime.JSX.Element;
1134
+ declare function TransactionsHistory<T extends Transaction>({ adapter, connectedWalletAddress, transactionsPool, className, customization, pagination, initialTxKey, canViewDetails, }: TransactionsHistoryProps<T>): react.JSX.Element;
1134
1135
 
1135
1136
  type CustomHeaderProps = {
1136
1137
  closeModal: () => void;
@@ -1165,6 +1166,6 @@ type TransactionsInfoModalProps<T extends Transaction> = Pick<NovaTransactionsPr
1165
1166
  /** Optional transaction key to open directly in detail view */
1166
1167
  selectedTxKey?: string | null;
1167
1168
  };
1168
- declare function TransactionsInfoModal<T extends Transaction>({ isOpen, setIsOpen, customization, adapter, connectedWalletAddress, transactionsPool, pagination, selectedTxKey, }: TransactionsInfoModalProps<T>): react_jsx_runtime.JSX.Element;
1169
+ declare function TransactionsInfoModal<T extends Transaction>({ isOpen, setIsOpen, customization, adapter, connectedWalletAddress, transactionsPool, pagination, selectedTxKey, }: TransactionsInfoModalProps<T>): react.JSX.Element;
1169
1170
 
1170
1171
  export { type TxStatusVisualClassNames as $, type TransactionKeyProps as A, TransactionStatusBadge as B, type CopyableFieldProps as C, type DetailItemProps as D, type TransactionStatusBadgeProps as E, TransactionsHistory as F, type TransactionsHistoryCustomization as G, HashLink as H, type TransactionsHistoryLoaderProps as I, type JsonBlockProps as J, type TransactionsHistoryProps as K, TransactionsInfoModal as L, type MetadataRowProps as M, type NovaTransactionsLabels as N, type TransactionsInfoModalCustomization as O, type TransactionsInfoModalProps as P, TxErrorBlock as Q, type TxErrorBlockClassNames as R, StatusAwareText as S, ToastTransaction as T, type TxErrorBlockProps as U, TxInfoBlock as V, type TxInfoBlockCustomization as W, type TxInfoBlockProps as X, TxProgressIndicator as Y, type TxProgressIndicatorProps as Z, TxStatusVisual as _, type HashLinkProps as a, type TxStatusVisualProps as a0, NovaTransactionsProvider as a1, type NovaTransactionsProviderProps as a2, type StatusAwareTextProps as b, type StepClassNames as c, type StepProps as d, type StepStatus as e, type ToastTransactionCustomization as f, type ToastTransactionProps as g, ToastValidationError as h, type ToastValidationErrorClassNames as i, type ToastValidationErrorCopyContentProps as j, type ToastValidationErrorCustomization as k, type ToastValidationErrorFieldProps as l, type ToastValidationErrorIconProps as m, type ToastValidationErrorMessageProps as n, type ToastValidationErrorProps as o, type ToastValidationErrorTitleProps as p, TrackingTxModal as q, type TrackingTxModalCustomization as r, type TrackingTxModalProps as s, TransactionDetails as t, type TransactionDetailsCustomization as u, type TransactionDetailsProps as v, TransactionHistoryItem as w, type TransactionHistoryItemCustomization as x, type TransactionHistoryItemProps as y, TransactionKey as z };
@@ -1,7 +1,7 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as react from 'react';
2
+ import { ReactNode, ComponentType, ComponentPropsWithoutRef, JSX } from 'react';
2
3
  import { ToastCloseButtonProps, DialogContent } from '@tuwaio/nova-core';
3
4
  import { TransactionStatus, Transaction, TxAdapter, TransactionPool, TxInMemoryPagination, ITxTrackingStore, InitialTransaction } from '@tuwaio/pulsar-core';
4
- import { ReactNode, ComponentType, ComponentPropsWithoutRef, JSX } from 'react';
5
5
  import { OrbitAdapter, TuwaErrorState } from '@tuwaio/orbit-core';
6
6
  import { ToastContentProps, ToastContainerProps } from 'react-toastify';
7
7
  import { MotionProps } from 'framer-motion';
@@ -35,7 +35,7 @@ type HashLinkProps = {
35
35
  linkIcon?: string;
36
36
  };
37
37
  };
38
- declare function HashLink({ label, hash, explorerUrl, variant, className, classNames }: HashLinkProps): react_jsx_runtime.JSX.Element;
38
+ declare function HashLink({ label, hash, explorerUrl, variant, className, classNames }: HashLinkProps): react.JSX.Element;
39
39
 
40
40
  /**
41
41
  * @file This file contains the `StatusAwareText` component, which displays different text based on a transaction's status.
@@ -518,7 +518,7 @@ type NovaTransactionsProviderProps<T extends Transaction> = {
518
518
  *
519
519
  * @template T The specific transaction type, extending the base `Transaction`.
520
520
  */
521
- declare function NovaTransactionsProvider<T extends Transaction>({ adapter, connectedWalletAddress, connectedAdapterType, transactionsPool, initialTx, executeTxAction, closeTxTrackedModal, labels, features, customization, pagination, ...toastProps }: NovaTransactionsProviderProps<T>): react_jsx_runtime.JSX.Element;
521
+ declare function NovaTransactionsProvider<T extends Transaction>({ adapter, connectedWalletAddress, connectedAdapterType, transactionsPool, initialTx, executeTxAction, closeTxTrackedModal, labels, features, customization, pagination, ...toastProps }: NovaTransactionsProviderProps<T>): react.JSX.Element;
522
522
 
523
523
  type TransactionKeyProps<T extends Transaction> = Pick<NovaTransactionsProviderProps<T>, 'adapter'> & {
524
524
  tx: T;
@@ -531,7 +531,7 @@ type TransactionKeyProps<T extends Transaction> = Pick<NovaTransactionsProviderP
531
531
  /** ClassNames for original hash link in replaced transactions (falls back to hashLinkClassNames) */
532
532
  originalHashLinkClassNames?: HashLinkProps['classNames'];
533
533
  };
534
- declare function TransactionKey<T extends Transaction>({ tx, adapter, variant, className, renderHashLink, confirmations, hashLinkClassNames, originalHashLinkClassNames, }: TransactionKeyProps<T>): react_jsx_runtime.JSX.Element | null;
534
+ declare function TransactionKey<T extends Transaction>({ tx, adapter, variant, className, renderHashLink, confirmations, hashLinkClassNames, originalHashLinkClassNames, }: TransactionKeyProps<T>): react.JSX.Element | null;
535
535
 
536
536
  type TransactionStatusBadgeProps<T extends Transaction> = {
537
537
  tx: T;
@@ -546,7 +546,7 @@ type TransactionStatusBadgeProps<T extends Transaction> = {
546
546
  label?: string;
547
547
  };
548
548
  };
549
- declare function TransactionStatusBadge<T extends Transaction>({ tx, className, classNames, }: TransactionStatusBadgeProps<T>): react_jsx_runtime.JSX.Element;
549
+ declare function TransactionStatusBadge<T extends Transaction>({ tx, className, classNames, }: TransactionStatusBadgeProps<T>): react.JSX.Element;
550
550
 
551
551
  /**
552
552
  * @file This file contains the `ToastTransaction` component, which serves as the main body for a transaction notification toast.
@@ -716,7 +716,7 @@ type TrackingTxModalProps<T extends Transaction> = Pick<NovaTransactionsProvider
716
716
  className?: string;
717
717
  customization?: TrackingTxModalCustomization<T>;
718
718
  };
719
- declare function TrackingTxModal<T extends Transaction>({ adapter, onClose, onOpenAllTransactions, className, customization, transactionsPool, executeTxAction, initialTx, connectedWalletAddress, }: TrackingTxModalProps<T>): react_jsx_runtime.JSX.Element | null;
719
+ declare function TrackingTxModal<T extends Transaction>({ adapter, onClose, onOpenAllTransactions, className, customization, transactionsPool, executeTxAction, initialTx, connectedWalletAddress, }: TrackingTxModalProps<T>): react.JSX.Element | null;
720
720
 
721
721
  type TxErrorBlockClassNames = {
722
722
  /** Classes for the container */
@@ -747,7 +747,7 @@ type TxErrorBlockProps = {
747
747
  * It includes a title, an icon, the error message in a scrollable area,
748
748
  * and a button to copy the message to the clipboard.
749
749
  */
750
- declare function TxErrorBlock({ error, className, classNames }: TxErrorBlockProps): react_jsx_runtime.JSX.Element | null;
750
+ declare function TxErrorBlock({ error, className, classNames }: TxErrorBlockProps): react.JSX.Element | null;
751
751
 
752
752
  type CustomInfoRowProps = {
753
753
  label: ReactNode;
@@ -793,7 +793,7 @@ type TxInfoBlockProps<T extends Transaction> = {
793
793
  * A component that displays a block of essential transaction details,
794
794
  * such as network, timestamps, Solana-specific details, and relevant hashes/keys.
795
795
  */
796
- declare function TxInfoBlock<T extends Transaction>({ tx, adapter, className, customization }: TxInfoBlockProps<T>): react_jsx_runtime.JSX.Element | null;
796
+ declare function TxInfoBlock<T extends Transaction>({ tx, adapter, className, customization }: TxInfoBlockProps<T>): react.JSX.Element | null;
797
797
 
798
798
  type StepStatus = 'active' | 'completed' | 'error' | 'inactive' | 'replaced';
799
799
  /** ClassNames for step styling overrides */
@@ -830,7 +830,7 @@ interface TxProgressIndicatorProps {
830
830
  /** ClassNames for step customization */
831
831
  stepClassNames?: StepClassNames;
832
832
  }
833
- declare function TxProgressIndicator({ isProcessing, isSucceed, isFailed, isReplaced, className, StepComponent, stepClassNames, }: TxProgressIndicatorProps): react_jsx_runtime.JSX.Element;
833
+ declare function TxProgressIndicator({ isProcessing, isSucceed, isFailed, isReplaced, className, StepComponent, stepClassNames, }: TxProgressIndicatorProps): react.JSX.Element;
834
834
 
835
835
  /**
836
836
  * @file This file contains the `TxStatusVisual` component, which displays a large icon representing the transaction's status.
@@ -860,7 +860,7 @@ type TxStatusVisualProps = {
860
860
  * A component that renders a large, animated icon to visually represent the
861
861
  * current state of a transaction within the tracking modal.
862
862
  */
863
- declare function TxStatusVisual({ isProcessing, isSucceed, isFailed, isReplaced, className: containerClassName, iconClassNames, }: TxStatusVisualProps): react_jsx_runtime.JSX.Element;
863
+ declare function TxStatusVisual({ isProcessing, isSucceed, isFailed, isReplaced, className: containerClassName, iconClassNames, }: TxStatusVisualProps): react.JSX.Element;
864
864
 
865
865
  /** Props for a copyable field block */
866
866
  type CopyableFieldProps = {
@@ -923,6 +923,7 @@ type TransactionDetailsCustomization = {
923
923
  statusIconContainer?: string;
924
924
  title?: string;
925
925
  subtitle?: string;
926
+ sectionHeader?: string;
926
927
  coreInfoCard?: string;
927
928
  networkBadge?: string;
928
929
  metadataSection?: string;
@@ -953,7 +954,7 @@ type TransactionDetailsProps<T extends Transaction> = Pick<NovaTransactionsProvi
953
954
  /**
954
955
  * TransactionDetails component provides a deep look into a specific transaction's metadata and execution state.
955
956
  */
956
- declare function TransactionDetails<T extends Transaction>({ tx, onBack, adapter, className, customization, }: TransactionDetailsProps<T>): react_jsx_runtime.JSX.Element;
957
+ declare function TransactionDetails<T extends Transaction>({ tx, onBack, adapter, className, customization, }: TransactionDetailsProps<T>): react.JSX.Element;
957
958
 
958
959
  /**
959
960
  * @file This file contains the `TransactionHistoryItem` component, which renders a single transaction
@@ -1130,7 +1131,7 @@ type TransactionsHistoryProps<T extends Transaction> = Pick<NovaTransactionsProv
1130
1131
  /** Whether transaction details can be viewed by clicking on history items. Defaults to true. */
1131
1132
  canViewDetails?: boolean;
1132
1133
  };
1133
- declare function TransactionsHistory<T extends Transaction>({ adapter, connectedWalletAddress, transactionsPool, className, customization, pagination, initialTxKey, canViewDetails, }: TransactionsHistoryProps<T>): react_jsx_runtime.JSX.Element;
1134
+ declare function TransactionsHistory<T extends Transaction>({ adapter, connectedWalletAddress, transactionsPool, className, customization, pagination, initialTxKey, canViewDetails, }: TransactionsHistoryProps<T>): react.JSX.Element;
1134
1135
 
1135
1136
  type CustomHeaderProps = {
1136
1137
  closeModal: () => void;
@@ -1165,6 +1166,6 @@ type TransactionsInfoModalProps<T extends Transaction> = Pick<NovaTransactionsPr
1165
1166
  /** Optional transaction key to open directly in detail view */
1166
1167
  selectedTxKey?: string | null;
1167
1168
  };
1168
- declare function TransactionsInfoModal<T extends Transaction>({ isOpen, setIsOpen, customization, adapter, connectedWalletAddress, transactionsPool, pagination, selectedTxKey, }: TransactionsInfoModalProps<T>): react_jsx_runtime.JSX.Element;
1169
+ declare function TransactionsInfoModal<T extends Transaction>({ isOpen, setIsOpen, customization, adapter, connectedWalletAddress, transactionsPool, pagination, selectedTxKey, }: TransactionsInfoModalProps<T>): react.JSX.Element;
1169
1170
 
1170
1171
  export { type TxStatusVisualClassNames as $, type TransactionKeyProps as A, TransactionStatusBadge as B, type CopyableFieldProps as C, type DetailItemProps as D, type TransactionStatusBadgeProps as E, TransactionsHistory as F, type TransactionsHistoryCustomization as G, HashLink as H, type TransactionsHistoryLoaderProps as I, type JsonBlockProps as J, type TransactionsHistoryProps as K, TransactionsInfoModal as L, type MetadataRowProps as M, type NovaTransactionsLabels as N, type TransactionsInfoModalCustomization as O, type TransactionsInfoModalProps as P, TxErrorBlock as Q, type TxErrorBlockClassNames as R, StatusAwareText as S, ToastTransaction as T, type TxErrorBlockProps as U, TxInfoBlock as V, type TxInfoBlockCustomization as W, type TxInfoBlockProps as X, TxProgressIndicator as Y, type TxProgressIndicatorProps as Z, TxStatusVisual as _, type HashLinkProps as a, type TxStatusVisualProps as a0, NovaTransactionsProvider as a1, type NovaTransactionsProviderProps as a2, type StatusAwareTextProps as b, type StepClassNames as c, type StepProps as d, type StepStatus as e, type ToastTransactionCustomization as f, type ToastTransactionProps as g, ToastValidationError as h, type ToastValidationErrorClassNames as i, type ToastValidationErrorCopyContentProps as j, type ToastValidationErrorCustomization as k, type ToastValidationErrorFieldProps as l, type ToastValidationErrorIconProps as m, type ToastValidationErrorMessageProps as n, type ToastValidationErrorProps as o, type ToastValidationErrorTitleProps as p, TrackingTxModal as q, type TrackingTxModalCustomization as r, type TrackingTxModalProps as s, TransactionDetails as t, type TransactionDetailsCustomization as u, type TransactionDetailsProps as v, TransactionHistoryItem as w, type TransactionHistoryItemCustomization as x, type TransactionHistoryItemProps as y, TransactionKey as z };