import type { ConfigKey } from '../config/schema.js';
import type { ArtifactAttachment, ArtifactCreateInput, ArtifactDescriptor, ArtifactRecord, ArtifactReference } from './types.js';
export interface ArtifactStoreConfig {
    readonly rootDir?: string;
    readonly configManager?: {
        getControlPlaneConfigDir?: () => string;
        get?: (key: ConfigKey) => unknown;
    };
    readonly maxBytes?: number;
    readonly defaultRetentionMs?: number;
    readonly maxRetentionMs?: number;
    readonly trustedHosts?: readonly string[];
    readonly blockedHosts?: readonly string[];
    readonly allowPrivateHostFetches?: boolean;
}
export declare class ArtifactStore {
    private readonly rootDir;
    private readonly records;
    private readonly maxBytes;
    private readonly defaultRetentionMs;
    private readonly maxRetentionMs;
    private readonly trustedHosts;
    private readonly blockedHosts;
    private readonly allowPrivateHostFetches;
    constructor(config: ArtifactStoreConfig);
    get storagePath(): string;
    list(limit?: number): ArtifactDescriptor[];
    get(id: string): ArtifactDescriptor | null;
    getRecord(id: string): ArtifactRecord | null;
    readContent(id: string): Promise<{
        record: ArtifactRecord;
        buffer: Buffer;
    }>;
    create(input: ArtifactCreateInput): Promise<ArtifactDescriptor>;
    toAttachment(reference: ArtifactReference, options?: {
        readonly contentUrl?: string;
        readonly includeBase64IfSmallerThan?: number;
    }): Promise<ArtifactAttachment>;
    private toDescriptor;
    private loadExisting;
    private pruneExpired;
    private removeRecordFiles;
    private resolveInput;
    private resolveRemoteInput;
    private filenameFromContentDisposition;
    private assertRemoteHostAllowed;
}
//# sourceMappingURL=store.d.ts.map