import { type ExecutionResult } from "./serviceHelper";
export declare const notificationEventTypes: {
    readonly itemChanged: "item-changed";
    readonly feedback: "feedback";
    readonly mention: "mention";
    readonly reviewInvitation: "review-invitation";
    readonly reviewCompleted: "review-completed";
    readonly reviewRejected: "review-rejected";
    readonly taskAssigned: "task-assigned";
    readonly taskStatusChanged: "task-status-changed";
    readonly projectAttentionRequired: "project-attention-required";
    readonly projectTaskCompleted: "project-task-completed";
    readonly projectFinished: "project-finished";
    readonly agentNotification: "agent-notification";
};
export declare function getDefaultNotificationEventTypes(targetType: string): string[];
export type NotificationRecord = {
    id: string;
    userId: string;
    type: string;
    priority?: string;
    title: string;
    message: string;
    contextJson?: string | null;
    isRead: boolean;
    createdAt: string;
};
export type NotificationSubscription = {
    id: string;
    userId: string;
    targetType: string;
    targetId: string;
    includeDescendants: boolean;
    language?: string | null;
    eventTypes: string[];
    isAuto: boolean;
    isMuted: boolean;
    createdAt: string;
    displayName?: string | null;
    path?: string | null;
    exists?: boolean;
};
export type SubscribeNotificationRequest = {
    targetType: string;
    targetId: string;
    includeDescendants?: boolean;
    language?: string;
    eventTypes?: string[];
};
export type NotificationTargetRequest = {
    targetType: string;
    targetId: string;
};
export declare function getNotifications(params?: {
    unreadOnly?: boolean;
    skip?: number;
    take?: number;
}): Promise<ExecutionResult<NotificationRecord[]>>;
export declare function getUnreadCount(): Promise<ExecutionResult<{
    count: number;
}>>;
export declare function markNotificationRead(id: string): Promise<ExecutionResult<{
    success: boolean;
}>>;
export declare function markAllNotificationsRead(): Promise<ExecutionResult<{
    updated: number;
}>>;
export declare function getNotificationSubscriptions(): Promise<ExecutionResult<NotificationSubscription[]>>;
export declare function subscribeToNotifications(request: SubscribeNotificationRequest): Promise<ExecutionResult<NotificationSubscription>>;
export declare function unsubscribeFromNotifications(request: NotificationTargetRequest): Promise<ExecutionResult<{
    success: boolean;
}>>;
export declare function muteNotifications(request: NotificationTargetRequest): Promise<ExecutionResult<{
    success: boolean;
}>>;
export declare function unmuteNotifications(request: NotificationTargetRequest): Promise<ExecutionResult<{
    success: boolean;
}>>;
