import EventEmitter from "eventemitter3";
import { BaseMessageSignerWalletAdapter, WalletName, WalletReadyState } from "@solana/wallet-adapter-base";
import type { Connection, Keypair, Transaction } from "@solana/web3.js";
import { PublicKey, VersionedTransaction, TransactionVersion } from "@solana/web3.js";
import { EncryptInput, DecryptInput } from "./types";
interface DemonWalletEvents {
    connect(...args: unknown[]): unknown;
    disconnect(...args: unknown[]): unknown;
    accountChanged(newPublicKeyStr: string): unknown;
}
interface DemonWallet extends EventEmitter<DemonWalletEvents> {
    isDemon?: boolean;
    connect(): Promise<string>;
    disconnect(): Promise<void>;
    signTransaction<T extends Transaction | VersionedTransaction>(tx: T, publicKey?: PublicKey): Promise<T>;
    signAllTransaction<T extends Transaction | VersionedTransaction>(txs: T[], publicKey?: PublicKey): Promise<T[]>;
    signMessage(msg: Uint8Array, publicKey?: PublicKey): Promise<Uint8Array>;
    sendTransaction<T extends Transaction | VersionedTransaction>(tx: T, connection: Connection, signers?: Keypair[], publicKey?: PublicKey): Promise<string>;
    encrypt(inputs: EncryptInput[], publicKey?: PublicKey): Promise<DecryptInput[]>;
    decrypt(inputs: DecryptInput[], publicKey?: PublicKey): Promise<(string | null)[]>;
    isConnected: boolean;
}
export interface DemonWindow extends Window {
    demon: {
        sol: DemonWallet;
    };
}
export interface DemonWalletAdapterConfig {
}
export declare const DemonWalletName: WalletName<"Demon">;
export declare class DemonWalletAdapter extends BaseMessageSignerWalletAdapter {
    name: WalletName<"Demon">;
    url: string;
    icon: string;
    supportedTransactionVersions: ReadonlySet<TransactionVersion>;
    private _connecting;
    private _wallet;
    private _publicKey;
    private _readyState;
    constructor(_config?: DemonWalletAdapterConfig);
    get publicKey(): PublicKey | null;
    get connecting(): boolean;
    get connected(): boolean;
    get readyState(): WalletReadyState;
    get wallet(): DemonWallet | null;
    connect(): Promise<void>;
    disconnect(): Promise<void>;
    sendTransactionWithSigners<T extends Transaction | VersionedTransaction>(transaction: T, connection: Connection, signers?: Keypair[]): Promise<string>;
    signTransaction<T extends Transaction | VersionedTransaction>(transaction: T): Promise<T>;
    signAllTransactions<T extends Transaction | VersionedTransaction>(transactions: T[]): Promise<T[]>;
    signMessage(message: Uint8Array): Promise<Uint8Array>;
    encrypt(inputs: EncryptInput[]): Promise<DecryptInput[]>;
    decrypt(inputs: DecryptInput[]): Promise<(string | null)[]>;
    private _accountChanged;
}
export {};
//# sourceMappingURL=demon.d.ts.map