@openzeppelin/ui-types 1.2.0 → 1.4.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/dist/index.cjs CHANGED
@@ -231,6 +231,7 @@ const isEvmEcosystem = (ecosystem) => ecosystem === "evm";
231
231
  const isSolanaEcosystem = (ecosystem) => ecosystem === "solana";
232
232
  const isStellarEcosystem = (ecosystem) => ecosystem === "stellar";
233
233
  const isMidnightEcosystem = (ecosystem) => ecosystem === "midnight";
234
+ const isPolkadotEcosystem = (ecosystem) => ecosystem === "polkadot";
234
235
 
235
236
  //#endregion
236
237
  //#region src/common/enum.ts
@@ -282,6 +283,12 @@ const isStellarNetworkConfig = (config) => config.ecosystem === "stellar";
282
283
  * @returns True if the config is for Midnight
283
284
  */
284
285
  const isMidnightNetworkConfig = (config) => config.ecosystem === "midnight";
286
+ /**
287
+ * Type guard to check if a network config is for Polkadot
288
+ * @param config The network configuration to check
289
+ * @returns True if the config is for Polkadot
290
+ */
291
+ const isPolkadotNetworkConfig = (config) => config.ecosystem === "polkadot";
285
292
 
286
293
  //#endregion
287
294
  //#region src/networks/validation.ts
@@ -372,6 +379,8 @@ exports.isMapEntry = isMapEntry;
372
379
  exports.isMapEntryArray = isMapEntryArray;
373
380
  exports.isMidnightEcosystem = isMidnightEcosystem;
374
381
  exports.isMidnightNetworkConfig = isMidnightNetworkConfig;
382
+ exports.isPolkadotEcosystem = isPolkadotEcosystem;
383
+ exports.isPolkadotNetworkConfig = isPolkadotNetworkConfig;
375
384
  exports.isSolanaEcosystem = isSolanaEcosystem;
376
385
  exports.isSolanaNetworkConfig = isSolanaNetworkConfig;
