import { Stringified } from '../utils';
import { DisplayMode, SortMode } from './channel';

export type AppTheme = 'light' | 'dark' | 'light_blue' | 'dark_blue' | 'light_green' | 'dark_green' | 'light_orange' | 'dark_orange' | 'light_pink' | 'dark_pink' | 'light_purple' | 'dark_purple' | 'light_red' | 'dark_red' | 'light_yellow' | 'dark_yellow' | 'auto';
export type TalkSidebarFilter = 'Direct Messages' | 'All Messages' | 'Group Channels';
export declare const ALPHABETICAL_SORT = "A \u2192 Z";
export declare const DEFAULT_SORT = "Arranged";
export declare const RECENT_SORT = "Recent";
export type SidebarSortMode = typeof ALPHABETICAL_SORT | typeof DEFAULT_SORT | typeof RECENT_SORT;
interface GroupSideBarSort {
    [flag: string]: typeof ALPHABETICAL_SORT | typeof RECENT_SORT | typeof DEFAULT_SORT;
}
interface ChannelSetting {
    flag: string;
}
export interface HeapSetting extends ChannelSetting {
    sortMode: SortMode;
    displayMode: DisplayMode;
}
export interface DiarySetting extends ChannelSetting {
    sortMode: 'arranged' | 'time-dsc' | 'quip-dsc' | 'time-asc' | 'quip-asc';
    commentSortMode: 'asc' | 'dsc';
    displayMode: DisplayMode;
}
export type CalmEngineSettings = {
    disableAppTileUnreads?: boolean;
    disableAvatars?: boolean;
    disableRemoteContent?: boolean;
    disableSpellcheck?: boolean;
    disableNicknames?: boolean;
};
export type DisplaySettings = {
    theme?: AppTheme;
};
export type GroupsSettings = {
    orderedGroupPins?: string[];
    sideBarSort?: SidebarSortMode;
    groupSideBarSort?: Stringified<GroupSideBarSort>;
    hasBeenUsed?: boolean;
    showActivityMessage?: boolean;
    enableTelemetry?: boolean;
    logActivity?: boolean;
    analyticsId?: string;
    seenWelcomeCard?: boolean;
    newGroupFlags: string[];
    groupsNavState?: string;
    messagesNavState?: string;
    activitySeenTimestamp?: number;
    completedWayfindingSplash?: boolean;
    completedWayfindingTutorial?: boolean;
    disableTlonInfraEnhancement?: boolean;
} & Record<string, unknown>;
export type TalkSettings = {
    messagesFilter?: TalkSidebarFilter;
};
export type LandscapeTilesSettings = {
    tiles: {
        order?: string[];
    };
};
export type GallerySettings = {
    heapSettings: Stringified<HeapSetting[]>;
};
export type NotebookSettings = {
    settings: Stringified<DiarySetting[]>;
    markdown: boolean;
};
export type GroupsDeskSettings = {
    desk: {
        talk?: TalkSettings;
        heaps?: GallerySettings;
        diary?: NotebookSettings;
        groups?: GroupsSettings;
        calmEngine?: CalmEngineSettings;
        display?: DisplaySettings;
    };
};
export declare type Key = string;
export declare type Value = string | string[] | boolean | number;
export declare type Bucket = {
    [key: string]: Value;
};
export interface PutBucket {
    'put-bucket': {
        desk: string;
        'bucket-key': Key;
        bucket: Bucket;
    };
}
export interface DelBucket {
    'del-bucket': {
        desk: string;
        'bucket-key': Key;
    };
}
export interface PutEntry {
    'put-entry': {
        'bucket-key': Key;
        'entry-key': Key;
        value?: Value;
        desk: string;
    };
}
export interface DelEntry {
    'del-entry': {
        desk: string;
        'bucket-key': Key;
        'entry-key': Key;
    };
}
export interface SettingsEvent {
    'settings-event': PutEntry | PutBucket | DelEntry | DelBucket;
}
export {};
//# sourceMappingURL=settings.d.ts.map