import { z } from 'zod';
import { CommsResponse, ChatPermission, ChatMessage, ChatMessageNullableReaction } from './serverTypes';
export declare const ChatListenRequestSchema: z.ZodOptional<z.ZodObject<{
    currentUserId: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    currentUserId?: string | undefined;
}, {
    currentUserId?: string | undefined;
}>>;
export type ChatListenRequest = z.infer<typeof ChatListenRequestSchema>;
export declare const ChatGetAllRequestSchema: z.ZodObject<{
    currentUserId: z.ZodOptional<z.ZodString>;
    limit: z.ZodOptional<z.ZodNumber>;
    before: z.ZodOptional<z.ZodString>;
    after: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    currentUserId?: string | undefined;
    limit?: number | undefined;
    before?: string | undefined;
    after?: string | undefined;
}, {
    currentUserId?: string | undefined;
    limit?: number | undefined;
    before?: string | undefined;
    after?: string | undefined;
}>;
export type ChatGetAllRequest = z.infer<typeof ChatGetAllRequestSchema>;
export declare const ChatGetRequestSchema: z.ZodObject<{
    currentUserId: z.ZodOptional<z.ZodString>;
    chatId: z.ZodString;
}, "strip", z.ZodTypeAny, {
    chatId: string;
    currentUserId?: string | undefined;
}, {
    chatId: string;
    currentUserId?: string | undefined;
}>;
export type ChatGetRequest = z.infer<typeof ChatGetRequestSchema>;
export declare const ChatGetMessagesRequestSchema: z.ZodObject<{
    currentUserId: z.ZodOptional<z.ZodString>;
    chatId: z.ZodString;
    limit: z.ZodOptional<z.ZodNumber>;
    before: z.ZodOptional<z.ZodString>;
    after: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    chatId: string;
    currentUserId?: string | undefined;
    limit?: number | undefined;
    before?: string | undefined;
    after?: string | undefined;
}, {
    chatId: string;
    currentUserId?: string | undefined;
    limit?: number | undefined;
    before?: string | undefined;
    after?: string | undefined;
}>;
export type ChatGetMessagesRequest = z.infer<typeof ChatGetMessagesRequestSchema>;
export declare const ChatGetUnreadCountRequestSchema: z.ZodOptional<z.ZodObject<{
    currentUserId: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    currentUserId?: string | undefined;
}, {
    currentUserId?: string | undefined;
}>>;
export type ChatGetUnreadCountRequest = z.infer<typeof ChatGetUnreadCountRequestSchema>;
export declare const ChatGetBlockersRequestSchema: z.ZodOptional<z.ZodObject<{
    currentUserId: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    currentUserId?: string | undefined;
}, {
    currentUserId?: string | undefined;
}>>;
export type ChatGetBlockersRequest = z.infer<typeof ChatGetBlockersRequestSchema>;
export declare const ChatCreateRequestSchema: z.ZodObject<{
    currentUserId: z.ZodOptional<z.ZodString>;
    userId: z.ZodString;
    invitedUserIds: z.ZodArray<z.ZodString, "many">;
}, "strip", z.ZodTypeAny, {
    userId: string;
    invitedUserIds: string[];
    currentUserId?: string | undefined;
}, {
    userId: string;
    invitedUserIds: string[];
    currentUserId?: string | undefined;
}>;
export type ChatCreateRequest = z.infer<typeof ChatCreateRequestSchema>;
export declare const ChatInviteRequestSchema: z.ZodObject<{
    currentUserId: z.ZodOptional<z.ZodString>;
    chatId: z.ZodString;
    userId: z.ZodString;
    invitedUserIds: z.ZodArray<z.ZodString, "many">;
}, "strip", z.ZodTypeAny, {
    userId: string;
    chatId: string;
    invitedUserIds: string[];
    currentUserId?: string | undefined;
}, {
    userId: string;
    chatId: string;
    invitedUserIds: string[];
    currentUserId?: string | undefined;
}>;
export type ChatInviteRequest = z.infer<typeof ChatInviteRequestSchema>;
export declare const ChatMessageRequestSchema: z.ZodObject<{
    currentUserId: z.ZodOptional<z.ZodString>;
    chatId: z.ZodString;
    messageId: z.ZodOptional<z.ZodString>;
    message: z.ZodString;
}, "strip", z.ZodTypeAny, {
    message: string;
    chatId: string;
    currentUserId?: string | undefined;
    messageId?: string | undefined;
}, {
    message: string;
    chatId: string;
    currentUserId?: string | undefined;
    messageId?: string | undefined;
}>;
export type ChatMessageRequest = z.infer<typeof ChatMessageRequestSchema>;
export declare const ChatReactRequestSchema: z.ZodObject<{
    currentUserId: z.ZodOptional<z.ZodString>;
    chatId: z.ZodString;
    messageId: z.ZodString;
    reaction: z.ZodNullable<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    chatId: string;
    messageId: string;
    reaction: string | null;
    currentUserId?: string | undefined;
}, {
    chatId: string;
    messageId: string;
    reaction: string | null;
    currentUserId?: string | undefined;
}>;
export type ChatReactRequest = z.infer<typeof ChatReactRequestSchema>;
export declare const ChatReadRequestSchema: z.ZodObject<{
    currentUserId: z.ZodOptional<z.ZodString>;
    chatId: z.ZodString;
}, "strip", z.ZodTypeAny, {
    chatId: string;
    currentUserId?: string | undefined;
}, {
    chatId: string;
    currentUserId?: string | undefined;
}>;
export type ChatReadRequest = z.infer<typeof ChatReadRequestSchema>;
export declare const ChatBlockRequestSchema: z.ZodObject<{
    currentUserId: z.ZodOptional<z.ZodString>;
    userId: z.ZodString;
}, "strip", z.ZodTypeAny, {
    userId: string;
    currentUserId?: string | undefined;
}, {
    userId: string;
    currentUserId?: string | undefined;
}>;
export type ChatBlockRequest = z.infer<typeof ChatBlockRequestSchema>;
export declare const ChatDeleteRequestSchema: z.ZodObject<{
    currentUserId: z.ZodOptional<z.ZodString>;
    chatId: z.ZodString;
}, "strip", z.ZodTypeAny, {
    chatId: string;
    currentUserId?: string | undefined;
}, {
    chatId: string;
    currentUserId?: string | undefined;
}>;
export type ChatDeleteRequest = z.infer<typeof ChatDeleteRequestSchema>;
export declare const ChatPermitRequestSchema: z.ZodObject<{
    currentUserId: z.ZodOptional<z.ZodString>;
    permit: z.ZodNativeEnum<typeof ChatPermission>;
}, "strip", z.ZodTypeAny, {
    permit: ChatPermission;
    currentUserId?: string | undefined;
}, {
    permit: ChatPermission;
    currentUserId?: string | undefined;
}>;
export type ChatPermitRequest = z.infer<typeof ChatPermitRequestSchema>;
export declare const ChatValidateCanCreateRequestSchema: z.ZodObject<{
    currentUserId: z.ZodOptional<z.ZodString>;
    userIds: z.ZodArray<z.ZodString, "many">;
}, "strip", z.ZodTypeAny, {
    userIds: string[];
    currentUserId?: string | undefined;
}, {
    userIds: string[];
    currentUserId?: string | undefined;
}>;
export type ChatValidateCanCreateRequest = z.infer<typeof ChatValidateCanCreateRequestSchema>;
export declare const ChatGetPermissionRequestSchema: z.ZodObject<{
    currentUserId: z.ZodOptional<z.ZodString>;
    userIds: z.ZodArray<z.ZodString, "many">;
}, "strip", z.ZodTypeAny, {
    userIds: string[];
    currentUserId?: string | undefined;
}, {
    userIds: string[];
    currentUserId?: string | undefined;
}>;
export type ChatGetPermissionRequest = z.infer<typeof ChatGetPermissionRequestSchema>;
export declare const ChatUnfurlRequestSchema: z.ZodObject<{
    urls: z.ZodArray<z.ZodString, "many">;
}, "strip", z.ZodTypeAny, {
    urls: string[];
}, {
    urls: string[];
}>;
export type ChatUnfurlRequest = z.infer<typeof ChatUnfurlRequestSchema>;
export type TypedCommsResponse<T> = Omit<CommsResponse, 'data'> & {
    data: T;
};
export type ChatEvents = {
    open: () => void;
    close: () => void;
    error: (error: any) => void;
    ['message']: (params: {
        chatId: string;
        message: ChatMessage;
    }) => void;
    ['reaction']: (params: {
        chatId: string;
        messageId: string;
        reaction: ChatMessageNullableReaction;
    }) => void;
};
export type UnfurlResponse = {
    url: string;
    url_type?: string;
    site_name?: string;
    title?: string;
    description?: string;
    image?: string;
    html?: string;
    favicon?: string;
};