377
386
  exports.isStellarEcosystem = isStellarEcosystem;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../src/adapters/ui-enhancements.ts","../src/adapters/access-control-errors.ts","../src/common/ecosystem.ts","../src/common/enum.ts","../src/common/map.ts","../src/networks/config.ts","../src/networks/validation.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { FormFieldType, FormValues } from '../forms';\n\n/**\n * Configuration for excluding specific wallet components provided by an adapter for its 'custom' kit.\n */\nexport interface ComponentExclusionConfig {\n /**\n * Array of component keys (e.g., 'ConnectButton', 'NetworkSwitcher') to exclude\n * when the adapter provides its 'custom' set of UI components.\n */\n exclude?: Array<keyof EcosystemWalletComponents>;\n}\n\n/**\n * Configuration for the desired UI kit to be used by an adapter.\n */\nexport interface UiKitConfiguration {\n /** Name of the chosen UI kit (e.g., 'rainbowkit', 'connectkit'). Use 'custom' for adapter-provided default components or 'none' to disable adapter UI. */\n kitName: UiKitName;\n\n /**\n * Kit-specific configuration options.\n * This is an open-ended object to allow adapters to define their own configuration.\n * The adapter is responsible for validating and type-checking these values.\n */\n kitConfig: FormValues;\n\n customCode?: string;\n}\n\n/**\n * A generic hook function type that can be called with any parameters and returns any result.\n * This allows us to maintain flexibility for adapter implementations while avoiding the use of 'any'.\n */\ntype GenericHook<TParams extends unknown[] = [], TResult = unknown> = (...args: TParams) => TResult;\n\n/**\n * Defines the shape of facade hooks provided by an adapter for its ecosystem.\n * These typically wrap underlying library hooks (e.g., from wagmi for EVM).\n *\n * We use generic hook signatures to allow direct use of library hooks\n * without tightly coupling to their specific parameter and return types.\n *\n * Adapters implementing these facade hooks are responsible for mapping their native\n * library's return values to a conventional set of properties expected by consumers.\n * This ensures that UI components using these facade hooks can remain chain-agnostic.\n *\n * @example For `useSwitchChain`:\n * Consumers will expect an object like:\n * ```typescript\n * {\n * switchChain: (args: { chainId: number }) => void; // Function to initiate the switch\n * isPending: boolean; // True if the switch is in progress\n * error: Error | null; // Error object if the switch failed\n * // chains?: Chain[]; // Optional: array of available chains, if provided by underlying hook\n * }\n * ```\n * If an adapter's underlying library uses `isLoading` instead of `isPending`,\n * the adapter's facade implementation for `useSwitchChain` should map `isLoading` to `isPending`.\n *\n * @example For `useAccount`:\n * Consumers will expect an object like:\n * ```typescript\n * {\n * isConnected: boolean;\n * address?: string;\n * chainId?: number;\n * // Other properties like `connector`, `status` might also be conventionally expected.\n * }\n * ```\n */\nexport interface EcosystemSpecificReactHooks {\n // Hooks that don't require parameters\n useAccount?: GenericHook;\n useConnect?: GenericHook;\n useDisconnect?: GenericHook;\n useSwitchChain?: GenericHook;\n useChainId?: GenericHook;\n useChains?: GenericHook;\n\n // Hooks that typically require parameters\n useBalance?: GenericHook;\n useSendTransaction?: GenericHook;\n useWaitForTransactionReceipt?: GenericHook;\n useSignMessage?: GenericHook;\n useSignTypedData?: GenericHook;\n // Other ecosystem-specific hooks can be added as needed\n}\n\n/**\n * Props for the ecosystem-specific UI context provider component.\n */\nexport interface EcosystemReactUiProviderProps {\n children: React.ReactNode;\n}\n\n/**\n * Size variants available for wallet UI components.\n * Maps to standard button sizing conventions.\n */\nexport type WalletComponentSize = 'sm' | 'default' | 'lg' | 'xl';\n\n/**\n * Visual style variants for wallet UI components.\n */\nexport type WalletComponentVariant = 'default' | 'outline' | 'ghost' | 'secondary';\n\n/**\n * Base props interface that all component props should be compatible with.\n * Components can extend this with additional props as needed.\n *\n * Adapters implementing wallet components should respect these props:\n * - `className`: Additional CSS classes to apply\n * - `size`: Controls the component's size (height, padding, font-size)\n * - `variant`: Controls the visual style (colors, borders)\n * - `fullWidth`: When true, component expands to fill container width\n */\nexport interface BaseComponentProps {\n /** Additional CSS classes to apply to the component */\n className?: string;\n /** Size variant for the component */\n size?: WalletComponentSize;\n /** Visual style variant */\n variant?: WalletComponentVariant;\n /** If true, component expands to fill its container width */\n fullWidth?: boolean;\n}\n\n/**\n * Defines standardized names for commonly needed wallet UI components\n * that an adapter might provide.\n */\nexport interface EcosystemWalletComponents {\n // Using a generic type parameter with a default of BaseComponentProps\n // This allows components with more specific props that include at least className\n ConnectButton?: React.ComponentType<BaseComponentProps>;\n AccountDisplay?: React.ComponentType<BaseComponentProps>;\n NetworkSwitcher?: React.ComponentType<BaseComponentProps>;\n}\n\n/**\n * Valid component keys for EcosystemWalletComponents.\n * Used for type-safe runtime validation of component exclusion lists.\n */\nexport const ECOSYSTEM_WALLET_COMPONENT_KEYS = [\n 'ConnectButton',\n 'AccountDisplay',\n 'NetworkSwitcher',\n] as const satisfies Array<keyof EcosystemWalletComponents>;\n\nexport type EcosystemWalletComponentKey = (typeof ECOSYSTEM_WALLET_COMPONENT_KEYS)[number];\n\nexport type NativeConfigLoader = (relativePath: string) => Promise<Record<string, unknown> | null>;\n\n/**\n * Describes a UI kit available for a specific adapter, providing all necessary\n * metadata for the builder app to render its configuration options.\n */\nexport interface AvailableUiKit {\n /** A unique identifier for the UI kit (e.g., 'rainbowkit'). */\n id: string;\n\n /** The display name of the UI kit (e.g., 'RainbowKit'). */\n name: string;\n\n /** An optional link to the UI kit's documentation. */\n linkToDocs?: string;\n\n /**\n * An optional description of the UI kit and its configuration.\n * This can contain HTML for formatting (e.g., code blocks, links).\n */\n description?: string;\n\n /** An array of form fields required to configure the UI kit. */\n configFields: FormFieldType[];\n\n /**\n * If true, indicates that this UI kit supports advanced configuration via a code editor.\n * @default false\n */\n hasCodeEditor?: boolean;\n\n /**\n * The default boilerplate code to display if `hasCodeEditor` is true.\n */\n defaultCode?: string;\n}\n\nexport type UiKitName =\n // EVM UI Kits\n | 'rainbowkit'\n | 'connectkit'\n | 'appkit'\n // Stellar UI Kits\n | 'stellar-wallets-kit'\n // Generic options\n | 'custom'\n | 'none';\n\n/**\n * Badge variant for function decorations\n */\nexport type FunctionBadgeVariant = 'info' | 'warning' | 'neutral';\n\n/**\n * Badge displayed next to a function in the UI\n */\nexport interface FunctionBadge {\n /** Display text for the badge */\n text: string;\n /** Visual variant of the badge */\n variant?: FunctionBadgeVariant;\n /** Optional tooltip text shown on hover */\n tooltip?: string;\n}\n\n/**\n * Decoration for a contract function (badges, notes, etc.)\n */\nexport interface FunctionDecoration {\n /** Array of badges to display next to the function */\n badges?: FunctionBadge[];\n /** Optional note to display when the function is selected */\n note?: {\n /** Optional title for the note */\n title?: string;\n /** Body text of the note */\n body: string;\n };\n /**\n * (Optional) If true, the form should auto-add a runtime secret field (if adapter provides getRuntimeFieldBinding).\n * Used to mark functions like organizer-only circuits that require credentials.\n * User can customize (hide, hardcode) or remove the field after auto-add.\n */\n requiresRuntimeSecret?: boolean;\n}\n\n/**\n * Map of function IDs to their decorations\n */\nexport type FunctionDecorationsMap = Record<string, FunctionDecoration>;\n","/**\n * Access Control Error Types\n *\n * Chain-agnostic error classes for access control operations.\n * These errors can be used across any adapter (EVM, Stellar, Solana, Midnight, etc.)\n * that implements access control functionality.\n *\n * Each error type provides specific context for debugging and user-friendly error messages.\n */\n\n/**\n * Base class for all Access Control errors\n *\n * This abstract class serves as the foundation for all access control-related errors.\n * It provides a common structure with optional contract address context.\n */\nexport abstract class AccessControlError extends Error {\n /**\n * Creates a new AccessControlError.\n * @param message - Error message describing the issue\n * @param contractAddress - Optional contract address for context\n */\n constructor(\n message: string,\n public readonly contractAddress?: string\n ) {\n super(message);\n this.name = this.constructor.name;\n }\n}\n\n/**\n * Error thrown when a contract does not implement required interfaces\n *\n * This error indicates that a contract is missing necessary access control functionality\n * or has a partial/incompatible implementation.\n *\n * @example\n * ```typescript\n * throw new UnsupportedContractFeatures(\n * 'Contract missing required Ownable methods',\n * contractAddress,\n * ['transfer_ownership', 'renounce_ownership']\n * );\n * ```\n *\n * Common use cases:\n * - Contract missing Ownable or AccessControl methods\n * - Contract has partial implementation that doesn't conform to standards\n * - Contract is a custom access control implementation not compatible with expected interfaces\n */\nexport class UnsupportedContractFeatures extends AccessControlError {\n /**\n * Creates a new UnsupportedContractFeatures error.\n * @param message - Error message describing the issue\n * @param contractAddress - Optional contract address for context\n * @param missingFeatures - Optional list of missing feature names\n */\n constructor(\n message: string,\n contractAddress?: string,\n public readonly missingFeatures?: string[]\n ) {\n super(message, contractAddress);\n }\n}\n\n/**\n * Error thrown when the caller lacks required permissions for an operation\n *\n * This error indicates an authorization failure where the calling account doesn't\n * have the necessary permissions to execute the requested operation.\n *\n * @example\n * ```typescript\n * throw new PermissionDenied(\n * 'Caller is not an admin',\n * contractAddress,\n * 'ADMIN_ROLE',\n * callerAddress\n * );\n * ```\n *\n * Common use cases:\n * - Attempting to grant/revoke roles without admin rights\n * - Trying to transfer ownership without being the owner\n * - Executing operations that require specific role membership\n */\nexport class PermissionDenied extends AccessControlError {\n /**\n * Creates a new PermissionDenied error.\n * @param message - Error message describing the issue\n * @param contractAddress - Optional contract address for context\n * @param requiredRole - Optional role that was required\n * @param callerAddress - Optional address of the caller who lacked permission\n */\n constructor(\n message: string,\n contractAddress?: string,\n public readonly requiredRole?: string,\n public readonly callerAddress?: string\n ) {\n super(message, contractAddress);\n }\n}\n\n/**\n * Error thrown when an indexer is required but not available\n *\n * This error indicates that an operation requires indexer support (e.g., for historical data),\n * but the indexer is not configured, unreachable, or not functioning properly.\n *\n * @example\n * ```typescript\n * throw new IndexerUnavailable(\n * 'History queries require indexer support',\n * contractAddress,\n * networkId,\n * indexerEndpoint\n * );\n * ```\n *\n * Common use cases:\n * - No indexer endpoint configured in network config\n * - Indexer endpoint is unreachable or returning errors\n * - Indexer health check fails\n * - Network doesn't have indexer support\n */\nexport class IndexerUnavailable extends AccessControlError {\n /**\n * Creates a new IndexerUnavailable error.\n * @param message - Error message describing the issue\n * @param contractAddress - Optional contract address for context\n * @param networkId - Optional network identifier\n * @param endpointUrl - Optional indexer endpoint URL that was unavailable\n */\n constructor(\n message: string,\n contractAddress?: string,\n public readonly networkId?: string,\n public readonly endpointUrl?: string\n ) {\n super(message, contractAddress);\n }\n}\n\n/**\n * Error thrown when configuration is invalid or incomplete\n *\n * This error indicates a problem with the configuration provided to access control operations,\n * such as invalid addresses, missing required config, or malformed parameters.\n *\n * @example\n * ```typescript\n * throw new ConfigurationInvalid(\n * 'Contract not registered',\n * contractAddress,\n * 'contractAddress',\n * providedAddress\n * );\n * ```\n *\n * Common use cases:\n * - Invalid contract address format\n * - Missing required network configuration\n * - Invalid role identifier\n * - Malformed indexer endpoint\n * - Contract not registered before use\n */\nexport class ConfigurationInvalid extends AccessControlError {\n /**\n * Creates a new ConfigurationInvalid error.\n * @param message - Error message describing the issue\n * @param contractAddress - Optional contract address for context\n * @param configField - Optional name of the invalid configuration field\n * @param providedValue - Optional value that was invalid\n */\n constructor(\n message: string,\n contractAddress?: string,\n public readonly configField?: string,\n public readonly providedValue?: unknown\n ) {\n super(message, contractAddress);\n }\n}\n\n/**\n * Error thrown when an operation fails during execution\n *\n * This error indicates a runtime failure during an access control operation.\n * It includes the operation name and can chain the underlying cause for debugging.\n *\n * @example\n * ```typescript\n * try {\n * // ... operation code\n * } catch (err) {\n * throw new OperationFailed(\n * 'Failed to read ownership',\n * contractAddress,\n * 'readOwnership',\n * err as Error\n * );\n * }\n * ```\n *\n * Common use cases:\n * - Transaction assembly fails\n * - RPC call returns an error\n * - Transaction simulation fails\n * - On-chain read operation fails\n * - GraphQL query to indexer fails\n * - Snapshot validation fails\n */\nexport class OperationFailed extends AccessControlError {\n /**\n * Creates a new OperationFailed error.\n * @param message - Error message describing the issue\n * @param contractAddress - Optional contract address for context\n * @param operation - Optional name of the operation that failed\n * @param cause - Optional underlying error that caused the failure\n */\n constructor(\n message: string,\n contractAddress?: string,\n public readonly operation?: string,\n public readonly cause?: Error\n ) {\n super(message, contractAddress);\n }\n}\n","/**\n * Blockchain Ecosystem Types\n *\n * This file defines core types related to blockchain ecosystems supported\n * by the OpenZeppelin UI ecosystem. It consolidates previously scattered\n * ecosystem-related types into a single source of truth.\n */\n\n/**\n * Supported blockchain ecosystems\n */\nexport type Ecosystem = 'evm' | 'solana' | 'stellar' | 'midnight';\n\n/**\n * Network environment types\n */\nexport type NetworkType = 'mainnet' | 'testnet' | 'devnet';\n\n/**\n * Configuration for ecosystem feature flags\n */\nexport interface EcosystemFeatureConfig {\n /** Whether the ecosystem is enabled and functional */\n enabled: boolean;\n /** Whether to show the ecosystem in the UI (even if disabled) */\n showInUI: boolean;\n /** Label to display when the ecosystem is disabled */\n disabledLabel?: string;\n /** Description to show when the ecosystem is disabled */\n disabledDescription?: string;\n}\n\n/**\n * Interface for ecosystem-specific data in the registry\n */\nexport interface EcosystemInfo {\n /** Display name (e.g., 'Ethereum (EVM)') */\n name: string;\n\n /** Detailed description of the blockchain */\n description: string;\n\n /** Explorer/verification platform guidance */\n explorerGuidance: string;\n\n /** Address format example (if applicable) */\n addressExample?: string;\n\n /** Icon path for the ecosystem (if available) */\n iconPath?: string;\n\n /** Network icon name for @web3icons/react NetworkIcon component */\n networkIconName?: string;\n\n /** Background color class for UI elements */\n bgColorClass?: string;\n\n /** Text color class for UI elements */\n textColorClass?: string;\n\n /** Default feature flag configuration */\n defaultFeatureConfig: EcosystemFeatureConfig;\n}\n\n/**\n * Blockchain ecosystem metadata for UI display and configuration\n */\nexport interface EcosystemDefinition {\n /**\n * Unique identifier for the ecosystem\n */\n id: Ecosystem;\n\n /**\n * Human-readable name of the ecosystem\n */\n name: string;\n\n /**\n * Description of the ecosystem's purpose or characteristics\n */\n description: string;\n\n /**\n * Optional icon for UI display\n * Note: This uses a generic type as we don't want to introduce React dependencies\n */\n icon?: unknown;\n}\n\n/**\n * Type guards for ecosystem types\n */\n\nexport const isEvmEcosystem = (ecosystem: Ecosystem): ecosystem is 'evm' => ecosystem === 'evm';\n\nexport const isSolanaEcosystem = (ecosystem: Ecosystem): ecosystem is 'solana' =>\n ecosystem === 'solana';\n\nexport const isStellarEcosystem = (ecosystem: Ecosystem): ecosystem is 'stellar' =>\n ecosystem === 'stellar';\n\nexport const isMidnightEcosystem = (ecosystem: Ecosystem): ecosystem is 'midnight' =>\n ecosystem === 'midnight';\n","/**\n * Chain-Agnostic Enum Types\n *\n * This module defines standardized enum types that work across all blockchain adapters.\n * These types represent the UI layer's understanding of enums before they are converted\n * to blockchain-specific formats by individual adapters.\n */\n\n/**\n * Chain-agnostic enum value representation.\n * This is the standardized format that enum fields produce, regardless of the target blockchain.\n * Each adapter transforms this generic format into its blockchain-specific representation.\n *\n * @example Basic Usage\n * ```typescript\n * Unit variant (no payload)\n * const unitEnum: EnumValue = { tag: \"None\" };\n *\n * Tuple variant (with payload)\n * const tupleEnum: EnumValue = {\n * tag: \"Some\",\n * values: [\"hello\", 42]\n * };\n * ```\n *\n * @example Cross-Chain Compatibility\n * ```typescript\n * Stellar/Soroban: Transforms to ScVec([Symbol(\"Active\"), payload?])\n * const stellarEnum: EnumValue = { tag: \"Active\", values: [123] };\n * → ScVec([Symbol(\"Active\"), ScU32(123)])\n *\n * EVM/Solidity: Transforms to integer or struct\n * const evmEnum: EnumValue = { tag: \"Pending\" };\n * → uint8(0) for simple enums\n * → { variant: 0, data: [...] } for complex enums\n *\n * Solana/Rust: Transforms to Borsh-encoded enum\n * const solanaEnum: EnumValue = { tag: \"Ok\", values: [\"success\"] };\n * → Result::Ok(\"success\") via Borsh serialization\n *\n * Complex nested example\n * const complexEnum: EnumValue = {\n * tag: \"TransferResult\",\n * values: [\n * { tag: \"Success\", values: [\"0x123...\", 1000] },\n * { tag: \"Error\", values: [\"Insufficient funds\"] }\n * ]\n * };\n * ```\n */\nexport interface EnumValue {\n /** The variant name (e.g., 'None', 'Some', 'Success', 'Error') */\n tag: string;\n /** Optional payload values for tuple variants */\n values?: unknown[];\n}\n\n/**\n * Type guard to check if a value is an EnumValue\n */\nexport function isEnumValue(value: unknown): value is EnumValue {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'tag' in value &&\n typeof (value as Record<string, unknown>).tag === 'string' &&\n (!('values' in value) || Array.isArray((value as Record<string, unknown>).values))\n );\n}\n","/**\n * Chain-Agnostic Map Types\n *\n * This module defines standardized map types that work across all blockchain adapters.\n * These types represent the UI layer's understanding of maps before they are converted\n * to blockchain-specific formats by individual adapters.\n */\n\n/**\n * Chain-agnostic map entry representation.\n * This is the standardized format that map fields produce, regardless of the target blockchain.\n * Each adapter transforms this generic format into its blockchain-specific representation.\n *\n * @example Basic Usage\n * ```typescript\n * Simple key-value pairs\n * const stringMap: MapEntry[] = [\n * { key: \"name\", value: \"Alice\" },\n * { key: \"age\", value: 30 }\n * ];\n *\n * Mixed type pairs\n * const mixedMap: MapEntry[] = [\n * { key: \"config\", value: { enabled: true, timeout: 5000 } },\n * { key: \"tags\", value: [\"production\", \"api\"] }\n * ];\n * ```\n *\n * @example Cross-Chain Compatibility\n * ```typescript\n * Stellar/Soroban: Transforms to SorobanMapEntry[]\n * const stellarMap: MapEntry[] = [\n * { key: \"symbol\", value: \"USDC\" },\n * { key: \"decimals\", value: 6 }\n * ];\n * → [\n * { key: ScSymbol(\"symbol\"), value: ScSymbol(\"USDC\") },\n * { key: ScSymbol(\"decimals\"), value: ScU32(6) }\n * ]\n *\n * EVM/Solidity: Transforms to struct array (mappings not supported in function params)\n * const evmMap: MapEntry[] = [\n * { key: \"0x123...\", value: 1000 },\n * { key: \"0x456...\", value: 2000 }\n * ];\n * → AddressAmount[] struct array for function parameters\n *\n * Complex nested maps\n * const nestedMap: MapEntry[] = [\n * {\n * key: \"user_data\",\n * value: [\n * { key: \"balance\", value: \"1000\" },\n * { key: \"permissions\", value: [\"read\", \"write\"] }\n * ]\n * }\n * ];\n * ```\n */\nexport interface MapEntry {\n /** The map key (can be any serializable type) */\n key: unknown;\n /** The map value (can be any serializable type) */\n value: unknown;\n}\n\n/**\n * Type guard to check if a value is a MapEntry\n */\nexport function isMapEntry(value: unknown): value is MapEntry {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'key' in value &&\n 'value' in value &&\n Object.keys(value).length >= 2\n );\n}\n\n/**\n * Type guard to check if a value is an array of MapEntry objects\n */\nexport function isMapEntryArray(value: unknown): value is MapEntry[] {\n return Array.isArray(value) && value.every(isMapEntry);\n}\n","/**\n * Network Configuration Types\n *\n * This file defines the TypeScript types for network configurations across different blockchain ecosystems.\n * It uses a discriminated union pattern with the 'ecosystem' property as the discriminant to ensure type safety.\n */\nimport type React from 'react';\n\nimport { Ecosystem, NetworkType } from '../common/ecosystem';\n\n/**\n * Base interface with common properties shared across all network configurations\n */\nexport interface BaseNetworkConfig {\n /**\n * Unique identifier for the network, e.g., 'ethereum-mainnet', 'polygon-amoy'\n */\n id: string;\n\n /**\n * User-friendly network name, e.g., 'Ethereum Mainnet'\n */\n name: string;\n\n /**\n * The blockchain ecosystem this network belongs to (discriminant for the union type)\n */\n ecosystem: Ecosystem;\n\n /**\n * Parent network name, e.g., 'ethereum', 'polygon'\n */\n network: string;\n\n /**\n * Network type/environment: 'mainnet', 'testnet', or 'devnet'\n */\n type: NetworkType;\n\n /**\n * Explicit flag for easy filtering of test networks\n */\n isTestnet: boolean;\n\n /**\n * The constant name under which this specific network configuration object\n * is exported from its adapter package's network index file.\n * Used by the export system to dynamically import the correct config.\n * Example: 'ethereumMainnet', 'ethereumSepolia'\n */\n exportConstName: string;\n\n /**\n * Base URL for the block explorer (common across ecosystems)\n */\n explorerUrl?: string;\n\n /**\n * Optional React component for the network icon.\n * This allows embedding the icon component directly in the network config,\n * avoiding dynamic imports and improving build performance.\n * If provided, this takes precedence over the icon string.\n */\n iconComponent?: React.ComponentType<{\n size?: number;\n className?: string;\n variant?: 'mono' | 'branded';\n }>;\n\n /**\n * A unique identifier for the specific explorer API service used by this network.\n * This is used by the AppConfigService to fetch the correct API key.\n * Examples: \"etherscan-mainnet\", \"polygonscan-mainnet\", \"bscscan-mainnet\"\n * Should align with keys in AppRuntimeConfig.networkServiceConfigs\n */\n primaryExplorerApiIdentifier?: string;\n\n /**\n * Optional indexer GraphQL HTTP endpoint\n * Used for querying historical blockchain data (e.g., access control events)\n */\n indexerUri?: string;\n\n /**\n * Optional indexer GraphQL WebSocket endpoint\n * Used for real-time blockchain data subscriptions\n */\n indexerWsUri?: string;\n}\n\n/**\n * EVM-specific network configuration\n */\nexport interface EvmNetworkConfig extends BaseNetworkConfig {\n ecosystem: 'evm';\n\n /**\n * EVM chain ID, e.g., 1 for Ethereum Mainnet, 11155111 for Sepolia\n */\n chainId: number;\n\n /**\n * JSON-RPC endpoint for the network (can be a base URL if API key is resolved from env)\n */\n rpcUrl: string;\n\n /**\n * Native currency information\n */\n nativeCurrency: {\n name: string; // e.g., 'Ether'\n symbol: string; // e.g., 'ETH'\n decimals: number; // typically 18\n };\n\n /**\n * Optional icon name for the network (for use with @web3icons/react or similar)\n * If not provided, the network property will be used as a fallback\n */\n apiUrl?: string;\n\n /**\n * Whether this network supports Etherscan V2 API (default: true for all Etherscan-compatible explorers)\n */\n supportsEtherscanV2?: boolean;\n\n /**\n * Whether this network's explorer requires an API key for basic operations (default: true)\n * Some explorers like routescan.io provide free access without API keys\n */\n requiresExplorerApiKey?: boolean;\n\n /**\n * Optional chain-specific configuration object for this network.\n * For EVM networks, this should be a Viem Chain object.\n * If provided, this will be used directly by the chain's clients.\n * If not provided, a fallback or minimal custom chain object might be used.\n */\n viemChain?: unknown;\n}\n\n/**\n * Solana-specific network configuration\n */\nexport interface SolanaNetworkConfig extends BaseNetworkConfig {\n ecosystem: 'solana';\n\n /**\n * RPC endpoint for Solana network\n */\n rpcEndpoint: string;\n\n /**\n * Solana transaction confirmation commitment level\n */\n commitment: 'confirmed' | 'finalized';\n}\n\n/**\n * Stellar-specific network configuration\n */\nexport interface StellarNetworkConfig extends BaseNetworkConfig {\n ecosystem: 'stellar';\n\n /**\n * Horizon server URL (for Stellar Classic operations)\n */\n horizonUrl: string;\n\n /**\n * Soroban RPC server URL (for smart contract operations)\n */\n sorobanRpcUrl: string;\n\n /**\n * Stellar network passphrase\n */\n networkPassphrase: string;\n}\n\n/**\n * Midnight-specific network configuration\n */\nexport interface MidnightNetworkConfig extends BaseNetworkConfig {\n ecosystem: 'midnight';\n\n /**\n * Midnight Network ID enum value\n * Maps to @midnight-ntwrk/midnight-js-network-id NetworkId enum\n * Single source of truth for network identity when mapping is not provided.\n */\n /**\n * Mapping of numeric network ID to its enum name.\n * Example: { 2: 'TestNet' }\n */\n networkId: Partial<Record<2 | 3 | 1 | 0, 'TestNet' | 'MainNet' | 'DevNet' | 'Undeployed'>>;\n\n /**\n * RPC endpoints for the Midnight network\n */\n rpcEndpoints?: {\n default?: string;\n [key: string]: string | undefined;\n };\n\n // Additional Midnight-specific properties can be added here as the protocol evolves\n}\n\n/**\n * Union type for all network configurations\n * This allows us to handle network configurations in a type-safe manner\n */\nexport type NetworkConfig =\n | EvmNetworkConfig\n | SolanaNetworkConfig\n | StellarNetworkConfig\n | MidnightNetworkConfig;\n\n/**\n * Type guard to check if a network config is for EVM\n * @param config The network configuration to check\n * @returns True if the config is for EVM\n */\nexport const isEvmNetworkConfig = (config: NetworkConfig): config is EvmNetworkConfig =>\n config.ecosystem === 'evm';\n\n/**\n * Type guard to check if a network config is for Solana\n * @param config The network configuration to check\n * @returns True if the config is for Solana\n */\nexport const isSolanaNetworkConfig = (config: NetworkConfig): config is SolanaNetworkConfig =>\n config.ecosystem === 'solana';\n\n/**\n * Type guard to check if a network config is for Stellar\n * @param config The network configuration to check\n * @returns True if the config is for Stellar\n */\nexport const isStellarNetworkConfig = (config: NetworkConfig): config is StellarNetworkConfig =>\n config.ecosystem === 'stellar';\n\n/**\n * Type guard to check if a network config is for Midnight\n * @param config The network configuration to check\n * @returns True if the config is for Midnight\n */\nexport const isMidnightNetworkConfig = (config: NetworkConfig): config is MidnightNetworkConfig =>\n config.ecosystem === 'midnight';\n","/**\n * Network Configuration Validation\n *\n * This file contains utilities for validating network configurations to ensure they have\n * all required fields and properly typed values for each ecosystem.\n */\nimport {\n EvmNetworkConfig,\n isEvmNetworkConfig,\n isMidnightNetworkConfig,\n isSolanaNetworkConfig,\n isStellarNetworkConfig,\n MidnightNetworkConfig,\n NetworkConfig,\n SolanaNetworkConfig,\n StellarNetworkConfig,\n} from './config';\n\n/**\n * Validate a network configuration\n * @param config The network configuration to validate\n * @returns True if the configuration is valid\n */\nexport function validateNetworkConfig(config: NetworkConfig): boolean {\n // Validate common fields required for all networks\n if (!validateBaseNetworkConfig(config)) {\n return false;\n }\n\n // Ecosystem-specific validation\n if (isEvmNetworkConfig(config)) {\n return validateEvmNetworkConfig(config);\n } else if (isSolanaNetworkConfig(config)) {\n return validateSolanaNetworkConfig(config);\n } else if (isStellarNetworkConfig(config)) {\n return validateStellarNetworkConfig(config);\n } else if (isMidnightNetworkConfig(config)) {\n return validateMidnightNetworkConfig(config);\n }\n\n // Unknown ecosystem\n return false;\n}\n\n/**\n * Validate the base fields common to all network configurations\n * @param config The network configuration to validate\n * @returns True if the base configuration is valid\n */\nfunction validateBaseNetworkConfig(config: NetworkConfig): boolean {\n return (\n typeof config.id === 'string' &&\n config.id.trim().length > 0 &&\n typeof config.name === 'string' &&\n config.name.trim().length > 0 &&\n typeof config.network === 'string' &&\n config.network.trim().length > 0 &&\n ['mainnet', 'testnet', 'devnet'].includes(config.type) &&\n typeof config.isTestnet === 'boolean' &&\n (config.explorerUrl === undefined || typeof config.explorerUrl === 'string')\n );\n}\n\n/**\n * Validate an EVM network configuration\n * @param config The EVM network configuration to validate\n * @returns True if the configuration is valid\n */\nfunction validateEvmNetworkConfig(config: EvmNetworkConfig): boolean {\n return (\n typeof config.chainId === 'number' &&\n config.chainId > 0 &&\n typeof config.rpcUrl === 'string' &&\n config.rpcUrl.trim().length > 0 &&\n validateEvmNativeCurrency(config.nativeCurrency)\n );\n}\n\n/**\n * Validate the native currency object in an EVM network configuration\n * @param currency The native currency object to validate\n * @returns True if the native currency is valid\n */\nfunction validateEvmNativeCurrency(currency: EvmNetworkConfig['nativeCurrency']): boolean {\n return (\n typeof currency === 'object' &&\n currency !== null &&\n typeof currency.name === 'string' &&\n currency.name.trim().length > 0 &&\n typeof currency.symbol === 'string' &&\n currency.symbol.trim().length > 0 &&\n typeof currency.decimals === 'number' &&\n currency.decimals >= 0\n );\n}\n\n/**\n * Validate a Solana network configuration\n * @param config The Solana network configuration to validate\n * @returns True if the configuration is valid\n */\nfunction validateSolanaNetworkConfig(config: SolanaNetworkConfig): boolean {\n return (\n typeof config.rpcEndpoint === 'string' &&\n config.rpcEndpoint.trim().length > 0 &&\n ['confirmed', 'finalized'].includes(config.commitment)\n );\n}\n\n/**\n * Validate a Stellar network configuration\n * @param config The Stellar network configuration to validate\n * @returns True if the configuration is valid\n */\nfunction validateStellarNetworkConfig(config: StellarNetworkConfig): boolean {\n return (\n typeof config.horizonUrl === 'string' &&\n config.horizonUrl.trim().length > 0 &&\n typeof config.networkPassphrase === 'string' &&\n config.networkPassphrase.trim().length > 0\n );\n}\n\n/**\n * Validate a Midnight network configuration\n * @param config The Midnight network configuration to validate\n * @returns True if the configuration is valid\n */\nfunction validateMidnightNetworkConfig(_config: MidnightNetworkConfig): boolean {\n // Currently just validates the base fields\n // Add more validation as Midnight-specific fields are added\n return true;\n}\n"],"mappings":";;;;;;AAkJA,MAAa,kCAAkC;CAC7C;CACA;CACA;CACD;;;;;;;;;;;;;;;;;;;ACtID,IAAsB,qBAAtB,cAAiD,MAAM;;;;;;CAMrD,YACE,SACA,AAAgB,iBAChB;AACA,QAAM,QAAQ;EAFE;AAGhB,OAAK,OAAO,KAAK,YAAY;;;;;;;;;;;;;;;;;;;;;;;AAwBjC,IAAa,8BAAb,cAAiD,mBAAmB;;;;;;;CAOlE,YACE,SACA,iBACA,AAAgB,iBAChB;AACA,QAAM,SAAS,gBAAgB;EAFf;;;;;;;;;;;;;;;;;;;;;;;;AA2BpB,IAAa,mBAAb,cAAsC,mBAAmB;;;;;;;;CAQvD,YACE,SACA,iBACA,AAAgB,cAChB,AAAgB,eAChB;AACA,QAAM,SAAS,gBAAgB;EAHf;EACA;;;;;;;;;;;;;;;;;;;;;;;;;AA4BpB,IAAa,qBAAb,cAAwC,mBAAmB;;;;;;;;CAQzD,YACE,SACA,iBACA,AAAgB,WAChB,AAAgB,aAChB;AACA,QAAM,SAAS,gBAAgB;EAHf;EACA;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BpB,IAAa,uBAAb,cAA0C,mBAAmB;;;;;;;;CAQ3D,YACE,SACA,iBACA,AAAgB,aAChB,AAAgB,eAChB;AACA,QAAM,SAAS,gBAAgB;EAHf;EACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCpB,IAAa,kBAAb,cAAqC,mBAAmB;;;;;;;;CAQtD,YACE,SACA,iBACA,AAAgB,WAChB,AAAgB,OAChB;AACA,QAAM,SAAS,gBAAgB;EAHf;EACA;;;;;;;;;ACrIpB,MAAa,kBAAkB,cAA6C,cAAc;AAE1F,MAAa,qBAAqB,cAChC,cAAc;AAEhB,MAAa,sBAAsB,cACjC,cAAc;AAEhB,MAAa,uBAAuB,cAClC,cAAc;;;;;;;AC3ChB,SAAgB,YAAY,OAAoC;AAC9D,QACE,OAAO,UAAU,YACjB,UAAU,QACV,SAAS,SACT,OAAQ,MAAkC,QAAQ,aACjD,EAAE,YAAY,UAAU,MAAM,QAAS,MAAkC,OAAO;;;;;;;;ACGrF,SAAgB,WAAW,OAAmC;AAC5D,QACE,OAAO,UAAU,YACjB,UAAU,QACV,SAAS,SACT,WAAW,SACX,OAAO,KAAK,MAAM,CAAC,UAAU;;;;;AAOjC,SAAgB,gBAAgB,OAAqC;AACnE,QAAO,MAAM,QAAQ,MAAM,IAAI,MAAM,MAAM,WAAW;;;;;;;;;;AC4IxD,MAAa,sBAAsB,WACjC,OAAO,cAAc;;;;;;AAOvB,MAAa,yBAAyB,WACpC,OAAO,cAAc;;;;;;AAOvB,MAAa,0BAA0B,WACrC,OAAO,cAAc;;;;;;AAOvB,MAAa,2BAA2B,WACtC,OAAO,cAAc;;;;;;;;;;;;;;;ACjOvB,SAAgB,sBAAsB,QAAgC;AAEpE,KAAI,CAAC,0BAA0B,OAAO,CACpC,QAAO;AAIT,KAAI,mBAAmB,OAAO,CAC5B,QAAO,yBAAyB,OAAO;UAC9B,sBAAsB,OAAO,CACtC,QAAO,4BAA4B,OAAO;UACjC,uBAAuB,OAAO,CACvC,QAAO,6BAA6B,OAAO;UAClC,wBAAwB,OAAO,CACxC,QAAO,8BAA8B,OAAO;AAI9C,QAAO;;;;;;;AAQT,SAAS,0BAA0B,QAAgC;AACjE,QACE,OAAO,OAAO,OAAO,YACrB,OAAO,GAAG,MAAM,CAAC,SAAS,KAC1B,OAAO,OAAO,SAAS,YACvB,OAAO,KAAK,MAAM,CAAC,SAAS,KAC5B,OAAO,OAAO,YAAY,YAC1B,OAAO,QAAQ,MAAM,CAAC,SAAS,KAC/B;EAAC;EAAW;EAAW;EAAS,CAAC,SAAS,OAAO,KAAK,IACtD,OAAO,OAAO,cAAc,cAC3B,OAAO,gBAAgB,UAAa,OAAO,OAAO,gBAAgB;;;;;;;AASvE,SAAS,yBAAyB,QAAmC;AACnE,QACE,OAAO,OAAO,YAAY,YAC1B,OAAO,UAAU,KACjB,OAAO,OAAO,WAAW,YACzB,OAAO,OAAO,MAAM,CAAC,SAAS,KAC9B,0BAA0B,OAAO,eAAe;;;;;;;AASpD,SAAS,0BAA0B,UAAuD;AACxF,QACE,OAAO,aAAa,YACpB,aAAa,QACb,OAAO,SAAS,SAAS,YACzB,SAAS,KAAK,MAAM,CAAC,SAAS,KAC9B,OAAO,SAAS,WAAW,YAC3B,SAAS,OAAO,MAAM,CAAC,SAAS,KAChC,OAAO,SAAS,aAAa,YAC7B,SAAS,YAAY;;;;;;;AASzB,SAAS,4BAA4B,QAAsC;AACzE,QACE,OAAO,OAAO,gBAAgB,YAC9B,OAAO,YAAY,MAAM,CAAC,SAAS,KACnC,CAAC,aAAa,YAAY,CAAC,SAAS,OAAO,WAAW;;;;;;;AAS1D,SAAS,6BAA6B,QAAuC;AAC3E,QACE,OAAO,OAAO,eAAe,YAC7B,OAAO,WAAW,MAAM,CAAC,SAAS,KAClC,OAAO,OAAO,sBAAsB,YACpC,OAAO,kBAAkB,MAAM,CAAC,SAAS;;;;;;;AAS7C,SAAS,8BAA8B,SAAyC;AAG9E,QAAO"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../src/adapters/ui-enhancements.ts","../src/adapters/access-control-errors.ts","../src/common/ecosystem.ts","../src/common/enum.ts","../src/common/map.ts","../src/networks/config.ts","../src/networks/validation.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { FormFieldType, FormValues } from '../forms';\n\n/**\n * Configuration for excluding specific wallet components provided by an adapter for its 'custom' kit.\n */\nexport interface ComponentExclusionConfig {\n /**\n * Array of component keys (e.g., 'ConnectButton', 'NetworkSwitcher') to exclude\n * when the adapter provides its 'custom' set of UI components.\n */\n exclude?: Array<keyof EcosystemWalletComponents>;\n}\n\n/**\n * Configuration for the desired UI kit to be used by an adapter.\n */\nexport interface UiKitConfiguration {\n /** Name of the chosen UI kit (e.g., 'rainbowkit', 'connectkit'). Use 'custom' for adapter-provided default components or 'none' to disable adapter UI. */\n kitName: UiKitName;\n\n /**\n * Kit-specific configuration options.\n * This is an open-ended object to allow adapters to define their own configuration.\n * The adapter is responsible for validating and type-checking these values.\n */\n kitConfig: FormValues;\n\n customCode?: string;\n}\n\n/**\n * A generic hook function type that can be called with any parameters and returns any result.\n * This allows us to maintain flexibility for adapter implementations while avoiding the use of 'any'.\n */\ntype GenericHook<TParams extends unknown[] = [], TResult = unknown> = (...args: TParams) => TResult;\n\n/**\n * Defines the shape of facade hooks provided by an adapter for its ecosystem.\n * These typically wrap underlying library hooks (e.g., from wagmi for EVM).\n *\n * We use generic hook signatures to allow direct use of library hooks\n * without tightly coupling to their specific parameter and return types.\n *\n * Adapters implementing these facade hooks are responsible for mapping their native\n * library's return values to a conventional set of properties expected by consumers.\n * This ensures that UI components using these facade hooks can remain chain-agnostic.\n *\n * @example For `useSwitchChain`:\n * Consumers will expect an object like:\n * ```typescript\n * {\n * switchChain: (args: { chainId: number }) => void; // Function to initiate the switch\n * isPending: boolean; // True if the switch is in progress\n * error: Error | null; // Error object if the switch failed\n * // chains?: Chain[]; // Optional: array of available chains, if provided by underlying hook\n * }\n * ```\n * If an adapter's underlying library uses `isLoading` instead of `isPending`,\n * the adapter's facade implementation for `useSwitchChain` should map `isLoading` to `isPending`.\n *\n * @example For `useAccount`:\n * Consumers will expect an object like:\n * ```typescript\n * {\n * isConnected: boolean;\n * address?: string;\n * chainId?: number;\n * // Other properties like `connector`, `status` might also be conventionally expected.\n * }\n * ```\n */\nexport interface EcosystemSpecificReactHooks {\n // Hooks that don't require parameters\n useAccount?: GenericHook;\n useConnect?: GenericHook;\n useDisconnect?: GenericHook;\n useSwitchChain?: GenericHook;\n useChainId?: GenericHook;\n useChains?: GenericHook;\n\n // Hooks that typically require parameters\n useBalance?: GenericHook;\n useSendTransaction?: GenericHook;\n useWaitForTransactionReceipt?: GenericHook;\n useSignMessage?: GenericHook;\n useSignTypedData?: GenericHook;\n // Other ecosystem-specific hooks can be added as needed\n}\n\n/**\n * Props for the ecosystem-specific UI context provider component.\n */\nexport interface EcosystemReactUiProviderProps {\n children: React.ReactNode;\n}\n\n/**\n * Size variants available for wallet UI components.\n * Maps to standard button sizing conventions.\n */\nexport type WalletComponentSize = 'sm' | 'default' | 'lg' | 'xl';\n\n/**\n * Visual style variants for wallet UI components.\n */\nexport type WalletComponentVariant = 'default' | 'outline' | 'ghost' | 'secondary';\n\n/**\n * Base props interface that all component props should be compatible with.\n * Components can extend this with additional props as needed.\n *\n * Adapters implementing wallet components should respect these props:\n * - `className`: Additional CSS classes to apply\n * - `size`: Controls the component's size (height, padding, font-size)\n * - `variant`: Controls the visual style (colors, borders)\n * - `fullWidth`: When true, component expands to fill container width\n */\nexport interface BaseComponentProps {\n /** Additional CSS classes to apply to the component */\n className?: string;\n /** Size variant for the component */\n size?: WalletComponentSize;\n /** Visual style variant */\n variant?: WalletComponentVariant;\n /** If true, component expands to fill its container width */\n fullWidth?: boolean;\n}\n\n/**\n * Defines standardized names for commonly needed wallet UI components\n * that an adapter might provide.\n */\nexport interface EcosystemWalletComponents {\n // Using a generic type parameter with a default of BaseComponentProps\n // This allows components with more specific props that include at least className\n ConnectButton?: React.ComponentType<BaseComponentProps>;\n AccountDisplay?: React.ComponentType<BaseComponentProps>;\n NetworkSwitcher?: React.ComponentType<BaseComponentProps>;\n}\n\n/**\n * Valid component keys for EcosystemWalletComponents.\n * Used for type-safe runtime validation of component exclusion lists.\n */\nexport const ECOSYSTEM_WALLET_COMPONENT_KEYS = [\n 'ConnectButton',\n 'AccountDisplay',\n 'NetworkSwitcher',\n] as const satisfies Array<keyof EcosystemWalletComponents>;\n\nexport type EcosystemWalletComponentKey = (typeof ECOSYSTEM_WALLET_COMPONENT_KEYS)[number];\n\nexport type NativeConfigLoader = (relativePath: string) => Promise<Record<string, unknown> | null>;\n\n/**\n * Describes a UI kit available for a specific adapter, providing all necessary\n * metadata for the builder app to render its configuration options.\n */\nexport interface AvailableUiKit {\n /** A unique identifier for the UI kit (e.g., 'rainbowkit'). */\n id: string;\n\n /** The display name of the UI kit (e.g., 'RainbowKit'). */\n name: string;\n\n /** An optional link to the UI kit's documentation. */\n linkToDocs?: string;\n\n /**\n * An optional description of the UI kit and its configuration.\n * This can contain HTML for formatting (e.g., code blocks, links).\n */\n description?: string;\n\n /** An array of form fields required to configure the UI kit. */\n configFields: FormFieldType[];\n\n /**\n * If true, indicates that this UI kit supports advanced configuration via a code editor.\n * @default false\n */\n hasCodeEditor?: boolean;\n\n /**\n * The default boilerplate code to display if `hasCodeEditor` is true.\n */\n defaultCode?: string;\n}\n\nexport type UiKitName =\n // EVM UI Kits\n | 'rainbowkit'\n | 'connectkit'\n | 'appkit'\n // Stellar UI Kits\n | 'stellar-wallets-kit'\n // Generic options\n | 'custom'\n | 'none';\n\n/**\n * Badge variant for function decorations\n */\nexport type FunctionBadgeVariant = 'info' | 'warning' | 'neutral';\n\n/**\n * Badge displayed next to a function in the UI\n */\nexport interface FunctionBadge {\n /** Display text for the badge */\n text: string;\n /** Visual variant of the badge */\n variant?: FunctionBadgeVariant;\n /** Optional tooltip text shown on hover */\n tooltip?: string;\n}\n\n/**\n * Decoration for a contract function (badges, notes, etc.)\n */\nexport interface FunctionDecoration {\n /** Array of badges to display next to the function */\n badges?: FunctionBadge[];\n /** Optional note to display when the function is selected */\n note?: {\n /** Optional title for the note */\n title?: string;\n /** Body text of the note */\n body: string;\n };\n /**\n * (Optional) If true, the form should auto-add a runtime secret field (if adapter provides getRuntimeFieldBinding).\n * Used to mark functions like organizer-only circuits that require credentials.\n * User can customize (hide, hardcode) or remove the field after auto-add.\n */\n requiresRuntimeSecret?: boolean;\n}\n\n/**\n * Map of function IDs to their decorations\n */\nexport type FunctionDecorationsMap = Record<string, FunctionDecoration>;\n","/**\n * Access Control Error Types\n *\n * Chain-agnostic error classes for access control operations.\n * These errors can be used across any adapter (EVM, Stellar, Solana, Midnight, etc.)\n * that implements access control functionality.\n *\n * Each error type provides specific context for debugging and user-friendly error messages.\n */\n\n/**\n * Base class for all Access Control errors\n *\n * This abstract class serves as the foundation for all access control-related errors.\n * It provides a common structure with optional contract address context.\n */\nexport abstract class AccessControlError extends Error {\n /**\n * Creates a new AccessControlError.\n * @param message - Error message describing the issue\n * @param contractAddress - Optional contract address for context\n */\n constructor(\n message: string,\n public readonly contractAddress?: string\n ) {\n super(message);\n this.name = this.constructor.name;\n }\n}\n\n/**\n * Error thrown when a contract does not implement required interfaces\n *\n * This error indicates that a contract is missing necessary access control functionality\n * or has a partial/incompatible implementation.\n *\n * @example\n * ```typescript\n * throw new UnsupportedContractFeatures(\n * 'Contract missing required Ownable methods',\n * contractAddress,\n * ['transfer_ownership', 'renounce_ownership']\n * );\n * ```\n *\n * Common use cases:\n * - Contract missing Ownable or AccessControl methods\n * - Contract has partial implementation that doesn't conform to standards\n * - Contract is a custom access control implementation not compatible with expected interfaces\n */\nexport class UnsupportedContractFeatures extends AccessControlError {\n /**\n * Creates a new UnsupportedContractFeatures error.\n * @param message - Error message describing the issue\n * @param contractAddress - Optional contract address for context\n * @param missingFeatures - Optional list of missing feature names\n */\n constructor(\n message: string,\n contractAddress?: string,\n public readonly missingFeatures?: string[]\n ) {\n super(message, contractAddress);\n }\n}\n\n/**\n * Error thrown when the caller lacks required permissions for an operation\n *\n * This error indicates an authorization failure where the calling account doesn't\n * have the necessary permissions to execute the requested operation.\n *\n * @example\n * ```typescript\n * throw new PermissionDenied(\n * 'Caller is not an admin',\n * contractAddress,\n * 'ADMIN_ROLE',\n * callerAddress\n * );\n * ```\n *\n * Common use cases:\n * - Attempting to grant/revoke roles without admin rights\n * - Trying to transfer ownership without being the owner\n * - Executing operations that require specific role membership\n */\nexport class PermissionDenied extends AccessControlError {\n /**\n * Creates a new PermissionDenied error.\n * @param message - Error message describing the issue\n * @param contractAddress - Optional contract address for context\n * @param requiredRole - Optional role that was required\n * @param callerAddress - Optional address of the caller who lacked permission\n */\n constructor(\n message: string,\n contractAddress?: string,\n public readonly requiredRole?: string,\n public readonly callerAddress?: string\n ) {\n super(message, contractAddress);\n }\n}\n\n/**\n * Error thrown when an indexer is required but not available\n *\n * This error indicates that an operation requires indexer support (e.g., for historical data),\n * but the indexer is not configured, unreachable, or not functioning properly.\n *\n * @example\n * ```typescript\n * throw new IndexerUnavailable(\n * 'History queries require indexer support',\n * contractAddress,\n * networkId,\n * indexerEndpoint\n * );\n * ```\n *\n * Common use cases:\n * - No indexer endpoint configured in network config\n * - Indexer endpoint is unreachable or returning errors\n * - Indexer health check fails\n * - Network doesn't have indexer support\n */\nexport class IndexerUnavailable extends AccessControlError {\n /**\n * Creates a new IndexerUnavailable error.\n * @param message - Error message describing the issue\n * @param contractAddress - Optional contract address for context\n * @param networkId - Optional network identifier\n * @param endpointUrl - Optional indexer endpoint URL that was unavailable\n */\n constructor(\n message: string,\n contractAddress?: string,\n public readonly networkId?: string,\n public readonly endpointUrl?: string\n ) {\n super(message, contractAddress);\n }\n}\n\n/**\n * Error thrown when configuration is invalid or incomplete\n *\n * This error indicates a problem with the configuration provided to access control operations,\n * such as invalid addresses, missing required config, or malformed parameters.\n *\n * @example\n * ```typescript\n * throw new ConfigurationInvalid(\n * 'Contract not registered',\n * contractAddress,\n * 'contractAddress',\n * providedAddress\n * );\n * ```\n *\n * Common use cases:\n * - Invalid contract address format\n * - Missing required network configuration\n * - Invalid role identifier\n * - Malformed indexer endpoint\n * - Contract not registered before use\n */\nexport class ConfigurationInvalid extends AccessControlError {\n /**\n * Creates a new ConfigurationInvalid error.\n * @param message - Error message describing the issue\n * @param contractAddress - Optional contract address for context\n * @param configField - Optional name of the invalid configuration field\n * @param providedValue - Optional value that was invalid\n */\n constructor(\n message: string,\n contractAddress?: string,\n public readonly configField?: string,\n public readonly providedValue?: unknown\n ) {\n super(message, contractAddress);\n }\n}\n\n/**\n * Error thrown when an operation fails during execution\n *\n * This error indicates a runtime failure during an access control operation.\n * It includes the operation name and can chain the underlying cause for debugging.\n *\n * @example\n * ```typescript\n * try {\n * // ... operation code\n * } catch (err) {\n * throw new OperationFailed(\n * 'Failed to read ownership',\n * contractAddress,\n * 'readOwnership',\n * err as Error\n * );\n * }\n * ```\n *\n * Common use cases:\n * - Transaction assembly fails\n * - RPC call returns an error\n * - Transaction simulation fails\n * - On-chain read operation fails\n * - GraphQL query to indexer fails\n * - Snapshot validation fails\n */\nexport class OperationFailed extends AccessControlError {\n /**\n * Creates a new OperationFailed error.\n * @param message - Error message describing the issue\n * @param contractAddress - Optional contract address for context\n * @param operation - Optional name of the operation that failed\n * @param cause - Optional underlying error that caused the failure\n */\n constructor(\n message: string,\n contractAddress?: string,\n public readonly operation?: string,\n public readonly cause?: Error\n ) {\n super(message, contractAddress);\n }\n}\n","/**\n * Blockchain Ecosystem Types\n *\n * This file defines core types related to blockchain ecosystems supported\n * by the OpenZeppelin UI ecosystem. It consolidates previously scattered\n * ecosystem-related types into a single source of truth.\n */\n\n/**\n * Supported blockchain ecosystems\n */\nexport type Ecosystem = 'evm' | 'solana' | 'stellar' | 'midnight' | 'polkadot';\n\n/**\n * Network environment types\n */\nexport type NetworkType = 'mainnet' | 'testnet' | 'devnet';\n\n/**\n * Configuration for ecosystem feature flags\n */\nexport interface EcosystemFeatureConfig {\n /** Whether the ecosystem is enabled and functional */\n enabled: boolean;\n /** Whether to show the ecosystem in the UI (even if disabled) */\n showInUI: boolean;\n /** Label to display when the ecosystem is disabled */\n disabledLabel?: string;\n /** Description to show when the ecosystem is disabled */\n disabledDescription?: string;\n}\n\n/**\n * Interface for ecosystem-specific data in the registry\n */\nexport interface EcosystemInfo {\n /** Display name (e.g., 'Ethereum (EVM)') */\n name: string;\n\n /** Detailed description of the blockchain */\n description: string;\n\n /** Explorer/verification platform guidance */\n explorerGuidance: string;\n\n /** Address format example (if applicable) */\n addressExample?: string;\n\n /** Icon path for the ecosystem (if available) */\n iconPath?: string;\n\n /** Network icon name for @web3icons/react NetworkIcon component */\n networkIconName?: string;\n\n /** Background color class for UI elements */\n bgColorClass?: string;\n\n /** Text color class for UI elements */\n textColorClass?: string;\n\n /** Default feature flag configuration */\n defaultFeatureConfig: EcosystemFeatureConfig;\n}\n\n/**\n * Blockchain ecosystem metadata for UI display and configuration\n */\nexport interface EcosystemDefinition {\n /**\n * Unique identifier for the ecosystem\n */\n id: Ecosystem;\n\n /**\n * Human-readable name of the ecosystem\n */\n name: string;\n\n /**\n * Description of the ecosystem's purpose or characteristics\n */\n description: string;\n\n /**\n * Optional icon for UI display\n * Note: This uses a generic type as we don't want to introduce React dependencies\n */\n icon?: unknown;\n}\n\n/**\n * Type guards for ecosystem types\n */\n\nexport const isEvmEcosystem = (ecosystem: Ecosystem): ecosystem is 'evm' => ecosystem === 'evm';\n\nexport const isSolanaEcosystem = (ecosystem: Ecosystem): ecosystem is 'solana' =>\n ecosystem === 'solana';\n\nexport const isStellarEcosystem = (ecosystem: Ecosystem): ecosystem is 'stellar' =>\n ecosystem === 'stellar';\n\nexport const isMidnightEcosystem = (ecosystem: Ecosystem): ecosystem is 'midnight' =>\n ecosystem === 'midnight';\n\nexport const isPolkadotEcosystem = (ecosystem: Ecosystem): ecosystem is 'polkadot' =>\n ecosystem === 'polkadot';\n","/**\n * Chain-Agnostic Enum Types\n *\n * This module defines standardized enum types that work across all blockchain adapters.\n * These types represent the UI layer's understanding of enums before they are converted\n * to blockchain-specific formats by individual adapters.\n */\n\n/**\n * Chain-agnostic enum value representation.\n * This is the standardized format that enum fields produce, regardless of the target blockchain.\n * Each adapter transforms this generic format into its blockchain-specific representation.\n *\n * @example Basic Usage\n * ```typescript\n * Unit variant (no payload)\n * const unitEnum: EnumValue = { tag: \"None\" };\n *\n * Tuple variant (with payload)\n * const tupleEnum: EnumValue = {\n * tag: \"Some\",\n * values: [\"hello\", 42]\n * };\n * ```\n *\n * @example Cross-Chain Compatibility\n * ```typescript\n * Stellar/Soroban: Transforms to ScVec([Symbol(\"Active\"), payload?])\n * const stellarEnum: EnumValue = { tag: \"Active\", values: [123] };\n * → ScVec([Symbol(\"Active\"), ScU32(123)])\n *\n * EVM/Solidity: Transforms to integer or struct\n * const evmEnum: EnumValue = { tag: \"Pending\" };\n * → uint8(0) for simple enums\n * → { variant: 0, data: [...] } for complex enums\n *\n * Solana/Rust: Transforms to Borsh-encoded enum\n * const solanaEnum: EnumValue = { tag: \"Ok\", values: [\"success\"] };\n * → Result::Ok(\"success\") via Borsh serialization\n *\n * Complex nested example\n * const complexEnum: EnumValue = {\n * tag: \"TransferResult\",\n * values: [\n * { tag: \"Success\", values: [\"0x123...\", 1000] },\n * { tag: \"Error\", values: [\"Insufficient funds\"] }\n * ]\n * };\n * ```\n */\nexport interface EnumValue {\n /** The variant name (e.g., 'None', 'Some', 'Success', 'Error') */\n tag: string;\n /** Optional payload values for tuple variants */\n values?: unknown[];\n}\n\n/**\n * Type guard to check if a value is an EnumValue\n */\nexport function isEnumValue(value: unknown): value is EnumValue {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'tag' in value &&\n typeof (value as Record<string, unknown>).tag === 'string' &&\n (!('values' in value) || Array.isArray((value as Record<string, unknown>).values))\n );\n}\n","/**\n * Chain-Agnostic Map Types\n *\n * This module defines standardized map types that work across all blockchain adapters.\n * These types represent the UI layer's understanding of maps before they are converted\n * to blockchain-specific formats by individual adapters.\n */\n\n/**\n * Chain-agnostic map entry representation.\n * This is the standardized format that map fields produce, regardless of the target blockchain.\n * Each adapter transforms this generic format into its blockchain-specific representation.\n *\n * @example Basic Usage\n * ```typescript\n * Simple key-value pairs\n * const stringMap: MapEntry[] = [\n * { key: \"name\", value: \"Alice\" },\n * { key: \"age\", value: 30 }\n * ];\n *\n * Mixed type pairs\n * const mixedMap: MapEntry[] = [\n * { key: \"config\", value: { enabled: true, timeout: 5000 } },\n * { key: \"tags\", value: [\"production\", \"api\"] }\n * ];\n * ```\n *\n * @example Cross-Chain Compatibility\n * ```typescript\n * Stellar/Soroban: Transforms to SorobanMapEntry[]\n * const stellarMap: MapEntry[] = [\n * { key: \"symbol\", value: \"USDC\" },\n * { key: \"decimals\", value: 6 }\n * ];\n * → [\n * { key: ScSymbol(\"symbol\"), value: ScSymbol(\"USDC\") },\n * { key: ScSymbol(\"decimals\"), value: ScU32(6) }\n * ]\n *\n * EVM/Solidity: Transforms to struct array (mappings not supported in function params)\n * const evmMap: MapEntry[] = [\n * { key: \"0x123...\", value: 1000 },\n * { key: \"0x456...\", value: 2000 }\n * ];\n * → AddressAmount[] struct array for function parameters\n *\n * Complex nested maps\n * const nestedMap: MapEntry[] = [\n * {\n * key: \"user_data\",\n * value: [\n * { key: \"balance\", value: \"1000\" },\n * { key: \"permissions\", value: [\"read\", \"write\"] }\n * ]\n * }\n * ];\n * ```\n */\nexport interface MapEntry {\n /** The map key (can be any serializable type) */\n key: unknown;\n /** The map value (can be any serializable type) */\n value: unknown;\n}\n\n/**\n * Type guard to check if a value is a MapEntry\n */\nexport function isMapEntry(value: unknown): value is MapEntry {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'key' in value &&\n 'value' in value &&\n Object.keys(value).length >= 2\n );\n}\n\n/**\n * Type guard to check if a value is an array of MapEntry objects\n */\nexport function isMapEntryArray(value: unknown): value is MapEntry[] {\n return Array.isArray(value) && value.every(isMapEntry);\n}\n","/**\n * Network Configuration Types\n *\n * This file defines the TypeScript types for network configurations across different blockchain ecosystems.\n * It uses a discriminated union pattern with the 'ecosystem' property as the discriminant to ensure type safety.\n */\nimport type React from 'react';\n\nimport { Ecosystem, NetworkType } from '../common/ecosystem';\n\n/**\n * Base interface with common properties shared across all network configurations\n */\nexport interface BaseNetworkConfig {\n /**\n * Unique identifier for the network, e.g., 'ethereum-mainnet', 'polygon-amoy'\n */\n id: string;\n\n /**\n * User-friendly network name, e.g., 'Ethereum Mainnet'\n */\n name: string;\n\n /**\n * The blockchain ecosystem this network belongs to (discriminant for the union type)\n */\n ecosystem: Ecosystem;\n\n /**\n * Parent network name, e.g., 'ethereum', 'polygon'\n */\n network: string;\n\n /**\n * Network type/environment: 'mainnet', 'testnet', or 'devnet'\n */\n type: NetworkType;\n\n /**\n * Explicit flag for easy filtering of test networks\n */\n isTestnet: boolean;\n\n /**\n * The constant name under which this specific network configuration object\n * is exported from its adapter package's network index file.\n * Used by the export system to dynamically import the correct config.\n * Example: 'ethereumMainnet', 'ethereumSepolia'\n */\n exportConstName: string;\n\n /**\n * Base URL for the block explorer (common across ecosystems)\n */\n explorerUrl?: string;\n\n /**\n * Optional React component for the network icon.\n * This allows embedding the icon component directly in the network config,\n * avoiding dynamic imports and improving build performance.\n * If provided, this takes precedence over the icon string.\n */\n iconComponent?: React.ComponentType<{\n size?: number;\n className?: string;\n variant?: 'mono' | 'branded';\n }>;\n\n /**\n * A unique identifier for the specific explorer API service used by this network.\n * This is used by the AppConfigService to fetch the correct API key.\n * Examples: \"etherscan-mainnet\", \"polygonscan-mainnet\", \"bscscan-mainnet\"\n * Should align with keys in AppRuntimeConfig.networkServiceConfigs\n */\n primaryExplorerApiIdentifier?: string;\n\n /**\n * Optional indexer GraphQL HTTP endpoint\n * Used for querying historical blockchain data (e.g., access control events)\n */\n indexerUri?: string;\n\n /**\n * Optional indexer GraphQL WebSocket endpoint\n * Used for real-time blockchain data subscriptions\n */\n indexerWsUri?: string;\n}\n\n/**\n * EVM-specific network configuration\n */\nexport interface EvmNetworkConfig extends BaseNetworkConfig {\n ecosystem: 'evm';\n\n /**\n * EVM chain ID, e.g., 1 for Ethereum Mainnet, 11155111 for Sepolia\n */\n chainId: number;\n\n /**\n * JSON-RPC endpoint for the network (can be a base URL if API key is resolved from env)\n */\n rpcUrl: string;\n\n /**\n * Native currency information\n */\n nativeCurrency: {\n name: string; // e.g., 'Ether'\n symbol: string; // e.g., 'ETH'\n decimals: number; // typically 18\n };\n\n /**\n * Optional icon name for the network (for use with @web3icons/react or similar)\n * If not provided, the network property will be used as a fallback\n */\n apiUrl?: string;\n\n /**\n * Whether this network supports Etherscan V2 API (default: true for all Etherscan-compatible explorers)\n */\n supportsEtherscanV2?: boolean;\n\n /**\n * Whether this network's explorer requires an API key for basic operations (default: true)\n * Some explorers like routescan.io provide free access without API keys\n */\n requiresExplorerApiKey?: boolean;\n\n /**\n * Optional chain-specific configuration object for this network.\n * For EVM networks, this should be a Viem Chain object.\n * If provided, this will be used directly by the chain's clients.\n * If not provided, a fallback or minimal custom chain object might be used.\n */\n viemChain?: unknown;\n}\n\n/**\n * Solana-specific network configuration\n */\nexport interface SolanaNetworkConfig extends BaseNetworkConfig {\n ecosystem: 'solana';\n\n /**\n * RPC endpoint for Solana network\n */\n rpcEndpoint: string;\n\n /**\n * Solana transaction confirmation commitment level\n */\n commitment: 'confirmed' | 'finalized';\n}\n\n/**\n * Stellar-specific network configuration\n */\nexport interface StellarNetworkConfig extends BaseNetworkConfig {\n ecosystem: 'stellar';\n\n /**\n * Horizon server URL (for Stellar Classic operations)\n */\n horizonUrl: string;\n\n /**\n * Soroban RPC server URL (for smart contract operations)\n */\n sorobanRpcUrl: string;\n\n /**\n * Stellar network passphrase\n */\n networkPassphrase: string;\n}\n\n/**\n * Midnight-specific network configuration\n */\nexport interface MidnightNetworkConfig extends BaseNetworkConfig {\n ecosystem: 'midnight';\n\n /**\n * Midnight Network ID enum value\n * Maps to @midnight-ntwrk/midnight-js-network-id NetworkId enum\n * Single source of truth for network identity when mapping is not provided.\n */\n /**\n * Mapping of numeric network ID to its enum name.\n * Example: { 2: 'TestNet' }\n */\n networkId: Partial<Record<2 | 3 | 1 | 0, 'TestNet' | 'MainNet' | 'DevNet' | 'Undeployed'>>;\n\n /**\n * RPC endpoints for the Midnight network\n */\n rpcEndpoints?: {\n default?: string;\n [key: string]: string | undefined;\n };\n\n // Additional Midnight-specific properties can be added here as the protocol evolves\n}\n\n/**\n * Polkadot execution type - currently supports EVM, with future Substrate support planned\n */\nexport type PolkadotExecutionType = 'evm' | 'substrate';\n\n/**\n * Polkadot network category for UI grouping\n */\nexport type PolkadotNetworkCategory = 'hub' | 'parachain';\n\n/**\n * Polkadot relay chain identifier\n */\nexport type PolkadotRelayChain = 'polkadot' | 'kusama';\n\n/**\n * Polkadot-specific network configuration\n * Extends EVM config since all current Polkadot networks are EVM-compatible.\n * Adds Polkadot-specific fields for execution type routing and UI grouping.\n */\nexport interface PolkadotNetworkConfig extends Omit<EvmNetworkConfig, 'ecosystem'> {\n ecosystem: 'polkadot';\n\n /**\n * Execution type for this network\n * - 'evm': EVM-compatible (current support)\n * - 'substrate': Native Substrate/Wasm (future support)\n */\n executionType: PolkadotExecutionType;\n\n /**\n * Network category for UI grouping\n * - 'hub': Polkadot/Kusama Hub (Asset Hub) - prioritized in UI\n * - 'parachain': Parachains like Moonbeam, Moonriver\n */\n networkCategory: PolkadotNetworkCategory;\n\n /**\n * Optional relay chain identifier\n * - 'polkadot': Connected to Polkadot relay chain\n * - 'kusama': Connected to Kusama relay chain\n * - undefined: Testnet or standalone\n */\n relayChain?: PolkadotRelayChain;\n}\n\n/**\n * Union type for all network configurations\n * This allows us to handle network configurations in a type-safe manner\n */\nexport type NetworkConfig =\n | EvmNetworkConfig\n | SolanaNetworkConfig\n | StellarNetworkConfig\n | MidnightNetworkConfig\n | PolkadotNetworkConfig;\n\n/**\n * Type guard to check if a network config is for EVM\n * @param config The network configuration to check\n * @returns True if the config is for EVM\n */\nexport const isEvmNetworkConfig = (config: NetworkConfig): config is EvmNetworkConfig =>\n config.ecosystem === 'evm';\n\n/**\n * Type guard to check if a network config is for Solana\n * @param config The network configuration to check\n * @returns True if the config is for Solana\n */\nexport const isSolanaNetworkConfig = (config: NetworkConfig): config is SolanaNetworkConfig =>\n config.ecosystem === 'solana';\n\n/**\n * Type guard to check if a network config is for Stellar\n * @param config The network configuration to check\n * @returns True if the config is for Stellar\n */\nexport const isStellarNetworkConfig = (config: NetworkConfig): config is StellarNetworkConfig =>\n config.ecosystem === 'stellar';\n\n/**\n * Type guard to check if a network config is for Midnight\n * @param config The network configuration to check\n * @returns True if the config is for Midnight\n */\nexport const isMidnightNetworkConfig = (config: NetworkConfig): config is MidnightNetworkConfig =>\n config.ecosystem === 'midnight';\n\n/**\n * Type guard to check if a network config is for Polkadot\n * @param config The network configuration to check\n * @returns True if the config is for Polkadot\n */\nexport const isPolkadotNetworkConfig = (config: NetworkConfig): config is PolkadotNetworkConfig =>\n config.ecosystem === 'polkadot';\n","/**\n * Network Configuration Validation\n *\n * This file contains utilities for validating network configurations to ensure they have\n * all required fields and properly typed values for each ecosystem.\n */\nimport {\n EvmNetworkConfig,\n isEvmNetworkConfig,\n isMidnightNetworkConfig,\n isSolanaNetworkConfig,\n isStellarNetworkConfig,\n MidnightNetworkConfig,\n NetworkConfig,\n SolanaNetworkConfig,\n StellarNetworkConfig,\n} from './config';\n\n/**\n * Validate a network configuration\n * @param config The network configuration to validate\n * @returns True if the configuration is valid\n */\nexport function validateNetworkConfig(config: NetworkConfig): boolean {\n // Validate common fields required for all networks\n if (!validateBaseNetworkConfig(config)) {\n return false;\n }\n\n // Ecosystem-specific validation\n if (isEvmNetworkConfig(config)) {\n return validateEvmNetworkConfig(config);\n } else if (isSolanaNetworkConfig(config)) {\n return validateSolanaNetworkConfig(config);\n } else if (isStellarNetworkConfig(config)) {\n return validateStellarNetworkConfig(config);\n } else if (isMidnightNetworkConfig(config)) {\n return validateMidnightNetworkConfig(config);\n }\n\n // Unknown ecosystem\n return false;\n}\n\n/**\n * Validate the base fields common to all network configurations\n * @param config The network configuration to validate\n * @returns True if the base configuration is valid\n */\nfunction validateBaseNetworkConfig(config: NetworkConfig): boolean {\n return (\n typeof config.id === 'string' &&\n config.id.trim().length > 0 &&\n typeof config.name === 'string' &&\n config.name.trim().length > 0 &&\n typeof config.network === 'string' &&\n config.network.trim().length > 0 &&\n ['mainnet', 'testnet', 'devnet'].includes(config.type) &&\n typeof config.isTestnet === 'boolean' &&\n (config.explorerUrl === undefined || typeof config.explorerUrl === 'string')\n );\n}\n\n/**\n * Validate an EVM network configuration\n * @param config The EVM network configuration to validate\n * @returns True if the configuration is valid\n */\nfunction validateEvmNetworkConfig(config: EvmNetworkConfig): boolean {\n return (\n typeof config.chainId === 'number' &&\n config.chainId > 0 &&\n typeof config.rpcUrl === 'string' &&\n config.rpcUrl.trim().length > 0 &&\n validateEvmNativeCurrency(config.nativeCurrency)\n );\n}\n\n/**\n * Validate the native currency object in an EVM network configuration\n * @param currency The native currency object to validate\n * @returns True if the native currency is valid\n */\nfunction validateEvmNativeCurrency(currency: EvmNetworkConfig['nativeCurrency']): boolean {\n return (\n typeof currency === 'object' &&\n currency !== null &&\n typeof currency.name === 'string' &&\n currency.name.trim().length > 0 &&\n typeof currency.symbol === 'string' &&\n currency.symbol.trim().length > 0 &&\n typeof currency.decimals === 'number' &&\n currency.decimals >= 0\n );\n}\n\n/**\n * Validate a Solana network configuration\n * @param config The Solana network configuration to validate\n * @returns True if the configuration is valid\n */\nfunction validateSolanaNetworkConfig(config: SolanaNetworkConfig): boolean {\n return (\n typeof config.rpcEndpoint === 'string' &&\n config.rpcEndpoint.trim().length > 0 &&\n ['confirmed', 'finalized'].includes(config.commitment)\n );\n}\n\n/**\n * Validate a Stellar network configuration\n * @param config The Stellar network configuration to validate\n * @returns True if the configuration is valid\n */\nfunction validateStellarNetworkConfig(config: StellarNetworkConfig): boolean {\n return (\n typeof config.horizonUrl === 'string' &&\n config.horizonUrl.trim().length > 0 &&\n typeof config.networkPassphrase === 'string' &&\n config.networkPassphrase.trim().length > 0\n );\n}\n\n/**\n * Validate a Midnight network configuration\n * @param config The Midnight network configuration to validate\n * @returns True if the configuration is valid\n */\nfunction validateMidnightNetworkConfig(_config: MidnightNetworkConfig): boolean {\n // Currently just validates the base fields\n // Add more validation as Midnight-specific fields are added\n return true;\n}\n"],"mappings":"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"}
package/dist/index.d.cts CHANGED
@@ -133,7 +133,6 @@ interface AppRuntimeConfig {
133
133
  /** Indexer endpoint overrides for different networks (for historical data queries). */
134
134
  indexerEndpoints?: NetworkSpecificIndexerEndpoints;
135
135
  }
136
- //# sourceMappingURL=app-config.d.ts.map
137
136
  //#endregion
138
137
  //#region src/contracts/proxy.d.ts
139
138
  /**
@@ -166,7 +165,6 @@ interface ProxyInfo {
166
165
  /** Error message if proxy detection failed */
167
166
  detectionError?: string;
168
167
  }
