@robertprp/intents-sdk
Version:
Shogun Network Intent-based cross-chain swaps SDK
38 lines (33 loc) • 1.13 kB
text/typescript
import {
createSolanaRpc,
createSolanaRpcSubscriptions,
type Rpc,
type RpcSubscriptions,
type SolanaRpcApiMainnet,
type SolanaRpcSubscriptionsApi,
sendAndConfirmTransactionFactory,
} from '@solana/kit';
import type { SolanaConfig } from '../../config.js';
export type SolanaClient = {
privateKey: string;
rpc: Rpc<SolanaRpcApiMainnet>;
rpcSubscriptions: RpcSubscriptions<SolanaRpcSubscriptionsApi>;
sendAndConfirmTransaction: ReturnType<typeof sendAndConfirmTransactionFactory>;
};
export function createSolanaClient(config: SolanaConfig): SolanaClient {
const rpc = config.rpcProviderUrl ? createSolanaRpc(config.rpcProviderUrl) : getDefaultSolanaRPC();
const rpcSubscriptions = createSolanaRpcSubscriptions('wss://api.mainnet-beta.solana.com');
const sendAndConfirmTransaction = sendAndConfirmTransactionFactory({
rpc,
rpcSubscriptions,
});
return {
privateKey: config.privateKey,
rpc,
rpcSubscriptions,
sendAndConfirmTransaction,
};
}
export function getDefaultSolanaRPC(): Rpc<SolanaRpcApiMainnet> {
return createSolanaRpc('https://api.mainnet-beta.solana.com');
}