import type { ControlPlaneStore, JsonValue } from '../control-plane';
import type { ComposeApplicationRecord, ComposeParseResult, ComposeServiceState } from './types';
export declare class ComposeApplicationStore {
    readonly controlPlane: ControlPlaneStore;
    private readonly now;
    private readonly id;
    constructor(controlPlane: ControlPlaneStore, options?: {
        now?: () => Date;
        id?: () => string;
    });
    private persist;
    import(source: string, input: {
        name: string;
        slug?: string;
        projectId: string;
        environmentId: string;
        createdByActorId?: string;
    }): {
        application: ComposeApplicationRecord;
        parsed: ComposeParseResult;
    };
    fromTemplate(templateId: string, inputs: Record<string, string>, input: {
        name: string;
        slug?: string;
        projectId: string;
        environmentId: string;
        version?: string;
        createdByActorId?: string;
    }): {
        application: ComposeApplicationRecord;
        parsed: ComposeParseResult;
    };
    preview(source: string, input: {
        name: string;
        slug?: string;
        projectId: string;
        environmentId: string;
    }): ComposeParseResult;
    get(id: string): ComposeApplicationRecord | undefined;
    getByResource(resourceId: string): ComposeApplicationRecord | undefined;
    getBySlug(projectId: string, environmentId: string, slug: string): ComposeApplicationRecord | undefined;
    list(input?: {
        projectId?: string;
        environmentId?: string;
        includeDeleted?: boolean;
    }): ComposeApplicationRecord[];
    services(applicationId: string): ComposeServiceState[];
    transition(id: string, status: ComposeApplicationRecord['status'], input?: {
        operationId?: string;
        services?: Array<{
            name: string;
            status: ComposeServiceState['status'];
            replicas?: number;
            healthyReplicas?: number;
            observedState?: JsonValue;
        }>;
        error?: string;
    }): ComposeApplicationRecord;
}