169
- //# sourceMappingURL=proxy.d.ts.map
170
168
  //#endregion
171
169
  //#region src/common/ecosystem.d.ts
172
170
  /**
@@ -179,7 +177,7 @@ interface ProxyInfo {
179
177
  /**
180
178
  * Supported blockchain ecosystems
181
179
  */
182
- type Ecosystem = 'evm' | 'solana' | 'stellar' | 'midnight';
180
+ type Ecosystem = 'evm' | 'solana' | 'stellar' | 'midnight' | 'polkadot';
183
181
  /**
184
182
  * Network environment types
185
183
  */
@@ -249,7 +247,7 @@ declare const isEvmEcosystem: (ecosystem: Ecosystem) => ecosystem is "evm";
249
247
  declare const isSolanaEcosystem: (ecosystem: Ecosystem) => ecosystem is "solana";
250
248
  declare const isStellarEcosystem: (ecosystem: Ecosystem) => ecosystem is "stellar";
251
249
  declare const isMidnightEcosystem: (ecosystem: Ecosystem) => ecosystem is "midnight";
252
- //# sourceMappingURL=ecosystem.d.ts.map
250
+ declare const isPolkadotEcosystem: (ecosystem: Ecosystem) => ecosystem is "polkadot";
253
251
  //#endregion
