/**
 * Base Content Storage Interface
 * Provides abstraction for different storage backends
 */
import { ContentEntry, ContentAsset, ContentType, ContentSpace, ContentEnvironment, ContentComment, ContentFilter, ContentPagination, ContentSearchOptions, ContentHistory, ContentManagerStats } from '../types.js';
export declare abstract class BaseContentStorage {
    protected abstract name: string;
    abstract createSpace(space: Omit<ContentSpace, 'id' | 'createdAt' | 'updatedAt'>): Promise<ContentSpace>;
    abstract getSpace(spaceId: string): Promise<ContentSpace | null>;
    abstract updateSpace(spaceId: string, updates: Partial<ContentSpace>): Promise<ContentSpace>;
    abstract deleteSpace(spaceId: string): Promise<void>;
    abstract listSpaces(): Promise<ContentSpace[]>;
    abstract createEnvironment(spaceId: string, environment: Omit<ContentEnvironment, 'id' | 'spaceId' | 'createdAt' | 'updatedAt'>): Promise<ContentEnvironment>;
    abstract getEnvironment(environmentId: string): Promise<ContentEnvironment | null>;
    abstract listEnvironments(spaceId: string): Promise<ContentEnvironment[]>;
    abstract deleteEnvironment(environmentId: string): Promise<void>;
    abstract createContentType(spaceId: string, contentType: Omit<ContentType, 'id'>): Promise<ContentType>;
    abstract getContentType(typeId: string): Promise<ContentType | null>;
    abstract updateContentType(typeId: string, updates: Partial<ContentType>): Promise<ContentType>;
    abstract deleteContentType(typeId: string): Promise<void>;
    abstract listContentTypes(spaceId: string): Promise<ContentType[]>;
    abstract createEntry(spaceId: string, entry: Omit<ContentEntry, 'id' | 'createdAt' | 'updatedAt' | 'version'>): Promise<ContentEntry>;
    abstract getEntry(entryId: string): Promise<ContentEntry | null>;
    abstract updateEntry(entryId: string, updates: Partial<ContentEntry>): Promise<ContentEntry>;
    abstract deleteEntry(entryId: string): Promise<void>;
    abstract searchEntries(options: ContentSearchOptions): Promise<{
        entries: ContentEntry[];
        pagination: ContentPagination;
    }>;
    abstract createAsset(spaceId: string, asset: Omit<ContentAsset, 'id' | 'createdAt' | 'updatedAt' | 'version'>): Promise<ContentAsset>;
    abstract getAsset(assetId: string): Promise<ContentAsset | null>;
    abstract updateAsset(assetId: string, updates: Partial<ContentAsset>): Promise<ContentAsset>;
    abstract deleteAsset(assetId: string): Promise<void>;
    abstract searchAssets(options: ContentSearchOptions): Promise<{
        assets: ContentAsset[];
        pagination: ContentPagination;
    }>;
    abstract createComment(comment: Omit<ContentComment, 'id' | 'createdAt' | 'updatedAt'>): Promise<ContentComment>;
    abstract getComment(commentId: string): Promise<ContentComment | null>;
    abstract updateComment(commentId: string, updates: Partial<ContentComment>): Promise<ContentComment>;
    abstract deleteComment(commentId: string): Promise<void>;
    abstract getEntryComments(entryId: string): Promise<ContentComment[]>;
    abstract getCommentThread(commentId: string): Promise<ContentComment[]>;
    abstract getEntryHistory(entryId: string): Promise<ContentHistory>;
    abstract restoreVersion(entryId: string, version: number): Promise<ContentEntry>;
    abstract getStats(spaceId?: string): Promise<ContentManagerStats>;
    protected generateId(): string;
    protected applyFilter<T extends {
        fields?: any;
        tags?: string[];
        createdAt: Date;
        updatedAt: Date;
    }>(items: T[], filter: ContentFilter): T[];
    protected paginate<T>(items: T[], pagination: ContentPagination): {
        items: T[];
        pagination: ContentPagination;
    };
}
//# sourceMappingURL=base.d.ts.map