/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
import type { LogTabData } from "./tab-store";
import type { IComputedValue } from "mobx";
import type { TabId } from "../dock/store";
import type { SearchStore } from "../../../search-store/search-store";
import type { Pod, PodLogsQuery } from "@openlens/kube-object";
import type { GetPodById } from "../../workloads-pods/get-pod-by-id.injectable";
import type { GetPodsByOwnerId } from "../../workloads-pods/get-pods-by-owner-id.injectable";
import type { LoadLogs } from "./load-logs.injectable";
import type { ResourceDescriptor } from "../../../../common/k8s-api/kube-api";
export interface LogTabViewModelDependencies {
    getLogs: (tabId: TabId) => string[];
    getLogsWithoutTimestamps: (tabId: TabId) => string[];
    getTimestampSplitLogs: (tabId: TabId) => [string, string][];
    getLogTabData: (tabId: TabId) => LogTabData | undefined;
    setLogTabData: (tabId: TabId, data: LogTabData) => void;
    loadLogs: LoadLogs;
    reloadLogs: (tabId: TabId, pod: IComputedValue<Pod | undefined>, logTabData: IComputedValue<LogTabData | undefined>) => Promise<void>;
    renameTab: (tabId: TabId, title: string) => void;
    stopLoadingLogs: (tabId: TabId) => void;
    getPodById: GetPodById;
    getPodsByOwnerId: GetPodsByOwnerId;
    areLogsPresent: (tabId: TabId) => boolean;
    downloadLogs: (filename: string, logs: string[]) => void;
    downloadAllLogs: (params: ResourceDescriptor, query: PodLogsQuery) => Promise<void>;
    searchStore: SearchStore;
}
export declare class LogTabViewModel {
    protected readonly tabId: TabId;
    private readonly dependencies;
    constructor(tabId: TabId, dependencies: LogTabViewModelDependencies);
    get searchStore(): SearchStore;
    readonly isLoading: IComputedValue<boolean>;
    readonly logs: IComputedValue<string[]>;
    readonly logsWithoutTimestamps: IComputedValue<string[]>;
    readonly timestampSplitLogs: IComputedValue<[string, string][]>;
    readonly logTabData: IComputedValue<LogTabData | undefined>;
    readonly pods: IComputedValue<Pod[]>;
    readonly pod: IComputedValue<Pod | undefined>;
    updateLogTabData: (partialData: Partial<LogTabData>) => void;
    loadLogs: () => Promise<void>;
    reloadLogs: () => Promise<void>;
    renameTab: (title: string) => void;
    stopLoadingLogs: () => void;
    downloadLogs: () => void;
    downloadAllLogs: () => Promise<void> | undefined;
}
