import { z } from "zod";
export declare const EntityId: z.ZodNumber;
export type EntityId = z.infer<typeof EntityId>;
/** @deprecated Use EntityId */
export declare const Ulid: z.ZodNumber;
export declare const Role: z.ZodEnum<["owner", "admin", "member", "multi_channel_guest", "single_channel_guest", "bot"]>;
export type Role = z.infer<typeof Role>;
export declare const ChannelType: z.ZodEnum<["public", "private", "dm", "group_dm"]>;
export type ChannelType = z.infer<typeof ChannelType>;
export declare const User: z.ZodObject<{
    id: z.ZodNumber;
    email: z.ZodString;
    emailVerifiedAt: z.ZodNullable<z.ZodString>;
    name: z.ZodString;
    username: z.ZodString;
    avatarUrl: z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodString]>>;
    tz: z.ZodString;
    createdAt: z.ZodString;
}, "strip", z.ZodTypeAny, {
    id: number;
    email: string;
    emailVerifiedAt: string | null;
    name: string;
    username: string;
    avatarUrl: string | null;
    tz: string;
    createdAt: string;
}, {
    id: number;
    email: string;
    emailVerifiedAt: string | null;
    name: string;
    username: string;
    avatarUrl: string | null;
    tz: string;
    createdAt: string;
}>;
export type User = z.infer<typeof User>;
export declare const Workspace: z.ZodObject<{
    id: z.ZodNumber;
    orgId: z.ZodNumber;
    slug: z.ZodString;
    name: z.ZodString;
    iconUrl: z.ZodNullable<z.ZodString>;
    retentionDays: z.ZodNullable<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
    id: number;
    name: string;
    orgId: number;
    slug: string;
    iconUrl: string | null;
    retentionDays: number | null;
}, {
    id: number;
    name: string;
    orgId: number;
    slug: string;
    iconUrl: string | null;
    retentionDays: number | null;
}>;
export type Workspace = z.infer<typeof Workspace>;
export declare const WorkspaceMember: z.ZodObject<{
    workspaceId: z.ZodNumber;
    userId: z.ZodNumber;
    role: z.ZodEnum<["owner", "admin", "member", "multi_channel_guest", "single_channel_guest", "bot"]>;
    displayName: z.ZodNullable<z.ZodString>;
    title: z.ZodNullable<z.ZodString>;
    statusText: z.ZodNullable<z.ZodString>;
    statusEmoji: z.ZodNullable<z.ZodString>;
    statusExpiresAt: z.ZodNullable<z.ZodString>;
    availabilityMode: z.ZodEnum<["auto", "away", "available"]>;
    dndEnabled: z.ZodBoolean;
    dndUntil: z.ZodNullable<z.ZodString>;
    joinedAt: z.ZodString;
    deactivatedAt: z.ZodNullable<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    title: string | null;
    workspaceId: number;
    userId: number;
    role: "owner" | "admin" | "member" | "multi_channel_guest" | "single_channel_guest" | "bot";
    displayName: string | null;
    statusText: string | null;
    statusEmoji: string | null;
    statusExpiresAt: string | null;
    availabilityMode: "auto" | "away" | "available";
    dndEnabled: boolean;
    dndUntil: string | null;
    joinedAt: string;
    deactivatedAt: string | null;
}, {
    title: string | null;
    workspaceId: number;
    userId: number;
    role: "owner" | "admin" | "member" | "multi_channel_guest" | "single_channel_guest" | "bot";
    displayName: string | null;
    statusText: string | null;
    statusEmoji: string | null;
    statusExpiresAt: string | null;
    availabilityMode: "auto" | "away" | "available";
    dndEnabled: boolean;
    dndUntil: string | null;
    joinedAt: string;
    deactivatedAt: string | null;
}>;
export type WorkspaceMember = z.infer<typeof WorkspaceMember>;
export declare const Channel: z.ZodObject<{
    id: z.ZodNumber;
    workspaceId: z.ZodNumber;
    type: z.ZodEnum<["public", "private", "dm", "group_dm"]>;
    name: z.ZodNullable<z.ZodString>;
    topic: z.ZodNullable<z.ZodString>;
    purpose: z.ZodNullable<z.ZodString>;
    createdBy: z.ZodNumber;
    isArchived: z.ZodBoolean;
    lastMessageAt: z.ZodNullable<z.ZodString>;
    memberCount: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
    type: "public" | "private" | "dm" | "group_dm";
    id: number;
    name: string | null;
    workspaceId: number;
    topic: string | null;
    purpose: string | null;
    createdBy: number;
    isArchived: boolean;
    lastMessageAt: string | null;
    memberCount: number;
}, {
    type: "public" | "private" | "dm" | "group_dm";
    id: number;
    name: string | null;
    workspaceId: number;
    topic: string | null;
    purpose: string | null;
    createdBy: number;
    isArchived: boolean;
    lastMessageAt: string | null;
    memberCount: number;
}>;
export type Channel = z.infer<typeof Channel>;
export declare const ForwardedMessageSnapshot: z.ZodObject<{
    messageId: z.ZodNumber;
    channelId: z.ZodNumber;
    parentId: z.ZodNullable<z.ZodNumber>;
    channelName: z.ZodNullable<z.ZodString>;
    channelType: z.ZodEnum<["public", "private", "dm", "group_dm"]>;
    authorId: z.ZodNumber;
    authorName: z.ZodString;
    authorAvatarUrl: z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodString]>>;
    text: z.ZodString;
    createdAt: z.ZodString;
    attachmentNames: z.ZodArray<z.ZodString, "many">;
}, "strip", z.ZodTypeAny, {
    createdAt: string;
    messageId: number;
    channelId: number;
    parentId: number | null;
    channelName: string | null;
    channelType: "public" | "private" | "dm" | "group_dm";
    authorId: number;
    authorName: string;
    authorAvatarUrl: string | null;
    text: string;
    attachmentNames: string[];
}, {
    createdAt: string;
    messageId: number;
    channelId: number;
    parentId: number | null;
    channelName: string | null;
    channelType: "public" | "private" | "dm" | "group_dm";
    authorId: number;
    authorName: string;
    authorAvatarUrl: string | null;
    text: string;
    attachmentNames: string[];
}>;
export type ForwardedMessageSnapshot = z.infer<typeof ForwardedMessageSnapshot>;
export declare const BlocksV1: z.ZodObject<{
    v: z.ZodLiteral<1>;
    doc: z.ZodRecord<z.ZodString, z.ZodUnknown>;
    forwardedMessage: z.ZodOptional<z.ZodObject<{
        messageId: z.ZodNumber;
        channelId: z.ZodNumber;
        parentId: z.ZodNullable<z.ZodNumber>;
        channelName: z.ZodNullable<z.ZodString>;
        channelType: z.ZodEnum<["public", "private", "dm", "group_dm"]>;
        authorId: z.ZodNumber;
        authorName: z.ZodString;
        authorAvatarUrl: z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodString]>>;
        text: z.ZodString;
        createdAt: z.ZodString;
        attachmentNames: z.ZodArray<z.ZodString, "many">;
    }, "strip", z.ZodTypeAny, {
        createdAt: string;
        messageId: number;
        channelId: number;
        parentId: number | null;
        channelName: string | null;
        channelType: "public" | "private" | "dm" | "group_dm";
        authorId: number;
        authorName: string;
        authorAvatarUrl: string | null;
        text: string;
        attachmentNames: string[];
    }, {
        createdAt: string;
        messageId: number;
        channelId: number;
        parentId: number | null;
        channelName: string | null;
        channelType: "public" | "private" | "dm" | "group_dm";
        authorId: number;
        authorName: string;
        authorAvatarUrl: string | null;
        text: string;
        attachmentNames: string[];
    }>>;
}, "strip", z.ZodTypeAny, {
    v: 1;
    doc: Record<string, unknown>;
    forwardedMessage?: {
        createdAt: string;
        messageId: number;
        channelId: number;
        parentId: number | null;
        channelName: string | null;
        channelType: "public" | "private" | "dm" | "group_dm";
        authorId: number;
        authorName: string;
        authorAvatarUrl: string | null;
        text: string;
        attachmentNames: string[];
    } | undefined;
}, {
    v: 1;
    doc: Record<string, unknown>;
    forwardedMessage?: {
        createdAt: string;
        messageId: number;
        channelId: number;
        parentId: number | null;
        channelName: string | null;
        channelType: "public" | "private" | "dm" | "group_dm";
        authorId: number;
        authorName: string;
        authorAvatarUrl: string | null;
        text: string;
        attachmentNames: string[];
    } | undefined;
}>;
export type BlocksV1 = z.infer<typeof BlocksV1>;
export declare const Blocks: z.ZodDiscriminatedUnion<"v", [z.ZodObject<{
    v: z.ZodLiteral<1>;
    doc: z.ZodRecord<z.ZodString, z.ZodUnknown>;
    forwardedMessage: z.ZodOptional<z.ZodObject<{
        messageId: z.ZodNumber;
        channelId: z.ZodNumber;
        parentId: z.ZodNullable<z.ZodNumber>;
        channelName: z.ZodNullable<z.ZodString>;
        channelType: z.ZodEnum<["public", "private", "dm", "group_dm"]>;
        authorId: z.ZodNumber;
        authorName: z.ZodString;
        authorAvatarUrl: z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodString]>>;
        text: z.ZodString;
        createdAt: z.ZodString;
        attachmentNames: z.ZodArray<z.ZodString, "many">;
    }, "strip", z.ZodTypeAny, {
        createdAt: string;
        messageId: number;
        channelId: number;
        parentId: number | null;
        channelName: string | null;
        channelType: "public" | "private" | "dm" | "group_dm";
        authorId: number;
        authorName: string;
        authorAvatarUrl: string | null;
        text: string;
        attachmentNames: string[];
    }, {
        createdAt: string;
        messageId: number;
        channelId: number;
        parentId: number | null;
        channelName: string | null;
        channelType: "public" | "private" | "dm" | "group_dm";
        authorId: number;
        authorName: string;
        authorAvatarUrl: string | null;
        text: string;
        attachmentNames: string[];
    }>>;
}, "strip", z.ZodTypeAny, {
    v: 1;
    doc: Record<string, unknown>;
    forwardedMessage?: {
        createdAt: string;
        messageId: number;
        channelId: number;
        parentId: number | null;
        channelName: string | null;
        channelType: "public" | "private" | "dm" | "group_dm";
        authorId: number;
        authorName: string;
        authorAvatarUrl: string | null;
        text: string;
        attachmentNames: string[];
    } | undefined;
}, {
    v: 1;
    doc: Record<string, unknown>;
    forwardedMessage?: {
        createdAt: string;
        messageId: number;
        channelId: number;
        parentId: number | null;
        channelName: string | null;
        channelType: "public" | "private" | "dm" | "group_dm";
        authorId: number;
        authorName: string;
        authorAvatarUrl: string | null;
        text: string;
        attachmentNames: string[];
    } | undefined;
}>]>;
export type Blocks = z.infer<typeof Blocks>;
export declare const MessageReactionSummary: z.ZodObject<{
    emoji: z.ZodString;
    count: z.ZodNumber;
    reactedByMe: z.ZodBoolean;
}, "strip", z.ZodTypeAny, {
    emoji: string;
    count: number;
    reactedByMe: boolean;
}, {
    emoji: string;
    count: number;
    reactedByMe: boolean;
}>;
export type MessageReactionSummary = z.infer<typeof MessageReactionSummary>;
export declare const Message: z.ZodObject<{
    id: z.ZodNumber;
    workspaceId: z.ZodNumber;
    channelId: z.ZodNumber;
    seq: z.ZodNumber;
    clientMsgId: z.ZodString;
    authorId: z.ZodNumber;
    type: z.ZodEnum<["text", "system"]>;
    text: z.ZodString;
    blocks: z.ZodDiscriminatedUnion<"v", [z.ZodObject<{
        v: z.ZodLiteral<1>;
        doc: z.ZodRecord<z.ZodString, z.ZodUnknown>;
        forwardedMessage: z.ZodOptional<z.ZodObject<{
            messageId: z.ZodNumber;
            channelId: z.ZodNumber;
            parentId: z.ZodNullable<z.ZodNumber>;
            channelName: z.ZodNullable<z.ZodString>;
            channelType: z.ZodEnum<["public", "private", "dm", "group_dm"]>;
            authorId: z.ZodNumber;
            authorName: z.ZodString;
            authorAvatarUrl: z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodString]>>;
            text: z.ZodString;
            createdAt: z.ZodString;
            attachmentNames: z.ZodArray<z.ZodString, "many">;
        }, "strip", z.ZodTypeAny, {
            createdAt: string;
            messageId: number;
            channelId: number;
            parentId: number | null;
            channelName: string | null;
            channelType: "public" | "private" | "dm" | "group_dm";
            authorId: number;
            authorName: string;
            authorAvatarUrl: string | null;
            text: string;
            attachmentNames: string[];
        }, {
            createdAt: string;
            messageId: number;
            channelId: number;
            parentId: number | null;
            channelName: string | null;
            channelType: "public" | "private" | "dm" | "group_dm";
            authorId: number;
            authorName: string;
            authorAvatarUrl: string | null;
            text: string;
            attachmentNames: string[];
        }>>;
    }, "strip", z.ZodTypeAny, {
        v: 1;
        doc: Record<string, unknown>;
        forwardedMessage?: {
            createdAt: string;
            messageId: number;
            channelId: number;
            parentId: number | null;
            channelName: string | null;
            channelType: "public" | "private" | "dm" | "group_dm";
            authorId: number;
            authorName: string;
            authorAvatarUrl: string | null;
            text: string;
            attachmentNames: string[];
        } | undefined;
    }, {
        v: 1;
        doc: Record<string, unknown>;
        forwardedMessage?: {
            createdAt: string;
            messageId: number;
            channelId: number;
            parentId: number | null;
            channelName: string | null;
            channelType: "public" | "private" | "dm" | "group_dm";
            authorId: number;
            authorName: string;
            authorAvatarUrl: string | null;
            text: string;
            attachmentNames: string[];
        } | undefined;
    }>]>;
    revision: z.ZodNumber;
    parentId: z.ZodNullable<z.ZodNumber>;
    isBroadcast: z.ZodBoolean;
    threadReplyCount: z.ZodNumber;
    threadLastReplyAt: z.ZodNullable<z.ZodString>;
    editedAt: z.ZodNullable<z.ZodString>;
    deletedAt: z.ZodNullable<z.ZodString>;
    createdAt: z.ZodString;
    reactions: z.ZodOptional<z.ZodArray<z.ZodObject<{
        emoji: z.ZodString;
        count: z.ZodNumber;
        reactedByMe: z.ZodBoolean;
    }, "strip", z.ZodTypeAny, {
        emoji: string;
        count: number;
        reactedByMe: boolean;
    }, {
        emoji: string;
        count: number;
        reactedByMe: boolean;
    }>, "many">>;
}, "strip", z.ZodTypeAny, {
    type: "text" | "system";
    id: number;
    createdAt: string;
    workspaceId: number;
    channelId: number;
    parentId: number | null;
    authorId: number;
    text: string;
    seq: number;
    clientMsgId: string;
    blocks: {
        v: 1;
        doc: Record<string, unknown>;
        forwardedMessage?: {
            createdAt: string;
            messageId: number;
            channelId: number;
            parentId: number | null;
            channelName: string | null;
            channelType: "public" | "private" | "dm" | "group_dm";
            authorId: number;
            authorName: string;
            authorAvatarUrl: string | null;
            text: string;
            attachmentNames: string[];
        } | undefined;
    };
    revision: number;
    isBroadcast: boolean;
    threadReplyCount: number;
    threadLastReplyAt: string | null;
    editedAt: string | null;
    deletedAt: string | null;
    reactions?: {
        emoji: string;
        count: number;
        reactedByMe: boolean;
    }[] | undefined;
}, {
    type: "text" | "system";
    id: number;
    createdAt: string;
    workspaceId: number;
    channelId: number;
    parentId: number | null;
    authorId: number;
    text: string;
    seq: number;
    clientMsgId: string;
    blocks: {
        v: 1;
        doc: Record<string, unknown>;
        forwardedMessage?: {
            createdAt: string;
            messageId: number;
            channelId: number;
            parentId: number | null;
            channelName: string | null;
            channelType: "public" | "private" | "dm" | "group_dm";
            authorId: number;
            authorName: string;
            authorAvatarUrl: string | null;
            text: string;
            attachmentNames: string[];
        } | undefined;
    };
    revision: number;
    isBroadcast: boolean;
    threadReplyCount: number;
    threadLastReplyAt: string | null;
    editedAt: string | null;
    deletedAt: string | null;
    reactions?: {
        emoji: string;
        count: number;
        reactedByMe: boolean;
    }[] | undefined;
}>;
export type Message = z.infer<typeof Message>;
export declare const ThreadParticipant: z.ZodObject<{
    userId: z.ZodNumber;
    name: z.ZodString;
    avatarUrl: z.ZodNullable<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    name: string;
    avatarUrl: string | null;
    userId: number;
}, {
    name: string;
    avatarUrl: string | null;
    userId: number;
}>;
export type ThreadParticipant = z.infer<typeof ThreadParticipant>;
export declare const ThreadSummary: z.ZodObject<{
    rootMessage: z.ZodObject<{
        id: z.ZodNumber;
        workspaceId: z.ZodNumber;
        channelId: z.ZodNumber;
        seq: z.ZodNumber;
        clientMsgId: z.ZodString;
        authorId: z.ZodNumber;
        type: z.ZodEnum<["text", "system"]>;
        text: z.ZodString;
        blocks: z.ZodDiscriminatedUnion<"v", [z.ZodObject<{
            v: z.ZodLiteral<1>;
            doc: z.ZodRecord<z.ZodString, z.ZodUnknown>;
            forwardedMessage: z.ZodOptional<z.ZodObject<{
                messageId: z.ZodNumber;
                channelId: z.ZodNumber;
                parentId: z.ZodNullable<z.ZodNumber>;
                channelName: z.ZodNullable<z.ZodString>;
                channelType: z.ZodEnum<["public", "private", "dm", "group_dm"]>;
                authorId: z.ZodNumber;
                authorName: z.ZodString;
                authorAvatarUrl: z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodString]>>;
                text: z.ZodString;
                createdAt: z.ZodString;
                attachmentNames: z.ZodArray<z.ZodString, "many">;
            }, "strip", z.ZodTypeAny, {
                createdAt: string;
                messageId: number;
                channelId: number;
                parentId: number | null;
                channelName: string | null;
                channelType: "public" | "private" | "dm" | "group_dm";
                authorId: number;
                authorName: string;
                authorAvatarUrl: string | null;
                text: string;
                attachmentNames: string[];
            }, {
                createdAt: string;
                messageId: number;
                channelId: number;
                parentId: number | null;
                channelName: string | null;
                channelType: "public" | "private" | "dm" | "group_dm";
                authorId: number;
                authorName: string;
                authorAvatarUrl: string | null;
                text: string;
                attachmentNames: string[];
            }>>;
        }, "strip", z.ZodTypeAny, {
            v: 1;
            doc: Record<string, unknown>;
            forwardedMessage?: {
                createdAt: string;
                messageId: number;
                channelId: number;
                parentId: number | null;
                channelName: string | null;
                channelType: "public" | "private" | "dm" | "group_dm";
                authorId: number;
                authorName: string;
                authorAvatarUrl: string | null;
                text: string;
                attachmentNames: string[];
            } | undefined;
        }, {
            v: 1;
            doc: Record<string, unknown>;
            forwardedMessage?: {
                createdAt: string;
                messageId: number;
                channelId: number;
                parentId: number | null;
                channelName: string | null;
                channelType: "public" | "private" | "dm" | "group_dm";
                authorId: number;
                authorName: string;
                authorAvatarUrl: string | null;
                text: string;
                attachmentNames: string[];
            } | undefined;
        }>]>;
        revision: z.ZodNumber;
        parentId: z.ZodNullable<z.ZodNumber>;
        isBroadcast: z.ZodBoolean;
        threadReplyCount: z.ZodNumber;
        threadLastReplyAt: z.ZodNullable<z.ZodString>;
        editedAt: z.ZodNullable<z.ZodString>;
        deletedAt: z.ZodNullable<z.ZodString>;
        createdAt: z.ZodString;
        reactions: z.ZodOptional<z.ZodArray<z.ZodObject<{
            emoji: z.ZodString;
            count: z.ZodNumber;
            reactedByMe: z.ZodBoolean;
        }, "strip", z.ZodTypeAny, {
            emoji: string;
            count: number;
            reactedByMe: boolean;
        }, {
            emoji: string;
            count: number;
            reactedByMe: boolean;
        }>, "many">>;
    }, "strip", z.ZodTypeAny, {
        type: "text" | "system";
        id: number;
        createdAt: string;
        workspaceId: number;
        channelId: number;
        parentId: number | null;
        authorId: number;
        text: string;
        seq: number;
        clientMsgId: string;
        blocks: {
            v: 1;
            doc: Record<string, unknown>;
            forwardedMessage?: {
                createdAt: string;
                messageId: number;
                channelId: number;
                parentId: number | null;
                channelName: string | null;
                channelType: "public" | "private" | "dm" | "group_dm";
                authorId: number;
                authorName: string;
                authorAvatarUrl: string | null;
                text: string;
                attachmentNames: string[];
            } | undefined;
        };
        revision: number;
        isBroadcast: boolean;
        threadReplyCount: number;
        threadLastReplyAt: string | null;
        editedAt: string | null;
        deletedAt: string | null;
        reactions?: {
            emoji: string;
            count: number;
            reactedByMe: boolean;
        }[] | undefined;
    }, {
        type: "text" | "system";
        id: number;
        createdAt: string;
        workspaceId: number;
        channelId: number;
        parentId: number | null;
        authorId: number;
        text: string;
        seq: number;
        clientMsgId: string;
        blocks: {
            v: 1;
            doc: Record<string, unknown>;
            forwardedMessage?: {
                createdAt: string;
                messageId: number;
                channelId: number;
                parentId: number | null;
                channelName: string | null;
                channelType: "public" | "private" | "dm" | "group_dm";
                authorId: number;
                authorName: string;
                authorAvatarUrl: string | null;
                text: string;
                attachmentNames: string[];
            } | undefined;
        };
        revision: number;
        isBroadcast: boolean;
        threadReplyCount: number;
        threadLastReplyAt: string | null;
        editedAt: string | null;
        deletedAt: string | null;
        reactions?: {
            emoji: string;
            count: number;
            reactedByMe: boolean;
        }[] | undefined;
    }>;
    latestReply: z.ZodNullable<z.ZodObject<{
        id: z.ZodNumber;
        workspaceId: z.ZodNumber;
        channelId: z.ZodNumber;
        seq: z.ZodNumber;
        clientMsgId: z.ZodString;
        authorId: z.ZodNumber;
        type: z.ZodEnum<["text", "system"]>;
        text: z.ZodString;
        blocks: z.ZodDiscriminatedUnion<"v", [z.ZodObject<{
            v: z.ZodLiteral<1>;
            doc: z.ZodRecord<z.ZodString, z.ZodUnknown>;
            forwardedMessage: z.ZodOptional<z.ZodObject<{
                messageId: z.ZodNumber;
                channelId: z.ZodNumber;
                parentId: z.ZodNullable<z.ZodNumber>;
                channelName: z.ZodNullable<z.ZodString>;
                channelType: z.ZodEnum<["public", "private", "dm", "group_dm"]>;
                authorId: z.ZodNumber;
                authorName: z.ZodString;
                authorAvatarUrl: z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodString]>>;
                text: z.ZodString;
                createdAt: z.ZodString;
                attachmentNames: z.ZodArray<z.ZodString, "many">;
            }, "strip", z.ZodTypeAny, {
                createdAt: string;
                messageId: number;
                channelId: number;
                parentId: number | null;
                channelName: string | null;
                channelType: "public" | "private" | "dm" | "group_dm";
                authorId: number;
                authorName: string;
                authorAvatarUrl: string | null;
                text: string;
                attachmentNames: string[];
            }, {
                createdAt: string;
                messageId: number;
                channelId: number;
                parentId: number | null;
                channelName: string | null;
                channelType: "public" | "private" | "dm" | "group_dm";
                authorId: number;
                authorName: string;
                authorAvatarUrl: string | null;
                text: string;
                attachmentNames: string[];
            }>>;
        }, "strip", z.ZodTypeAny, {
            v: 1;
            doc: Record<string, unknown>;
            forwardedMessage?: {
                createdAt: string;
                messageId: number;
                channelId: number;
                parentId: number | null;
                channelName: string | null;
                channelType: "public" | "private" | "dm" | "group_dm";
                authorId: number;
                authorName: string;
                authorAvatarUrl: string | null;
                text: string;
                attachmentNames: string[];
            } | undefined;
        }, {
            v: 1;
            doc: Record<string, unknown>;
            forwardedMessage?: {
                createdAt: string;
                messageId: number;
                channelId: number;
                parentId: number | null;
                channelName: string | null;
                channelType: "public" | "private" | "dm" | "group_dm";
                authorId: number;
                authorName: string;
                authorAvatarUrl: string | null;
                text: string;
                attachmentNames: string[];
            } | undefined;
        }>]>;
        revision: z.ZodNumber;
        parentId: z.ZodNullable<z.ZodNumber>;
        isBroadcast: z.ZodBoolean;
        threadReplyCount: z.ZodNumber;
        threadLastReplyAt: z.ZodNullable<z.ZodString>;
        editedAt: z.ZodNullable<z.ZodString>;
        deletedAt: z.ZodNullable<z.ZodString>;
        createdAt: z.ZodString;
        reactions: z.ZodOptional<z.ZodArray<z.ZodObject<{
            emoji: z.ZodString;
            count: z.ZodNumber;
            reactedByMe: z.ZodBoolean;
        }, "strip", z.ZodTypeAny, {
            emoji: string;
            count: number;
            reactedByMe: boolean;
        }, {
            emoji: string;
            count: number;
            reactedByMe: boolean;
        }>, "many">>;
    }, "strip", z.ZodTypeAny, {
        type: "text" | "system";
        id: number;
        createdAt: string;
        workspaceId: number;
        channelId: number;
        parentId: number | null;
        authorId: number;
        text: string;
        seq: number;
        clientMsgId: string;
        blocks: {
            v: 1;
            doc: Record<string, unknown>;
            forwardedMessage?: {
                createdAt: string;
                messageId: number;
                channelId: number;
                parentId: number | null;
                channelName: string | null;
                channelType: "public" | "private" | "dm" | "group_dm";
                authorId: number;
                authorName: string;
                authorAvatarUrl: string | null;
                text: string;
                attachmentNames: string[];
            } | undefined;
        };
        revision: number;
        isBroadcast: boolean;
        threadReplyCount: number;
        threadLastReplyAt: string | null;
        editedAt: string | null;
        deletedAt: string | null;
        reactions?: {
            emoji: string;
            count: number;
            reactedByMe: boolean;
        }[] | undefined;
    }, {
        type: "text" | "system";
        id: number;
        createdAt: string;
        workspaceId: number;
        channelId: number;
        parentId: number | null;
        authorId: number;
        text: string;
        seq: number;
        clientMsgId: string;
        blocks: {
            v: 1;
            doc: Record<string, unknown>;
            forwardedMessage?: {
                createdAt: string;
                messageId: number;
                channelId: number;
                parentId: number | null;
                channelName: string | null;
                channelType: "public" | "private" | "dm" | "group_dm";
                authorId: number;
                authorName: string;
                authorAvatarUrl: string | null;
                text: string;
                attachmentNames: string[];
            } | undefined;
        };
        revision: number;
        isBroadcast: boolean;
        threadReplyCount: number;
        threadLastReplyAt: string | null;
        editedAt: string | null;
        deletedAt: string | null;
        reactions?: {
            emoji: string;
            count: number;
            reactedByMe: boolean;
        }[] | undefined;
    }>>;
    channelName: z.ZodNullable<z.ZodString>;
    following: z.ZodBoolean;
    reason: z.ZodString;
    lastReadReplySeq: z.ZodNumber;
    unreadReplyCount: z.ZodNumber;
    participants: z.ZodArray<z.ZodObject<{
        userId: z.ZodNumber;
        name: z.ZodString;
        avatarUrl: z.ZodNullable<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        name: string;
        avatarUrl: string | null;
        userId: number;
    }, {
        name: string;
        avatarUrl: string | null;
        userId: number;
    }>, "many">;
}, "strip", z.ZodTypeAny, {
    channelName: string | null;
    rootMessage: {
        type: "text" | "system";
        id: number;
        createdAt: string;
        workspaceId: number;
        channelId: number;
        parentId: number | null;
        authorId: number;
        text: string;
        seq: number;
        clientMsgId: string;
        blocks: {
            v: 1;
            doc: Record<string, unknown>;
            forwardedMessage?: {
                createdAt: string;
                messageId: number;
                channelId: number;
                parentId: number | null;
                channelName: string | null;
                channelType: "public" | "private" | "dm" | "group_dm";
                authorId: number;
                authorName: string;
                authorAvatarUrl: string | null;
                text: string;
                attachmentNames: string[];
            } | undefined;
        };
        revision: number;
        isBroadcast: boolean;
        threadReplyCount: number;
        threadLastReplyAt: string | null;
        editedAt: string | null;
        deletedAt: string | null;
        reactions?: {
            emoji: string;
            count: number;
            reactedByMe: boolean;
        }[] | undefined;
    };
    latestReply: {
        type: "text" | "system";
        id: number;
        createdAt: string;
        workspaceId: number;
        channelId: number;
        parentId: number | null;
        authorId: number;
        text: string;
        seq: number;
        clientMsgId: string;
        blocks: {
            v: 1;
            doc: Record<string, unknown>;
            forwardedMessage?: {
                createdAt: string;
                messageId: number;
                channelId: number;
                parentId: number | null;
                channelName: string | null;
                channelType: "public" | "private" | "dm" | "group_dm";
                authorId: number;
                authorName: string;
                authorAvatarUrl: string | null;
                text: string;
                attachmentNames: string[];
            } | undefined;
        };
        revision: number;
        isBroadcast: boolean;
        threadReplyCount: number;
        threadLastReplyAt: string | null;
        editedAt: string | null;
        deletedAt: string | null;
        reactions?: {
            emoji: string;
            count: number;
            reactedByMe: boolean;
        }[] | undefined;
    } | null;
    following: boolean;
    reason: string;
    lastReadReplySeq: number;
    unreadReplyCount: number;
    participants: {
        name: string;
        avatarUrl: string | null;
        userId: number;
    }[];
}, {
    channelName: string | null;
    rootMessage: {
        type: "text" | "system";
        id: number;
        createdAt: string;
        workspaceId: number;
        channelId: number;
        parentId: number | null;
        authorId: number;
        text: string;
        seq: number;
        clientMsgId: string;
        blocks: {
            v: 1;
            doc: Record<string, unknown>;
            forwardedMessage?: {
                createdAt: string;
                messageId: number;
                channelId: number;
                parentId: number | null;
                channelName: string | null;
                channelType: "public" | "private" | "dm" | "group_dm";
                authorId: number;
                authorName: string;
                authorAvatarUrl: string | null;
                text: string;
                attachmentNames: string[];
            } | undefined;
        };
        revision: number;
        isBroadcast: boolean;
        threadReplyCount: number;
        threadLastReplyAt: string | null;
        editedAt: string | null;
        deletedAt: string | null;
        reactions?: {
            emoji: string;
            count: number;
            reactedByMe: boolean;
        }[] | undefined;
    };
    latestReply: {
        type: "text" | "system";
        id: number;
        createdAt: string;
        workspaceId: number;
        channelId: number;
        parentId: number | null;
        authorId: number;
        text: string;
        seq: number;
        clientMsgId: string;
        blocks: {
            v: 1;
            doc: Record<string, unknown>;
            forwardedMessage?: {
                createdAt: string;
                messageId: number;
                channelId: number;
                parentId: number | null;
                channelName: string | null;
                channelType: "public" | "private" | "dm" | "group_dm";
                authorId: number;
                authorName: string;
                authorAvatarUrl: string | null;
                text: string;
                attachmentNames: string[];
            } | undefined;
        };
        revision: number;
        isBroadcast: boolean;
        threadReplyCount: number;
        threadLastReplyAt: string | null;
        editedAt: string | null;
        deletedAt: string | null;
        reactions?: {
            emoji: string;
            count: number;
            reactedByMe: boolean;
        }[] | undefined;
    } | null;
    following: boolean;
    reason: string;
    lastReadReplySeq: number;
    unreadReplyCount: number;
    participants: {
        name: string;
        avatarUrl: string | null;
        userId: number;
    }[];
}>;
export type ThreadSummary = z.infer<typeof ThreadSummary>;
export declare const ThreadSubscriptionStatus: z.ZodObject<{
    workspaceId: z.ZodNumber;
    channelId: z.ZodNumber;
    rootMessageId: z.ZodNumber;
    following: z.ZodBoolean;
    reason: z.ZodNullable<z.ZodString>;
    lastReadReplySeq: z.ZodNumber;
    unreadReplyCount: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
    workspaceId: number;
    channelId: number;
    following: boolean;
    reason: string | null;
    lastReadReplySeq: number;
    unreadReplyCount: number;
    rootMessageId: number;
}, {
    workspaceId: number;
    channelId: number;
    following: boolean;
    reason: string | null;
    lastReadReplySeq: number;
    unreadReplyCount: number;
    rootMessageId: number;
}>;
export type ThreadSubscriptionStatus = z.infer<typeof ThreadSubscriptionStatus>;
export declare const SavedItem: z.ZodObject<{
    id: z.ZodNumber;
    workspaceId: z.ZodNumber;
    channelId: z.ZodNumber;
    channelName: z.ZodNullable<z.ZodString>;
    authorName: z.ZodString;
    text: z.ZodString;
    createdAt: z.ZodString;
    savedAt: z.ZodString;
}, "strip", z.ZodTypeAny, {
    id: number;
    createdAt: string;
    workspaceId: number;
    channelId: number;
    channelName: string | null;
    authorName: string;
    text: string;
    savedAt: string;
}, {
    id: number;
    createdAt: string;
    workspaceId: number;
    channelId: number;
    channelName: string | null;
    authorName: string;
    text: string;
    savedAt: string;
}>;
export type SavedItem = z.infer<typeof SavedItem>;
export declare const MessageDraft: z.ZodObject<{
    id: z.ZodNumber;
    workspaceId: z.ZodNumber;
    channelId: z.ZodNumber;
    threadRootMessageId: z.ZodNullable<z.ZodNumber>;
    text: z.ZodString;
    blocks: z.ZodNullable<z.ZodDiscriminatedUnion<"v", [z.ZodObject<{
        v: z.ZodLiteral<1>;
        doc: z.ZodRecord<z.ZodString, z.ZodUnknown>;
        forwardedMessage: z.ZodOptional<z.ZodObject<{
            messageId: z.ZodNumber;
            channelId: z.ZodNumber;
            parentId: z.ZodNullable<z.ZodNumber>;
            channelName: z.ZodNullable<z.ZodString>;
            channelType: z.ZodEnum<["public", "private", "dm", "group_dm"]>;
            authorId: z.ZodNumber;
            authorName: z.ZodString;
            authorAvatarUrl: z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodString]>>;
            text: z.ZodString;
            createdAt: z.ZodString;
            attachmentNames: z.ZodArray<z.ZodString, "many">;
        }, "strip", z.ZodTypeAny, {
            createdAt: string;
            messageId: number;
            channelId: number;
            parentId: number | null;
            channelName: string | null;
            channelType: "public" | "private" | "dm" | "group_dm";
            authorId: number;
            authorName: string;
            authorAvatarUrl: string | null;
            text: string;
            attachmentNames: string[];
        }, {
            createdAt: string;
            messageId: number;
            channelId: number;
            parentId: number | null;
            channelName: string | null;
            channelType: "public" | "private" | "dm" | "group_dm";
            authorId: number;
            authorName: string;
            authorAvatarUrl: string | null;
            text: string;
            attachmentNames: string[];
        }>>;
    }, "strip", z.ZodTypeAny, {
        v: 1;
        doc: Record<string, unknown>;
        forwardedMessage?: {
            createdAt: string;
            messageId: number;
            channelId: number;
            parentId: number | null;
            channelName: string | null;
            channelType: "public" | "private" | "dm" | "group_dm";
            authorId: number;
            authorName: string;
            authorAvatarUrl: string | null;
            text: string;
            attachmentNames: string[];
        } | undefined;
    }, {
        v: 1;
        doc: Record<string, unknown>;
        forwardedMessage?: {
            createdAt: string;
            messageId: number;
            channelId: number;
            parentId: number | null;
            channelName: string | null;
            channelType: "public" | "private" | "dm" | "group_dm";
            authorId: number;
            authorName: string;
            authorAvatarUrl: string | null;
            text: string;
            attachmentNames: string[];
        } | undefined;
    }>]>>;
    updatedAt: z.ZodString;
}, "strip", z.ZodTypeAny, {
    id: number;
    workspaceId: number;
    channelId: number;
    text: string;
    blocks: {
        v: 1;
        doc: Record<string, unknown>;
        forwardedMessage?: {
            createdAt: string;
            messageId: number;
            channelId: number;
            parentId: number | null;
            channelName: string | null;
            channelType: "public" | "private" | "dm" | "group_dm";
            authorId: number;
            authorName: string;
            authorAvatarUrl: string | null;
            text: string;
            attachmentNames: string[];
        } | undefined;
    } | null;
    threadRootMessageId: number | null;
    updatedAt: string;
}, {
    id: number;
    workspaceId: number;
    channelId: number;
    text: string;
    blocks: {
        v: 1;
        doc: Record<string, unknown>;
        forwardedMessage?: {
            createdAt: string;
            messageId: number;
            channelId: number;
            parentId: number | null;
            channelName: string | null;
            channelType: "public" | "private" | "dm" | "group_dm";
            authorId: number;
            authorName: string;
            authorAvatarUrl: string | null;
            text: string;
            attachmentNames: string[];
        } | undefined;
    } | null;
    threadRootMessageId: number | null;
    updatedAt: string;
}>;
export type MessageDraft = z.infer<typeof MessageDraft>;
export declare const NotificationPreferences: z.ZodObject<{
    workspaceId: z.ZodNumber;
    messages: z.ZodEnum<["all", "mentions", "off"]>;
    calls: z.ZodBoolean;
    tasks: z.ZodBoolean;
    calendar: z.ZodBoolean;
    sound: z.ZodBoolean;
    inAppFlash: z.ZodBoolean;
    updatedAt: z.ZodNullable<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    workspaceId: number;
    updatedAt: string | null;
    messages: "all" | "mentions" | "off";
    calls: boolean;
    tasks: boolean;
    calendar: boolean;
    sound: boolean;
    inAppFlash: boolean;
}, {
    workspaceId: number;
    updatedAt: string | null;
    messages: "all" | "mentions" | "off";
    calls: boolean;
    tasks: boolean;
    calendar: boolean;
    sound: boolean;
    inAppFlash: boolean;
}>;
export type NotificationPreferences = z.infer<typeof NotificationPreferences>;
export declare const Reaction: z.ZodObject<{
    messageId: z.ZodNumber;
    userId: z.ZodNumber;
    emoji: z.ZodString;
}, "strip", z.ZodTypeAny, {
    userId: number;
    messageId: number;
    emoji: string;
}, {
    userId: number;
    messageId: number;
    emoji: string;
}>;
export type Reaction = z.infer<typeof Reaction>;
export declare const MentionTargetType: z.ZodEnum<["user", "group", "channel", "here", "everyone"]>;
export declare const MessageMention: z.ZodObject<{
    messageId: z.ZodNumber;
    targetType: z.ZodEnum<["user", "group", "channel", "here", "everyone"]>;
    targetId: z.ZodNullable<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
    messageId: number;
    targetType: "user" | "group" | "channel" | "here" | "everyone";
    targetId: number | null;
}, {
    messageId: number;
    targetType: "user" | "group" | "channel" | "here" | "everyone";
    targetId: number | null;
}>;
export type MessageMention = z.infer<typeof MessageMention>;
export declare const ChannelMember: z.ZodObject<{
    channelId: z.ZodNumber;
    userId: z.ZodNumber;
    role: z.ZodEnum<["member", "owner"]>;
    joinedAt: z.ZodString;
    lastReadSeq: z.ZodNumber;
    lastReadAt: z.ZodNullable<z.ZodString>;
    mentionCount: z.ZodNumber;
    unreadCount: z.ZodOptional<z.ZodNumber>;
    isMuted: z.ZodBoolean;
    isStarred: z.ZodBoolean;
    isClosed: z.ZodBoolean;
}, "strip", z.ZodTypeAny, {
    userId: number;
    role: "owner" | "member";
    joinedAt: string;
    channelId: number;
    lastReadSeq: number;
    lastReadAt: string | null;
    mentionCount: number;
    isMuted: boolean;
    isStarred: boolean;
    isClosed: boolean;
    unreadCount?: number | undefined;
}, {
    userId: number;
    role: "owner" | "member";
    joinedAt: string;
    channelId: number;
    lastReadSeq: number;
    lastReadAt: string | null;
    mentionCount: number;
    isMuted: boolean;
    isStarred: boolean;
    isClosed: boolean;
    unreadCount?: number | undefined;
}>;
export type ChannelMember = z.infer<typeof ChannelMember>;
export declare const TaskStatus: z.ZodEnum<["todo", "in_progress", "done"]>;
export type TaskStatus = z.infer<typeof TaskStatus>;
export declare const Task: z.ZodObject<{
    id: z.ZodNumber;
    workspaceId: z.ZodNumber;
    title: z.ZodString;
    description: z.ZodNullable<z.ZodString>;
    status: z.ZodEnum<["todo", "in_progress", "done"]>;
    assigneeUserId: z.ZodNullable<z.ZodNumber>;
    dueAt: z.ZodNullable<z.ZodString>;
    createdBy: z.ZodNumber;
    channelId: z.ZodNullable<z.ZodNumber>;
    sourceMessageId: z.ZodNullable<z.ZodNumber>;
    completedAt: z.ZodNullable<z.ZodString>;
    deletedAt: z.ZodNullable<z.ZodString>;
    deletedBy: z.ZodNullable<z.ZodNumber>;
    createdAt: z.ZodString;
    updatedAt: z.ZodString;
}, "strip", z.ZodTypeAny, {
    description: string | null;
    title: string;
    status: "todo" | "in_progress" | "done";
    id: number;
    createdAt: string;
    workspaceId: number;
    createdBy: number;
    channelId: number | null;
    deletedAt: string | null;
    updatedAt: string;
    assigneeUserId: number | null;
    dueAt: string | null;
    sourceMessageId: number | null;
    completedAt: string | null;
    deletedBy: number | null;
}, {
    description: string | null;
    title: string;
    status: "todo" | "in_progress" | "done";
    id: number;
    createdAt: string;
    workspaceId: number;
    createdBy: number;
    channelId: number | null;
    deletedAt: string | null;
    updatedAt: string;
    assigneeUserId: number | null;
    dueAt: string | null;
    sourceMessageId: number | null;
    completedAt: string | null;
    deletedBy: number | null;
}>;
export type Task = z.infer<typeof Task>;
export declare const AttendeeStatus: z.ZodEnum<["needs_action", "going", "maybe", "declined"]>;
export type AttendeeStatus = z.infer<typeof AttendeeStatus>;
export declare const EventAttendee: z.ZodObject<{
    userId: z.ZodNumber;
    status: z.ZodEnum<["needs_action", "going", "maybe", "declined"]>;
    respondedAt: z.ZodNullable<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    status: "needs_action" | "going" | "maybe" | "declined";
    userId: number;
    respondedAt: string | null;
}, {
    status: "needs_action" | "going" | "maybe" | "declined";
    userId: number;
    respondedAt: string | null;
}>;
export type EventAttendee = z.infer<typeof EventAttendee>;
/**
 * One calendar entry as the client sees it. A recurring series is stored as a
 * single row but read back as concrete occurrences (expanded server-side), so
 * `id` is NOT unique across a response: every occurrence of a series carries
 * the same `id`, and `seriesId` + `occurrenceDate` is the pair that addresses
 * one of them for an occurrence-scoped edit. `isOccurrence` distinguishes an
 * expanded instance from a stored row.
 */
