import { ExtensionListener } from './extensionListener';
import { ExtensionPermission, ExtensionRequestArgs, ExtensionResponse, ExtensionSentEncryptedMessage, ExtensionSigned } from './messaging';
import { RequestPermissionArgs, RequestSignArgs } from './args';
import { RequestSendEncryptedMessageArgs } from './args/requestSendEncryptedMessageArgs';
export interface ExtensionAdapter {
    assertWalletAvailable(): Promise<void>;
    onNotification(callback: (message: any) => void): ExtensionListener;
    getCurrentPermission(): Promise<ExtensionPermission>;
    requestPermission(args: RequestPermissionArgs): Promise<ExtensionPermission>;
    requestSign(args: RequestSignArgs): Promise<ExtensionSigned>;
    requestSendEncryptedMessage(args: RequestSendEncryptedMessageArgs): Promise<ExtensionSentEncryptedMessage>;
    request(message: ExtensionRequestArgs): Promise<ExtensionResponse>;
}
