UNPKG

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

Version:
123 lines (114 loc) 5.4 kB
import { WalletConnectionStatus, ContractAdapter, SolanaNetworkConfig, UiKitConfiguration, ContractSchema, FieldType, FunctionParameter, FormFieldType, ExecutionConfig, ExecutionMethodDetail, ContractFunction, Connector, AvailableUiKit, RelayerDetails, RelayerDetailsRich, UserRpcProviderConfig } from '@openzeppelin/contracts-ui-builder-types'; /** * Solana-specific wallet connection status extending the base interface. * Currently doesn't add Solana-specific fields but maintains consistency with other adapters. * This can be extended to an interface when Solana wallet features are implemented. */ type SolanaWalletConnectionStatus = WalletConnectionStatus; /** * Solana-specific adapter implementation */ declare class SolanaAdapter implements ContractAdapter { readonly networkConfig: SolanaNetworkConfig; readonly initialAppServiceKitName: UiKitConfiguration['kitName']; constructor(networkConfig: SolanaNetworkConfig); loadContract(source: string | Record<string, unknown>): Promise<ContractSchema>; getWritableFunctions(contractSchema: ContractSchema): ContractSchema['functions']; mapParameterTypeToFieldType(parameterType: string): FieldType; getCompatibleFieldTypes(parameterType: string): FieldType[]; generateDefaultField<T extends FieldType = FieldType>(parameter: FunctionParameter): FormFieldType<T>; formatTransactionData(contractSchema: ContractSchema, functionId: string, submittedInputs: Record<string, unknown>, fields: FormFieldType[]): unknown; signAndBroadcast(transactionData: unknown, executionConfig?: ExecutionConfig): Promise<{ txHash: string; }>; isValidAddress(address: string): boolean; getSupportedExecutionMethods(): Promise<ExecutionMethodDetail[]>; validateExecutionConfig(config: ExecutionConfig): Promise<true | string>; isViewFunction(functionDetails: ContractFunction): boolean; queryViewFunction(contractAddress: string, functionId: string, params?: unknown[], contractSchema?: ContractSchema): Promise<unknown>; formatFunctionResult(decodedValue: unknown, functionDetails: ContractFunction): string; supportsWalletConnection(): boolean; getAvailableConnectors(): Promise<Connector[]>; connectWallet(connectorId: string): Promise<{ connected: boolean; address?: string; error?: string; }>; disconnectWallet(): Promise<{ disconnected: boolean; error?: string; }>; getWalletConnectionStatus(): SolanaWalletConnectionStatus; onWalletConnectionChange?(callback: (currentStatus: WalletConnectionStatus, previousStatus: WalletConnectionStatus) => void): () => void; getExplorerUrl(address: string): string | null; getExplorerTxUrl?(txHash: string): string | null; waitForTransactionConfirmation?(txHash: string): Promise<{ status: 'success' | 'error'; receipt?: unknown; error?: Error; }>; getAvailableUiKits(): Promise<AvailableUiKit[]>; getContractDefinitionInputs(): FormFieldType[]; getRelayers(_serviceUrl: string, _accessToken: string): Promise<RelayerDetails[]>; getRelayer(_serviceUrl: string, _accessToken: string, _relayerId: string): Promise<RelayerDetailsRich>; /** * @inheritdoc */ validateRpcEndpoint(rpcConfig: UserRpcProviderConfig): Promise<boolean>; /** * @inheritdoc */ testRpcConnection(rpcConfig: UserRpcProviderConfig): Promise<{ success: boolean; latency?: number; error?: string; }>; } /** * Solana-specific contract artifacts interface * Defines the structure of data needed to load Solana programs */ interface SolanaContractArtifacts { /** The program ID (required) */ contractAddress: string; /** Optional IDL JSON for program interface */ idl?: string; } /** * Type guard to check if an object matches SolanaContractArtifacts structure */ declare function isSolanaContractArtifacts(obj: unknown): obj is SolanaContractArtifacts; declare const solanaMainnetBeta: SolanaNetworkConfig; declare const solanaDevnet: SolanaNetworkConfig; declare const solanaTestnet: SolanaNetworkConfig; declare const solanaMainnetNetworks: SolanaNetworkConfig[]; declare const solanaTestnetNetworks: SolanaNetworkConfig[]; declare const solanaNetworks: SolanaNetworkConfig[]; /** * Configuration for the Solana adapter * * This file defines the dependencies required by the Solana adapter * when generating exported projects. It follows the AdapterConfig * interface to provide a structured approach to dependency management. */ declare const solanaAdapterConfig: { /** * Dependencies required by the Solana adapter * These will be included in exported projects that use this adapter */ dependencies: { runtime: { '@solana/web3.js': string; '@solana/spl-token': string; '@solana/wallet-adapter-react': string; '@solana/wallet-adapter-base': string; bs58: string; '@project-serum/anchor': string; }; dev: { '@solana/spl-token-registry': string; '@solana/cli': string; }; }; }; export { SolanaAdapter, type SolanaContractArtifacts, isSolanaContractArtifacts, solanaAdapterConfig, solanaDevnet, solanaMainnetBeta, solanaMainnetNetworks, solanaNetworks, solanaTestnet, solanaTestnetNetworks };