import type { EventEmitter, SendTransactionOptions, WalletName } from '@solana/wallet-adapter-base';
import { BaseMessageSignerWalletAdapter, WalletReadyState } from '@solana/wallet-adapter-base';
import type { Connection, SendOptions, Transaction, TransactionSignature, TransactionVersion, VersionedTransaction } from '@solana/web3.js';
import { PublicKey } from '@solana/web3.js';
import type { TronLinkWallet } from '@tronweb3/tronwallet-adapter-tronlink';
interface OkxWalletEvents {
    connect(...args: unknown[]): unknown;
    disconnect(...args: unknown[]): unknown;
    accountChanged(newPublicKey: PublicKey): unknown;
}
interface OkxWallet extends EventEmitter<OkxWalletEvents> {
    isOkxWallet?: boolean;
    publicKey?: {
        toBytes(): Uint8Array;
    };
    isConnected: boolean;
    signTransaction<T extends Transaction | VersionedTransaction>(transaction: T): Promise<T>;
    signAllTransactions<T extends Transaction | VersionedTransaction>(transactions: T[]): Promise<T[]>;
    signAndSendTransaction<T extends Transaction | VersionedTransaction>(transaction: T, options?: SendOptions): Promise<{
        signature: TransactionSignature;
    }>;
    signMessage(message: Uint8Array): Promise<{
        signature: Uint8Array;
    }>;
    connect(): Promise<void>;
    disconnect(): Promise<void>;
}
export interface OkxWindow extends Window {
    okxwallet?: {
        solana?: OkxWallet;
        chainId: string;
        tronLink: TronLinkWallet;
    };
    solana?: OkxWallet & {
        isOkExWallet?: boolean;
    };
}
export interface OkxWalletAdapterConfig {
}
export declare const OkxWalletName: WalletName<"OKX Wallet">;
export declare class OkxWalletAdapter extends BaseMessageSignerWalletAdapter {
    name: WalletName<"OKX Wallet">;
    url: string;
    icon: string;
    supportedTransactionVersions: ReadonlySet<TransactionVersion>;
    private _connecting;
    private _wallet;
    private _publicKey;
    private _readyState;
    constructor(config?: OkxWalletAdapterConfig);
    get publicKey(): PublicKey | null;
    get connecting(): boolean;
    get readyState(): WalletReadyState;
    autoConnect(): Promise<void>;
    connect(): Promise<void>;
    disconnect(): Promise<void>;
    sendTransaction<T extends Transaction | VersionedTransaction>(transaction: T, connection: Connection, options?: SendTransactionOptions): Promise<TransactionSignature>;
    signTransaction<T extends Transaction | VersionedTransaction>(transaction: T): Promise<T>;
    signAllTransactions<T extends Transaction | VersionedTransaction>(transactions: T[]): Promise<T[]>;
    signMessage(message: Uint8Array): Promise<Uint8Array>;
    private _disconnected;
    private _accountChanged;
}
export {};
