import { PermanentStorage } from '@anglr/common';
import { PromiseOr } from '@jscrpt/common';
import { Observable, Subject, Subscription } from 'rxjs';
import { PackageSource } from '../../interfaces';
/**
 * Service used for obtaining available and used packages
 */
export declare class PackageManager {
    protected storageName: string;
    /**
     * Current usedPackages value
     */
    private _usedPackages;
    /**
     * Subscriptions created during initialization
     */
    protected initSubscriptions: Subscription;
    /**
     * Used for emitting usedPackages changes
     */
    protected usedPackagesSubject: Subject<void>;
    /**
     * Used for emitting packages changes
     */
    protected packagesChangeSubject: Subject<void>;
    /**
     * Permanent storage storing selected packages
     */
    protected store: PermanentStorage;
    /**
     * Array of package source
     */
    protected packageSources: PackageSource[];
    /**
     * Occurs when available packages changes
     */
    get packagesChange(): Observable<void>;
    /**
     * Gets available packages
     */
    get packages(): readonly string[];
    /**
     * Gets current usedPackages value
     */
    get usedPackages(): string[];
    protected set usedPackages(value: string[]);
    /**
     * Occurs when usedPackages changes
     */
    get usedPackagesChange(): Observable<void>;
    constructor(storageName: string);
    /**
     * Sets usedPackages new value
     * @param usedPackages - Value of usedPackages that changed
     */
    setUsedPackages(usedPackages: string[]): void;
    /**
     * Refresh available packages with current data
     */
    refresh(): PromiseOr<void>;
    /**
     * Destroys service and all its resources
     */
    destroy(): void;
}
//# sourceMappingURL=packageManager.service.d.ts.map