import { AbstractSdk } from '../bridge/utils';
import { ApiParam, InvokeHandlerParam } from '../bridge/types';
import { ServerApiMap as ApiMap, TransferApi } from './api';
import { Commands, ModuleName, AddEventListener } from '../../protocol';
export type Param<K extends keyof ApiMap = keyof ApiMap> = InvokeHandlerParam<ApiMap, K>;
export type Back<K extends keyof ApiMap = keyof ApiMap> = Promise<ApiParam<ApiMap, K, 'suc'>>;
export type SyncBack<K extends keyof ApiMap = keyof ApiMap> = ApiParam<ApiMap, K, 'suc'> | ApiParam<ApiMap, K, 'fail'>;
export default abstract class BaseSdk extends AbstractSdk<ApiMap> {
    protected execute: Commands<ModuleName>;
    protected addEventListener: AddEventListener;
    protected compilePath?: string | undefined;
    constructor(execute: Commands<ModuleName>, addEventListener: AddEventListener, compilePath?: string | undefined);
    protected abstract openProject(param: Param<TransferApi.openProject>): Promise<void>;
    protected abstract chooseFolder(): Promise<string>;
    protected [TransferApi.checkProject](param: Param<TransferApi.checkProject>): Back<TransferApi.checkProject>;
    protected [TransferApi.getSystemPathInfo](param: Param<TransferApi.getSystemPathInfo>): Back<TransferApi.getSystemPathInfo>;
    protected [TransferApi.getClipboardData](): Back<TransferApi.getClipboardData>;
    protected [TransferApi.openFile](param: Param<TransferApi.openFile>): Back<TransferApi.openFile>;
    protected [TransferApi.accountInfo](): Back<TransferApi.accountInfo>;
    protected [TransferApi.fullAccountInfo](): Back<TransferApi.fullAccountInfo>;
    protected [TransferApi.accountLogin](param: Param<TransferApi.accountLogin>): Back<TransferApi.accountLogin>;
    protected [TransferApi.accountLogout](): Back<TransferApi.accountLogout>;
    protected [TransferApi.accountTenant](): Back<TransferApi.accountTenant>;
    protected [TransferApi.accountTenantSwitch](param: Param<TransferApi.accountTenantSwitch>): Back<TransferApi.accountTenantSwitch>;
    protected [TransferApi.openPage](param: Param<TransferApi.openPage>): Back<TransferApi.openPage>;
    protected [TransferApi.recentProject](): Back<TransferApi.recentProject>;
    protected [TransferApi.deleteProjects](param: Param<TransferApi.deleteProjects>): Back<TransferApi.deleteProjects>;
    protected [TransferApi.templateList](param: Param<TransferApi.templateList>): Back<TransferApi.templateList>;
    protected [TransferApi.createProject](param: Param<TransferApi.createProject>): Back<TransferApi.createProject>;
    protected [TransferApi.feedback](): Back<TransferApi.feedback>;
    protected [TransferApi.helpDocUrl](): Back<TransferApi.helpDocUrl>;
    protected [TransferApi.getUUID](): Back<TransferApi.getUUID>;
    protected [TransferApi.eventTracker](param: Param<TransferApi.eventTracker>): void;
    protected [TransferApi.eventTrackV2](param: Param<TransferApi.eventTrackV2>): void;
    protected [TransferApi.reportResult](param: Param<TransferApi.reportResult>): void;
    protected [TransferApi.getSettings](): Back<TransferApi.getSettings>;
    protected [TransferApi.setSettings](param: {
        settings: Param<TransferApi.setSettings>;
    }): void;
    protected [TransferApi.featureGating](param: Param<TransferApi.featureGating>): Back<TransferApi.featureGating>;
    protected [TransferApi.getRoutePath](): Back<TransferApi.getRoutePath>;
    protected [TransferApi.getIDEStorage](param: Param<TransferApi.getIDEStorage>): Back<TransferApi.getIDEStorage>;
    protected [TransferApi.setStorage](param: Param<TransferApi.setStorage>): Back<TransferApi.setStorage>;
    protected [TransferApi.updateSimulatorConfig](params: Param<TransferApi.updateSimulatorConfig>): Promise<void>;
    protected [TransferApi.reportIssue](params: Param<TransferApi.reportIssue>): Promise<{
        flag: boolean;
        message?: string;
    }>;
    protected [TransferApi.enableBlock](): Promise<boolean>;
    protected [TransferApi.enableH5Block](): Promise<boolean>;
    [TransferApi.uploadH5Offline](param: Param<TransferApi.uploadH5Offline>): Back<TransferApi.uploadH5Offline>;
    [TransferApi.getH5OfflineMeta](param: Param<TransferApi.getH5OfflineMeta>): Back<TransferApi.getH5OfflineMeta>;
    [TransferApi.getDebugTenantList](params: Param<TransferApi.getDebugTenantList>): Back<TransferApi.getDebugTenantList>;
    [TransferApi.switchDebugTenant](params: Param<TransferApi.switchDebugTenant>): Back<TransferApi.switchDebugTenant>;
    [TransferApi.getDebugAccount](params: Param<TransferApi.getDebugAccount>): Back<TransferApi.getDebugAccount>;
}
