@0xobelisk/react 1.2.0-pre.100
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/LICENSE +92 -0
- package/README.md +605 -0
- package/dist/chunk-R3BJRALM.mjs +489 -0
- package/dist/chunk-R3BJRALM.mjs.map +1 -0
- package/dist/index.d.mts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +519 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +29 -0
- package/dist/index.mjs.map +1 -0
- package/dist/sui/config.d.ts +52 -0
- package/dist/sui/hooks.d.ts +159 -0
- package/dist/sui/index.d.mts +389 -0
- package/dist/sui/index.d.ts +389 -0
- package/dist/sui/index.js +519 -0
- package/dist/sui/index.js.map +1 -0
- package/dist/sui/index.mjs +29 -0
- package/dist/sui/index.mjs.map +1 -0
- package/dist/sui/provider.d.ts +189 -0
- package/dist/sui/types.d.ts +100 -0
- package/dist/sui/utils.d.ts +35 -0
- package/package.json +104 -0
- package/src/index.ts +16 -0
- package/src/sui/config.ts +90 -0
- package/src/sui/hooks.ts +174 -0
- package/src/sui/index.ts +40 -0
- package/src/sui/provider.tsx +540 -0
- package/src/sui/types.ts +105 -0
- package/src/sui/utils.ts +213 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Management for Dubhe React Integration
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Type-safe configuration interface
|
|
6
|
+
* - Configuration validation and error handling
|
|
7
|
+
* - Smart merging of defaults and explicit config
|
|
8
|
+
* - No environment variable handling (developers should handle environment variables themselves)
|
|
9
|
+
*/
|
|
10
|
+
import type { DubheConfig } from './types';
|
|
11
|
+
/**
|
|
12
|
+
* Default configuration object with sensible defaults
|
|
13
|
+
*/
|
|
14
|
+
export declare const DEFAULT_CONFIG: Partial<DubheConfig>;
|
|
15
|
+
/**
|
|
16
|
+
* Configuration Hook: useDubheConfig
|
|
17
|
+
*
|
|
18
|
+
* Merges defaults with explicit configuration provided by the developer
|
|
19
|
+
*
|
|
20
|
+
* Note: Environment variables should be handled by the developer before passing to this hook
|
|
21
|
+
*
|
|
22
|
+
* @param config - Complete or partial configuration object
|
|
23
|
+
* @returns Complete, validated DubheConfig
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* // Basic usage with explicit config
|
|
28
|
+
* const config = useDubheConfig({
|
|
29
|
+
* network: 'testnet',
|
|
30
|
+
* packageId: '0x123...',
|
|
31
|
+
* metadata: contractMetadata,
|
|
32
|
+
* credentials: {
|
|
33
|
+
* secretKey: process.env.NEXT_PUBLIC_PRIVATE_KEY // Handle env vars yourself
|
|
34
|
+
* }
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* // With helper function to handle environment variables
|
|
38
|
+
* const getConfigFromEnv = () => ({
|
|
39
|
+
* network: process.env.NEXT_PUBLIC_NETWORK as NetworkType,
|
|
40
|
+
* packageId: process.env.NEXT_PUBLIC_PACKAGE_ID,
|
|
41
|
+
* credentials: {
|
|
42
|
+
* secretKey: process.env.NEXT_PUBLIC_PRIVATE_KEY
|
|
43
|
+
* }
|
|
44
|
+
* });
|
|
45
|
+
*
|
|
46
|
+
* const config = useDubheConfig({
|
|
47
|
+
* ...getConfigFromEnv(),
|
|
48
|
+
* metadata: contractMetadata
|
|
49
|
+
* });
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare function useDubheConfig(config: Partial<DubheConfig>): DubheConfig;
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Modern Dubhe React Hooks - Provider Pattern
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - 🎯 Simple API design with Provider pattern
|
|
6
|
+
* - ⚡ Single client initialization with useRef
|
|
7
|
+
* - 🔧 Configuration-driven setup (developers handle environment variables themselves)
|
|
8
|
+
* - 🛡️ Complete type safety with strict TypeScript
|
|
9
|
+
* - 📦 Context-based client sharing across components
|
|
10
|
+
*/
|
|
11
|
+
import { Dubhe } from '@0xobelisk/sui-client';
|
|
12
|
+
import type { DubheGraphqlClient } from '@0xobelisk/graphql-client';
|
|
13
|
+
import type { DubheECSWorld } from '@0xobelisk/ecs';
|
|
14
|
+
import type { DubheReturn } from './types';
|
|
15
|
+
/**
|
|
16
|
+
* Primary Hook: useDubhe
|
|
17
|
+
*
|
|
18
|
+
* Uses Provider pattern to access shared Dubhe clients with guaranteed single initialization.
|
|
19
|
+
* Must be used within a DubheProvider.
|
|
20
|
+
*
|
|
21
|
+
* @returns Complete Dubhe ecosystem with contract, GraphQL, ECS, and metadata
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* // App setup with Provider
|
|
26
|
+
* function App() {
|
|
27
|
+
* const config = {
|
|
28
|
+
* network: 'devnet',
|
|
29
|
+
* packageId: '0x123...',
|
|
30
|
+
* metadata: contractMetadata,
|
|
31
|
+
* credentials: {
|
|
32
|
+
* secretKey: process.env.NEXT_PUBLIC_PRIVATE_KEY
|
|
33
|
+
* }
|
|
34
|
+
* };
|
|
35
|
+
*
|
|
36
|
+
* return (
|
|
37
|
+
* <DubheProvider config={config}>
|
|
38
|
+
* <MyDApp />
|
|
39
|
+
* </DubheProvider>
|
|
40
|
+
* );
|
|
41
|
+
* }
|
|
42
|
+
*
|
|
43
|
+
* // Component usage
|
|
44
|
+
* function MyDApp() {
|
|
45
|
+
* const { contract, address } = useDubhe();
|
|
46
|
+
* return <div>Connected as {address}</div>;
|
|
47
|
+
* }
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function useDubhe(): DubheReturn;
|
|
51
|
+
/**
|
|
52
|
+
* Individual Instance Hook: useDubheContract
|
|
53
|
+
*
|
|
54
|
+
* Returns only the Dubhe contract instance from Provider context.
|
|
55
|
+
* More efficient than useDubhe() when only contract access is needed.
|
|
56
|
+
*
|
|
57
|
+
* @returns Dubhe contract instance
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* function TransactionComponent() {
|
|
62
|
+
* const contract = useDubheContract();
|
|
63
|
+
*
|
|
64
|
+
* const handleTransaction = async () => {
|
|
65
|
+
* const tx = new Transaction();
|
|
66
|
+
* await contract.tx.my_system.my_method({ tx });
|
|
67
|
+
* };
|
|
68
|
+
*
|
|
69
|
+
* return <button onClick={handleTransaction}>Execute</button>;
|
|
70
|
+
* }
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare function useDubheContract(): Dubhe;
|
|
74
|
+
/**
|
|
75
|
+
* Individual Instance Hook: useDubheGraphQL
|
|
76
|
+
*
|
|
77
|
+
* Returns only the GraphQL client from Provider context.
|
|
78
|
+
* More efficient than useDubhe() when only GraphQL access is needed.
|
|
79
|
+
*
|
|
80
|
+
* @returns GraphQL client instance (always available with default localhost endpoint)
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* function DataComponent() {
|
|
85
|
+
* const graphqlClient = useDubheGraphQL();
|
|
86
|
+
*
|
|
87
|
+
* useEffect(() => {
|
|
88
|
+
* graphqlClient.query({ ... }).then(setData);
|
|
89
|
+
* }, [graphqlClient]);
|
|
90
|
+
*
|
|
91
|
+
* return <div>{data && JSON.stringify(data)}</div>;
|
|
92
|
+
* }
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export declare function useDubheGraphQL(): DubheGraphqlClient;
|
|
96
|
+
/**
|
|
97
|
+
* Individual Instance Hook: useDubheECS
|
|
98
|
+
*
|
|
99
|
+
* Returns only the ECS World instance from Provider context.
|
|
100
|
+
* More efficient than useDubhe() when only ECS access is needed.
|
|
101
|
+
*
|
|
102
|
+
* @returns ECS World instance (always available, depends on GraphQL client)
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* function ECSComponent() {
|
|
107
|
+
* const ecsWorld = useDubheECS();
|
|
108
|
+
*
|
|
109
|
+
* useEffect(() => {
|
|
110
|
+
* ecsWorld.getComponent('MyComponent').then(setComponent);
|
|
111
|
+
* }, [ecsWorld]);
|
|
112
|
+
*
|
|
113
|
+
* return <div>ECS Component Data</div>;
|
|
114
|
+
* }
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
export declare function useDubheECS(): DubheECSWorld;
|
|
118
|
+
/**
|
|
119
|
+
* Hook for dynamic configuration updates
|
|
120
|
+
*
|
|
121
|
+
* Provides methods to update provider configuration at runtime
|
|
122
|
+
*
|
|
123
|
+
* @returns Object with updateConfig, resetClients methods and current config
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```typescript
|
|
127
|
+
* function NetworkSwitcher() {
|
|
128
|
+
* const { updateConfig, config } = useDubheConfigUpdate();
|
|
129
|
+
*
|
|
130
|
+
* const switchToTestnet = () => {
|
|
131
|
+
* updateConfig({
|
|
132
|
+
* network: 'testnet',
|
|
133
|
+
* packageId: '0xTestnetPackageId...'
|
|
134
|
+
* });
|
|
135
|
+
* };
|
|
136
|
+
*
|
|
137
|
+
* return (
|
|
138
|
+
* <div>
|
|
139
|
+
* <p>Network: {config.network}</p>
|
|
140
|
+
* <button onClick={switchToTestnet}>Switch to Testnet</button>
|
|
141
|
+
* </div>
|
|
142
|
+
* );
|
|
143
|
+
* }
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
export declare function useDubheConfigUpdate(): {
|
|
147
|
+
updateConfig: (newConfig: Partial<import("./types").DubheConfig>) => void;
|
|
148
|
+
resetClients: (options?: {
|
|
149
|
+
resetContract?: boolean;
|
|
150
|
+
resetGraphql?: boolean;
|
|
151
|
+
resetGrpc?: boolean;
|
|
152
|
+
resetEcs?: boolean;
|
|
153
|
+
}) => void;
|
|
154
|
+
config: import("./types").DubheConfig;
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* Compatibility alias for useDubhe
|
|
158
|
+
*/
|
|
159
|
+
export declare const useContract: typeof useDubhe;
|
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
import { Dubhe, SuiMoveNormalizedModules } from '@0xobelisk/sui-client';
|
|
2
|
+
import { DubheGraphqlClient } from '@0xobelisk/graphql-client';
|
|
3
|
+
import { DubheECSWorld } from '@0xobelisk/ecs';
|
|
4
|
+
import { DubheGrpcClient } from '@0xobelisk/grpc-client';
|
|
5
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
|
+
import { ReactNode } from 'react';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Network type
|
|
10
|
+
*/
|
|
11
|
+
type NetworkType = 'mainnet' | 'testnet' | 'devnet' | 'localnet';
|
|
12
|
+
/**
|
|
13
|
+
* Modern Dubhe client configuration for auto-initialization
|
|
14
|
+
* Aligned with @0xobelisk/client configuration for consistency
|
|
15
|
+
*/
|
|
16
|
+
interface DubheConfig {
|
|
17
|
+
/** Network type */
|
|
18
|
+
network: NetworkType;
|
|
19
|
+
/** Contract package ID */
|
|
20
|
+
packageId: string;
|
|
21
|
+
/** Contract metadata (required for contract instantiation) */
|
|
22
|
+
metadata: any;
|
|
23
|
+
/** Dubhe Schema ID (optional, for enhanced features) */
|
|
24
|
+
dubheSchemaId?: string;
|
|
25
|
+
/** Dubhe metadata (enables GraphQL/ECS features) */
|
|
26
|
+
dubheMetadata?: any;
|
|
27
|
+
/** Authentication credentials */
|
|
28
|
+
credentials?: {
|
|
29
|
+
/** Private key (base64 or hex string) */
|
|
30
|
+
secretKey?: string;
|
|
31
|
+
/** Mnemonic phrase (12 or 24 words) */
|
|
32
|
+
mnemonics?: string;
|
|
33
|
+
};
|
|
34
|
+
/** Service endpoints configuration */
|
|
35
|
+
endpoints?: {
|
|
36
|
+
/** Full node RPC URLs (can provide multiple for redundancy) */
|
|
37
|
+
fullnodeUrls?: string[];
|
|
38
|
+
/** GraphQL endpoint URL */
|
|
39
|
+
graphql?: string;
|
|
40
|
+
/** WebSocket endpoint URL for subscriptions */
|
|
41
|
+
websocket?: string;
|
|
42
|
+
/** gRPC endpoint URL */
|
|
43
|
+
grpc?: string;
|
|
44
|
+
/** Dubhe Channel API URL */
|
|
45
|
+
channelUrl?: string;
|
|
46
|
+
};
|
|
47
|
+
/** Performance and behavior options */
|
|
48
|
+
options?: {
|
|
49
|
+
/** Enable batch query optimization */
|
|
50
|
+
enableBatchOptimization?: boolean;
|
|
51
|
+
/** Default cache timeout (milliseconds) */
|
|
52
|
+
cacheTimeout?: number;
|
|
53
|
+
/** Request debounce delay (milliseconds) */
|
|
54
|
+
debounceMs?: number;
|
|
55
|
+
/** Auto-reconnect on WebSocket errors */
|
|
56
|
+
reconnectOnError?: boolean;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Type alias for consistency with @0xobelisk/client package
|
|
61
|
+
*/
|
|
62
|
+
type ClientConfig = DubheConfig;
|
|
63
|
+
/**
|
|
64
|
+
* Return type for the main useDubhe hook
|
|
65
|
+
*/
|
|
66
|
+
interface DubheReturn {
|
|
67
|
+
/** Dubhe contract instance */
|
|
68
|
+
contract: Dubhe;
|
|
69
|
+
/** GraphQL client (always available, uses default localhost endpoint if not configured) */
|
|
70
|
+
graphqlClient: DubheGraphqlClient;
|
|
71
|
+
/** gRPC client (always available, uses default localhost endpoint if not configured) */
|
|
72
|
+
grpcClient: DubheGrpcClient;
|
|
73
|
+
/** ECS World instance (always available, depends on GraphQL client) */
|
|
74
|
+
ecsWorld: DubheECSWorld;
|
|
75
|
+
/** Contract metadata */
|
|
76
|
+
metadata: SuiMoveNormalizedModules;
|
|
77
|
+
/** Network type */
|
|
78
|
+
network: NetworkType;
|
|
79
|
+
/** Package ID */
|
|
80
|
+
packageId: string;
|
|
81
|
+
/** Dubhe Schema ID (if provided) */
|
|
82
|
+
dubheSchemaId?: string;
|
|
83
|
+
/** User address */
|
|
84
|
+
address: string;
|
|
85
|
+
/** Configuration options used */
|
|
86
|
+
options?: {
|
|
87
|
+
enableBatchOptimization?: boolean;
|
|
88
|
+
cacheTimeout?: number;
|
|
89
|
+
debounceMs?: number;
|
|
90
|
+
reconnectOnError?: boolean;
|
|
91
|
+
};
|
|
92
|
+
/** Performance metrics */
|
|
93
|
+
metrics?: {
|
|
94
|
+
initTime?: number;
|
|
95
|
+
requestCount?: number;
|
|
96
|
+
lastActivity?: number;
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Compatibility alias for DubheReturn
|
|
101
|
+
* @deprecated Use DubheReturn instead for better consistency
|
|
102
|
+
*/
|
|
103
|
+
type ContractReturn = DubheReturn;
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Configuration Management for Dubhe React Integration
|
|
107
|
+
*
|
|
108
|
+
* Features:
|
|
109
|
+
* - Type-safe configuration interface
|
|
110
|
+
* - Configuration validation and error handling
|
|
111
|
+
* - Smart merging of defaults and explicit config
|
|
112
|
+
* - No environment variable handling (developers should handle environment variables themselves)
|
|
113
|
+
*/
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Default configuration object with sensible defaults
|
|
117
|
+
*/
|
|
118
|
+
declare const DEFAULT_CONFIG: Partial<DubheConfig>;
|
|
119
|
+
/**
|
|
120
|
+
* Configuration Hook: useDubheConfig
|
|
121
|
+
*
|
|
122
|
+
* Merges defaults with explicit configuration provided by the developer
|
|
123
|
+
*
|
|
124
|
+
* Note: Environment variables should be handled by the developer before passing to this hook
|
|
125
|
+
*
|
|
126
|
+
* @param config - Complete or partial configuration object
|
|
127
|
+
* @returns Complete, validated DubheConfig
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```typescript
|
|
131
|
+
* // Basic usage with explicit config
|
|
132
|
+
* const config = useDubheConfig({
|
|
133
|
+
* network: 'testnet',
|
|
134
|
+
* packageId: '0x123...',
|
|
135
|
+
* metadata: contractMetadata,
|
|
136
|
+
* credentials: {
|
|
137
|
+
* secretKey: process.env.NEXT_PUBLIC_PRIVATE_KEY // Handle env vars yourself
|
|
138
|
+
* }
|
|
139
|
+
* });
|
|
140
|
+
*
|
|
141
|
+
* // With helper function to handle environment variables
|
|
142
|
+
* const getConfigFromEnv = () => ({
|
|
143
|
+
* network: process.env.NEXT_PUBLIC_NETWORK as NetworkType,
|
|
144
|
+
* packageId: process.env.NEXT_PUBLIC_PACKAGE_ID,
|
|
145
|
+
* credentials: {
|
|
146
|
+
* secretKey: process.env.NEXT_PUBLIC_PRIVATE_KEY
|
|
147
|
+
* }
|
|
148
|
+
* });
|
|
149
|
+
*
|
|
150
|
+
* const config = useDubheConfig({
|
|
151
|
+
* ...getConfigFromEnv(),
|
|
152
|
+
* metadata: contractMetadata
|
|
153
|
+
* });
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
declare function useDubheConfig(config: Partial<DubheConfig>): DubheConfig;
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Utility Functions for Dubhe Configuration Management
|
|
160
|
+
*
|
|
161
|
+
* Features:
|
|
162
|
+
* - Configuration validation and error handling
|
|
163
|
+
* - Smart configuration merging with proper type safety
|
|
164
|
+
* - Type-safe configuration validation
|
|
165
|
+
*/
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Merge multiple configuration objects with proper deep merging
|
|
169
|
+
* Later configurations override earlier ones
|
|
170
|
+
*
|
|
171
|
+
* @param baseConfig - Base configuration (usually defaults)
|
|
172
|
+
* @param overrideConfig - Override configuration (user provided)
|
|
173
|
+
* @returns Merged configuration
|
|
174
|
+
*/
|
|
175
|
+
declare function mergeConfigurations(baseConfig: Partial<DubheConfig>, overrideConfig?: Partial<DubheConfig>): Partial<DubheConfig>;
|
|
176
|
+
/**
|
|
177
|
+
* Validate configuration and ensure required fields are present
|
|
178
|
+
* Throws descriptive errors for missing required fields
|
|
179
|
+
*
|
|
180
|
+
* @param config - Configuration to validate
|
|
181
|
+
* @returns Validated and typed configuration
|
|
182
|
+
* @throws Error if required fields are missing or invalid
|
|
183
|
+
*/
|
|
184
|
+
declare function validateConfig(config: Partial<DubheConfig>): DubheConfig;
|
|
185
|
+
/**
|
|
186
|
+
* Generate a configuration summary for debugging
|
|
187
|
+
* Hides sensitive information like private keys
|
|
188
|
+
*
|
|
189
|
+
* @param config - Configuration to summarize
|
|
190
|
+
* @returns Safe configuration summary
|
|
191
|
+
*/
|
|
192
|
+
declare function getConfigSummary(config: DubheConfig): object;
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Props interface for DubheProvider component
|
|
196
|
+
*/
|
|
197
|
+
interface DubheProviderProps {
|
|
198
|
+
/** Configuration for Dubhe initialization */
|
|
199
|
+
config: Partial<DubheConfig>;
|
|
200
|
+
/** Child components that will have access to Dubhe clients */
|
|
201
|
+
children: ReactNode;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* DubheProvider Component - useRef Pattern Implementation
|
|
205
|
+
*
|
|
206
|
+
* This Provider uses useRef to store client instances, ensuring they are:
|
|
207
|
+
* 1. Created only once during component lifecycle
|
|
208
|
+
* 2. Persisted across re-renders without re-initialization
|
|
209
|
+
* 3. Shared efficiently via React Context
|
|
210
|
+
*
|
|
211
|
+
* Key advantages over useMemo:
|
|
212
|
+
* - useRef guarantees single initialization (useMemo can re-run on dependency changes)
|
|
213
|
+
* - No dependency array needed (eliminates potential re-initialization bugs)
|
|
214
|
+
* - Better performance for heavy client objects
|
|
215
|
+
* - Clearer separation of concerns via Provider pattern
|
|
216
|
+
*
|
|
217
|
+
* @param props - Provider props containing config and children
|
|
218
|
+
* @returns Provider component wrapping children with Dubhe context
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```typescript
|
|
222
|
+
* // App root setup
|
|
223
|
+
* function App() {
|
|
224
|
+
* const dubheConfig = {
|
|
225
|
+
* network: 'devnet',
|
|
226
|
+
* packageId: '0x123...',
|
|
227
|
+
* metadata: contractMetadata,
|
|
228
|
+
* credentials: {
|
|
229
|
+
* secretKey: process.env.NEXT_PUBLIC_PRIVATE_KEY
|
|
230
|
+
* }
|
|
231
|
+
* };
|
|
232
|
+
*
|
|
233
|
+
* return (
|
|
234
|
+
* <DubheProvider config={dubheConfig}>
|
|
235
|
+
* <MyApplication />
|
|
236
|
+
* </DubheProvider>
|
|
237
|
+
* );
|
|
238
|
+
* }
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
declare function DubheProvider({ config, children }: DubheProviderProps): react_jsx_runtime.JSX.Element;
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Primary Hook: useDubhe
|
|
245
|
+
*
|
|
246
|
+
* Uses Provider pattern to access shared Dubhe clients with guaranteed single initialization.
|
|
247
|
+
* Must be used within a DubheProvider.
|
|
248
|
+
*
|
|
249
|
+
* @returns Complete Dubhe ecosystem with contract, GraphQL, ECS, and metadata
|
|
250
|
+
*
|
|
251
|
+
* @example
|
|
252
|
+
* ```typescript
|
|
253
|
+
* // App setup with Provider
|
|
254
|
+
* function App() {
|
|
255
|
+
* const config = {
|
|
256
|
+
* network: 'devnet',
|
|
257
|
+
* packageId: '0x123...',
|
|
258
|
+
* metadata: contractMetadata,
|
|
259
|
+
* credentials: {
|
|
260
|
+
* secretKey: process.env.NEXT_PUBLIC_PRIVATE_KEY
|
|
261
|
+
* }
|
|
262
|
+
* };
|
|
263
|
+
*
|
|
264
|
+
* return (
|
|
265
|
+
* <DubheProvider config={config}>
|
|
266
|
+
* <MyDApp />
|
|
267
|
+
* </DubheProvider>
|
|
268
|
+
* );
|
|
269
|
+
* }
|
|
270
|
+
*
|
|
271
|
+
* // Component usage
|
|
272
|
+
* function MyDApp() {
|
|
273
|
+
* const { contract, address } = useDubhe();
|
|
274
|
+
* return <div>Connected as {address}</div>;
|
|
275
|
+
* }
|
|
276
|
+
* ```
|
|
277
|
+
*/
|
|
278
|
+
declare function useDubhe(): DubheReturn;
|
|
279
|
+
/**
|
|
280
|
+
* Individual Instance Hook: useDubheContract
|
|
281
|
+
*
|
|
282
|
+
* Returns only the Dubhe contract instance from Provider context.
|
|
283
|
+
* More efficient than useDubhe() when only contract access is needed.
|
|
284
|
+
*
|
|
285
|
+
* @returns Dubhe contract instance
|
|
286
|
+
*
|
|
287
|
+
* @example
|
|
288
|
+
* ```typescript
|
|
289
|
+
* function TransactionComponent() {
|
|
290
|
+
* const contract = useDubheContract();
|
|
291
|
+
*
|
|
292
|
+
* const handleTransaction = async () => {
|
|
293
|
+
* const tx = new Transaction();
|
|
294
|
+
* await contract.tx.my_system.my_method({ tx });
|
|
295
|
+
* };
|
|
296
|
+
*
|
|
297
|
+
* return <button onClick={handleTransaction}>Execute</button>;
|
|
298
|
+
* }
|
|
299
|
+
* ```
|
|
300
|
+
*/
|
|
301
|
+
declare function useDubheContract(): Dubhe;
|
|
302
|
+
/**
|
|
303
|
+
* Individual Instance Hook: useDubheGraphQL
|
|
304
|
+
*
|
|
305
|
+
* Returns only the GraphQL client from Provider context.
|
|
306
|
+
* More efficient than useDubhe() when only GraphQL access is needed.
|
|
307
|
+
*
|
|
308
|
+
* @returns GraphQL client instance (always available with default localhost endpoint)
|
|
309
|
+
*
|
|
310
|
+
* @example
|
|
311
|
+
* ```typescript
|
|
312
|
+
* function DataComponent() {
|
|
313
|
+
* const graphqlClient = useDubheGraphQL();
|
|
314
|
+
*
|
|
315
|
+
* useEffect(() => {
|
|
316
|
+
* graphqlClient.query({ ... }).then(setData);
|
|
317
|
+
* }, [graphqlClient]);
|
|
318
|
+
*
|
|
319
|
+
* return <div>{data && JSON.stringify(data)}</div>;
|
|
320
|
+
* }
|
|
321
|
+
* ```
|
|
322
|
+
*/
|
|
323
|
+
declare function useDubheGraphQL(): DubheGraphqlClient;
|
|
324
|
+
/**
|
|
325
|
+
* Individual Instance Hook: useDubheECS
|
|
326
|
+
*
|
|
327
|
+
* Returns only the ECS World instance from Provider context.
|
|
328
|
+
* More efficient than useDubhe() when only ECS access is needed.
|
|
329
|
+
*
|
|
330
|
+
* @returns ECS World instance (always available, depends on GraphQL client)
|
|
331
|
+
*
|
|
332
|
+
* @example
|
|
333
|
+
* ```typescript
|
|
334
|
+
* function ECSComponent() {
|
|
335
|
+
* const ecsWorld = useDubheECS();
|
|
336
|
+
*
|
|
337
|
+
* useEffect(() => {
|
|
338
|
+
* ecsWorld.getComponent('MyComponent').then(setComponent);
|
|
339
|
+
* }, [ecsWorld]);
|
|
340
|
+
*
|
|
341
|
+
* return <div>ECS Component Data</div>;
|
|
342
|
+
* }
|
|
343
|
+
* ```
|
|
344
|
+
*/
|
|
345
|
+
declare function useDubheECS(): DubheECSWorld;
|
|
346
|
+
/**
|
|
347
|
+
* Hook for dynamic configuration updates
|
|
348
|
+
*
|
|
349
|
+
* Provides methods to update provider configuration at runtime
|
|
350
|
+
*
|
|
351
|
+
* @returns Object with updateConfig, resetClients methods and current config
|
|
352
|
+
*
|
|
353
|
+
* @example
|
|
354
|
+
* ```typescript
|
|
355
|
+
* function NetworkSwitcher() {
|
|
356
|
+
* const { updateConfig, config } = useDubheConfigUpdate();
|
|
357
|
+
*
|
|
358
|
+
* const switchToTestnet = () => {
|
|
359
|
+
* updateConfig({
|
|
360
|
+
* network: 'testnet',
|
|
361
|
+
* packageId: '0xTestnetPackageId...'
|
|
362
|
+
* });
|
|
363
|
+
* };
|
|
364
|
+
*
|
|
365
|
+
* return (
|
|
366
|
+
* <div>
|
|
367
|
+
* <p>Network: {config.network}</p>
|
|
368
|
+
* <button onClick={switchToTestnet}>Switch to Testnet</button>
|
|
369
|
+
* </div>
|
|
370
|
+
* );
|
|
371
|
+
* }
|
|
372
|
+
* ```
|
|
373
|
+
*/
|
|
374
|
+
declare function useDubheConfigUpdate(): {
|
|
375
|
+
updateConfig: (newConfig: Partial<DubheConfig>) => void;
|
|
376
|
+
resetClients: (options?: {
|
|
377
|
+
resetContract?: boolean;
|
|
378
|
+
resetGraphql?: boolean;
|
|
379
|
+
resetGrpc?: boolean;
|
|
380
|
+
resetEcs?: boolean;
|
|
381
|
+
}) => void;
|
|
382
|
+
config: DubheConfig;
|
|
383
|
+
};
|
|
384
|
+
/**
|
|
385
|
+
* Compatibility alias for useDubhe
|
|
386
|
+
*/
|
|
387
|
+
declare const useContract: typeof useDubhe;
|
|
388
|
+
|
|
389
|
+
export { type ClientConfig, type ContractReturn, DEFAULT_CONFIG, type DubheConfig, DubheProvider, type DubheReturn, type NetworkType, getConfigSummary, mergeConfigurations, useContract, useDubhe, useDubheConfig, useDubheConfigUpdate, useDubheContract, useDubheECS, useDubheGraphQL, validateConfig };
|