import { DatabaseService } from '../../common/database/database.service';
import { communityChannels, communityChatMessages, communityChats, communityPostComments, communityAnnouncements, communityPosts } from '../../database/schema';
export type ChannelVisibility = 'MEMBERS' | 'ADMINS';
export type PostStatus = 'DRAFT' | 'PUBLISHED';
export type PostVariant = 'FULL' | 'SHORT';
export interface PostSummary {
    id: string;
    channelId: string;
    status: PostStatus;
    variant: PostVariant;
    title: string;
    excerpt: string | null;
    cover: string | null;
    authorName: string | null;
    legacyDate: string | null;
    publishedAt: Date | null;
    views: number;
    likes: number;
    comments: number;
    likedByMe: boolean;
}
export declare class CommunityRepository {
    private readonly database;
    constructor(database: DatabaseService);
    private get db();
    listChannels(visibilities: ChannelVisibility[]): Omit<import("drizzle-orm/pg-core").PgSelectBase<"community_channels", {
        id: import("drizzle-orm/pg-core").PgColumn<{
            name: "id";
            tableName: "community_channels";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: true;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 64;
        }>;
        name: import("drizzle-orm/pg-core").PgColumn<{
            name: "name";
            tableName: "community_channels";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 160;
        }>;
        icon: import("drizzle-orm/pg-core").PgColumn<{
            name: "icon";
            tableName: "community_channels";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 16;
        }>;
        description: import("drizzle-orm/pg-core").PgColumn<{
            name: "description";
            tableName: "community_channels";
            dataType: "string";
            columnType: "PgText";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        visibility: import("drizzle-orm/pg-core").PgColumn<{
            name: "visibility";
            tableName: "community_channels";
            dataType: "string";
            columnType: "PgEnumColumn";
            data: "MEMBERS" | "ADMINS";
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: ["MEMBERS", "ADMINS"];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        position: import("drizzle-orm/pg-core").PgColumn<{
            name: "position";
            tableName: "community_channels";
            dataType: "number";
            columnType: "PgInteger";
            data: number;
            driverParam: string | number;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        createdAt: import("drizzle-orm/pg-core").PgColumn<{
            name: "created_at";
            tableName: "community_channels";
            dataType: "date";
            columnType: "PgTimestamp";
            data: Date;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        updatedAt: import("drizzle-orm/pg-core").PgColumn<{
            name: "updated_at";
            tableName: "community_channels";
            dataType: "date";
            columnType: "PgTimestamp";
            data: Date;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
    }, "single", Record<"community_channels", "not-null">, false, "where" | "orderBy", {
        id: string;
        name: string;
        icon: string | null;
        description: string | null;
        visibility: "MEMBERS" | "ADMINS";
        position: number;
        createdAt: Date;
        updatedAt: Date;
    }[], {
        id: import("drizzle-orm/pg-core").PgColumn<{
            name: "id";
            tableName: "community_channels";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: true;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 64;
        }>;
        name: import("drizzle-orm/pg-core").PgColumn<{
            name: "name";
            tableName: "community_channels";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 160;
        }>;
        icon: import("drizzle-orm/pg-core").PgColumn<{
            name: "icon";
            tableName: "community_channels";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 16;
        }>;
        description: import("drizzle-orm/pg-core").PgColumn<{
            name: "description";
            tableName: "community_channels";
            dataType: "string";
            columnType: "PgText";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        visibility: import("drizzle-orm/pg-core").PgColumn<{
            name: "visibility";
            tableName: "community_channels";
            dataType: "string";
            columnType: "PgEnumColumn";
            data: "MEMBERS" | "ADMINS";
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: ["MEMBERS", "ADMINS"];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        position: import("drizzle-orm/pg-core").PgColumn<{
            name: "position";
            tableName: "community_channels";
            dataType: "number";
            columnType: "PgInteger";
            data: number;
            driverParam: string | number;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        createdAt: import("drizzle-orm/pg-core").PgColumn<{
            name: "created_at";
            tableName: "community_channels";
            dataType: "date";
            columnType: "PgTimestamp";
            data: Date;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        updatedAt: import("drizzle-orm/pg-core").PgColumn<{
            name: "updated_at";
            tableName: "community_channels";
            dataType: "date";
            columnType: "PgTimestamp";
            data: Date;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
    }>, "where" | "orderBy">;
    channelById(id: string): Promise<{
        id: string;
        name: string;
        icon: string | null;
        description: string | null;
        visibility: "MEMBERS" | "ADMINS";
        position: number;
        createdAt: Date;
        updatedAt: Date;
    }>;
    listPosts(options: {
        channelIds: string[];
        statuses: PostStatus[];
        viewerId: string;
    }): Promise<PostSummary[]>;
    postById(id: string): Promise<{
        id: string;
        legacyId: string | null;
        channelId: string;
        status: "DRAFT" | "PUBLISHED";
        variant: "FULL" | "SHORT";
        title: string;
        excerpt: string | null;
        body: string;
        cover: string | null;
        authorId: string | null;
        authorName: string | null;
        publishedAt: Date | null;
        legacyDate: string | null;
        sourcePath: string | null;
        sourceHash: string | null;
        views: number;
        createdAt: Date;
        updatedAt: Date;
    }>;
    commentsForPost(postId: string): Promise<{
        id: string;
        authorId: string | null;
        authorName: string | null;
        accountName: string | null;
        body: string;
        createdAt: Date;
    }[]>;
    likeCount(postId: string): Promise<number>;
    hasLiked(postId: string, userId: string): Promise<boolean>;
    setLike(postId: string, userId: string, liked: boolean): Promise<void>;
    incrementViews(postId: string): Promise<void>;
    createPost(values: typeof communityPosts.$inferInsert): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        legacyId: string | null;
        channelId: string;
        status: "DRAFT" | "PUBLISHED";
        variant: "FULL" | "SHORT";
        title: string;
        excerpt: string | null;
        body: string;
        cover: string | null;
        authorId: string | null;
        authorName: string | null;
        publishedAt: Date | null;
        legacyDate: string | null;
        sourcePath: string | null;
        sourceHash: string | null;
        views: number;
    }>;
    updatePost(id: string, patch: Partial<typeof communityPosts.$inferInsert>): Promise<{
        id: string;
        legacyId: string | null;
        channelId: string;
        status: "DRAFT" | "PUBLISHED";
        variant: "FULL" | "SHORT";
        title: string;
        excerpt: string | null;
        body: string;
        cover: string | null;
        authorId: string | null;
        authorName: string | null;
        publishedAt: Date | null;
        legacyDate: string | null;
        sourcePath: string | null;
        sourceHash: string | null;
        views: number;
        createdAt: Date;
        updatedAt: Date;
    }>;
    deletePost(id: string): Promise<void>;
    createComment(values: typeof communityPostComments.$inferInsert): Promise<{
        id: string;
        createdAt: Date;
        legacyId: string | null;
        body: string;
        authorId: string | null;
        authorName: string | null;
        postId: string;
    }>;
    commentById(id: string): Promise<{
        id: string;
        legacyId: string | null;
        postId: string;
        authorId: string | null;
        authorName: string | null;
        body: string;
        createdAt: Date;
    }>;
    deleteComment(id: string): Promise<void>;
    listChats(): Omit<import("drizzle-orm/pg-core").PgSelectBase<"community_chats", {
        id: import("drizzle-orm/pg-core").PgColumn<{
            name: "id";
            tableName: "community_chats";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: true;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 64;
        }>;
        name: import("drizzle-orm/pg-core").PgColumn<{
            name: "name";
            tableName: "community_chats";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 160;
        }>;
        description: import("drizzle-orm/pg-core").PgColumn<{
            name: "description";
            tableName: "community_chats";
            dataType: "string";
            columnType: "PgText";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        createdById: import("drizzle-orm/pg-core").PgColumn<{
            name: "created_by_id";
            tableName: "community_chats";
            dataType: "string";
            columnType: "PgUUID";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        createdAt: import("drizzle-orm/pg-core").PgColumn<{
            name: "created_at";
            tableName: "community_chats";
            dataType: "date";
            columnType: "PgTimestamp";
            data: Date;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
    }, "single", Record<"community_chats", "not-null">, false, "orderBy", {
        id: string;
        name: string;
        description: string | null;
        createdById: string | null;
        createdAt: Date;
    }[], {
        id: import("drizzle-orm/pg-core").PgColumn<{
            name: "id";
            tableName: "community_chats";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: true;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 64;
        }>;
        name: import("drizzle-orm/pg-core").PgColumn<{
            name: "name";
            tableName: "community_chats";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 160;
        }>;
        description: import("drizzle-orm/pg-core").PgColumn<{
            name: "description";
            tableName: "community_chats";
            dataType: "string";
            columnType: "PgText";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        createdById: import("drizzle-orm/pg-core").PgColumn<{
            name: "created_by_id";
            tableName: "community_chats";
            dataType: "string";
            columnType: "PgUUID";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        createdAt: import("drizzle-orm/pg-core").PgColumn<{
            name: "created_at";
            tableName: "community_chats";
            dataType: "date";
            columnType: "PgTimestamp";
            data: Date;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
    }>, "orderBy">;
    chatById(id: string): Promise<{
        id: string;
        name: string;
        description: string | null;
        createdById: string | null;
        createdAt: Date;
    }>;
    createChat(values: typeof communityChats.$inferInsert): Promise<{
        id: string;
        name: string;
        createdAt: Date;
        description: string | null;
        createdById: string | null;
    }>;
    messagesForChat(chatId: string, limit: number): Omit<import("drizzle-orm/pg-core").PgSelectBase<"community_chat_messages", {
        id: import("drizzle-orm/pg-core").PgColumn<{
            name: "id";
            tableName: "community_chat_messages";
            dataType: "string";
            columnType: "PgUUID";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: true;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        authorId: import("drizzle-orm/pg-core").PgColumn<{
            name: "author_id";
            tableName: "community_chat_messages";
            dataType: "string";
            columnType: "PgUUID";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        authorName: import("drizzle-orm/pg-core").PgColumn<{
            name: "author_name";
            tableName: "community_chat_messages";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 160;
        }>;
        accountName: import("drizzle-orm/pg-core").PgColumn<{
            name: "display_name";
            tableName: "users";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 120;
        }>;
        body: import("drizzle-orm/pg-core").PgColumn<{
            name: "body";
            tableName: "community_chat_messages";
            dataType: "string";
            columnType: "PgText";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        createdAt: import("drizzle-orm/pg-core").PgColumn<{
            name: "created_at";
            tableName: "community_chat_messages";
            dataType: "date";
            columnType: "PgTimestamp";
            data: Date;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
    }, "partial", Record<"community_chat_messages", "not-null"> & {
        users: "nullable";
    }, false, "where" | "orderBy" | "limit", {
        id: string;
        authorId: string | null;
        authorName: string | null;
        accountName: string | null;
        body: string;
        createdAt: Date;
    }[], {
        id: import("drizzle-orm/pg-core").PgColumn<{
            name: "id";
            tableName: "community_chat_messages";
            dataType: "string";
            columnType: "PgUUID";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: true;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        authorId: import("drizzle-orm/pg-core").PgColumn<{
            name: "author_id";
            tableName: "community_chat_messages";
            dataType: "string";
            columnType: "PgUUID";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        authorName: import("drizzle-orm/pg-core").PgColumn<{
            name: "author_name";
            tableName: "community_chat_messages";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {
            length: 160;
        }>;
        accountName: import("drizzle-orm").Column<import("drizzle-orm").UpdateColConfig<import("drizzle-orm").ColumnTypeConfig<{
            name: "display_name";
            tableName: "users";
            dataType: "string";
            columnType: "PgVarchar";
            data: string;
            driverParam: string;
            notNull: false;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {
            length: 120;
        } & {
            dialect: "pg";
        }>, {
            notNull: false;
        }>, object, object>;
        body: import("drizzle-orm/pg-core").PgColumn<{
            name: "body";
            tableName: "community_chat_messages";
            dataType: "string";
            columnType: "PgText";
            data: string;
            driverParam: string;
            notNull: true;
            hasDefault: false;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: [string, ...string[]];
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
        createdAt: import("drizzle-orm/pg-core").PgColumn<{
            name: "created_at";
            tableName: "community_chat_messages";
            dataType: "date";
            columnType: "PgTimestamp";
            data: Date;
            driverParam: string;
            notNull: true;
            hasDefault: true;
            isPrimaryKey: false;
            isAutoincrement: false;
            hasRuntimeDefault: false;
            enumValues: undefined;
            baseColumn: never;
            identity: undefined;
            generated: undefined;
        }, {}, {}>;
    }>, "where" | "orderBy" | "limit">;
    createMessage(values: typeof communityChatMessages.$inferInsert): Promise<{
        id: string;
        createdAt: Date;
        legacyId: string | null;
        body: string;
        authorId: string | null;
        authorName: string | null;
        chatId: string;
    }>;
    createChannel(values: typeof communityChannels.$inferInsert): Promise<{
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        description: string | null;
        icon: string | null;
        visibility: "MEMBERS" | "ADMINS";
        position: number;
    }>;
    updateChannel(id: string, patch: Partial<typeof communityChannels.$inferInsert>): Promise<{
        id: string;
        name: string;
        icon: string | null;
        description: string | null;
        visibility: "MEMBERS" | "ADMINS";
        position: number;
        createdAt: Date;
        updatedAt: Date;
    }>;
    countPostsInChannel(channelId: string): Promise<number>;
    deleteChannel(id: string): Promise<void>;
    listAnnouncements(options: {
        statuses: PostStatus[];
        viewerId: string;
    }): Promise<{
        reads: number;
        id: string;
        status: "DRAFT" | "PUBLISHED";
        title: string;
        summary: string | null;
        body: string;
        cover: string | null;
        pinned: boolean;
        authorName: string | null;
        publishedAt: Date | null;
        createdAt: Date;
        readByMe: boolean;
    }[]>;
    announcementById(id: string): Promise<{
        id: string;
        status: "DRAFT" | "PUBLISHED";
        title: string;
        summary: string | null;
        body: string;
        cover: string | null;
        pinned: boolean;
        authorId: string | null;
        authorName: string | null;
        publishedAt: Date | null;
        createdAt: Date;
        updatedAt: Date;
    }>;
    createAnnouncement(values: typeof communityAnnouncements.$inferInsert): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        status: "DRAFT" | "PUBLISHED";
        title: string;
        body: string;
        cover: string | null;
        authorId: string | null;
        authorName: string | null;
        publishedAt: Date | null;
        summary: string | null;
        pinned: boolean;
    }>;
    updateAnnouncement(id: string, patch: Partial<typeof communityAnnouncements.$inferInsert>): Promise<{
        id: string;
        status: "DRAFT" | "PUBLISHED";
        title: string;
        summary: string | null;
        body: string;
        cover: string | null;
        pinned: boolean;
        authorId: string | null;
        authorName: string | null;
        publishedAt: Date | null;
        createdAt: Date;
        updatedAt: Date;
    }>;
    deleteAnnouncement(id: string): Promise<void>;
    markAnnouncementRead(announcementId: string, userId: string): Promise<void>;
    activeMemberCount(): Promise<number>;
    settings(): Promise<Record<string, unknown>>;
    setSetting(key: string, value: unknown): Promise<void>;
}
