import * as _solana_kit_plugin_rpc from '@solana/kit-plugin-rpc'; import * as _solana_kit from '@solana/kit'; import { Commitment, Slot, TransactionSigner, Address, ReadonlyUint8Array, Signature } from '@solana/kit'; /** * Solana cluster names. `mainnet` is Solana's official mainnet cluster name. * The legacy `mainnet-beta` spelling is still accepted and redirects to the * same mainnet endpoint. */ type SolanaCluster = "mainnet" | "mainnet-beta" | "testnet" | "devnet" | "localnet"; type SolanaChain = "solana:mainnet" | "solana:testnet" | "solana:devnet" | "solana:localnet"; interface SolanaConfig { cluster?: SolanaCluster; endpoint?: string; wsEndpoint?: string; commitment?: Commitment; autoConnect?: boolean; /** * Kit client signer used to pay fees and sign client-sent transactions * (e.g. `useSendTransaction()`). Install one for demo/relayer flows; never * ship a funded keypair to end-user browsers. */ payer?: TransactionSigner; /** * Serializable variant of `payer`: a 64-byte Ed25519 keypair encoded as * base64 (secret key first). Resolved to a Kit `TransactionSigner` when the * client is created. Direct Vue/core demos only; Nuxt does not forward this * value through public runtime config. Dev/demos only; never ship a funded * secret to production browsers. */ payerSecretKey?: string; } interface SolanaContext { cluster: SolanaCluster; endpoint: string; wsEndpoint: string; client: SolanaClient; } /** * Raw serialized wire bytes. Widened to Kit's `ReadonlyUint8Array` because * that is what `getTransactionEncoder().encode()` returns — typing it as * `Uint8Array` rejected the output of the encoder the docs tell you to use. */ type SolanaTransaction = ReadonlyUint8Array; interface SolanaSignMessageResult { signedMessage: Uint8Array; signature: Uint8Array; } interface SolanaSignInAccount { address: Address; publicKey: Uint8Array; chains: string[]; label?: string; icon?: string; } interface SolanaSignInResult { account: SolanaSignInAccount; signedMessage: Uint8Array; signature: Uint8Array; signatureType?: "ed25519"; } interface SolanaSignInInput { domain?: string; address?: string; statement?: string; uri?: string; version?: string; chainId?: string; nonce?: string; issuedAt?: string; expirationTime?: string; notBefore?: string; requestId?: string; resources?: readonly string[]; } interface SolanaWallet { publicKey: Address | null; connected: boolean; connecting?: boolean; disconnecting?: boolean; platform?: SolanaWalletInfo["platform"]; source?: SolanaWalletInfo["source"]; connect: () => Promise; disconnect: () => Promise; signMessage?: (message: Uint8Array) => Promise; signIn?: (input?: SolanaSignInInput) => Promise; signTransaction?: (transaction: SolanaTransaction) => Promise; signAllTransactions?: (transactions: SolanaTransaction[]) => Promise; signTransactions?: (transactions: SolanaTransaction[]) => Promise; signAndSendTransaction?: (transaction: SolanaTransaction, options?: SendTransactionOptions) => Promise<{ signature: string; }>; signAndSendTransactions?: (transactions: SolanaTransaction[], options?: SendTransactionOptions) => Promise; } interface SolanaWalletInfo { name: string; icon: string; chains: readonly string[]; platform?: "browser" | "mobile" | "desktop"; source?: "wallet-standard" | "mobile-wallet-adapter" | "deep-link" | "protocol-link"; appUrl?: string; installUrl?: string; callbackUrl?: string; capabilities?: { connect?: boolean; disconnect?: boolean; signIn?: boolean; signMessage?: boolean; signTransaction?: boolean; signAllTransactions?: boolean; signAndSendTransaction?: boolean; }; accounts: readonly { address: string; publicKey: Uint8Array; chains: readonly string[]; label?: string; icon?: string; }[]; wallet: unknown; } interface SendTransactionOptions { skipPreflight?: boolean; maxRetries?: bigint; minContextSlot?: Slot; preflightCommitment?: Commitment; } interface ConfirmTransactionOptions { commitment?: Commitment; timeoutMs?: number; } interface TransactionStatus { slot: Slot; confirmations: bigint | null; err: unknown | null; confirmationStatus: Commitment | null; } interface TransactionConfirmation { signature: Signature; commitment: Commitment; status: TransactionStatus; } declare function buildSolanaClient(endpoint: string, wsEndpoint: string, payer: TransactionSigner | undefined): _solana_kit.Client<{ signTransactions: (input: _solana_kit.InstructionPlanInput | _solana_kit.TransactionPlanInput, config?: { abortSignal?: AbortSignal; }) => Promise<_solana_kit.TransactionPlanResult<_solana_kit_plugin_rpc.RpcSignContext>>; payer: TransactionSigner; rpc: _solana_kit.Rpc<_solana_kit.RequestAirdropApi & _solana_kit.GetAccountInfoApi & _solana_kit.GetAgGenesisCertApi & _solana_kit.GetBalanceApi & _solana_kit.GetBlockApi & _solana_kit.GetBlockCommitmentApi & _solana_kit.GetBlockHeightApi & _solana_kit.GetBlockProductionApi & _solana_kit.GetBlocksApi & _solana_kit.GetBlocksWithLimitApi & _solana_kit.GetBlockTimeApi & _solana_kit.GetClusterNodesApi & _solana_kit.GetEpochInfoApi & _solana_kit.GetEpochScheduleApi & _solana_kit.GetFeeForMessageApi & _solana_kit.GetFirstAvailableBlockApi & _solana_kit.GetGenesisHashApi & _solana_kit.GetHealthApi & _solana_kit.GetHighestSnapshotSlotApi & _solana_kit.GetIdentityApi & _solana_kit.GetInflationGovernorApi & _solana_kit.GetInflationRateApi & _solana_kit.GetInflationRewardApi & _solana_kit.GetLargestAccountsApi & _solana_kit.GetLatestBlockhashApi & _solana_kit.GetLeaderScheduleApi & _solana_kit.GetMaxRetransmitSlotApi & _solana_kit.GetMaxShredInsertSlotApi & _solana_kit.GetMinimumBalanceForRentExemptionApi & _solana_kit.GetMultipleAccountsApi & _solana_kit.GetProgramAccountsApi & _solana_kit.GetRecentPerformanceSamplesApi & _solana_kit.GetRecentPrioritizationFeesApi & _solana_kit.GetSignaturesForAddressApi & _solana_kit.GetSignatureStatusesApi & _solana_kit.GetSlotApi & _solana_kit.GetSlotLeaderApi & _solana_kit.GetSlotLeadersApi & _solana_kit.GetStakeMinimumDelegationApi & _solana_kit.GetSupplyApi & _solana_kit.GetTokenAccountBalanceApi & _solana_kit.GetTokenAccountsByDelegateApi & _solana_kit.GetTokenAccountsByOwnerApi & _solana_kit.GetTokenLargestAccountsApi & _solana_kit.GetTokenSupplyApi & _solana_kit.GetTransactionApi & _solana_kit.GetTransactionCountApi & _solana_kit.GetTransactionsForAddressApi & _solana_kit.GetVersionApi & _solana_kit.GetVoteAccountsApi & _solana_kit.IsBlockhashValidApi & _solana_kit.MinimumLedgerSlotApi & _solana_kit.SendTransactionApi & _solana_kit.SimulateTransactionApi>; rpcSubscriptions: _solana_kit.RpcSubscriptions<_solana_kit.SolanaRpcSubscriptionsApi>; getMinimumBalance: (space: number, config?: _solana_kit.GetMinimumBalanceConfig) => Promise<_solana_kit.Lamports>; transactionPlanner: _solana_kit.TransactionPlanner; planTransaction: (input: _solana_kit.InstructionPlanInput, config?: { abortSignal?: AbortSignal; }) => Promise<_solana_kit.SingleTransactionPlan["message"]>; planTransactions: (input: _solana_kit.InstructionPlanInput, config?: { abortSignal?: AbortSignal; }) => Promise<_solana_kit.TransactionPlan>; signTransaction: (input: _solana_kit.InstructionPlanInput | (_solana_kit.TransactionMessage & _solana_kit.TransactionMessageWithFeePayer) | Readonly<{ kind: "single"; message: _solana_kit.TransactionMessage & _solana_kit.TransactionMessageWithFeePayer; planType: "transactionPlan"; }>, config?: { abortSignal?: AbortSignal; }) => Promise<_solana_kit.SuccessfulSingleTransactionPlanResult<_solana_kit_plugin_rpc.RpcSignContext>>; transactionPlanExecutor: _solana_kit.TransactionPlanExecutor<_solana_kit_plugin_rpc.RpcSendContext>; sendTransaction: (input: _solana_kit.InstructionPlanInput | (_solana_kit.TransactionMessage & _solana_kit.TransactionMessageWithFeePayer) | Readonly<{ kind: "single"; message: _solana_kit.TransactionMessage & _solana_kit.TransactionMessageWithFeePayer; planType: "transactionPlan"; }>, config?: { abortSignal?: AbortSignal; }) => Promise<_solana_kit.SuccessfulSingleTransactionPlanResult<_solana_kit_plugin_rpc.RpcSendContext>>; sendTransactions: (input: _solana_kit.InstructionPlanInput | _solana_kit.TransactionPlanInput, config?: { abortSignal?: AbortSignal; }) => Promise<_solana_kit.TransactionPlanResult<_solana_kit_plugin_rpc.RpcSendContext>>; airdrop: (address: Address, amount: _solana_kit.Lamports, abortSignal?: AbortSignal) => Promise<_solana_kit.Signature | undefined>; }>; type SolanaClientWithPayer = ReturnType; type SolanaClientWithOptionalPayer = Omit & { payer?: TransactionSigner; }; type SolanaConfigWithPayer = SolanaConfig & ({ payer: TransactionSigner; } | { payerSecretKey: string; }); declare function createSolanaClient(config: SolanaConfigWithPayer): SolanaClientWithPayer; declare function createSolanaClient(config?: SolanaConfig): SolanaClientWithOptionalPayer; type SolanaClient = SolanaClientWithOptionalPayer; export { createSolanaClient as n }; export type { ConfirmTransactionOptions as C, SendTransactionOptions as S, TransactionConfirmation as T, SolanaChain as a, SolanaClient as b, SolanaCluster as c, SolanaConfig as d, SolanaContext as e, SolanaSignInAccount as f, SolanaSignInInput as g, SolanaSignInResult as h, SolanaSignMessageResult as i, SolanaTransaction as j, SolanaWallet as k, SolanaWalletInfo as l, TransactionStatus as m };