import { SignIntent, SolanaWalletInterface, WalletInterfaceType, WalletProvider } from "../../../__types__";
/**
 * Abstract base class for Solana wallet implementations using Wallet Standard.
 *
 * Provides shared logic for:
 * - Provider discovery via `@wallet-standard/app` (`getWallets()`).
 * - Connecting via `standard:connect` and disconnecting via `standard:disconnect`.
 * - Public key retrieval from the wallet's account address (base58 → hex).
 */
export declare abstract class BaseSolanaWallet implements SolanaWalletInterface {
    readonly interfaceType = WalletInterfaceType.Solana;
    abstract sign(message: string | Uint8Array, provider: WalletProvider, intent: SignIntent): Promise<string>;
    /**
     * Retrieves the ed25519 public key for the active account as hex (no 0x prefix).
     *
     * - Ensures the wallet is connected (calls `standard:connect` if needed).
     * - Decodes the Wallet Standard account address (base58) to raw bytes.
     *
     * @param provider - The wallet provider to use.
     * @returns Hex-encoded ed25519 public key (no 0x prefix).
     * @throws {Error} If no account is available.
     */
    getPublicKey: (provider: WalletProvider) => Promise<string>;
    /**
     * Discovers Solana-capable Wallet Standard providers.
     *
     * - Uses `getWallets().get()` and filters wallets with at least one `chains` entry
     *   starting with `"solana:"`.
     * - For each wallet, collects branding info and any currently connected addresses.
     *
     * @returns A list of discovered Solana `WalletProvider`s (may be empty).
     */
    getProviders: () => Promise<WalletProvider[]>;
    /**
     * Connects the wallet account, prompting the user if necessary.
     *
     * - Calls `standard:connect` only if no accounts are present. This will prompt the user to connect their wallet.
     *
     * @param provider - The wallet provider to connect.
     * @returns A promise that resolves with the connected wallet's address.
     * @throws {Error} If the wallet does not implement `standard:connect`.
     */
    connectWalletAccount: (provider: WalletProvider) => Promise<string>;
    /**
     * Disconnects the wallet account using Wallet Standard.
     *
     * - Calls `standard:disconnect` if implemented.
     * - Throws if the wallet does not implement `standard:disconnect`.
     *
     * @param provider - The wallet provider to disconnect.
     * @returns A promise that resolves once the wallet disconnects.
     * @throws {Error} If `standard:disconnect` is not supported by the wallet.
     */
    disconnectWalletAccount: (provider: WalletProvider) => Promise<void>;
}
/**
 * Signs a message or transaction with the connected Solana wallet.
 *
 * - Ensures the wallet is connected (may prompt via `standard:connect` if its not).
 * - `SignMessage` → `solana:signMessage` (returns hex signature).
 * - `SignTransaction` → `solana:signTransaction` (returns hex signature).
 *
 * @param payload - UTF-8 string (for message) or hex string (for transaction bytes).
 * @param provider - The wallet provider to use.
 * @param intent - The signing intent.
 * @returns Hex-encoded signature (no 0x prefix).
 * @throws {Error} If the provider lacks required features or intent is unsupported.
 */
export declare class SolanaWallet extends BaseSolanaWallet {
    sign: (payload: string, provider: WalletProvider, intent: SignIntent) => Promise<string>;
}
//# sourceMappingURL=solana.d.ts.map