export declare const CalendarEvent: z.ZodObject<{
    id: z.ZodNumber;
    workspaceId: z.ZodNumber;
    title: z.ZodString;
    description: z.ZodNullable<z.ZodString>;
    location: z.ZodNullable<z.ZodString>;
    startsAt: z.ZodString;
    endsAt: z.ZodString;
    allDay: z.ZodBoolean;
    timezone: z.ZodString;
    recurrenceRule: z.ZodNullable<z.ZodString>;
    channelId: z.ZodNullable<z.ZodNumber>;
    createdBy: z.ZodNumber;
    attendees: z.ZodArray<z.ZodObject<{
        userId: z.ZodNumber;
        status: z.ZodEnum<["needs_action", "going", "maybe", "declined"]>;
        respondedAt: z.ZodNullable<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        status: "needs_action" | "going" | "maybe" | "declined";
        userId: number;
        respondedAt: string | null;
    }, {
        status: "needs_action" | "going" | "maybe" | "declined";
        userId: number;
        respondedAt: string | null;
    }>, "many">;
    /** The series this occurrence belongs to (equals `id` for a one-off). */
    seriesId: z.ZodNumber;
    /** YYYY-MM-DD start date of this occurrence in the event's timezone. */
    occurrenceDate: z.ZodString;
    isOccurrence: z.ZodBoolean;
    /** True when this occurrence has been detached from its series. */
    isOverride: z.ZodBoolean;
    createdAt: z.ZodString;
    updatedAt: z.ZodString;
}, "strip", z.ZodTypeAny, {
    description: string | null;
    title: string;
    id: number;
    createdAt: string;
    workspaceId: number;
    createdBy: number;
    channelId: number | null;
    updatedAt: string;
    location: string | null;
    startsAt: string;
    endsAt: string;
    allDay: boolean;
    timezone: string;
    recurrenceRule: string | null;
    attendees: {
        status: "needs_action" | "going" | "maybe" | "declined";
        userId: number;
        respondedAt: string | null;
    }[];
    seriesId: number;
    occurrenceDate: string;
    isOccurrence: boolean;
    isOverride: boolean;
}, {
    description: string | null;
    title: string;
    id: number;
    createdAt: string;
    workspaceId: number;
    createdBy: number;
    channelId: number | null;
    updatedAt: string;
    location: string | null;
    startsAt: string;
    endsAt: string;
    allDay: boolean;
    timezone: string;
    recurrenceRule: string | null;
    attendees: {
        status: "needs_action" | "going" | "maybe" | "declined";
        userId: number;
        respondedAt: string | null;
    }[];
    seriesId: number;
    occurrenceDate: string;
    isOccurrence: boolean;
    isOverride: boolean;
}>;
export type CalendarEvent = z.infer<typeof CalendarEvent>;
export declare const CallKind: z.ZodEnum<["audio", "video", "connect"]>;
export type CallKind = z.infer<typeof CallKind>;
export declare const CallRecordingStatus: z.ZodEnum<["idle", "recording", "processing", "ready", "failed"]>;
export type CallRecordingStatus = z.infer<typeof CallRecordingStatus>;
export declare const CallTranscriptStatus: z.ZodEnum<["idle", "processing", "ready", "failed"]>;
export type CallTranscriptStatus = z.infer<typeof CallTranscriptStatus>;
/** See libs/data/src/schema/calls.ts for why `missed` is a call status and
 * not merely an absence of joins. */
