UNPKG

@openzeppelin/contracts-ui-builder-adapter-stellar

Version:
1 lines 33 kB
{"version":3,"sources":["../src/index.ts","../src/configuration/execution.ts","../src/utils/validator.ts","../src/configuration/explorer.ts","../src/configuration/rpc.ts","../src/adapter.ts","../src/mapping/type-mapper.ts","../src/mapping/field-generator.ts","../src/query/handler.ts","../src/query/view-checker.ts","../src/transaction/formatter.ts","../src/transaction/sender.ts","../src/transform/input-parser.ts","../src/transform/output-formatter.ts","../src/wallet/connection.ts","../src/networks/mainnet.ts","../src/networks/testnet.ts","../src/networks/index.ts","../src/config.ts"],"sourcesContent":["// Re-export the main adapter class\nexport { StellarAdapter } from './adapter';\n\n// Optionally re-export types if needed\n// export * from './types'; // No types.ts in Stellar adapter yet\n\nexport {\n stellarNetworks,\n stellarMainnetNetworks,\n stellarTestnetNetworks,\n // Individual networks\n stellarPublic,\n stellarTestnet,\n} from './networks';\n\n// Export adapter configuration\nexport { stellarAdapterConfig } from './config';\n","import type {\n ExecutionConfig,\n ExecutionMethodDetail,\n} from '@openzeppelin/contracts-ui-builder-types';\nimport { logger } from '@openzeppelin/contracts-ui-builder-utils';\n\nimport { isValidAddress } from '../utils';\n\n/**\n * Get supported execution methods for Stellar.\n * TODO: Implement actual supported methods for Stellar.\n */\nexport function getStellarSupportedExecutionMethods(): Promise<ExecutionMethodDetail[]> {\n // Placeholder: Assume only EOA is supported for now\n logger.warn(\n 'StellarExecutionConfig',\n 'getSupportedExecutionMethods is using placeholder implementation.'\n );\n return Promise.resolve([\n {\n type: 'eoa',\n name: 'Stellar Account',\n description: 'Execute using a standard Stellar account address.',\n },\n ]);\n}\n\n/**\n * Validate execution config for Stellar.\n * TODO: Implement actual validation logic for Stellar execution configs.\n */\nexport function validateStellarExecutionConfig(config: ExecutionConfig): Promise<true | string> {\n // Placeholder: Basic validation\n logger.warn(\n 'StellarExecutionConfig',\n 'validateExecutionConfig is using placeholder implementation.'\n );\n if (config.method === 'eoa') {\n if (!config.allowAny && !config.specificAddress) {\n return Promise.resolve('Specific Stellar account address is required.');\n }\n if (\n !config.allowAny &&\n config.specificAddress &&\n !isValidAddress(config.specificAddress) // Assuming isValidAddress is moved to utils\n ) {\n return Promise.resolve('Invalid account address format for Stellar.');\n }\n return Promise.resolve(true);\n } else {\n // For now, consider other methods unsupported by this placeholder\n return Promise.resolve(\n `Execution method '${config.method}' is not yet supported by this adapter implementation.`\n );\n }\n}\n","/**\n * Validate a Stellar blockchain address\n * @param address The address to validate\n * @returns Whether the address is a valid Stellar address\n */\nexport function isValidAddress(address: string): boolean {\n // Basic check for Stellar addresses (starts with G and is 56 chars long)\n // TODO: Use a proper Stellar SDK for validation when focusing on that chain\n return /^G[A-Z0-9]{55}$/.test(address);\n}\n","import { NetworkConfig } from '@openzeppelin/contracts-ui-builder-types';\nimport type { UserExplorerConfig } from '@openzeppelin/contracts-ui-builder-types';\nimport { logger } from '@openzeppelin/contracts-ui-builder-utils';\n\n/**\n * Gets a blockchain explorer URL for an address on Stellar.\n * Uses the explorerUrl from the network configuration.\n *\n * @param address The address to get the explorer URL for\n * @param networkConfig The network configuration object.\n * @returns A URL to view the address on the configured Stellar explorer, or null.\n */\nexport function getStellarExplorerAddressUrl(\n address: string,\n networkConfig: NetworkConfig\n): string | null {\n if (!address || !networkConfig.explorerUrl) {\n return null;\n }\n // Construct the URL, assuming a standard /account/ path for Stellar explorers\n const baseUrl = networkConfig.explorerUrl.replace(/\\/+$/, '');\n return `${baseUrl}/account/${address}`;\n}\n\n/**\n * Gets a blockchain explorer URL for a transaction on Stellar.\n * Uses the explorerUrl from the network configuration.\n *\n * @param txHash - The hash of the transaction to get the explorer URL for\n * @param networkConfig The network configuration object.\n * @returns A URL to view the transaction on the configured Stellar explorer, or null.\n */\nexport function getStellarExplorerTxUrl(\n txHash: string,\n networkConfig: NetworkConfig\n): string | null {\n if (!txHash || !networkConfig.explorerUrl) {\n return null;\n }\n // Construct the URL, assuming a standard /tx/ path for Stellar explorers\n const baseUrl = networkConfig.explorerUrl.replace(/\\/+$/, '');\n return `${baseUrl}/tx/${txHash}`;\n}\n\n/**\n * Validates an explorer configuration for Stellar networks.\n * @param explorerConfig - The explorer configuration to validate\n * @returns True if the configuration is valid, false otherwise\n */\nexport function validateStellarExplorerConfig(_explorerConfig: UserExplorerConfig): boolean {\n // TODO: Implement Stellar-specific explorer validation when needed\n logger.info('validateStellarExplorerConfig', 'Stellar explorer validation not yet implemented');\n return true;\n}\n\n/**\n * Tests the connection to a Stellar explorer API.\n * @param explorerConfig - The explorer configuration to test\n * @returns Connection test results including success status, latency, and any errors\n */\nexport async function testStellarExplorerConnection(_explorerConfig: UserExplorerConfig): Promise<{\n success: boolean;\n latency?: number;\n error?: string;\n}> {\n // TODO: Implement explorer connection testing for Stellar\n // Could use a health check endpoint if available\n logger.info('testStellarExplorerConnection', 'TODO: Implement explorer connection testing');\n return { success: true };\n}\n","import type { UserRpcProviderConfig } from '@openzeppelin/contracts-ui-builder-types';\nimport { logger } from '@openzeppelin/contracts-ui-builder-utils';\n\n/**\n * Validates an RPC endpoint configuration for Stellar networks.\n * @param rpcConfig - The RPC provider configuration to validate\n * @returns True if the configuration is valid, false otherwise\n */\nexport function validateStellarRpcEndpoint(_rpcConfig: UserRpcProviderConfig): boolean {\n // TODO: Implement Stellar-specific RPC validation when needed\n logger.info('validateStellarRpcEndpoint', 'Stellar RPC validation not yet implemented');\n return true;\n}\n\n/**\n * Tests the connection to a Stellar RPC endpoint.\n * @param rpcConfig - The RPC provider configuration to test\n * @returns Connection test results including success status, latency, and any errors\n */\nexport async function testStellarRpcConnection(_rpcConfig: UserRpcProviderConfig): Promise<{\n success: boolean;\n latency?: number;\n error?: string;\n}> {\n // TODO: Implement RPC connection testing for Stellar\n // Could use Horizon API health check endpoint\n logger.info('testStellarRpcConnection', 'TODO: Implement RPC connection testing');\n return { success: true };\n}\n","import {\n testStellarRpcConnection,\n validateStellarRpcEndpoint,\n} from 'packages/adapter-stellar/src/configuration';\n\nimport type {\n AvailableUiKit,\n Connector,\n ContractAdapter,\n ContractFunction,\n ContractSchema,\n ExecutionConfig,\n ExecutionMethodDetail,\n FieldType,\n FormFieldType,\n FormValues,\n FunctionParameter,\n RelayerDetails,\n RelayerDetailsRich,\n StellarNetworkConfig,\n UiKitConfiguration,\n UserRpcProviderConfig,\n} from '@openzeppelin/contracts-ui-builder-types';\nimport { isStellarNetworkConfig } from '@openzeppelin/contracts-ui-builder-types';\nimport { logger } from '@openzeppelin/contracts-ui-builder-utils';\n\n// Import functions from modules\nimport {\n getStellarSupportedExecutionMethods,\n validateStellarExecutionConfig,\n} from './configuration/execution';\nimport { getStellarExplorerAddressUrl, getStellarExplorerTxUrl } from './configuration/explorer';\n\nimport {\n generateStellarDefaultField,\n getStellarCompatibleFieldTypes,\n mapStellarParameterTypeToFieldType,\n} from './mapping';\nimport { isStellarViewFunction, queryStellarViewFunction } from './query';\nimport { formatStellarTransactionData, signAndBroadcastStellarTransaction } from './transaction';\nimport { formatStellarFunctionResult } from './transform';\nimport { isValidAddress as isStellarValidAddress } from './utils';\nimport {\n connectStellarWallet,\n disconnectStellarWallet,\n getStellarAvailableConnectors,\n getStellarWalletConnectionStatus,\n supportsStellarWalletConnection,\n // onStellarWalletConnectionChange, // Placeholder if needed later\n} from './wallet';\n\n/**\n * Stellar-specific adapter implementation using explicit method delegation.\n *\n * NOTE: Contains placeholder implementations for most functionalities.\n */\nexport class StellarAdapter implements ContractAdapter {\n readonly networkConfig: StellarNetworkConfig;\n readonly initialAppServiceKitName: UiKitConfiguration['kitName'];\n\n constructor(networkConfig: StellarNetworkConfig) {\n if (!isStellarNetworkConfig(networkConfig)) {\n throw new Error('StellarAdapter requires a valid Stellar network configuration.');\n }\n this.networkConfig = networkConfig;\n this.initialAppServiceKitName = 'custom';\n logger.info(\n 'StellarAdapter',\n `Adapter initialized for network: ${networkConfig.name} (ID: ${networkConfig.id})`\n );\n }\n\n // --- Contract Loading --- //\n public getContractDefinitionInputs(): FormFieldType[] {\n return [\n {\n id: 'contractAddress',\n name: 'contractAddress',\n label: 'Contract ID',\n type: 'blockchain-address',\n validation: { required: true },\n placeholder: 'G...',\n helperText: 'Enter the Stellar contract ID.',\n },\n ];\n }\n\n async loadContract(artifacts: FormValues): Promise<ContractSchema> {\n // Stellar doesn't have a standardized on-chain contract interface like an ABI.\n // The 'source' would need to be a custom JSON descriptor provided by the user.\n // This is a placeholder for a more complex implementation.\n if (typeof artifacts.contractAddress !== 'string') {\n throw new Error('A contract address must be provided.');\n }\n\n return {\n name: 'StellarContract',\n address: artifacts.contractAddress,\n ecosystem: 'stellar',\n functions: [],\n events: [],\n };\n }\n\n getWritableFunctions(contractSchema: ContractSchema): ContractSchema['functions'] {\n return contractSchema.functions.filter((fn: ContractFunction) => fn.modifiesState);\n }\n\n // --- Type Mapping & Field Generation --- //\n mapParameterTypeToFieldType(parameterType: string): FieldType {\n return mapStellarParameterTypeToFieldType(parameterType);\n }\n getCompatibleFieldTypes(parameterType: string): FieldType[] {\n return getStellarCompatibleFieldTypes(parameterType);\n }\n generateDefaultField<T extends FieldType = FieldType>(\n parameter: FunctionParameter\n ): FormFieldType<T> {\n return generateStellarDefaultField(parameter);\n }\n\n // --- Transaction Formatting & Execution --- //\n public formatTransactionData(\n contractSchema: ContractSchema,\n functionId: string,\n submittedInputs: Record<string, unknown>,\n fields: FormFieldType[]\n ): unknown {\n return formatStellarTransactionData(contractSchema, functionId, submittedInputs, fields);\n }\n async signAndBroadcast(\n transactionData: unknown,\n executionConfig?: ExecutionConfig\n ): Promise<{ txHash: string }> {\n return signAndBroadcastStellarTransaction(transactionData, executionConfig);\n }\n\n // NOTE: waitForTransactionConfirmation? is optional in the interface.\n // Since the imported function is currently undefined, we omit the method here.\n // If implemented in ./transaction/sender.ts later, add the method back:\n // async waitForTransactionConfirmation?(...) { ... }\n\n // --- View Function Querying --- //\n isViewFunction(functionDetails: ContractFunction): boolean {\n return isStellarViewFunction(functionDetails);\n }\n\n // Implement queryViewFunction with the correct signature from ContractAdapter\n async queryViewFunction(\n contractAddress: string,\n functionId: string,\n params: unknown[] = [],\n contractSchema?: ContractSchema\n ): Promise<unknown> {\n return queryStellarViewFunction(\n contractAddress,\n functionId,\n this.networkConfig,\n params,\n contractSchema\n );\n }\n\n formatFunctionResult(decodedValue: unknown, functionDetails: ContractFunction): string {\n return formatStellarFunctionResult(decodedValue, functionDetails);\n }\n\n // --- Wallet Interaction --- //\n supportsWalletConnection(): boolean {\n return supportsStellarWalletConnection();\n }\n async getAvailableConnectors(): Promise<Connector[]> {\n return getStellarAvailableConnectors();\n }\n async connectWallet(\n connectorId: string\n ): Promise<{ connected: boolean; address?: string; error?: string }> {\n return connectStellarWallet(connectorId);\n }\n async disconnectWallet(): Promise<{ disconnected: boolean; error?: string }> {\n return disconnectStellarWallet();\n }\n getWalletConnectionStatus(): { isConnected: boolean; address?: string; chainId?: string } {\n return getStellarWalletConnectionStatus();\n }\n // Optional: onWalletConnectionChange(...) implementation would go here\n\n // --- Configuration & Metadata --- //\n async getSupportedExecutionMethods(): Promise<ExecutionMethodDetail[]> {\n return getStellarSupportedExecutionMethods();\n }\n async validateExecutionConfig(config: ExecutionConfig): Promise<true | string> {\n return validateStellarExecutionConfig(config);\n }\n\n // Implement getExplorerUrl with the correct signature from ContractAdapter\n getExplorerUrl(address: string): string | null {\n return getStellarExplorerAddressUrl(address, this.networkConfig);\n }\n\n // Implement getExplorerTxUrl with the correct signature from ContractAdapter\n getExplorerTxUrl?(txHash: string): string | null {\n if (getStellarExplorerTxUrl) {\n return getStellarExplorerTxUrl(txHash, this.networkConfig);\n }\n return null;\n }\n\n // --- Validation --- //\n isValidAddress(address: string): boolean {\n return isStellarValidAddress(address);\n }\n\n public async getAvailableUiKits(): Promise<AvailableUiKit[]> {\n return [\n {\n id: 'custom',\n name: 'OpenZeppelin Custom',\n configFields: [],\n },\n ];\n }\n\n public async getRelayers(_serviceUrl: string, _accessToken: string): Promise<RelayerDetails[]> {\n logger.warn('StellarAdapter', 'getRelayers is not implemented for the Stellar adapter yet.');\n return Promise.resolve([]);\n }\n\n public async getRelayer(\n _serviceUrl: string,\n _accessToken: string,\n _relayerId: string\n ): Promise<RelayerDetailsRich> {\n logger.warn('StellarAdapter', 'getRelayer is not implemented for the Stellar adapter yet.');\n return Promise.resolve({} as RelayerDetailsRich);\n }\n\n /**\n * @inheritdoc\n */\n public async validateRpcEndpoint(rpcConfig: UserRpcProviderConfig): Promise<boolean> {\n // TODO: Implement Stellar-specific RPC validation when needed\n return validateStellarRpcEndpoint(rpcConfig);\n }\n\n /**\n * @inheritdoc\n */\n public async testRpcConnection(rpcConfig: UserRpcProviderConfig): Promise<{\n success: boolean;\n latency?: number;\n error?: string;\n }> {\n // TODO: Implement Stellar-specific RPC validation when needed\n return testStellarRpcConnection(rpcConfig);\n }\n}\n\n// Also export as default to ensure compatibility with various import styles\nexport default StellarAdapter;\n","import type { FieldType } from '@openzeppelin/contracts-ui-builder-types';\n\n/**\n * Map a Stellar-specific parameter type to a form field type\n *\n * TODO: Implement proper Stellar type mapping in future phases\n */\nexport function mapStellarParameterTypeToFieldType(_parameterType: string): FieldType {\n // Placeholder implementation that defaults everything to text fields\n return 'text';\n}\n\n/**\n * Get field types compatible with a specific parameter type\n * @param _parameterType The blockchain parameter type\n * @returns Array of compatible field types\n *\n * TODO: Implement proper Stellar field type compatibility in future phases\n */\nexport function getStellarCompatibleFieldTypes(_parameterType: string): FieldType[] {\n // Placeholder implementation that returns all field types\n return [\n 'text',\n 'number',\n 'checkbox',\n 'radio',\n 'select',\n 'textarea',\n 'date',\n 'email',\n 'password',\n 'blockchain-address',\n 'amount',\n 'hidden',\n ];\n}\n","import type {\n FieldType,\n FieldValue,\n FormFieldType,\n FunctionParameter,\n} from '@openzeppelin/contracts-ui-builder-types';\n\n/**\n * Generate default field configuration for a Stellar function parameter\n *\n * TODO: Implement proper Stellar field generation in future phases\n */\nexport function generateStellarDefaultField<T extends FieldType = FieldType>(\n parameter: FunctionParameter\n): FormFieldType<T> {\n // Default to text fields for now as a placeholder\n const fieldType = 'text' as T;\n\n return {\n id: Math.random().toString(36).substring(2, 11),\n name: parameter.name || 'placeholder',\n label: parameter.displayName || parameter.name || 'Placeholder Field',\n type: fieldType,\n placeholder: 'Placeholder - Stellar adapter not fully implemented yet',\n helperText: 'Stellar adapter is not fully implemented yet',\n defaultValue: '' as FieldValue<T>,\n validation: { required: true },\n width: 'full',\n };\n}\n","import type {\n ContractSchema,\n NetworkConfig,\n StellarNetworkConfig,\n} from '@openzeppelin/contracts-ui-builder-types';\nimport { logger } from '@openzeppelin/contracts-ui-builder-utils';\n\n/**\n * Queries a view function on a contract\n */\nexport async function queryStellarViewFunction(\n _contractAddress: string,\n _functionId: string,\n networkConfig: NetworkConfig,\n _params: unknown[] = [],\n _contractSchema?: ContractSchema\n): Promise<unknown> {\n if (networkConfig.ecosystem !== 'stellar') {\n throw new Error('Invalid network configuration for Stellar query.');\n }\n const stellarConfig = networkConfig as StellarNetworkConfig;\n\n // TODO: Implement Stellar contract query functionality using:\n // - stellarConfig.horizonUrl\n // - _contractAddress, _functionId, _params, _contractSchema\n // - Potentially use stellar-sdk\n logger.warn(\n 'queryStellarViewFunction',\n `Not implemented for network: ${stellarConfig.name} (Horizon: ${stellarConfig.horizonUrl})`\n );\n throw new Error('Stellar view function queries not yet implemented');\n}\n","import type { ContractFunction } from '@openzeppelin/contracts-ui-builder-types';\n\n/**\n * Determines if a function is a view/pure function (read-only)\n */\nexport function isStellarViewFunction(_functionDetails: ContractFunction): boolean {\n // TODO: Implement properly for Stellar Soroban contracts\n return false; // Temporary placeholder\n}\n","import type { ContractSchema, FormFieldType } from '@openzeppelin/contracts-ui-builder-types';\nimport { logger } from '@openzeppelin/contracts-ui-builder-utils';\n\n/**\n * @inheritdoc\n */\nexport function formatStellarTransactionData(\n _contractSchema: ContractSchema,\n _functionId: string,\n _submittedInputs: Record<string, unknown>,\n _fields: FormFieldType[]\n): unknown {\n logger.warn(\n 'adapter-stellar',\n 'formatTransactionData not implemented, returning placeholder data.'\n );\n // Placeholder implementation\n return { data: 'stellar_formatted_placeholder' };\n}\n","import type { ExecutionConfig } from '@openzeppelin/contracts-ui-builder-types';\nimport { logger } from '@openzeppelin/contracts-ui-builder-utils';\n\nconst SYSTEM_LOG_TAG = 'adapter-stellar';\n\n/**\n * Sign and broadcast a transaction\n *\n * TODO: Implement proper Stellar transaction signing in future phases\n */\nexport function signAndBroadcastStellarTransaction(\n _transactionData: unknown,\n executionConfig?: ExecutionConfig\n): Promise<{ txHash: string }> {\n logger.info(\n SYSTEM_LOG_TAG,\n 'Stellar signAndBroadcast called with executionConfig:',\n executionConfig\n );\n // TODO: Use executionConfig\n return Promise.resolve({ txHash: 'stellar_placeholder_tx' });\n}\n\n/**\n * (Optional) Waits for a transaction to be confirmed on the blockchain.\n *\n * @param _txHash - The hash of the transaction to wait for.\n * @returns A promise resolving to the final status and receipt/error.\n */\nexport const waitForStellarTransactionConfirmation: undefined = undefined;\n// Optional methods can be implemented later if needed, for now export undefined\n// export function waitForStellarTransactionConfirmation(txHash: string): Promise<{\n// status: 'success' | 'error';\n// receipt?: unknown;\n// error?: Error;\n// }> {\n// // Placeholder logic\n// console.warn('waitForStellarTransactionConfirmation placeholder called');\n// return Promise.resolve({ status: 'success' as const });\n// }\n","import { logger } from '@openzeppelin/contracts-ui-builder-utils';\n\n// TODO: Implement Stellar-specific input parsing logic if needed.\n\n// Placeholder function - adapt as needed\nexport function parseStellarInput(\n _fieldType: string,\n _value: unknown,\n _parameterType: string\n): unknown {\n logger.warn('adapter-stellar', 'parseStellarInput not implemented, returning raw value.');\n return _value; // Placeholder: return value as is\n}\n","import type { ContractFunction } from '@openzeppelin/contracts-ui-builder-types';\n\n/**\n * Formats a function result for display\n */\nexport function formatStellarFunctionResult(\n result: unknown,\n _functionDetails: ContractFunction\n): string {\n // TODO: Implement Stellar-specific result formatting\n if (result === null || result === undefined) {\n return 'No data';\n }\n\n // Placeholder: Return simple string representation\n return String(result);\n}\n","import type { Connector } from '@openzeppelin/contracts-ui-builder-types';\n\n/**\n * Indicates if this adapter supports wallet connection\n * @returns Whether wallet connection is supported by this adapter\n */\nexport function supportsStellarWalletConnection(): boolean {\n return false; // Stellar wallet connection not yet implemented\n}\n\nexport async function getStellarAvailableConnectors(): Promise<Connector[]> {\n return [];\n}\n\nexport async function connectStellarWallet(\n _connectorId: string\n): Promise<{ connected: boolean; address?: string; error?: string }> {\n return { connected: false, error: 'Stellar adapter does not support wallet connection.' };\n}\n\nexport async function disconnectStellarWallet(): Promise<{\n disconnected: boolean;\n error?: string;\n}> {\n return { disconnected: false, error: 'Stellar adapter does not support wallet connection.' };\n}\n\n/**\n * @inheritdoc\n */\nexport function getStellarWalletConnectionStatus(): {\n isConnected: boolean;\n address?: string;\n chainId?: string;\n} {\n // Stub implementation: Always return disconnected status\n return { isConnected: false };\n}\n","import { StellarNetworkConfig } from '@openzeppelin/contracts-ui-builder-types';\n\n// Placeholder for Stellar Public Network (Mainnet)\nexport const stellarPublic: StellarNetworkConfig = {\n id: 'stellar-public',\n exportConstName: 'stellarPublic',\n name: 'Stellar',\n ecosystem: 'stellar',\n network: 'stellar',\n type: 'mainnet',\n isTestnet: false,\n horizonUrl: 'https://horizon.stellar.org',\n networkPassphrase: 'Public Global Stellar Network ; September 2015',\n explorerUrl: 'https://stellar.expert/explorer/public',\n icon: 'stellar',\n};\n","import { StellarNetworkConfig } from '@openzeppelin/contracts-ui-builder-types';\n\n// Placeholder for Stellar Testnet\nexport const stellarTestnet: StellarNetworkConfig = {\n id: 'stellar-testnet',\n exportConstName: 'stellarTestnet',\n name: 'Stellar Testnet',\n ecosystem: 'stellar',\n network: 'stellar',\n type: 'testnet',\n isTestnet: true,\n horizonUrl: 'https://horizon-testnet.stellar.org',\n networkPassphrase: 'Test SDF Network ; September 2015',\n explorerUrl: 'https://stellar.expert/explorer/testnet',\n icon: 'stellar',\n};\n","import { StellarNetworkConfig } from '@openzeppelin/contracts-ui-builder-types';\n\nimport { stellarPublic } from './mainnet';\nimport { stellarTestnet } from './testnet';\n\n// All mainnet networks\nexport const stellarMainnetNetworks: StellarNetworkConfig[] = [stellarPublic];\n\n// All testnet networks\nexport const stellarTestnetNetworks: StellarNetworkConfig[] = [stellarTestnet];\n\n// All Stellar networks\nexport const stellarNetworks: StellarNetworkConfig[] = [\n ...stellarMainnetNetworks,\n ...stellarTestnetNetworks,\n];\n\n// Export individual networks as well\nexport { stellarPublic, stellarTestnet };\n","/**\n * Configuration for the Stellar adapter\n *\n * This file defines the dependencies required by the Stellar adapter\n * when generating exported projects. It follows the AdapterConfig\n * interface to provide a structured approach to dependency management.\n */\nexport const stellarAdapterConfig = {\n /**\n * Dependencies required by the Stellar adapter\n * These will be included in exported projects that use this adapter\n */\n dependencies: {\n // TODO: Review and update with real, verified dependencies and versions before production release\n\n // Runtime dependencies\n runtime: {\n // Core Stellar libraries\n 'stellar-sdk': '^10.4.1',\n '@stellar/freighter-api': '^1.5.1',\n\n // Stellar wallet integration\n '@stellar/design-system': '^0.5.1',\n '@stellar/wallet-sdk': '^0.11.2',\n\n // Utilities for Stellar development\n 'bignumber.js': '^9.1.1',\n 'js-xdr': '^1.3.0',\n },\n\n // Development dependencies\n dev: {\n // Testing utilities for Stellar\n '@stellar/typescript-wallet-sdk': '^1.9.0',\n\n // Soroban contract SDK for Stellar\n // '@stellar/soroban-sdk': '^0.7.0',\n },\n },\n};\n"],"mappings":"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","names":["import_contracts_ui_builder_utils","import_contracts_ui_builder_utils","import_contracts_ui_builder_utils","import_contracts_ui_builder_utils","import_contracts_ui_builder_utils","import_contracts_ui_builder_utils","import_contracts_ui_builder_utils"]}