254
252
  //#region src/contracts/schema.d.ts
255
253
  /**
@@ -406,7 +404,6 @@ interface ContractSchema {
406
404
  */
407
405
  metadata?: Record<string, unknown>;
408
406
  }
409
- //# sourceMappingURL=schema.d.ts.map
410
407
  //#endregion
411
408
  //#region src/contracts/storage.d.ts
412
409
  /**
@@ -479,7 +476,6 @@ interface ContractDefinitionValidationResult {
479
476
  /** Normalized definition if validation passed */
480
477
  normalizedDefinition?: unknown;
481
478
  }
482
- //# sourceMappingURL=storage.d.ts.map
483
479
  //#endregion
484
480
  //#region src/execution/eoa.d.ts
485
481
  interface EoaExecutionConfig {
@@ -487,13 +483,11 @@ interface EoaExecutionConfig {
487
483
  allowAny: boolean;
488
484
  specificAddress?: string;
489
485
  }
490
- //# sourceMappingURL=eoa.d.ts.map
491
486
  //#endregion
492
487
  //#region src/execution/multisig.d.ts
493
488
  interface MultisigExecutionConfig {
494
489
  method: 'multisig';
495
490
  }
496
- //# sourceMappingURL=multisig.d.ts.map
497
491
  //#endregion
498
492
  //#region src/execution/relayer.d.ts
499
493
  interface RelayerDetails {
@@ -516,15 +510,12 @@ interface RelayerExecutionConfig {
516
510
  relayer: RelayerDetails;
517
511
  transactionOptions?: Record<string, unknown>;
518
512
  }
519
- //# sourceMappingURL=relayer.d.ts.map
520
513
  //#endregion
521
514
  //#region src/execution/index.d.ts
522
515
  /**
523
516
  * Execution configuration type (union of all execution methods)
524
517
  */
525
518
  type ExecutionConfig = EoaExecutionConfig | RelayerExecutionConfig | MultisigExecutionConfig;
526
- //# sourceMappingURL=index.d.ts.map
527
-
528
519
  //#endregion
529
520
  //#region src/common/enum.d.ts
530
521
  /**
@@ -586,7 +577,6 @@ interface EnumValue {
586
577
  * Type guard to check if a value is an EnumValue
587
578
  */
588
579
  declare function isEnumValue(value: unknown): value is EnumValue;
589
- //# sourceMappingURL=enum.d.ts.map
590
580
  //#endregion
591
581
  //#region src/common/map.d.ts
592
582
  /**
@@ -661,7 +651,6 @@ declare function isMapEntry(value: unknown): value is MapEntry;
661
651
  * Type guard to check if a value is an array of MapEntry objects
662
652
  */
663
653
  declare function isMapEntryArray(value: unknown): value is MapEntry[];
664
- //# sourceMappingURL=map.d.ts.map
665
654
  //#endregion
666
655
  //#region src/forms/validation.d.ts
667
656
  /**
@@ -697,7 +686,6 @@ interface FieldValidation {
697
686
  */
698
687
  conditions?: FieldCondition[];
699
688
  }
700
- //# sourceMappingURL=validation.d.ts.map
701
689
  //#endregion
702
690
  //#region src/forms/form-field.d.ts
703
691
  /**
@@ -860,7 +848,6 @@ interface FormFieldType<T extends FieldType = FieldType> {
860
848
  metadata?: Record<string, unknown>;
861
849
  };
862
850
  }
863
- //# sourceMappingURL=form-field.d.ts.map
864
851
  //#endregion
865
852
  //#region src/forms/layout.d.ts
866
853
  /**
@@ -897,7 +884,6 @@ interface SubmitButtonConfig {
897
884
  */
898
885
  variant?: 'primary' | 'secondary' | 'outline';
899
886
  }