export declare const CallStatus: z.ZodEnum<["ringing", "active", "ended", "missed"]>;
export type CallStatus = z.infer<typeof CallStatus>;
export declare const CallParticipantState: z.ZodEnum<["ringing", "joined", "left", "declined", "missed"]>;
export type CallParticipantState = z.infer<typeof CallParticipantState>;
export declare const CallParticipant: z.ZodObject<{
    userId: z.ZodNumber;
    state: z.ZodEnum<["ringing", "joined", "left", "declined", "missed"]>;
    invitedAt: z.ZodString;
    joinedAt: z.ZodNullable<z.ZodString>;
    leftAt: z.ZodNullable<z.ZodString>;
    seenAt: z.ZodNullable<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    userId: number;
    joinedAt: string | null;
    state: "declined" | "ringing" | "missed" | "joined" | "left";
    invitedAt: string;
    leftAt: string | null;
    seenAt: string | null;
}, {
    userId: number;
    joinedAt: string | null;
    state: "declined" | "ringing" | "missed" | "joined" | "left";
    invitedAt: string;
    leftAt: string | null;
    seenAt: string | null;
}>;
export type CallParticipant = z.infer<typeof CallParticipant>;
/**
 * One call as the client sees it. Unlike CalendarEvent this is a plain row —
 * there is no expansion, so `id` is unique across a response.
 *
 * `durationSeconds` is served rather than left to the client because the
 * answered/ended pair it comes from has a rule attached: duration is measured
 * from `answeredAt`, so a call nobody picked up is 0 seconds long and not
 * "however long it rang for". It is null while the call is still going.
 */
