@openzeppelin/adapter-stellar 1.0.0
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 +272 -0
- package/dist/config.cjs +21 -0
- package/dist/config.cjs.map +1 -0
- package/dist/config.d.cts +8 -0
- package/dist/config.d.cts.map +1 -0
- package/dist/config.d.mts +8 -0
- package/dist/config.d.mts.map +1 -0
- package/dist/config.mjs +20 -0
- package/dist/config.mjs.map +1 -0
- package/dist/index.cjs +7564 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +261 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +263 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +7529 -0
- package/dist/index.mjs.map +1 -0
- package/dist/metadata.cjs +22 -0
- package/dist/metadata.cjs.map +1 -0
- package/dist/metadata.d.cts +7 -0
- package/dist/metadata.d.cts.map +1 -0
- package/dist/metadata.d.mts +7 -0
- package/dist/metadata.d.mts.map +1 -0
- package/dist/metadata.mjs +21 -0
- package/dist/metadata.mjs.map +1 -0
- package/dist/networks-BrV516-R.d.cts +15 -0
- package/dist/networks-BrV516-R.d.cts.map +1 -0
- package/dist/networks-C0MmhJcu.d.mts +15 -0
- package/dist/networks-C0MmhJcu.d.mts.map +1 -0
- package/dist/networks-DgUFSTiC.cjs +76 -0
- package/dist/networks-DgUFSTiC.cjs.map +1 -0
- package/dist/networks-QbEPbaGT.mjs +46 -0
- package/dist/networks-QbEPbaGT.mjs.map +1 -0
- package/dist/networks.cjs +8 -0
- package/dist/networks.d.cts +2 -0
- package/dist/networks.d.mts +2 -0
- package/dist/networks.mjs +3 -0
- package/dist/vite-config.cjs +43 -0
- package/dist/vite-config.cjs.map +1 -0
- package/dist/vite-config.d.cts +35 -0
- package/dist/vite-config.d.cts.map +1 -0
- package/dist/vite-config.d.mts +35 -0
- package/dist/vite-config.d.mts.map +1 -0
- package/dist/vite-config.mjs +42 -0
- package/dist/vite-config.mjs.map +1 -0
- package/package.json +114 -0
- package/src/__tests__/getDefaultServiceConfig.test.ts +105 -0
- package/src/access-control/actions.ts +214 -0
- package/src/access-control/feature-detection.ts +238 -0
- package/src/access-control/index.ts +54 -0
- package/src/access-control/indexer-client.ts +1474 -0
- package/src/access-control/onchain-reader.ts +446 -0
- package/src/access-control/service.ts +1431 -0
- package/src/access-control/validation.ts +256 -0
- package/src/adapter.ts +659 -0
- package/src/config.ts +43 -0
- package/src/configuration/__tests__/explorer.test.ts +80 -0
- package/src/configuration/__tests__/rpc.test.ts +355 -0
- package/src/configuration/execution.ts +83 -0
- package/src/configuration/explorer.ts +105 -0
- package/src/configuration/index.ts +5 -0
- package/src/configuration/network-services.ts +210 -0
- package/src/configuration/rpc.ts +270 -0
- package/src/configuration.ts +2 -0
- package/src/contract/__tests__/complete-type-coverage.test.ts +78 -0
- package/src/contract/index.ts +3 -0
- package/src/contract/loader.ts +498 -0
- package/src/contract/transformer.ts +1 -0
- package/src/contract/type.ts +65 -0
- package/src/index.ts +23 -0
- package/src/mapping/constants.ts +89 -0
- package/src/mapping/enum-metadata.ts +237 -0
- package/src/mapping/field-generator.ts +296 -0
- package/src/mapping/index.ts +5 -0
- package/src/mapping/struct-fields.ts +106 -0
- package/src/mapping/tuple-components.ts +43 -0
- package/src/mapping/type-coverage-validator.ts +151 -0
- package/src/mapping/type-mapper.ts +203 -0
- package/src/metadata.ts +16 -0
- package/src/networks/README.md +84 -0
- package/src/networks/index.ts +19 -0
- package/src/networks/mainnet.ts +20 -0
- package/src/networks/testnet.ts +20 -0
- package/src/networks.ts +2 -0
- package/src/query/handler.ts +411 -0
- package/src/query/index.ts +4 -0
- package/src/query/view-checker.ts +32 -0
- package/src/sac/spec-cache.ts +68 -0
- package/src/sac/spec-source.ts +35 -0
- package/src/sac/xdr.ts +101 -0
- package/src/transaction/components/AdvancedInfo.tsx +34 -0
- package/src/transaction/components/FeeConfiguration.tsx +41 -0
- package/src/transaction/components/StellarRelayerOptions.tsx +60 -0
- package/src/transaction/components/TransactionTiming.tsx +77 -0
- package/src/transaction/components/index.ts +5 -0
- package/src/transaction/components/useStellarRelayerOptions.ts +114 -0
- package/src/transaction/eoa.ts +229 -0
- package/src/transaction/execution-strategy.ts +33 -0
- package/src/transaction/formatter.ts +296 -0
- package/src/transaction/index.ts +4 -0
- package/src/transaction/relayer.ts +575 -0
- package/src/transaction/sender.ts +156 -0
- package/src/transform/index.ts +4 -0
- package/src/transform/input-parser.ts +9 -0
- package/src/transform/output-formatter.ts +133 -0
- package/src/transform/parsers/complex-parser.ts +157 -0
- package/src/transform/parsers/generic-parser.ts +171 -0
- package/src/transform/parsers/index.ts +86 -0
- package/src/transform/parsers/primitive-parser.ts +123 -0
- package/src/transform/parsers/scval-converter.ts +405 -0
- package/src/transform/parsers/struct-parser.ts +324 -0
- package/src/transform/parsers/types.ts +35 -0
- package/src/types/__tests__/artifacts.test.ts +89 -0
- package/src/types/artifacts.ts +19 -0
- package/src/utils/__tests__/artifacts.test.ts +77 -0
- package/src/utils/artifacts.ts +30 -0
- package/src/utils/formatting.ts +122 -0
- package/src/utils/index.ts +6 -0
- package/src/utils/input-parsing.ts +336 -0
- package/src/utils/safe-type-parser.ts +303 -0
- package/src/utils/stellar-types.ts +35 -0
- package/src/utils/type-detection.ts +163 -0
- package/src/utils/xdr-ordering.ts +36 -0
- package/src/validation/__tests__/address.test.ts +267 -0
- package/src/validation/address.ts +136 -0
- package/src/validation/eoa.ts +33 -0
- package/src/validation/index.ts +3 -0
- package/src/validation/relayer.ts +13 -0
- package/src/vite-config.ts +67 -0
- package/src/wallet/README.md +93 -0
- package/src/wallet/__tests__/connection.test.ts +72 -0
- package/src/wallet/components/StellarWalletUiRoot.tsx +161 -0
- package/src/wallet/components/account/AccountDisplay.tsx +50 -0
- package/src/wallet/components/connect/ConnectButton.tsx +100 -0
- package/src/wallet/components/connect/ConnectorDialog.tsx +125 -0
- package/src/wallet/components/index.ts +3 -0
- package/src/wallet/connection.ts +151 -0
- package/src/wallet/context/StellarWalletContext.ts +32 -0
- package/src/wallet/context/index.ts +4 -0
- package/src/wallet/context/useStellarWalletContext.ts +17 -0
- package/src/wallet/hooks/facade-hooks.ts +31 -0
- package/src/wallet/hooks/index.ts +7 -0
- package/src/wallet/hooks/useStellarAccount.ts +27 -0
- package/src/wallet/hooks/useStellarConnect.ts +60 -0
- package/src/wallet/hooks/useStellarDisconnect.ts +47 -0
- package/src/wallet/hooks/useUiKitConfig.ts +40 -0
- package/src/wallet/implementation/wallets-kit-implementation.ts +379 -0
- package/src/wallet/index.ts +11 -0
- package/src/wallet/services/__tests__/configResolutionService.test.ts +163 -0
- package/src/wallet/services/configResolutionService.ts +65 -0
- package/src/wallet/stellar-wallets-kit/StellarWalletsKitConnectButton.tsx +82 -0
- package/src/wallet/stellar-wallets-kit/__mocks__/@creit.tech/stellar-wallets-kit.ts +48 -0
- package/src/wallet/stellar-wallets-kit/__tests__/export-service.test.ts +93 -0
- package/src/wallet/stellar-wallets-kit/__tests__/stellarUiKitManager.test.ts +0 -0
- package/src/wallet/stellar-wallets-kit/config-generator.ts +75 -0
- package/src/wallet/stellar-wallets-kit/export-service.ts +19 -0
- package/src/wallet/stellar-wallets-kit/index.ts +3 -0
- package/src/wallet/stellar-wallets-kit/stellarUiKitManager.ts +235 -0
- package/src/wallet/types.ts +19 -0
- package/src/wallet/utils/__tests__/filterWalletComponents.test.ts +150 -0
- package/src/wallet/utils/__tests__/uiKitService.test.ts +189 -0
- package/src/wallet/utils/filterWalletComponents.ts +89 -0
- package/src/wallet/utils/index.ts +3 -0
- package/src/wallet/utils/stellarWalletImplementationManager.ts +118 -0
- package/src/wallet/utils/uiKitService.ts +74 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { ecosystemMetadata } from "./metadata.cjs";
|
|
2
|
+
import { a as stellarPublic, i as stellarTestnet } from "./networks-BrV516-R.cjs";
|
|
3
|
+
import { AccessControlService, AvailableUiKit, Connector, ContractAdapter, ContractFunction, ContractSchema, EcosystemExport, EcosystemReactUiProviderProps, EcosystemSpecificReactHooks, EcosystemWalletComponents, ExecutionConfig, ExecutionMethodDetail, FieldType, FormFieldType, FunctionParameter, NativeConfigLoader, NetworkServiceForm, RelayerDetails, RelayerDetailsRich, StellarNetworkConfig, TransactionStatusUpdate, TxStatus, TypeMappingInfo, UiKitConfiguration, UserRpcProviderConfig, WalletConnectionStatus } from "@openzeppelin/ui-types";
|
|
4
|
+
import React from "react";
|
|
5
|
+
|
|
6
|
+
//#region src/wallet/types.d.ts
|
|
7
|
+
/**
|
|
8
|
+
* Stellar-specific wallet connection status extending the base interface.
|
|
9
|
+
* Includes Stellar-specific fields like walletId.
|
|
10
|
+
* Note that stellar wallets don't work with multiple addresses, only a single active address.
|
|
11
|
+
*/
|
|
12
|
+
interface StellarWalletConnectionStatus extends WalletConnectionStatus {
|
|
13
|
+
/** Stellar-specific wallet identifier (e.g., 'freighter', 'albedo') */
|
|
14
|
+
walletId?: string;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region src/adapter.d.ts
|
|
18
|
+
/**
|
|
19
|
+
* Stellar-specific adapter implementation using explicit method delegation.
|
|
20
|
+
*/
|
|
21
|
+
declare class StellarAdapter implements ContractAdapter {
|
|
22
|
+
readonly networkConfig: StellarNetworkConfig;
|
|
23
|
+
readonly initialAppServiceKitName: UiKitConfiguration['kitName'];
|
|
24
|
+
private readonly accessControlService;
|
|
25
|
+
constructor(networkConfig: StellarNetworkConfig);
|
|
26
|
+
/**
|
|
27
|
+
* @inheritdoc
|
|
28
|
+
*/
|
|
29
|
+
getNetworkServiceForms(): NetworkServiceForm[];
|
|
30
|
+
/**
|
|
31
|
+
* @inheritdoc
|
|
32
|
+
*/
|
|
33
|
+
validateNetworkServiceConfig(serviceId: string, values: Record<string, unknown>): Promise<boolean>;
|
|
34
|
+
/**
|
|
35
|
+
* @inheritdoc
|
|
36
|
+
*/
|
|
37
|
+
testNetworkServiceConnection(serviceId: string, values: Record<string, unknown>): Promise<{
|
|
38
|
+
success: boolean;
|
|
39
|
+
latency?: number;
|
|
40
|
+
error?: string;
|
|
41
|
+
}>;
|
|
42
|
+
/**
|
|
43
|
+
* @inheritdoc
|
|
44
|
+
*/
|
|
45
|
+
getDefaultServiceConfig(serviceId: string): Record<string, unknown> | null;
|
|
46
|
+
/**
|
|
47
|
+
* NOTE about artifact inputs (single input with auto-detection):
|
|
48
|
+
*
|
|
49
|
+
* The Builder renders the contract definition step using whatever fields the
|
|
50
|
+
* adapter returns here. EVM uses one optional ABI field; Midnight provides
|
|
51
|
+
* multiple fields. Stellar should use a single input approach with automatic
|
|
52
|
+
* content detection when we add manual-spec support:
|
|
53
|
+
*
|
|
54
|
+
* - Keep `contractAddress` (required)
|
|
55
|
+
* - Add optional `contractDefinition` (type: `code-editor`, language: `json`)
|
|
56
|
+
* with file upload support for both JSON and Wasm binary content
|
|
57
|
+
*
|
|
58
|
+
* When this field is added:
|
|
59
|
+
* - Extend `validateAndConvertStellarArtifacts(...)` to accept
|
|
60
|
+
* `{ contractAddress, contractDefinition? }`
|
|
61
|
+
* - In the loader, branch: if `contractDefinition` provided, auto-detect
|
|
62
|
+
* content type (JSON vs Wasm using magic bytes `\0asm`):
|
|
63
|
+
* - For JSON: Parse and validate as Soroban spec, use `transformStellarSpecToSchema`
|
|
64
|
+
* - For Wasm: Extract embedded spec from binary, parse locally (no RPC)
|
|
65
|
+
* - Set `source: 'manual'` with `contractDefinitionOriginal` to the raw
|
|
66
|
+
* user-provided content. This ensures auto-save captures and restores the
|
|
67
|
+
* manual contract definition exactly like the EVM/Midnight flows.
|
|
68
|
+
* - Provide clear UI hints about supported formats (JSON spec or Wasm binary).
|
|
69
|
+
*/
|
|
70
|
+
/**
|
|
71
|
+
* @inheritdoc
|
|
72
|
+
*/
|
|
73
|
+
getContractDefinitionInputs(): FormFieldType[];
|
|
74
|
+
/**
|
|
75
|
+
* @inheritdoc
|
|
76
|
+
*/
|
|
77
|
+
loadContract(source: string | Record<string, unknown>): Promise<ContractSchema>;
|
|
78
|
+
/**
|
|
79
|
+
* @inheritdoc
|
|
80
|
+
*/
|
|
81
|
+
loadContractWithMetadata(source: string | Record<string, unknown>): Promise<{
|
|
82
|
+
schema: ContractSchema;
|
|
83
|
+
source: 'fetched' | 'manual';
|
|
84
|
+
contractDefinitionOriginal?: string;
|
|
85
|
+
metadata?: {
|
|
86
|
+
fetchedFrom?: string;
|
|
87
|
+
contractName?: string;
|
|
88
|
+
fetchTimestamp?: Date;
|
|
89
|
+
definitionHash?: string;
|
|
90
|
+
};
|
|
91
|
+
}>;
|
|
92
|
+
/**
|
|
93
|
+
* @inheritdoc
|
|
94
|
+
*/
|
|
95
|
+
getWritableFunctions(contractSchema: ContractSchema): ContractSchema['functions'];
|
|
96
|
+
/**
|
|
97
|
+
* @inheritdoc
|
|
98
|
+
*/
|
|
99
|
+
mapParameterTypeToFieldType(parameterType: string): FieldType;
|
|
100
|
+
getCompatibleFieldTypes(parameterType: string): FieldType[];
|
|
101
|
+
generateDefaultField<T extends FieldType = FieldType>(parameter: FunctionParameter, contractSchema?: ContractSchema): FormFieldType<T>;
|
|
102
|
+
/**
|
|
103
|
+
* @inheritdoc
|
|
104
|
+
*/
|
|
105
|
+
formatTransactionData(contractSchema: ContractSchema, functionId: string, submittedInputs: Record<string, unknown>, fields: FormFieldType[]): unknown;
|
|
106
|
+
signAndBroadcast(transactionData: unknown, executionConfig: ExecutionConfig, onStatusChange: (status: TxStatus, details: TransactionStatusUpdate) => void, runtimeApiKey?: string): Promise<{
|
|
107
|
+
txHash: string;
|
|
108
|
+
}>;
|
|
109
|
+
/**
|
|
110
|
+
* @inheritdoc
|
|
111
|
+
*/
|
|
112
|
+
isViewFunction(functionDetails: ContractFunction): boolean;
|
|
113
|
+
/**
|
|
114
|
+
* @inheritdoc
|
|
115
|
+
*/
|
|
116
|
+
queryViewFunction(contractAddress: string, functionId: string, params?: unknown[], contractSchema?: ContractSchema): Promise<unknown>;
|
|
117
|
+
/**
|
|
118
|
+
* @inheritdoc
|
|
119
|
+
*/
|
|
120
|
+
formatFunctionResult(decodedValue: unknown, functionDetails: ContractFunction): string;
|
|
121
|
+
/**
|
|
122
|
+
* @inheritdoc
|
|
123
|
+
*/
|
|
124
|
+
supportsWalletConnection(): boolean;
|
|
125
|
+
/**
|
|
126
|
+
* @inheritdoc
|
|
127
|
+
*/
|
|
128
|
+
getAvailableConnectors(): Promise<Connector[]>;
|
|
129
|
+
/**
|
|
130
|
+
* @inheritdoc
|
|
131
|
+
*/
|
|
132
|
+
connectWallet(connectorId: string): Promise<{
|
|
133
|
+
connected: boolean;
|
|
134
|
+
address?: string;
|
|
135
|
+
error?: string;
|
|
136
|
+
}>;
|
|
137
|
+
/**
|
|
138
|
+
* @inheritdoc
|
|
139
|
+
*/
|
|
140
|
+
disconnectWallet(): Promise<{
|
|
141
|
+
disconnected: boolean;
|
|
142
|
+
error?: string;
|
|
143
|
+
}>;
|
|
144
|
+
/**
|
|
145
|
+
* @inheritdoc
|
|
146
|
+
*/
|
|
147
|
+
getWalletConnectionStatus(): StellarWalletConnectionStatus;
|
|
148
|
+
/**
|
|
149
|
+
* @inheritdoc
|
|
150
|
+
*/
|
|
151
|
+
onWalletConnectionChange(callback: (currentStatus: WalletConnectionStatus, previousStatus: WalletConnectionStatus) => void): () => void;
|
|
152
|
+
/**
|
|
153
|
+
* @inheritdoc
|
|
154
|
+
*/
|
|
155
|
+
getSupportedExecutionMethods(): Promise<ExecutionMethodDetail[]>;
|
|
156
|
+
/**
|
|
157
|
+
* @inheritdoc
|
|
158
|
+
*/
|
|
159
|
+
validateExecutionConfig(config: ExecutionConfig): Promise<true | string>;
|
|
160
|
+
/**
|
|
161
|
+
* @inheritdoc
|
|
162
|
+
*/
|
|
163
|
+
getExplorerUrl(address: string): string | null;
|
|
164
|
+
/**
|
|
165
|
+
* @inheritdoc
|
|
166
|
+
*/
|
|
167
|
+
getExplorerTxUrl?(txHash: string): string | null;
|
|
168
|
+
/**
|
|
169
|
+
* @inheritdoc
|
|
170
|
+
*/
|
|
171
|
+
getCurrentBlock(): Promise<number>;
|
|
172
|
+
/**
|
|
173
|
+
* @inheritdoc
|
|
174
|
+
*/
|
|
175
|
+
isValidAddress(address: string, addressType?: string): boolean;
|
|
176
|
+
/**
|
|
177
|
+
* @inheritdoc
|
|
178
|
+
*/
|
|
179
|
+
getAvailableUiKits(): Promise<AvailableUiKit[]>;
|
|
180
|
+
/**
|
|
181
|
+
* @inheritdoc
|
|
182
|
+
*/
|
|
183
|
+
configureUiKit(programmaticOverrides?: Partial<UiKitConfiguration>, options?: {
|
|
184
|
+
loadUiKitNativeConfig?: NativeConfigLoader;
|
|
185
|
+
}): Promise<void>;
|
|
186
|
+
/**
|
|
187
|
+
* @inheritdoc
|
|
188
|
+
*/
|
|
189
|
+
getExportableWalletConfigFiles(uiKitConfig?: UiKitConfiguration): Promise<Record<string, string>>;
|
|
190
|
+
/**
|
|
191
|
+
* @inheritdoc
|
|
192
|
+
*/
|
|
193
|
+
getEcosystemWalletComponents(): EcosystemWalletComponents | undefined;
|
|
194
|
+
/**
|
|
195
|
+
* @inheritdoc
|
|
196
|
+
*/
|
|
197
|
+
getEcosystemReactUiContextProvider(): React.ComponentType<EcosystemReactUiProviderProps> | undefined;
|
|
198
|
+
/**
|
|
199
|
+
* @inheritdoc
|
|
200
|
+
*/
|
|
201
|
+
getEcosystemReactHooks(): EcosystemSpecificReactHooks | undefined;
|
|
202
|
+
/**
|
|
203
|
+
* @inheritdoc
|
|
204
|
+
*/
|
|
205
|
+
getRelayers(serviceUrl: string, accessToken: string): Promise<RelayerDetails[]>;
|
|
206
|
+
/**
|
|
207
|
+
* @inheritdoc
|
|
208
|
+
*/
|
|
209
|
+
getRelayer(serviceUrl: string, accessToken: string, relayerId: string): Promise<RelayerDetailsRich>;
|
|
210
|
+
/**
|
|
211
|
+
* @inheritdoc
|
|
212
|
+
*/
|
|
213
|
+
getRelayerOptionsComponent(): React.ComponentType<{
|
|
214
|
+
options: Record<string, unknown>;
|
|
215
|
+
onChange: (options: Record<string, unknown>) => void;
|
|
216
|
+
}> | undefined;
|
|
217
|
+
/**
|
|
218
|
+
* @inheritdoc
|
|
219
|
+
*/
|
|
220
|
+
validateRpcEndpoint(rpcConfig: UserRpcProviderConfig): Promise<boolean>;
|
|
221
|
+
/**
|
|
222
|
+
* @inheritdoc
|
|
223
|
+
*/
|
|
224
|
+
testRpcConnection(rpcConfig: UserRpcProviderConfig): Promise<{
|
|
225
|
+
success: boolean;
|
|
226
|
+
latency?: number;
|
|
227
|
+
error?: string;
|
|
228
|
+
}>;
|
|
229
|
+
/**
|
|
230
|
+
* @inheritdoc
|
|
231
|
+
*/
|
|
232
|
+
getUiLabels(): Record<string, string> | undefined;
|
|
233
|
+
/**
|
|
234
|
+
* @inheritdoc
|
|
235
|
+
*/
|
|
236
|
+
getAccessControlService(): AccessControlService;
|
|
237
|
+
/**
|
|
238
|
+
* @inheritdoc
|
|
239
|
+
*/
|
|
240
|
+
getTypeMappingInfo(): TypeMappingInfo;
|
|
241
|
+
}
|
|
242
|
+
//#endregion
|
|
243
|
+
//#region src/types/artifacts.d.ts
|
|
244
|
+
/**
|
|
245
|
+
* Stellar-specific contract artifacts interface
|
|
246
|
+
* Defines the structure of data needed to load Stellar contracts
|
|
247
|
+
*/
|
|
248
|
+
interface StellarContractArtifacts {
|
|
249
|
+
/** The deployed contract ID (required, C...) */
|
|
250
|
+
contractAddress: string;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Type guard to check if an object matches StellarContractArtifacts structure
|
|
254
|
+
*/
|
|
255
|
+
declare function isStellarContractArtifacts(obj: unknown): obj is StellarContractArtifacts;
|
|
256
|
+
//#endregion
|
|
257
|
+
//#region src/index.d.ts
|
|
258
|
+
declare const ecosystemDefinition: EcosystemExport;
|
|
259
|
+
//#endregion
|
|
260
|
+
export { StellarAdapter, type StellarContractArtifacts, ecosystemDefinition, ecosystemMetadata, isStellarContractArtifacts, stellarPublic, stellarTestnet };
|
|
261
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/wallet/types.ts","../src/adapter.ts","../src/types/artifacts.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import { ecosystemMetadata } from "./metadata.mjs";
|
|
2
|
+
import { a as stellarPublic, i as stellarTestnet } from "./networks-C0MmhJcu.mjs";
|
|
3
|
+
import { AccessControlService, AvailableUiKit, Connector, ContractAdapter, ContractFunction, ContractSchema, EcosystemExport, EcosystemReactUiProviderProps, EcosystemSpecificReactHooks, EcosystemWalletComponents, ExecutionConfig, ExecutionMethodDetail, FieldType, FormFieldType, FunctionParameter, NativeConfigLoader, NetworkServiceForm, RelayerDetails, RelayerDetailsRich, StellarNetworkConfig, TransactionStatusUpdate, TxStatus, TypeMappingInfo, UiKitConfiguration, UserRpcProviderConfig, WalletConnectionStatus } from "@openzeppelin/ui-types";
|
|
4
|
+
import { StellarWalletsKit } from "@creit.tech/stellar-wallets-kit";
|
|
5
|
+
import React$1 from "react";
|
|
6
|
+
import "react/jsx-runtime";
|
|
7
|
+
|
|
8
|
+
//#region src/wallet/types.d.ts
|
|
9
|
+
/**
|
|
10
|
+
* Stellar-specific wallet connection status extending the base interface.
|
|
11
|
+
* Includes Stellar-specific fields like walletId.
|
|
12
|
+
* Note that stellar wallets don't work with multiple addresses, only a single active address.
|
|
13
|
+
*/
|
|
14
|
+
interface StellarWalletConnectionStatus extends WalletConnectionStatus {
|
|
15
|
+
/** Stellar-specific wallet identifier (e.g., 'freighter', 'albedo') */
|
|
16
|
+
walletId?: string;
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
//#region src/adapter.d.ts
|
|
20
|
+
/**
|
|
21
|
+
* Stellar-specific adapter implementation using explicit method delegation.
|
|
22
|
+
*/
|
|
23
|
+
declare class StellarAdapter implements ContractAdapter {
|
|
24
|
+
readonly networkConfig: StellarNetworkConfig;
|
|
25
|
+
readonly initialAppServiceKitName: UiKitConfiguration['kitName'];
|
|
26
|
+
private readonly accessControlService;
|
|
27
|
+
constructor(networkConfig: StellarNetworkConfig);
|
|
28
|
+
/**
|
|
29
|
+
* @inheritdoc
|
|
30
|
+
*/
|
|
31
|
+
getNetworkServiceForms(): NetworkServiceForm[];
|
|
32
|
+
/**
|
|
33
|
+
* @inheritdoc
|
|
34
|
+
*/
|
|
35
|
+
validateNetworkServiceConfig(serviceId: string, values: Record<string, unknown>): Promise<boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* @inheritdoc
|
|
38
|
+
*/
|
|
39
|
+
testNetworkServiceConnection(serviceId: string, values: Record<string, unknown>): Promise<{
|
|
40
|
+
success: boolean;
|
|
41
|
+
latency?: number;
|
|
42
|
+
error?: string;
|
|
43
|
+
}>;
|
|
44
|
+
/**
|
|
45
|
+
* @inheritdoc
|
|
46
|
+
*/
|
|
47
|
+
getDefaultServiceConfig(serviceId: string): Record<string, unknown> | null;
|
|
48
|
+
/**
|
|
49
|
+
* NOTE about artifact inputs (single input with auto-detection):
|
|
50
|
+
*
|
|
51
|
+
* The Builder renders the contract definition step using whatever fields the
|
|
52
|
+
* adapter returns here. EVM uses one optional ABI field; Midnight provides
|
|
53
|
+
* multiple fields. Stellar should use a single input approach with automatic
|
|
54
|
+
* content detection when we add manual-spec support:
|
|
55
|
+
*
|
|
56
|
+
* - Keep `contractAddress` (required)
|
|
57
|
+
* - Add optional `contractDefinition` (type: `code-editor`, language: `json`)
|
|
58
|
+
* with file upload support for both JSON and Wasm binary content
|
|
59
|
+
*
|
|
60
|
+
* When this field is added:
|
|
61
|
+
* - Extend `validateAndConvertStellarArtifacts(...)` to accept
|
|
62
|
+
* `{ contractAddress, contractDefinition? }`
|
|
63
|
+
* - In the loader, branch: if `contractDefinition` provided, auto-detect
|
|
64
|
+
* content type (JSON vs Wasm using magic bytes `\0asm`):
|
|
65
|
+
* - For JSON: Parse and validate as Soroban spec, use `transformStellarSpecToSchema`
|
|
66
|
+
* - For Wasm: Extract embedded spec from binary, parse locally (no RPC)
|
|
67
|
+
* - Set `source: 'manual'` with `contractDefinitionOriginal` to the raw
|
|
68
|
+
* user-provided content. This ensures auto-save captures and restores the
|
|
69
|
+
* manual contract definition exactly like the EVM/Midnight flows.
|
|
70
|
+
* - Provide clear UI hints about supported formats (JSON spec or Wasm binary).
|
|
71
|
+
*/
|
|
72
|
+
/**
|
|
73
|
+
* @inheritdoc
|
|
74
|
+
*/
|
|
75
|
+
getContractDefinitionInputs(): FormFieldType[];
|
|
76
|
+
/**
|
|
77
|
+
* @inheritdoc
|
|
78
|
+
*/
|
|
79
|
+
loadContract(source: string | Record<string, unknown>): Promise<ContractSchema>;
|
|
80
|
+
/**
|
|
81
|
+
* @inheritdoc
|
|
82
|
+
*/
|
|
83
|
+
loadContractWithMetadata(source: string | Record<string, unknown>): Promise<{
|
|
84
|
+
schema: ContractSchema;
|
|
85
|
+
source: 'fetched' | 'manual';
|
|
86
|
+
contractDefinitionOriginal?: string;
|
|
87
|
+
metadata?: {
|
|
88
|
+
fetchedFrom?: string;
|
|
89
|
+
contractName?: string;
|
|
90
|
+
fetchTimestamp?: Date;
|
|
91
|
+
definitionHash?: string;
|
|
92
|
+
};
|
|
93
|
+
}>;
|
|
94
|
+
/**
|
|
95
|
+
* @inheritdoc
|
|
96
|
+
*/
|
|
97
|
+
getWritableFunctions(contractSchema: ContractSchema): ContractSchema['functions'];
|
|
98
|
+
/**
|
|
99
|
+
* @inheritdoc
|
|
100
|
+
*/
|
|
101
|
+
mapParameterTypeToFieldType(parameterType: string): FieldType;
|
|
102
|
+
getCompatibleFieldTypes(parameterType: string): FieldType[];
|
|
103
|
+
generateDefaultField<T extends FieldType = FieldType>(parameter: FunctionParameter, contractSchema?: ContractSchema): FormFieldType<T>;
|
|
104
|
+
/**
|
|
105
|
+
* @inheritdoc
|
|
106
|
+
*/
|
|
107
|
+
formatTransactionData(contractSchema: ContractSchema, functionId: string, submittedInputs: Record<string, unknown>, fields: FormFieldType[]): unknown;
|
|
108
|
+
signAndBroadcast(transactionData: unknown, executionConfig: ExecutionConfig, onStatusChange: (status: TxStatus, details: TransactionStatusUpdate) => void, runtimeApiKey?: string): Promise<{
|
|
109
|
+
txHash: string;
|
|
110
|
+
}>;
|
|
111
|
+
/**
|
|
112
|
+
* @inheritdoc
|
|
113
|
+
*/
|
|
114
|
+
isViewFunction(functionDetails: ContractFunction): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* @inheritdoc
|
|
117
|
+
*/
|
|
118
|
+
queryViewFunction(contractAddress: string, functionId: string, params?: unknown[], contractSchema?: ContractSchema): Promise<unknown>;
|
|
119
|
+
/**
|
|
120
|
+
* @inheritdoc
|
|
121
|
+
*/
|
|
122
|
+
formatFunctionResult(decodedValue: unknown, functionDetails: ContractFunction): string;
|
|
123
|
+
/**
|
|
124
|
+
* @inheritdoc
|
|
125
|
+
*/
|
|
126
|
+
supportsWalletConnection(): boolean;
|
|
127
|
+
/**
|
|
128
|
+
* @inheritdoc
|
|
129
|
+
*/
|
|
130
|
+
getAvailableConnectors(): Promise<Connector[]>;
|
|
131
|
+
/**
|
|
132
|
+
* @inheritdoc
|
|
133
|
+
*/
|
|
134
|
+
connectWallet(connectorId: string): Promise<{
|
|
135
|
+
connected: boolean;
|
|
136
|
+
address?: string;
|
|
137
|
+
error?: string;
|
|
138
|
+
}>;
|
|
139
|
+
/**
|
|
140
|
+
* @inheritdoc
|
|
141
|
+
*/
|
|
142
|
+
disconnectWallet(): Promise<{
|
|
143
|
+
disconnected: boolean;
|
|
144
|
+
error?: string;
|
|
145
|
+
}>;
|
|
146
|
+
/**
|
|
147
|
+
* @inheritdoc
|
|
148
|
+
*/
|
|
149
|
+
getWalletConnectionStatus(): StellarWalletConnectionStatus;
|
|
150
|
+
/**
|
|
151
|
+
* @inheritdoc
|
|
152
|
+
*/
|
|
153
|
+
onWalletConnectionChange(callback: (currentStatus: WalletConnectionStatus, previousStatus: WalletConnectionStatus) => void): () => void;
|
|
154
|
+
/**
|
|
155
|
+
* @inheritdoc
|
|
156
|
+
*/
|
|
157
|
+
getSupportedExecutionMethods(): Promise<ExecutionMethodDetail[]>;
|
|
158
|
+
/**
|
|
159
|
+
* @inheritdoc
|
|
160
|
+
*/
|
|
161
|
+
validateExecutionConfig(config: ExecutionConfig): Promise<true | string>;
|
|
162
|
+
/**
|
|
163
|
+
* @inheritdoc
|
|
164
|
+
*/
|
|
165
|
+
getExplorerUrl(address: string): string | null;
|
|
166
|
+
/**
|
|
167
|
+
* @inheritdoc
|
|
168
|
+
*/
|
|
169
|
+
getExplorerTxUrl?(txHash: string): string | null;
|
|
170
|
+
/**
|
|
171
|
+
* @inheritdoc
|
|
172
|
+
*/
|
|
173
|
+
getCurrentBlock(): Promise<number>;
|
|
174
|
+
/**
|
|
175
|
+
* @inheritdoc
|
|
176
|
+
*/
|
|
177
|
+
isValidAddress(address: string, addressType?: string): boolean;
|
|
178
|
+
/**
|
|
179
|
+
* @inheritdoc
|
|
180
|
+
*/
|
|
181
|
+
getAvailableUiKits(): Promise<AvailableUiKit[]>;
|
|
182
|
+
/**
|
|
183
|
+
* @inheritdoc
|
|
184
|
+
*/
|
|
185
|
+
configureUiKit(programmaticOverrides?: Partial<UiKitConfiguration>, options?: {
|
|
186
|
+
loadUiKitNativeConfig?: NativeConfigLoader;
|
|
187
|
+
}): Promise<void>;
|
|
188
|
+
/**
|
|
189
|
+
* @inheritdoc
|
|
190
|
+
*/
|
|
191
|
+
getExportableWalletConfigFiles(uiKitConfig?: UiKitConfiguration): Promise<Record<string, string>>;
|
|
192
|
+
/**
|
|
193
|
+
* @inheritdoc
|
|
194
|
+
*/
|
|
195
|
+
getEcosystemWalletComponents(): EcosystemWalletComponents | undefined;
|
|
196
|
+
/**
|
|
197
|
+
* @inheritdoc
|
|
198
|
+
*/
|
|
199
|
+
getEcosystemReactUiContextProvider(): React$1.ComponentType<EcosystemReactUiProviderProps> | undefined;
|
|
200
|
+
/**
|
|
201
|
+
* @inheritdoc
|
|
202
|
+
*/
|
|
203
|
+
getEcosystemReactHooks(): EcosystemSpecificReactHooks | undefined;
|
|
204
|
+
/**
|
|
205
|
+
* @inheritdoc
|
|
206
|
+
*/
|
|
207
|
+
getRelayers(serviceUrl: string, accessToken: string): Promise<RelayerDetails[]>;
|
|
208
|
+
/**
|
|
209
|
+
* @inheritdoc
|
|
210
|
+
*/
|
|
211
|
+
getRelayer(serviceUrl: string, accessToken: string, relayerId: string): Promise<RelayerDetailsRich>;
|
|
212
|
+
/**
|
|
213
|
+
* @inheritdoc
|
|
214
|
+
*/
|
|
215
|
+
getRelayerOptionsComponent(): React$1.ComponentType<{
|
|
216
|
+
options: Record<string, unknown>;
|
|
217
|
+
onChange: (options: Record<string, unknown>) => void;
|
|
218
|
+
}> | undefined;
|
|
219
|
+
/**
|
|
220
|
+
* @inheritdoc
|
|
221
|
+
*/
|
|
222
|
+
validateRpcEndpoint(rpcConfig: UserRpcProviderConfig): Promise<boolean>;
|
|
223
|
+
/**
|
|
224
|
+
* @inheritdoc
|
|
225
|
+
*/
|
|
226
|
+
testRpcConnection(rpcConfig: UserRpcProviderConfig): Promise<{
|
|
227
|
+
success: boolean;
|
|
228
|
+
latency?: number;
|
|
229
|
+
error?: string;
|
|
230
|
+
}>;
|
|
231
|
+
/**
|
|
232
|
+
* @inheritdoc
|
|
233
|
+
*/
|
|
234
|
+
getUiLabels(): Record<string, string> | undefined;
|
|
235
|
+
/**
|
|
236
|
+
* @inheritdoc
|
|
237
|
+
*/
|
|
238
|
+
getAccessControlService(): AccessControlService;
|
|
239
|
+
/**
|
|
240
|
+
* @inheritdoc
|
|
241
|
+
*/
|
|
242
|
+
getTypeMappingInfo(): TypeMappingInfo;
|
|
243
|
+
}
|
|
244
|
+
//#endregion
|
|
245
|
+
//#region src/types/artifacts.d.ts
|
|
246
|
+
/**
|
|
247
|
+
* Stellar-specific contract artifacts interface
|
|
248
|
+
* Defines the structure of data needed to load Stellar contracts
|
|
249
|
+
*/
|
|
250
|
+
interface StellarContractArtifacts {
|
|
251
|
+
/** The deployed contract ID (required, C...) */
|
|
252
|
+
contractAddress: string;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Type guard to check if an object matches StellarContractArtifacts structure
|
|
256
|
+
*/
|
|
257
|
+
declare function isStellarContractArtifacts(obj: unknown): obj is StellarContractArtifacts;
|
|
258
|
+
//#endregion
|
|
259
|
+
//#region src/index.d.ts
|
|
260
|
+
declare const ecosystemDefinition: EcosystemExport;
|
|
261
|
+
//#endregion
|
|
262
|
+
export { StellarAdapter, type StellarContractArtifacts, ecosystemDefinition, ecosystemMetadata, isStellarContractArtifacts, stellarPublic, stellarTestnet };
|
|
263
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/wallet/types.ts","../src/adapter.ts","../src/types/artifacts.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|