export type EffectiveNotificationPreference = { channel: string; description?: string; digest: string | null; enabled: boolean; group?: string; groupOrder?: number; label?: string; order?: number; source?: string; topic: string; }; export type NotificationChannelId = "in_app" | "email" | "push"; export type NotificationChannelFlags = { email?: boolean; in_app?: boolean; push?: boolean; }; export declare const DEFAULT_NOTIFICATION_CHANNEL_FLAGS: { readonly email: true; readonly in_app: true; readonly push: true; }; export type NotificationChannelColumn = { api: NotificationChannelId; id: NotificationChannelId; label: string; }; export declare const NOTIFICATION_CHANNEL_COLUMNS: readonly [{ readonly api: "in_app"; readonly id: "in_app"; readonly label: "In-app"; }, { readonly api: "email"; readonly id: "email"; readonly label: "Email"; }, { readonly api: "push"; readonly id: "push"; readonly label: "Push"; }]; /** @deprecated Use {@link matrixColumnsFor}. */ export declare const MATRIX_DISPLAY_CHANNELS: readonly [{ readonly api: "in_app"; readonly id: "in_app"; readonly label: "In-app"; }, { readonly api: "email"; readonly id: "email"; readonly label: "Email"; }, { readonly api: "push"; readonly id: "push"; readonly label: "Push"; }]; export declare function isNotificationChannelEnabled(flags: NotificationChannelFlags | undefined, id: NotificationChannelId): boolean; export declare function matrixColumnsFor(flags?: NotificationChannelFlags): NotificationChannelColumn[]; export declare function notificationMatrixGridStyle(columnCount: number): { gridTemplateColumns: string; }; export type NotificationAggregateSelection = "on" | "off" | "mixed"; export declare function aggregateChannelSelection(items: EffectiveNotificationPreference[]): NotificationAggregateSelection; export type NotificationChannelState = { available: boolean; channel: NotificationChannelId; configured: boolean; destination?: string; selection: NotificationAggregateSelection; status?: "ready" | "needs-setup" | "unsupported"; supported: boolean; visible: boolean; }; export type NotificationMuteScope = { id: string; kind: "organization" | "project" | "resource"; label: string; }; export type PreferenceTopic = { channels: Record; custom: boolean; description?: string; group: string; groupOrder: number; label: string; order: number; topic: string; }; export type PreferenceGroup = { group: string; order: number; topics: PreferenceTopic[]; }; export declare function groupFromTopic(topic: string, group?: string): string; export declare function isPreferenceOverride(item: EffectiveNotificationPreference): boolean; export declare function preferenceOverrideItems(items: readonly EffectiveNotificationPreference[]): EffectiveNotificationPreference[]; export declare function groupPreferenceTopics(items: EffectiveNotificationPreference[]): PreferenceGroup[]; export declare function channelItems(items: EffectiveNotificationPreference[], channel: NotificationChannelId): EffectiveNotificationPreference[]; export declare function resolveChannelStates(input: { channels?: NotificationChannelFlags; destinationEmail?: string; items: EffectiveNotificationPreference[]; }): NotificationChannelState[];