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