export declare const Call: z.ZodObject<{
    id: z.ZodNumber;
    workspaceId: z.ZodNumber;
    kind: z.ZodEnum<["audio", "video", "connect"]>;
    status: z.ZodEnum<["ringing", "active", "ended", "missed"]>;
    channelId: z.ZodNullable<z.ZodNumber>;
    eventId: z.ZodNullable<z.ZodNumber>;
    title: z.ZodNullable<z.ZodString>;
    startedBy: z.ZodNumber;
    startedAt: z.ZodString;
    answeredAt: z.ZodNullable<z.ZodString>;
    endedAt: z.ZodNullable<z.ZodString>;
    durationSeconds: z.ZodNullable<z.ZodNumber>;
    participants: z.ZodArray<z.ZodObject<{
        userId: z.ZodNumber;
        state: z.ZodEnum<["ringing", "joined", "left", "declined", "missed"]>;
        invitedAt: z.ZodString;
        joinedAt: z.ZodNullable<z.ZodString>;
        leftAt: z.ZodNullable<z.ZodString>;
        seenAt: z.ZodNullable<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        userId: number;
        joinedAt: string | null;
        state: "declined" | "ringing" | "missed" | "joined" | "left";
        invitedAt: string;
        leftAt: string | null;
        seenAt: string | null;
    }, {
        userId: number;
        joinedAt: string | null;
        state: "declined" | "ringing" | "missed" | "joined" | "left";
        invitedAt: string;
        leftAt: string | null;
        seenAt: string | null;
    }>, "many">;
    recordingStatus: z.ZodDefault<z.ZodEnum<["idle", "recording", "processing", "ready", "failed"]>>;
    recordingObjectKey: z.ZodDefault<z.ZodNullable<z.ZodString>>;
    transcriptStatus: z.ZodDefault<z.ZodEnum<["idle", "processing", "ready", "failed"]>>;
    transcript: z.ZodDefault<z.ZodNullable<z.ZodString>>;
    summary: z.ZodDefault<z.ZodNullable<z.ZodString>>;
}, "strip", z.ZodTypeAny, {
    title: string | null;
    status: "ringing" | "active" | "ended" | "missed";
    id: number;
    workspaceId: number;
    channelId: number | null;
    participants: {
        userId: number;
        joinedAt: string | null;
        state: "declined" | "ringing" | "missed" | "joined" | "left";
        invitedAt: string;
        leftAt: string | null;
        seenAt: string | null;
    }[];
    kind: "audio" | "video" | "connect";
    eventId: number | null;
    startedBy: number;
    startedAt: string;
    answeredAt: string | null;
    endedAt: string | null;
    durationSeconds: number | null;
    recordingStatus: "idle" | "recording" | "processing" | "ready" | "failed";
    recordingObjectKey: string | null;
    transcriptStatus: "idle" | "processing" | "ready" | "failed";
    transcript: string | null;
    summary: string | null;
}, {
    title: string | null;
    status: "ringing" | "active" | "ended" | "missed";
    id: number;
    workspaceId: number;
    channelId: number | null;
    participants: {
        userId: number;
        joinedAt: string | null;
        state: "declined" | "ringing" | "missed" | "joined" | "left";
        invitedAt: string;
        leftAt: string | null;
        seenAt: string | null;
    }[];
    kind: "audio" | "video" | "connect";
    eventId: number | null;
    startedBy: number;
    startedAt: string;
    answeredAt: string | null;
    endedAt: string | null;
    durationSeconds: number | null;
    recordingStatus?: "idle" | "recording" | "processing" | "ready" | "failed" | undefined;
    recordingObjectKey?: string | null | undefined;
    transcriptStatus?: "idle" | "processing" | "ready" | "failed" | undefined;
    transcript?: string | null | undefined;
    summary?: string | null | undefined;
}>;
export type Call = z.infer<typeof Call>;
/**
 * One row of the "people to call" directory: a workspace member plus the call
 * history that decides where they rank. Computed server-side because the
 * ranking needs an aggregate over every call the caller took part in, which is
 * not something a client should have to page through history to reconstruct.
 */