900
- //# sourceMappingURL=layout.d.ts.map
901
887
  //#endregion
902
888
  //#region src/forms/schema.d.ts
903
889
  /**
@@ -974,7 +960,6 @@ interface RenderFormSchema extends CommonFormProperties {
974
960
  */
975
961
  runtimeSecrets?: Record<string, string>;
976
962
  }
977
- //# sourceMappingURL=schema.d.ts.map
978
963
  //#endregion
979
964
  //#region src/forms/fields.d.ts
980
965
  /**
@@ -1063,7 +1048,6 @@ interface TransactionFormProps {
1063
1048
  */
1064
1049
  executionConfig?: ExecutionConfig;
1065
1050
  }
1066
- //# sourceMappingURL=fields.d.ts.map
1067
1051
  //#endregion
1068
1052
  //#region src/networks/config.d.ts
1069
1053
  /**
@@ -1232,11 +1216,50 @@ interface MidnightNetworkConfig extends BaseNetworkConfig {
1232
1216
  [key: string]: string | undefined;
1233
1217
  };
1234
1218
  }
1219
+ /**
1220
+ * Polkadot execution type - currently supports EVM, with future Substrate support planned
1221
+ */
1222
+ type PolkadotExecutionType = 'evm' | 'substrate';
1223
+ /**
1224
+ * Polkadot network category for UI grouping
1225
+ */
1226
+ type PolkadotNetworkCategory = 'hub' | 'parachain';
1227
+ /**
1228
+ * Polkadot relay chain identifier
1229
+ */
1230
+ type PolkadotRelayChain = 'polkadot' | 'kusama';
1231
+ /**
1232
+ * Polkadot-specific network configuration
1233
+ * Extends EVM config since all current Polkadot networks are EVM-compatible.
1234
+ * Adds Polkadot-specific fields for execution type routing and UI grouping.
1235
+ */
1236
+ interface PolkadotNetworkConfig extends Omit<EvmNetworkConfig, 'ecosystem'> {
1237
+ ecosystem: 'polkadot';
1238
+ /**
1239
+ * Execution type for this network
1240
+ * - 'evm': EVM-compatible (current support)
1241
+ * - 'substrate': Native Substrate/Wasm (future support)
1242
+ */
1243
+ executionType: PolkadotExecutionType;
1244
+ /**
1245
+ * Network category for UI grouping
1246
+ * - 'hub': Polkadot/Kusama Hub (Asset Hub) - prioritized in UI
1247
+ * - 'parachain': Parachains like Moonbeam, Moonriver
1248
+ */
1249
+ networkCategory: PolkadotNetworkCategory;
1250
+ /**
1251
+ * Optional relay chain identifier
1252
+ * - 'polkadot': Connected to Polkadot relay chain
1253
+ * - 'kusama': Connected to Kusama relay chain
1254
+ * - undefined: Testnet or standalone
1255
+ */
1256
+ relayChain?: PolkadotRelayChain;
1257
+ }
1235
1258
  /**
1236
1259
  * Union type for all network configurations
1237
1260
  * This allows us to handle network configurations in a type-safe manner
1238
1261
  */
