import { Strategy } from '@arweave-wallet-kit/core/strategy';
import { AppInfo, DataItem, DispatchResult, GatewayConfig, PermissionType } from 'arconnect';
import { default as Transaction } from 'arweave/web/lib/transaction';
import { SignatureOptions } from 'arweave/web/lib/crypto/crypto-interface';

export default class AoSyncStrategy implements Strategy {
    id: "beacon";
    name: string;
    description: string;
    theme: string;
    logo: string;
    url: string;
    private walletRef;
    private addressListeners;
    constructor();
    connect(permissions: PermissionType[], appInfo?: AppInfo, gateway?: GatewayConfig): Promise<void>;
    disconnect(): Promise<any>;
    getActiveAddress(): Promise<string>;
    getAllAddresses(): Promise<any>;
    sign(transaction: Transaction, options?: SignatureOptions): Promise<any>;
    getPermissions(): Promise<any>;
    getWalletNames(): Promise<any>;
    encrypt(data: BufferSource, options: RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams): Promise<Uint8Array>;
    decrypt(data: BufferSource, options: RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams): Promise<Uint8Array>;
    getArweaveConfig(): Promise<GatewayConfig>;
    signature(data: Uint8Array, options: AlgorithmIdentifier | RsaPssParams | EcdsaParams): Promise<Uint8Array>;
    getActivePublicKey(): Promise<any>;
    addToken(id: string): Promise<void>;
    dispatch(transaction: Transaction): Promise<DispatchResult>;
    isAvailable(): Promise<boolean>;
    signDataItem(p: DataItem): Promise<ArrayBuffer>;
    addAddressEvent(listener: (address: string) => void): (e: CustomEvent<{
        address: string;
    }>) => void;
    removeAddressEvent(listener: (e: CustomEvent<{
        address: string;
    }>) => void): void;
}
