UNPKG

@solana/pay

Version:

`@solana/pay` is a JavaScript library for facilitating commerce on Solana by using a token transfer URL scheme. The URL scheme ensures that no matter the wallet or service used, the payment request must be created and interpreted in one standard way.

105 lines • 12.6 kB
import { type DefaultRpcSubscriptionsChannelConfig, type TransactionSigner } from '@solana/kit'; /** Configuration for {@link createMerchantClient}. */ export interface MerchantClientConfig { /** Solana RPC URL (e.g. 'https://api.mainnet-beta.solana.com'). */ rpcUrl: string; /** Optional RPC subscriptions config (e.g. custom WebSocket URL for localhost). */ rpcSubscriptionsConfig?: DefaultRpcSubscriptionsChannelConfig<string>; } /** The type returned by {@link createMerchantClient}. */ export type MerchantClient = ReturnType<typeof createMerchantClient>; /** * Creates a merchant-side Solana Pay client with RPC and the merchant plugin. * No payer required — merchants only encode URLs, generate QR codes, and * read from the network to find/validate payments. * * @example * ```ts * const merchant = createMerchantClient({ * rpcUrl: 'https://api.mainnet-beta.solana.com', * }); * * const url = merchant.pay.encodeURL({ recipient, amount: 1.5 }); * const found = await merchant.pay.findReference(reference); * await merchant.pay.validateTransfer(found.signature, { recipient, amount: 1.5 }); * ``` */ export declare function createMerchantClient(config: MerchantClientConfig): import("@solana/kit").Client<import("./plugins/merchant.js").SolanaPayMerchantMethods & Omit<object, "rpc" | "rpcSubscriptions"> & { rpc: import("@solana/kit").Rpc<import("@solana/kit").RequestAirdropApi & import("@solana/kit").GetAccountInfoApi & import("@solana/kit").GetBalanceApi & import("@solana/kit").GetBlockApi & import("@solana/kit").GetBlockCommitmentApi & import("@solana/kit").GetBlockHeightApi & import("@solana/kit").GetBlockProductionApi & import("@solana/kit").GetBlocksApi & import("@solana/kit").GetBlocksWithLimitApi & import("@solana/kit").GetBlockTimeApi & import("@solana/kit").GetClusterNodesApi & import("@solana/kit").GetEpochInfoApi & import("@solana/kit").GetEpochScheduleApi & import("@solana/kit").GetFeeForMessageApi & import("@solana/kit").GetFirstAvailableBlockApi & import("@solana/kit").GetGenesisHashApi & import("@solana/kit").GetHealthApi & import("@solana/kit").GetHighestSnapshotSlotApi & import("@solana/kit").GetIdentityApi & import("@solana/kit").GetInflationGovernorApi & import("@solana/kit").GetInflationRateApi & import("@solana/kit").GetInflationRewardApi & import("@solana/kit").GetLargestAccountsApi & import("@solana/kit").GetLatestBlockhashApi & import("@solana/kit").GetLeaderScheduleApi & import("@solana/kit").GetMaxRetransmitSlotApi & import("@solana/kit").GetMaxShredInsertSlotApi & import("@solana/kit").GetMinimumBalanceForRentExemptionApi & import("@solana/kit").GetMultipleAccountsApi & import("@solana/kit").GetProgramAccountsApi & import("@solana/kit").GetRecentPerformanceSamplesApi & import("@solana/kit").GetRecentPrioritizationFeesApi & import("@solana/kit").GetSignaturesForAddressApi & import("@solana/kit").GetSignatureStatusesApi & import("@solana/kit").GetSlotApi & import("@solana/kit").GetSlotLeaderApi & import("@solana/kit").GetSlotLeadersApi & import("@solana/kit").GetStakeMinimumDelegationApi & import("@solana/kit").GetSupplyApi & import("@solana/kit").GetTokenAccountBalanceApi & import("@solana/kit").GetTokenAccountsByDelegateApi & import("@solana/kit").GetTokenAccountsByOwnerApi & import("@solana/kit").GetTokenLargestAccountsApi & import("@solana/kit").GetTokenSupplyApi & import("@solana/kit").GetTransactionApi & import("@solana/kit").GetTransactionCountApi & import("@solana/kit").GetVersionApi & import("@solana/kit").GetVoteAccountsApi & import("@solana/kit").IsBlockhashValidApi & import("@solana/kit").MinimumLedgerSlotApi & import("@solana/kit").SendTransactionApi & import("@solana/kit").SimulateTransactionApi>; rpcSubscriptions: import("@solana/kit").RpcSubscriptions<import("@solana/rpc-subscriptions-api").SolanaRpcSubscriptionsApi>; }>; /** Configuration for {@link createWalletClient}. */ export interface WalletClientConfig { /** Solana RPC URL (e.g. 'https://api.mainnet-beta.solana.com'). */ rpcUrl: string; /** Wallet signer that will be used as the default sender / fee payer. */ payer: TransactionSigner; /** Optional RPC subscriptions config (e.g. custom WebSocket URL for localhost). */ rpcSubscriptionsConfig?: DefaultRpcSubscriptionsChannelConfig<string>; } /** The type returned by {@link createWalletClient}. */ export type WalletClient = ReturnType<typeof createWalletClient>; /** * Creates a wallet-side Solana Pay client with RPC, payer, transaction * planner/executor, and the wallet plugin. Handles URL parsing, transfer * instruction creation, and transaction sending. * * @example * ```ts * const wallet = createWalletClient({ * rpcUrl: 'https://api.mainnet-beta.solana.com', * payer: myWalletSigner, * }); * * const parsed = wallet.pay.parseURL(url); * const instructions = await wallet.pay.createTransfer({ recipient, amount: 1.5 }); * await wallet.sendTransaction(instructions); * ``` */ export declare function createWalletClient(config: WalletClientConfig): import("@solana/kit").Client<import("./plugins/wallet.js").SolanaPayWalletMethods & Omit<Omit<Omit<Omit<Omit<object, "rpc" | "rpcSubscriptions"> & { rpc: import("@solana/kit").Rpc<import("@solana/kit").RequestAirdropApi & import("@solana/kit").GetAccountInfoApi & import("@solana/kit").GetBalanceApi & import("@solana/kit").GetBlockApi & import("@solana/kit").GetBlockCommitmentApi & import("@solana/kit").GetBlockHeightApi & import("@solana/kit").GetBlockProductionApi & import("@solana/kit").GetBlocksApi & import("@solana/kit").GetBlocksWithLimitApi & import("@solana/kit").GetBlockTimeApi & import("@solana/kit").GetClusterNodesApi & import("@solana/kit").GetEpochInfoApi & import("@solana/kit").GetEpochScheduleApi & import("@solana/kit").GetFeeForMessageApi & import("@solana/kit").GetFirstAvailableBlockApi & import("@solana/kit").GetGenesisHashApi & import("@solana/kit").GetHealthApi & import("@solana/kit").GetHighestSnapshotSlotApi & import("@solana/kit").GetIdentityApi & import("@solana/kit").GetInflationGovernorApi & import("@solana/kit").GetInflationRateApi & import("@solana/kit").GetInflationRewardApi & import("@solana/kit").GetLargestAccountsApi & import("@solana/kit").GetLatestBlockhashApi & import("@solana/kit").GetLeaderScheduleApi & import("@solana/kit").GetMaxRetransmitSlotApi & import("@solana/kit").GetMaxShredInsertSlotApi & import("@solana/kit").GetMinimumBalanceForRentExemptionApi & import("@solana/kit").GetMultipleAccountsApi & import("@solana/kit").GetProgramAccountsApi & import("@solana/kit").GetRecentPerformanceSamplesApi & import("@solana/kit").GetRecentPrioritizationFeesApi & import("@solana/kit").GetSignaturesForAddressApi & import("@solana/kit").GetSignatureStatusesApi & import("@solana/kit").GetSlotApi & import("@solana/kit").GetSlotLeaderApi & import("@solana/kit").GetSlotLeadersApi & import("@solana/kit").GetStakeMinimumDelegationApi & import("@solana/kit").GetSupplyApi & import("@solana/kit").GetTokenAccountBalanceApi & import("@solana/kit").GetTokenAccountsByDelegateApi & import("@solana/kit").GetTokenAccountsByOwnerApi & import("@solana/kit").GetTokenLargestAccountsApi & import("@solana/kit").GetTokenSupplyApi & import("@solana/kit").GetTransactionApi & import("@solana/kit").GetTransactionCountApi & import("@solana/kit").GetVersionApi & import("@solana/kit").GetVoteAccountsApi & import("@solana/kit").IsBlockhashValidApi & import("@solana/kit").MinimumLedgerSlotApi & import("@solana/kit").SendTransactionApi & import("@solana/kit").SimulateTransactionApi>; rpcSubscriptions: import("@solana/kit").RpcSubscriptions<import("@solana/rpc-subscriptions-api").SolanaRpcSubscriptionsApi>; }, "payer"> & { payer: TransactionSigner; }, "transactionPlanner"> & { transactionPlanner: import("@solana/kit").TransactionPlanner; }, "transactionPlanExecutor"> & { transactionPlanExecutor: import("@solana/kit").TransactionPlanExecutor<import("@solana/kit").TransactionPlanResultContext>; }, keyof import("@solana/kit").ClientWithTransactionPlanning | keyof import("@solana/kit").ClientWithTransactionSending> & import("@solana/kit").ClientWithTransactionPlanning & import("@solana/kit").ClientWithTransactionSending>; /** Configuration for {@link createSolanaPayClient}. */ export interface SolanaPayClientConfig { /** Solana RPC URL (e.g. 'https://api.mainnet-beta.solana.com'). */ rpcUrl: string; /** Wallet signer that will be used as the default sender / fee payer. */ payer: TransactionSigner; /** Optional RPC subscriptions config (e.g. custom WebSocket URL for localhost). */ rpcSubscriptionsConfig?: DefaultRpcSubscriptionsChannelConfig<string>; } /** The type returned by {@link createSolanaPayClient}. */ export type SolanaPayClient = ReturnType<typeof createSolanaPayClient>; /** * Creates a combined Solana Pay client with all merchant + wallet methods. * * @example * ```ts * const client = createSolanaPayClient({ * rpcUrl: 'https://api.mainnet-beta.solana.com', * payer: myWalletSigner, * }); * * const url = client.pay.encodeURL({ recipient, amount: 1.5 }); * const parsed = client.pay.parseURL(url); * const instructions = await client.pay.createTransfer({ recipient, amount: 1.5 }); * ``` */ export declare function createSolanaPayClient(config: SolanaPayClientConfig): import("@solana/kit").Client<import("./plugins/wallet.js").SolanaPayWalletMethods & import("./plugins/merchant.js").SolanaPayMerchantMethods & Omit<Omit<Omit<Omit<Omit<object, "rpc" | "rpcSubscriptions"> & { rpc: import("@solana/kit").Rpc<import("@solana/kit").RequestAirdropApi & import("@solana/kit").GetAccountInfoApi & import("@solana/kit").GetBalanceApi & import("@solana/kit").GetBlockApi & import("@solana/kit").GetBlockCommitmentApi & import("@solana/kit").GetBlockHeightApi & import("@solana/kit").GetBlockProductionApi & import("@solana/kit").GetBlocksApi & import("@solana/kit").GetBlocksWithLimitApi & import("@solana/kit").GetBlockTimeApi & import("@solana/kit").GetClusterNodesApi & import("@solana/kit").GetEpochInfoApi & import("@solana/kit").GetEpochScheduleApi & import("@solana/kit").GetFeeForMessageApi & import("@solana/kit").GetFirstAvailableBlockApi & import("@solana/kit").GetGenesisHashApi & import("@solana/kit").GetHealthApi & import("@solana/kit").GetHighestSnapshotSlotApi & import("@solana/kit").GetIdentityApi & import("@solana/kit").GetInflationGovernorApi & import("@solana/kit").GetInflationRateApi & import("@solana/kit").GetInflationRewardApi & import("@solana/kit").GetLargestAccountsApi & import("@solana/kit").GetLatestBlockhashApi & import("@solana/kit").GetLeaderScheduleApi & import("@solana/kit").GetMaxRetransmitSlotApi & import("@solana/kit").GetMaxShredInsertSlotApi & import("@solana/kit").GetMinimumBalanceForRentExemptionApi & import("@solana/kit").GetMultipleAccountsApi & import("@solana/kit").GetProgramAccountsApi & import("@solana/kit").GetRecentPerformanceSamplesApi & import("@solana/kit").GetRecentPrioritizationFeesApi & import("@solana/kit").GetSignaturesForAddressApi & import("@solana/kit").GetSignatureStatusesApi & import("@solana/kit").GetSlotApi & import("@solana/kit").GetSlotLeaderApi & import("@solana/kit").GetSlotLeadersApi & import("@solana/kit").GetStakeMinimumDelegationApi & import("@solana/kit").GetSupplyApi & import("@solana/kit").GetTokenAccountBalanceApi & import("@solana/kit").GetTokenAccountsByDelegateApi & import("@solana/kit").GetTokenAccountsByOwnerApi & import("@solana/kit").GetTokenLargestAccountsApi & import("@solana/kit").GetTokenSupplyApi & import("@solana/kit").GetTransactionApi & import("@solana/kit").GetTransactionCountApi & import("@solana/kit").GetVersionApi & import("@solana/kit").GetVoteAccountsApi & import("@solana/kit").IsBlockhashValidApi & import("@solana/kit").MinimumLedgerSlotApi & import("@solana/kit").SendTransactionApi & import("@solana/kit").SimulateTransactionApi>; rpcSubscriptions: import("@solana/kit").RpcSubscriptions<import("@solana/rpc-subscriptions-api").SolanaRpcSubscriptionsApi>; }, "payer"> & { payer: TransactionSigner; }, "transactionPlanner"> & { transactionPlanner: import("@solana/kit").TransactionPlanner; }, "transactionPlanExecutor"> & { transactionPlanExecutor: import("@solana/kit").TransactionPlanExecutor<import("@solana/kit").TransactionPlanResultContext>; }, keyof import("@solana/kit").ClientWithTransactionPlanning | keyof import("@solana/kit").ClientWithTransactionSending> & import("@solana/kit").ClientWithTransactionPlanning & import("@solana/kit").ClientWithTransactionSending>; //# sourceMappingURL=client.d.ts.map