1239
- type NetworkConfig = EvmNetworkConfig | SolanaNetworkConfig | StellarNetworkConfig | MidnightNetworkConfig;
1262
+ type NetworkConfig = EvmNetworkConfig | SolanaNetworkConfig | StellarNetworkConfig | MidnightNetworkConfig | PolkadotNetworkConfig;
1240
1263
  /**
1241
1264
  * Type guard to check if a network config is for EVM
1242
1265
  * @param config The network configuration to check
@@ -1261,7 +1284,12 @@ declare const isStellarNetworkConfig: (config: NetworkConfig) => config is Stell
1261
1284
  * @returns True if the config is for Midnight
1262
1285
  */
1263
1286
  declare const isMidnightNetworkConfig: (config: NetworkConfig) => config is MidnightNetworkConfig;
1264
- //# sourceMappingURL=config.d.ts.map
1287
+ /**
1288
+ * Type guard to check if a network config is for Polkadot
1289
+ * @param config The network configuration to check
1290
+ * @returns True if the config is for Polkadot
1291
+ */
1292
+ declare const isPolkadotNetworkConfig: (config: NetworkConfig) => config is PolkadotNetworkConfig;
1265
1293
  //#endregion
1266
1294
  //#region src/networks/validation.d.ts
1267
1295
  /**
@@ -1270,7 +1298,6 @@ declare const isMidnightNetworkConfig: (config: NetworkConfig) => config is Midn
1270
1298
  * @returns True if the configuration is valid
1271
1299
  */
