import { ComAtprotoModerationCreateReport } from "@atproto/api";
import { ChatMessageViewHydrated, PlaceStreamDefs } from "streamplace";
import { LivestreamState } from "./livestream-state";
export declare const useReplyToMessage: () => ChatMessageViewHydrated | null;
export declare const useSetReplyToMessage: () => (message: ChatMessageViewHydrated | null) => void;
export declare const useChatDraft: () => string;
export declare const useSetChatDraft: () => (draft: string) => void;
export declare const useBadgeSlots: () => {
    streamer: import("streamplace/src/lexicons/types/place/stream/badge/defs").BadgeSlot | null;
    user: import("streamplace/src/lexicons/types/place/stream/badge/defs").BadgeSlot | null;
} | null;
export declare const useSetBadgeSlots: () => (slots: NonNullable<LivestreamState["badgeSlots"]> | null) => void;
export declare const usePendingHides: () => string[];
export declare const useAddPendingHide: () => (messageUri: string) => void;
export type NewChatMessage = {
    text: string;
    reply?: {
        cid: string;
        uri: string;
    };
};
export declare const useCreateChatMessage: () => (msg: NewChatMessage) => Promise<void>;
export declare const useDeleteChatMessage: () => (uri: string) => Promise<import("@atproto/api/dist/client/types/com/atproto/repo/deleteRecord").Response>;
export declare const useAddSystemMessage: () => (message: ChatMessageViewHydrated) => void;
export declare const reduceChatIncremental: (state: LivestreamState, newMessages: ChatMessageViewHydrated[], blocks: PlaceStreamDefs.BlockView[], hideUris?: string[]) => LivestreamState;
export declare const useSubmitReport: () => (subject: ComAtprotoModerationCreateReport.InputSchema["subject"], reasonType: string, reason?: string) => Promise<ComAtprotoModerationCreateReport.Response>;
export declare const useReportChatMessage: () => (message: ChatMessageViewHydrated, reasonType: string, reason?: string) => Promise<ComAtprotoModerationCreateReport.Response>;
export declare const reduceChat: (state: LivestreamState, newMessages: ChatMessageViewHydrated[], blocks: PlaceStreamDefs.BlockView[], hideUris?: string[]) => LivestreamState;
export declare const usePinChatMessage: () => (messageUri: string, streamerDID: string, expiresAt?: string) => Promise<import("streamplace/src/lexicons/types/place/stream/moderation/createPin").Response>;
export declare const useUnpinChatMessage: () => (pinUri: string, streamerDID: string) => Promise<void>;
//# sourceMappingURL=chat.d.ts.map