@openzeppelin/contracts-ui-builder-adapter-solana
Version:
Solana Adapter for Contracts UI Builder
75 lines (58 loc) • 3.73 kB
Markdown
# Solana Adapter (`@openzeppelin/contracts-ui-builder-adapter-solana`)
This package provides the `ContractAdapter` implementation for the Solana blockchain for the Contracts UI Builder.
**Note:** While the basic structure is in place, including network configuration definitions, the core adapter logic for Solana-specific operations is currently a placeholder and will be implemented in future development phases.
It is intended to be responsible for:
- Implementing the `ContractAdapter` interface from `@openzeppelin/contracts-ui-builder-types`.
- Defining and exporting specific Solana network configurations (e.g., Mainnet Beta, Devnet, Testnet) as `SolanaNetworkConfig` objects. These are located in `src/networks/` and include details like RPC endpoints, cluster information, explorer URLs, and commitment levels.
- Loading Solana program IDLs (Instruction Description Language).
- Mapping Solana-specific data types to the form field types.
- Parsing user input into Solana-compatible transaction instructions, according to the `SolanaNetworkConfig`.
- Formatting results from on-chain program queries.
- Interacting with Solana wallets (e.g., via `@solana/wallet-adapter-base`) for signing and sending transactions on the configured network.
- Providing other Solana-specific configurations and validation.
## Usage
Once fully implemented, the `SolanaAdapter` class will be instantiated with a specific `SolanaNetworkConfig` object:
```typescript
// Example: import { solanaMainnetBeta } from '@openzeppelin/contracts-ui-builder-adapter-solana';
import { SolanaAdapter } from '@openzeppelin/contracts-ui-builder-adapter-solana';
import { SolanaNetworkConfig } from '@openzeppelin/contracts-ui-builder-types';
// For type access if needed
// Placeholder: Actual network config objects would be imported from './networks'
const placeholderNetworkConfig: SolanaNetworkConfig = {
id: 'solana-devnet',
name: 'Solana Devnet',
ecosystem: 'solana',
network: 'solana',
type: 'devnet',
isTestnet: true,
rpcEndpoint: 'https://api.devnet.solana.com',
explorerUrl: 'https://explorer.solana.com/?cluster=devnet',
commitment: 'confirmed',
// ... any other SolanaNetworkConfig fields
};
const solanaAdapter = new SolanaAdapter(placeholderNetworkConfig);
// Use solanaAdapter for operations on the configured Solana network
```
Network configurations for Solana networks (e.g., `solanaMainnetBeta`, `solanaDevnet`) are defined and exported from `src/networks/index.ts` within this package. The full list is exported as `solanaNetworks`.
## Package Structure
```text
adapter-solana/
├── src/
│ ├── config/ # Adapter-specific configuration
│ ├── idl/ # IDL (Interface Description Language) utilities
│ ├── mapping/ # Type mapping utilities
│ ├── networks/ # Solana network configurations
│ ├── program/ # Program interaction utilities
│ ├── transaction/ # Transaction execution system
│ ├── validation/ # Validation utilities
│ ├── wallet/ # Wallet integration (placeholder)
│ ├── adapter.ts # Main SolanaAdapter class implementation
│ └── index.ts # Public package exports
├── package.json
├── tsconfig.json
├── tsup.config.ts
├── vitest.config.ts
└── README.md
```
## Internal Structure
This adapter follows the standard module structure outlined in the main project [Adapter Architecture Guide](../../docs/ADAPTER_ARCHITECTURE.md), with the `src/networks/` directory for managing its network configurations.