1272
1300
  declare function validateNetworkConfig(config: NetworkConfig): boolean;
1273
- //# sourceMappingURL=validation.d.ts.map
1274
1301
  //#endregion
1275
1302
  //#region src/transactions/status.d.ts
1276
1303
  /**
@@ -1291,7 +1318,6 @@ type TransactionStatusUpdate = {
1291
1318
  title?: string;
1292
1319
  message?: string;
1293
1320
  };
1294
- //# sourceMappingURL=status.d.ts.map
1295
1321
  //#endregion
1296
1322
  //#region src/adapters/access-control.d.ts
1297
1323
  /**
@@ -1720,7 +1746,6 @@ interface AccessControlService {
1720
1746
  */
1721
1747
  getHistory(contractAddress: string, options?: HistoryQueryOptions): Promise<PaginatedHistoryResult>;
1722
1748
  }
1723
- //# sourceMappingURL=access-control.d.ts.map
1724
1749
  //#endregion
1725
1750
  //#region src/adapters/export.d.ts
1726
1751
  /**
@@ -1788,7 +1813,6 @@ interface AdapterExportBootstrap {
1788
1813
  */
1789
1814
  initAfterAdapterConstruct?: string;
1790
1815
  }
1791
- //# sourceMappingURL=export.d.ts.map
1792
1816
  //#endregion
