import type { Application } from '../application.model';
import type { IInstance, IServerGroup } from '../../domain';
import type { IMoniker } from '../../naming/IMoniker';
export declare type IServerGroupFilter = (s: IServerGroup) => boolean;
export declare type IInstanceFilter = (i: IInstance) => boolean;
export declare class AppListExtractor {
    static getMonikers(applications: Application[], filter?: IServerGroupFilter): IMoniker[];
    static getRegions(applications: Application[], filter?: IServerGroupFilter): string[];
    static getStacks(applications: Application[], filter?: IServerGroupFilter): string[];
    static getClusters(applications: Application[], filter?: IServerGroupFilter): string[];
    static getAsgs(applications: Application[], clusterFilter?: IServerGroupFilter): string[];
    static getZones(applications: Application[], clusterFilter?: IServerGroupFilter, regionFilter?: IServerGroupFilter, nameFilter?: IServerGroupFilter): string[];
    static getInstances(applications: Application[], clusterFilter?: IServerGroupFilter, serverGroupFilter?: IServerGroupFilter, instanceFilter?: IInstanceFilter): IInstance[];
    static clusterFilterForCredentials(credentials: string): IServerGroupFilter;
    static monikerClusterNameFilter(clusterName: string): IServerGroupFilter;
    static clusterFilterForCredentialsAndRegion(credentials: string, region: string | string[]): IServerGroupFilter;
}
