npm package: @openzeppelin/adapter-solana
Description: Solana Adapter for UI Builder
Author: Aleksandr Pasevin
Latest version: 2.0.0

# Solana Adapter (`@openzeppelin/adapter-solana`)

This package provides the `ContractAdapter` implementation for the Solana blockchain for the 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/ui-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/adapter-solana';
import { SolanaAdapter } from '@openzeppelin/adapter-solana';
import { SolanaNetworkConfig } from '@openzeppelin/ui-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.