import { ModuleTypes, StorageTypes } from '../../common/constants';
import { DappletRuntimeResult, MessageWrapperRequest, StorageRef } from '../../common/types';
import ManifestDTO from '../dto/manifestDTO';
import ModuleInfo from '../models/moduleInfo';
import VersionInfo from '../models/versionInfo';
import { StorageAggregator } from '../moduleStorages/moduleStorage';
import ModuleManagerService from '../services/moduleManagerService';
import { RegistryAggregatorService } from '../services/registryAggregatorService';
import { AnalyticsService } from './analyticsService';
import GlobalConfigService from './globalConfigService';
import { WalletService } from './walletService';
export default class FeatureService {
    private _globalConfigService;
    private _walletService;
    private _analyticsService;
    private _storageAggregator;
    private _registryAggregatorService;
    private _moduleManagerService;
    constructor(_globalConfigService: GlobalConfigService, _walletService: WalletService, _analyticsService: AnalyticsService, _storageAggregator: StorageAggregator, _registryAggregatorService: RegistryAggregatorService, _moduleManagerService: ModuleManagerService);
    /**
     * Returns ModuleInfos wrapped to ManifestDTO by given context IDs and filter
     * @param contextIds array of context IDs
     * @param filter all - no filters, public - listings of connected wallets,
     *               trusted - listings of trusted users, local - local listing
     * @returns Array of ManifestDTOs
     */
    getFeaturesByHostnames(contextIds: string[], filter: 'all' | 'public' | 'trusted' | 'local' | 'active' | null): Promise<ManifestDTO[]>;
    private _setFeatureActive;
    activateFeature(name: string, version: string | undefined, hostnames: string[], order: number, registryUrl: string, req: MessageWrapperRequest): Promise<DappletRuntimeResult | null>;
    deactivateFeature(name: string, version: string | undefined, hostnames: string[], order: number, registryUrl: string, req: MessageWrapperRequest): Promise<DappletRuntimeResult | null>;
    activateDappletE2E({ name, version, hostnames, order, registryUrl, tabId, }: {
        name: string;
        registryUrl: string;
        version?: string;
        hostnames?: string[];
        order?: number;
        tabId?: number;
    }): Promise<void>;
    deactivateDappletE2E({ name, version, hostnames, order, registryUrl, tabId, }: {
        name: string;
        registryUrl: string;
        version?: string;
        hostnames?: string[];
        order?: number;
        tabId?: number;
    }): Promise<void>;
    reloadFeature(name: string, version: string | undefined, hostnames: string[], order: number, registryUrl: string, req: MessageWrapperRequest): Promise<void>;
    getActiveModulesByHostnames(contextIds: string[]): Promise<{
        name: string;
        branch: string;
        version: string;
        order: number;
        hostnames: string[];
    }[]>;
    getModulesWithDeps(modules: {
        name: string;
        branch?: string;
        version?: string;
        contextIds: string[];
    }[]): Promise<{
        manifest: any;
        scriptOrConfig: string | import("../../common/types").ParserConfig;
        defaultConfig: import("../../common/types").DefaultConfig;
        schemaConfig: any;
    }[]>;
    getAllDevModules(): Promise<{
        module: ModuleInfo;
        versions: VersionInfo[];
        isDeployed?: boolean[];
    }[]>;
    deployModule(mi: ModuleInfo, vi: VersionInfo, targetStorages: StorageTypes[], targetRegistry: string): Promise<{
        scriptUrl: string;
    }>;
    uploadModule(mi: ModuleInfo, vi: VersionInfo | null, targetStorages: StorageTypes[]): Promise<string>;
    removeDapplet(name: string, hostnames: string[]): Promise<void>;
    getRegistries(): Promise<{
        isEnabled: boolean;
        url: string;
        isDev: boolean;
        isAvailable: boolean;
        error: string;
    }[]>;
    getOwnership(registryUri: string, moduleName: string): Promise<string>;
    getModuleNftUrl(registryUri: string, moduleName: string): Promise<string>;
    getVersionInfo(registryUri: string, moduleName: string, branch: string, version: string): Promise<VersionInfo>;
    getModuleInfoByName(registryUrl: string, moduleName: string): Promise<ModuleInfo>;
    transferOwnership(registryUri: string, moduleName: string, oldAccount: string, newAccount: string): Promise<void>;
    getContextIds(registryUri: string, moduleName: string): Promise<string[]>;
    addContextId(registryUri: string, moduleName: string, contextId: string): Promise<void>;
    removeContextId(registryUri: string, moduleName: string, contextId: string): Promise<void>;
    getAdmins(registryUri: string, moduleName: string): Promise<string[]>;
    addAdmin(registryUri: string, moduleName: string, adressAdmin: string): Promise<void>;
    removeAdmin(registryUri: string, moduleName: string, adressAdmin: string): Promise<void>;
    editModuleInfo(registryUri: string, targetStorages: StorageTypes[], mi: ModuleInfo): Promise<void>;
    getVersions(registryUri: string, moduleName: string): Promise<string[]>;
    getUserSettingsForOverlay(registryUrl: string, moduleName: string): Promise<{
        mi: {
            sourceRegistry: {
                url: string;
                isDev: boolean;
            };
            getId: () => string;
            registryUrl: string;
            name: string;
            type: ModuleTypes;
            title: string;
            description: string;
            author: string;
            image?: StorageRef;
            metadata?: StorageRef;
            icon?: StorageRef;
            interfaces: string[];
            contextIds: string[];
            isUnderConstruction: boolean;
        };
        vi: VersionInfo;
        schemaConfig: any;
        defaultConfig: import("../../common/types").DefaultConfig;
    }>;
    getResource(hashUris: StorageRef): Promise<string>;
    private _uploadModuleInfoIcons;
}