1793
1817
  //#region src/adapters/ui-enhancements.d.ts
1794
1818
  /**
@@ -2674,7 +2698,6 @@ interface ContractAdapter {
2674
2698
  */
2675
2699
  getTypeMappingInfo(): TypeMappingInfo;
2676
2700
  }
2677
- //# sourceMappingURL=base.d.ts.map
2678
2701
  //#endregion
2679
2702
  //#region src/adapters/contract-state.d.ts
2680
2703
  /**
@@ -2711,7 +2734,6 @@ interface ContractStateCapabilities {
2711
2734
  */
2712
2735
  formatFunctionResult(result: unknown, functionDetails: ContractFunction): string | Record<string, unknown>;
2713
2736
  }
2714
- //# sourceMappingURL=contract-state.d.ts.map
2715
2737
  //#endregion
2716
2738
  //#region src/adapters/config.d.ts
2717
2739
  /**
@@ -2806,14 +2828,27 @@ interface AdapterConfig {
2806
2828
  * @example { "use-sync-external-store": "^1.2.0" }
2807
2829
  */
2808
2830
  overrides?: Record<string, string>;
2831
+ /**
2832
+ * Patched dependencies that require fixes for browser compatibility or other issues.
2833
+ * Each entry maps a package name with version to the patch filename
2834
+ * (not including the adapter package's `patches/` directory prefix).
2835
+ *
2836
+ * When an adapter specifies patches, the export system will:
2837
+ * 1. Copy the patch files to the exported project's `patches/` directory
2838
+ * 2. Add the corresponding `pnpm.patchedDependencies` entries to `package.json`
2839
+ *
2840
+ * @example
2841
+ * ```typescript
2842
+ * patchedDependencies: {
2843
+ * "@midnight-ntwrk/midnight-js-contracts@2.0.2": "@midnight-ntwrk__midnight-js-contracts@2.0.2.patch",
2844
+ * "@midnight-ntwrk/midnight-js-types@2.0.2": "@midnight-ntwrk__midnight-js-types@2.0.2.patch"
2845
+ * }
2846
+ * ```
2847
+ */
2848
+ patchedDependencies?: Record<string, string>;
2809
2849
  /**
2810
2850
  * Optional UI kits that can be used with this adapter.
2811
2851
  * Each UI kit can specify its own set of dependencies and overrides.
2812
- *
2813
- * Note: Package patches are automatically applied when the adapter is installed.
2814
- * Adapters that require patches (e.g., Midnight SDK fixes) bundle them in their
2815
- * package and configure pnpm.patchedDependencies in their own package.json.
2816
- * No additional configuration is needed in exported apps.
2817
2852
  */
2818
2853
  uiKits?: Record<string, {
2819
2854
  dependencies: {
@@ -2826,7 +2861,6 @@ interface AdapterConfig {
2826
2861
  overrides?: Record<string, string>;
2827
2862
  }>;
2828
2863
  }
2829
- //# sourceMappingURL=config.d.ts.map
2830
2864
  //#endregion
2831
2865
  //#region src/adapters/access-control-errors.d.ts
2832
2866
  /**
@@ -3025,7 +3059,6 @@ declare class OperationFailed extends AccessControlError {
3025
3059
  */
3026
3060
  constructor(message: string, contractAddress?: string, operation?: string | undefined, cause?: Error | undefined);
3027
3061
  }
3028
- //# sourceMappingURL=access-control-errors.d.ts.map
3029
3062
  //#endregion
3030
3063
  //#region src/adapters/index.d.ts
3031
3064
  /**
@@ -3035,8 +3068,6 @@ declare class OperationFailed extends AccessControlError {
3035
3068
  * ContractAdapter interface and additional capabilities like contract state querying.
3036
3069
  */
3037
3070
  type FullContractAdapter = ContractAdapter & ContractStateCapabilities;
3038
- //# sourceMappingURL=index.d.ts.map
3039
-
3040
3071
  //#endregion
3041
- export { AccessControlCapabilities, AccessControlError, AccessControlService, AccessSnapshot, AdapterConfig, AdapterExportBootstrap, AdapterExportContext, AdminInfo, AdminState, AppRuntimeConfig, AvailableUiKit, BaseComponentProps, BaseNetworkConfig, BuilderFormConfigLike, CommonFormProperties, ComponentExclusionConfig, ConfigurationInvalid, Connector, ContractAdapter, ContractDefinitionComparisonResult, ContractDefinitionDifference, ContractDefinitionMetadata, ContractDefinitionValidationResult, ContractEvent, ContractFunction, ContractSchema, ContractStateCapabilities, DynamicTypePattern, ECOSYSTEM_WALLET_COMPONENT_KEYS, Ecosystem, EcosystemDefinition, EcosystemFeatureConfig, EcosystemInfo, EcosystemReactUiProviderProps, EcosystemSpecificReactHooks, EcosystemWalletComponentKey, EcosystemWalletComponents, EnrichedRoleAssignment, EnrichedRoleMember, EnumValue, EoaExecutionConfig, EvmNetworkConfig, ExecutionConfig, ExecutionMethodDetail, ExecutionMethodType, ExplorerApiConfig, FeatureFlags, FieldCondition, FieldTransforms, FieldType, FieldValidation, FieldValue, FormError, FormFieldType, FormLayout, FormValues, FullContractAdapter, FunctionBadge, FunctionBadgeVariant, FunctionDecoration, FunctionDecorationsMap, FunctionParameter, GlobalServiceConfigs, HistoryChangeType, HistoryEntry, HistoryQueryOptions, IndexerEndpointConfig, IndexerUnavailable, MapEntry, MidnightNetworkConfig, MultisigExecutionConfig, NativeConfigLoader, NetworkConfig, NetworkServiceConfigs, NetworkServiceForm, NetworkSpecificIndexerEndpoints, NetworkSpecificRpcEndpoints, NetworkType, OperationFailed, OperationResult, OwnershipInfo, OwnershipState, PageInfo, PaginatedHistoryResult, PendingAdminTransfer, PendingOwnershipTransfer, PermissionDenied, ProxyInfo, RelayerDetails, RelayerDetailsRich, RelayerExecutionConfig, RenderFormSchema, RoleAssignment, RoleIdentifier, RpcEndpointConfig, RuntimeSecretPropertyInput, ServiceParameterConfig, SolanaNetworkConfig, StellarNetworkConfig, SubmitButtonConfig, TransactionFormProps, TransactionStatusUpdate, TxStatus, TypeMappingInfo, UiKitConfiguration, UiKitName, UnsupportedContractFeatures, UserExplorerConfig, UserRpcProviderConfig, ViteConfigInfo, WalletComponentSize, WalletComponentVariant, WalletConnectionStatus, isEnumValue, isEvmEcosystem, isEvmNetworkConfig, isMapEntry, isMapEntryArray, isMidnightEcosystem, isMidnightNetworkConfig, isSolanaEcosystem, isSolanaNetworkConfig, isStellarEcosystem, isStellarNetworkConfig, validateNetworkConfig };
3042
- //# sourceMappingURL=index-CReB2knw.d.cts.map
3072
+ export { AccessControlCapabilities, AccessControlError, AccessControlService, AccessSnapshot, AdapterConfig, AdapterExportBootstrap, AdapterExportContext, AdminInfo, AdminState, AppRuntimeConfig, AvailableUiKit, BaseComponentProps, BaseNetworkConfig, BuilderFormConfigLike, CommonFormProperties, ComponentExclusionConfig, ConfigurationInvalid, Connector, ContractAdapter, ContractDefinitionComparisonResult, ContractDefinitionDifference, ContractDefinitionMetadata, ContractDefinitionValidationResult, ContractEvent, ContractFunction, ContractSchema, ContractStateCapabilities, DynamicTypePattern, ECOSYSTEM_WALLET_COMPONENT_KEYS, Ecosystem, EcosystemDefinition, EcosystemFeatureConfig, EcosystemInfo, EcosystemReactUiProviderProps, EcosystemSpecificReactHooks, EcosystemWalletComponentKey, EcosystemWalletComponents, EnrichedRoleAssignment, EnrichedRoleMember, EnumValue, EoaExecutionConfig, EvmNetworkConfig, ExecutionConfig, ExecutionMethodDetail, ExecutionMethodType, ExplorerApiConfig, FeatureFlags, FieldCondition, FieldTransforms, FieldType, FieldValidation, FieldValue, FormError, FormFieldType, FormLayout, FormValues, FullContractAdapter, FunctionBadge, FunctionBadgeVariant, FunctionDecoration, FunctionDecorationsMap, FunctionParameter, GlobalServiceConfigs, HistoryChangeType, HistoryEntry, HistoryQueryOptions, IndexerEndpointConfig, IndexerUnavailable, MapEntry, MidnightNetworkConfig, MultisigExecutionConfig, NativeConfigLoader, NetworkConfig, NetworkServiceConfigs, NetworkServiceForm, NetworkSpecificIndexerEndpoints, NetworkSpecificRpcEndpoints, NetworkType, OperationFailed, OperationResult, OwnershipInfo, OwnershipState, PageInfo, PaginatedHistoryResult, PendingAdminTransfer, PendingOwnershipTransfer, PermissionDenied, PolkadotExecutionType, PolkadotNetworkCategory, PolkadotNetworkConfig, PolkadotRelayChain, ProxyInfo, RelayerDetails, RelayerDetailsRich, RelayerExecutionConfig, RenderFormSchema, RoleAssignment, RoleIdentifier, RpcEndpointConfig, RuntimeSecretPropertyInput, ServiceParameterConfig, SolanaNetworkConfig, StellarNetworkConfig, SubmitButtonConfig, TransactionFormProps, TransactionStatusUpdate, TxStatus, TypeMappingInfo, UiKitConfiguration, UiKitName, UnsupportedContractFeatures, UserExplorerConfig, UserRpcProviderConfig, ViteConfigInfo, WalletComponentSize, WalletComponentVariant, WalletConnectionStatus, isEnumValue, isEvmEcosystem, isEvmNetworkConfig, isMapEntry, isMapEntryArray, isMidnightEcosystem, isMidnightNetworkConfig, isPolkadotEcosystem, isPolkadotNetworkConfig, isSolanaEcosystem, isSolanaNetworkConfig, isStellarEcosystem, isStellarNetworkConfig, validateNetworkConfig };
3073
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/config/app-config.ts","../src/contracts/proxy.ts","../src/common/ecosystem.ts","../src/contracts/schema.ts","../src/contracts/storage.ts","../src/execution/eoa.ts","../src/execution/multisig.ts","../src/execution/relayer.ts","../src/execution/index.ts","../src/common/enum.ts","../src/common/map.ts","../src/forms/validation.ts","../src/forms/form-field.ts","../src/forms/layout.ts","../src/forms/schema.ts","../src/forms/fields.ts","../src/networks/config.ts","../src/networks/validation.ts","../src/transactions/status.ts","../src/adapters/access-control.ts","../src/adapters/export.ts","../src/adapters/ui-enhancements.ts","../src/adapters/base.ts","../src/adapters/contract-state.ts","../src/adapters/config.ts","../src/adapters/access-control-errors.ts","../src/adapters/index.ts"],"sourcesContent":[],"mappings":"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"}