export declare const CallContact: z.ZodObject<{
    userId: z.ZodNumber;
    callCount: z.ZodNumber;
    lastCallAt: z.ZodNullable<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    userId: number;
    callCount: number;
    lastCallAt: string | null;
}, {
    userId: number;
    callCount: number;
    lastCallAt: string | null;
}>;
export type CallContact = z.infer<typeof CallContact>;
export declare const ThreadSubscription: z.ZodObject<{
    userId: z.ZodNumber;
    rootMessageId: z.ZodNumber;
    channelId: z.ZodNumber;
    workspaceId: z.ZodNumber;
    lastReadReplySeq: z.ZodNumber;
    reason: z.ZodEnum<["authored", "replied", "mentioned", "manual"]>;
    isMuted: z.ZodBoolean;
    subscribedAt: z.ZodString;
}, "strip", z.ZodTypeAny, {
    workspaceId: number;
    userId: number;
    channelId: number;
    reason: "authored" | "replied" | "mentioned" | "manual";
    lastReadReplySeq: number;
    rootMessageId: number;
    isMuted: boolean;
    subscribedAt: string;
}, {
    workspaceId: number;
    userId: number;
    channelId: number;
    reason: "authored" | "replied" | "mentioned" | "manual";
    lastReadReplySeq: number;
    rootMessageId: number;
    isMuted: boolean;
    subscribedAt: string;
}>;
export type ThreadSubscription = z.infer<typeof ThreadSubscription>;
//# sourceMappingURL=entities.d.ts.map