@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.
Files changed (165) hide show
  1. package/README.md +272 -0
  2. package/dist/config.cjs +21 -0
  3. package/dist/config.cjs.map +1 -0
  4. package/dist/config.d.cts +8 -0
  5. package/dist/config.d.cts.map +1 -0
  6. package/dist/config.d.mts +8 -0
  7. package/dist/config.d.mts.map +1 -0
  8. package/dist/config.mjs +20 -0
  9. package/dist/config.mjs.map +1 -0
  10. package/dist/index.cjs +7564 -0
  11. package/dist/index.cjs.map +1 -0
  12. package/dist/index.d.cts +261 -0
  13. package/dist/index.d.cts.map +1 -0
  14. package/dist/index.d.mts +263 -0
  15. package/dist/index.d.mts.map +1 -0
  16. package/dist/index.mjs +7529 -0
  17. package/dist/index.mjs.map +1 -0
  18. package/dist/metadata.cjs +22 -0
  19. package/dist/metadata.cjs.map +1 -0
  20. package/dist/metadata.d.cts +7 -0
  21. package/dist/metadata.d.cts.map +1 -0
  22. package/dist/metadata.d.mts +7 -0
  23. package/dist/metadata.d.mts.map +1 -0
  24. package/dist/metadata.mjs +21 -0
  25. package/dist/metadata.mjs.map +1 -0
  26. package/dist/networks-BrV516-R.d.cts +15 -0
  27. package/dist/networks-BrV516-R.d.cts.map +1 -0
  28. package/dist/networks-C0MmhJcu.d.mts +15 -0
  29. package/dist/networks-C0MmhJcu.d.mts.map +1 -0
  30. package/dist/networks-DgUFSTiC.cjs +76 -0
  31. package/dist/networks-DgUFSTiC.cjs.map +1 -0
  32. package/dist/networks-QbEPbaGT.mjs +46 -0
  33. package/dist/networks-QbEPbaGT.mjs.map +1 -0
  34. package/dist/networks.cjs +8 -0
  35. package/dist/networks.d.cts +2 -0
  36. package/dist/networks.d.mts +2 -0
  37. package/dist/networks.mjs +3 -0
  38. package/dist/vite-config.cjs +43 -0
  39. package/dist/vite-config.cjs.map +1 -0
  40. package/dist/vite-config.d.cts +35 -0
  41. package/dist/vite-config.d.cts.map +1 -0
  42. package/dist/vite-config.d.mts +35 -0
  43. package/dist/vite-config.d.mts.map +1 -0
  44. package/dist/vite-config.mjs +42 -0
  45. package/dist/vite-config.mjs.map +1 -0
  46. package/package.json +114 -0
  47. package/src/__tests__/getDefaultServiceConfig.test.ts +105 -0
  48. package/src/access-control/actions.ts +214 -0
  49. package/src/access-control/feature-detection.ts +238 -0
  50. package/src/access-control/index.ts +54 -0
  51. package/src/access-control/indexer-client.ts +1474 -0
  52. package/src/access-control/onchain-reader.ts +446 -0
  53. package/src/access-control/service.ts +1431 -0
  54. package/src/access-control/validation.ts +256 -0
  55. package/src/adapter.ts +659 -0
  56. package/src/config.ts +43 -0
  57. package/src/configuration/__tests__/explorer.test.ts +80 -0
  58. package/src/configuration/__tests__/rpc.test.ts +355 -0
  59. package/src/configuration/execution.ts +83 -0
  60. package/src/configuration/explorer.ts +105 -0
  61. package/src/configuration/index.ts +5 -0
  62. package/src/configuration/network-services.ts +210 -0
  63. package/src/configuration/rpc.ts +270 -0
  64. package/src/configuration.ts +2 -0
  65. package/src/contract/__tests__/complete-type-coverage.test.ts +78 -0
  66. package/src/contract/index.ts +3 -0
  67. package/src/contract/loader.ts +498 -0
  68. package/src/contract/transformer.ts +1 -0
  69. package/src/contract/type.ts +65 -0
  70. package/src/index.ts +23 -0
  71. package/src/mapping/constants.ts +89 -0
  72. package/src/mapping/enum-metadata.ts +237 -0
  73. package/src/mapping/field-generator.ts +296 -0
  74. package/src/mapping/index.ts +5 -0
  75. package/src/mapping/struct-fields.ts +106 -0
  76. package/src/mapping/tuple-components.ts +43 -0
  77. package/src/mapping/type-coverage-validator.ts +151 -0
  78. package/src/mapping/type-mapper.ts +203 -0
  79. package/src/metadata.ts +16 -0
  80. package/src/networks/README.md +84 -0
  81. package/src/networks/index.ts +19 -0
  82. package/src/networks/mainnet.ts +20 -0
  83. package/src/networks/testnet.ts +20 -0
  84. package/src/networks.ts +2 -0
  85. package/src/query/handler.ts +411 -0
  86. package/src/query/index.ts +4 -0
  87. package/src/query/view-checker.ts +32 -0
  88. package/src/sac/spec-cache.ts +68 -0
  89. package/src/sac/spec-source.ts +35 -0
  90. package/src/sac/xdr.ts +101 -0
  91. package/src/transaction/components/AdvancedInfo.tsx +34 -0
  92. package/src/transaction/components/FeeConfiguration.tsx +41 -0
  93. package/src/transaction/components/StellarRelayerOptions.tsx +60 -0
  94. package/src/transaction/components/TransactionTiming.tsx +77 -0
  95. package/src/transaction/components/index.ts +5 -0
  96. package/src/transaction/components/useStellarRelayerOptions.ts +114 -0
  97. package/src/transaction/eoa.ts +229 -0
  98. package/src/transaction/execution-strategy.ts +33 -0
  99. package/src/transaction/formatter.ts +296 -0
  100. package/src/transaction/index.ts +4 -0
  101. package/src/transaction/relayer.ts +575 -0
  102. package/src/transaction/sender.ts +156 -0
  103. package/src/transform/index.ts +4 -0
  104. package/src/transform/input-parser.ts +9 -0
  105. package/src/transform/output-formatter.ts +133 -0
  106. package/src/transform/parsers/complex-parser.ts +157 -0
  107. package/src/transform/parsers/generic-parser.ts +171 -0
  108. package/src/transform/parsers/index.ts +86 -0
  109. package/src/transform/parsers/primitive-parser.ts +123 -0
  110. package/src/transform/parsers/scval-converter.ts +405 -0
  111. package/src/transform/parsers/struct-parser.ts +324 -0
  112. package/src/transform/parsers/types.ts +35 -0
  113. package/src/types/__tests__/artifacts.test.ts +89 -0
  114. package/src/types/artifacts.ts +19 -0
  115. package/src/utils/__tests__/artifacts.test.ts +77 -0
  116. package/src/utils/artifacts.ts +30 -0
  117. package/src/utils/formatting.ts +122 -0
  118. package/src/utils/index.ts +6 -0
  119. package/src/utils/input-parsing.ts +336 -0
  120. package/src/utils/safe-type-parser.ts +303 -0
  121. package/src/utils/stellar-types.ts +35 -0
  122. package/src/utils/type-detection.ts +163 -0
  123. package/src/utils/xdr-ordering.ts +36 -0
  124. package/src/validation/__tests__/address.test.ts +267 -0
  125. package/src/validation/address.ts +136 -0
  126. package/src/validation/eoa.ts +33 -0
  127. package/src/validation/index.ts +3 -0
  128. package/src/validation/relayer.ts +13 -0
  129. package/src/vite-config.ts +67 -0
  130. package/src/wallet/README.md +93 -0
  131. package/src/wallet/__tests__/connection.test.ts +72 -0
  132. package/src/wallet/components/StellarWalletUiRoot.tsx +161 -0
  133. package/src/wallet/components/account/AccountDisplay.tsx +50 -0
  134. package/src/wallet/components/connect/ConnectButton.tsx +100 -0
  135. package/src/wallet/components/connect/ConnectorDialog.tsx +125 -0
  136. package/src/wallet/components/index.ts +3 -0
  137. package/src/wallet/connection.ts +151 -0
  138. package/src/wallet/context/StellarWalletContext.ts +32 -0
  139. package/src/wallet/context/index.ts +4 -0
  140. package/src/wallet/context/useStellarWalletContext.ts +17 -0
  141. package/src/wallet/hooks/facade-hooks.ts +31 -0
  142. package/src/wallet/hooks/index.ts +7 -0
  143. package/src/wallet/hooks/useStellarAccount.ts +27 -0
  144. package/src/wallet/hooks/useStellarConnect.ts +60 -0
  145. package/src/wallet/hooks/useStellarDisconnect.ts +47 -0
  146. package/src/wallet/hooks/useUiKitConfig.ts +40 -0
  147. package/src/wallet/implementation/wallets-kit-implementation.ts +379 -0
  148. package/src/wallet/index.ts +11 -0
  149. package/src/wallet/services/__tests__/configResolutionService.test.ts +163 -0
  150. package/src/wallet/services/configResolutionService.ts +65 -0
  151. package/src/wallet/stellar-wallets-kit/StellarWalletsKitConnectButton.tsx +82 -0
  152. package/src/wallet/stellar-wallets-kit/__mocks__/@creit.tech/stellar-wallets-kit.ts +48 -0
  153. package/src/wallet/stellar-wallets-kit/__tests__/export-service.test.ts +93 -0
  154. package/src/wallet/stellar-wallets-kit/__tests__/stellarUiKitManager.test.ts +0 -0
  155. package/src/wallet/stellar-wallets-kit/config-generator.ts +75 -0
  156. package/src/wallet/stellar-wallets-kit/export-service.ts +19 -0
  157. package/src/wallet/stellar-wallets-kit/index.ts +3 -0
  158. package/src/wallet/stellar-wallets-kit/stellarUiKitManager.ts +235 -0
  159. package/src/wallet/types.ts +19 -0
  160. package/src/wallet/utils/__tests__/filterWalletComponents.test.ts +150 -0
  161. package/src/wallet/utils/__tests__/uiKitService.test.ts +189 -0
  162. package/src/wallet/utils/filterWalletComponents.ts +89 -0
  163. package/src/wallet/utils/index.ts +3 -0
  164. package/src/wallet/utils/stellarWalletImplementationManager.ts +118 -0
  165. package/src/wallet/utils/uiKitService.ts +74 -0
@@ -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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"}
@@ -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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"}