import { Connection, PublicKey, Transaction } from '@solana/web3.js';
import { ChainEventListener, IProviderAdapter } from '../data-structures/provider-adapter/IProviderAdapter';
import { ContractType, EthereumNetwork } from '../types/ethereum-network.types';
import { ethers } from 'ethers';
import { AnchorProvider, Idl, Program } from '@coral-xyz/anchor';
import { SolanaWallet } from '../types/solana.types';
export declare class SolanaProviderAdapter implements IProviderAdapter<SolanaWallet> {
    private chainId;
    private connection;
    private wallet;
    private ethereumAddress;
    private connectHandler?;
    private disconnectHandler?;
    private chainEventListener?;
    private anchorProvider?;
    constructor(chainId: number, ethereumAddress?: string);
    initConnector(connector: SolanaWallet): void;
    init(chainId?: number): Promise<void>;
    connectToConnector(): Promise<number>;
    disconnectFromConnector(): Promise<void>;
    connectAndPatchProvider(): Promise<number>;
    getChainId(): number | undefined;
    waitForTransaction(_chainId: number, transactionHash: string, _confirmations: number): Promise<boolean>;
    signMessage(message: string | Uint8Array): Promise<string>;
    signTransactionWithoutBroadcast(tx: Transaction): Promise<{
        signature: string;
        transactionMessageB64: string;
    }>;
    getAddress(): Promise<string>;
    setChainEventListener(chainEventListener: ChainEventListener): void;
    switchNetwork(network: EthereumNetwork): Promise<void>;
    signTypedData(_domain: ethers.TypedDataDomain, _types: Record<string, ethers.TypedDataField[]>, _value: Record<string, unknown>): Promise<string>;
    onAccountChanged(): Promise<unknown>;
    onChainChanged(chainId?: number): Promise<unknown>;
    release(): void;
    getContract(_chainId: number, _contractType: ContractType, _contractAddress?: string, _runner?: ethers.ContractRunner): ethers.Contract;
    getContractWithSigner(_chainId: number, _contractType: ContractType, _contractAddress?: string): ethers.Contract;
    getContractWithFetcher(_chainId: number, _contractType: ContractType, _contractAddress?: string): ethers.Contract;
    sendTransaction(_tx: ethers.TransactionRequest): Promise<ethers.TransactionResponse>;
    getGasPrice(_chainId: number): Promise<bigint>;
    isPermitterAvailable(): boolean;
    getConnection(): Connection;
    private initializeAnchorProvider;
    getAnchorProvider(): AnchorProvider;
    getSolanaProgram(idl: Idl): Program;
    getSolanaPublicKey(): PublicKey;
    private setupWalletListeners;
    private removeWalletListeners;
    isSolanaLedger(): boolean;
}
declare const _default: <T = unknown>(chainId: number, ethereumAddress?: string) => IProviderAdapter<T>;
export default _default;
