# atomiq-chain-solana/src

# @atomiqlabs/chain-solana

`@atomiqlabs/chain-solana` is the Solana integration package for the Atomiq protocol.

Within the Atomiq stack, this library provides the Solana-side building blocks used for Bitcoin-aware swaps on Solana. It includes:

* the `SolanaInitializer` used to register Solana support in the Atomiq SDK
* the `SolanaChainInterface` used to talk to Solana RPCs
* Solana BTC relay and swap program wrappers
* signer and wallet helpers for Solana integrations
* connection retry and chain event utilities

This package is intended for direct protocol integrations and for higher-level Atomiq SDK layers that need Solana chain support.

## Installation

Install the package with its `@solana/web3.js` peer dependency:

```
npm install @atomiqlabs/chain-solana @solana/web3.js
```

## Supported Chains

This package exports a single Solana initializer:

* Solana via `SolanaInitializer`

Canonical deployments currently defined in this package:

| Chain  | Canonical deployments included |
| ------ | ------------------------------ |
| Solana | `MAINNET`, `TESTNET`           |

In this package, the selected Bitcoin network determines which canonical Solana program addresses are used by default. `BitcoinNetwork.TESTNET4` is not wired to a Solana deployment here yet.

The Solana implementation doesn't support the UTXO-controlled vault (SPV vault) contract, hence it can only process legacy HTLC & PrTLC based swaps.

## SDK Example

Initialize the Atomiq SDK with Solana network support:

```
import {SolanaInitializer} from "@atomiqlabs/chain-solana";

import {BitcoinNetwork, SwapperFactory, TypedSwapper} from "@atomiqlabs/sdk";



// Define chains that you want to support here

const chains = [SolanaInitializer] as const;

type SupportedChains = typeof chains;



const Factory = new SwapperFactory<SupportedChains>(chains);



const swapper: TypedSwapper<SupportedChains> = Factory.newSwapper({

  chains: {

    SOLANA: {

      rpcUrl: solanaRpc // You can also pass a web3.js Connection object here

    }

  },

  bitcoinNetwork: BitcoinNetwork.MAINNET // or BitcoinNetwork.TESTNET

});
```

If you use the lower-level initializer directly, you can also provide a custom storage backend for temporary Solana data accounts used when submitting large Bitcoin proof payloads.

## BTC Relay

* [SolanaBtcHeader](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/classes/SolanaBtcHeader.md)
* [SolanaBtcRelay](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/classes/SolanaBtcRelay.md)
* [SolanaBtcStoredHeader](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/classes/SolanaBtcStoredHeader.md)

## Chain Interface

* [FeeBribeData](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/type-aliases/FeeBribeData.md)
* [initializeSolana](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/functions/initializeSolana.md)
* [SignedSolanaTx](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/type-aliases/SignedSolanaTx.md)
* [SolanaAssetsType](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/type-aliases/SolanaAssetsType.md)
* [SolanaChainInterface](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/classes/SolanaChainInterface.md)
* [SolanaChainType](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/type-aliases/SolanaChainType.md)
* [SolanaFees](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/classes/SolanaFees.md)
* [SolanaInitializer](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/variables/SolanaInitializer.md)
* [SolanaInitializerType](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/type-aliases/SolanaInitializerType.md)
* [SolanaRetryPolicy](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/type-aliases/SolanaRetryPolicy.md)
* [SolanaSwapperOptions](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/type-aliases/SolanaSwapperOptions.md)
* [SolanaTx](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/type-aliases/SolanaTx.md)

## Events

* [SolanaChainEventsBrowser](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/classes/SolanaChainEventsBrowser.md)
* [SolanaEventListenerState](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/type-aliases/SolanaEventListenerState.md)

## Providers

* [ConnectionWithRetries](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/classes/ConnectionWithRetries.md)

## Swaps

* [SolanaSwapData](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/classes/SolanaSwapData.md)
* [SolanaSwapProgram](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/classes/SolanaSwapProgram.md)

## Wallets

* [SolanaKeypairWallet](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/classes/SolanaKeypairWallet.md)
* [SolanaSigner](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-solana/src/classes/SolanaSigner.md)
