/**
 * @packageDocumentation
 * @module business/image
 */
import { Observable } from 'rxjs';
export interface ImageRepositoryValue {
    type: 'input' | 'select' | 'create';
    repositoryPath: string;
    credentialId: string;
    tag: string;
    secretName: string;
    secretNamespace: string;
    imagerepositoryName?: string;
    imagerepositoryNamespace?: string;
}
export interface ImageRepositoryOption {
    name: string;
    namespace: string;
    type: string;
    endpoint: string;
    image: string;
    imageName: string;
    repositoryPath: string;
    projectPath: string;
    tags: TagOption[];
    secret: SecretOption;
    imageRegistry?: string;
}
export interface TagOption {
    name: string;
    digest: string;
    createdAt: string;
    size?: string;
    level?: number;
    severity?: string;
    scanStatus?: ScanStatus;
    message?: string;
    summary?: Array<{
        count: number;
        severity: number;
        severityStatus: Severity;
    }>;
}
export declare enum Severity {
    Unknown = "Unknown",
    Negligible = "Negligible",
    Low = "Low",
    Medium = "Medium",
    High = "High",
    Critical = "Critical"
}
export declare enum ScanStatus {
    NotScan = "Not Scanned",
    Pending = "Pending",
    Running = "Running",
    Error = "Error",
    Stopped = "Stopped",
    Success = "Success",
    Scheduled = "Scheduled"
}
export interface SecretOption {
    name: string;
    namespace: string;
    displayName?: string;
}
export interface ExportOption {
    name: string;
    description: {
        'zh-CN': string;
        en: string;
    };
}
export declare type ImageRegistryOption = Pick<ImageRepositoryOption, Exclude<keyof ImageRepositoryOption, 'repositoryPath' | 'image' | 'tags' | 'imageName'>> & {
    images: string[];
};
export declare function groupRegistryOptions(repositories: ImageRepositoryOption[]): ImageRegistryOption[];
export interface ImageSelectorDataContext {
    canCreateSecret: () => Observable<boolean>;
    createSecret: () => Observable<SecretOption>;
    getImageRegistries: () => Observable<string[]>;
    getImageRepositories: (mode?: string, registry?: string) => Observable<ImageRepositoryOption[]>;
    getTags: (repository: ImageRepositoryOption) => Observable<TagOption[]>;
    getSecrets: () => Observable<SecretOption[]>;
    getAssetsIconPath: (name: string) => string;
    getExportOptions: () => Observable<ExportOption[]>;
    clearImageRepositoryCache: () => void;
}
export declare const emptyImageSelectorDataContext: ImageSelectorDataContext;
