import type { DeviceModelId } from "@ledgerhq/devices";
export type AnnouncementDeviceModelId = Array<DeviceModelId | "no_nano">;
import { DeviceModelInfo } from "@ledgerhq/types-live";
export type AnnouncementDeviceFilter = {
    modelIds?: AnnouncementDeviceModelId;
    versions?: string[];
    apps?: string[];
};
export type AnnnouncementPlatformsFilter = "desktop" | "mobile" | "android" | "ios" | "mac" | "windows" | "linux";
type AnnouncementBase = {
    uuid: string;
    level?: string;
    icon?: string;
    priority?: number;
    contextual?: string[];
    published_at: string;
    expired_at?: string;
    utm_campaign?: string;
    languages?: string[];
    currencies?: string[];
    device?: AnnouncementDeviceFilter;
    platforms?: AnnnouncementPlatformsFilter[];
    appVersions?: string[];
    liveCommonVersions?: string[];
};
export type AnnouncementContent = {
    title: string;
    text: string | null | undefined;
    link?: {
        href: string;
        label?: string;
    } | null | undefined;
};
export type RawAnnouncement = AnnouncementBase & {
    content: Record<string, AnnouncementContent>;
};
export type Announcement = AnnouncementBase & {
    content: AnnouncementContent;
};
export type AnnouncementsUserSettings = {
    language: string;
    currencies: string[];
    getDate: () => Date;
    lastSeenDevice?: DeviceModelInfo | null;
    platform?: string;
    appVersion?: string;
};
export type AnnouncementsApi = {
    fetchAnnouncements: () => Promise<RawAnnouncement[]>;
};
export type State = {
    seenIds: string[];
    allIds: string[];
    cache: Record<string, Announcement>;
    isLoading: boolean;
    lastUpdateTime: number | null | undefined;
    error: Error | null | undefined;
};
export {};
//# sourceMappingURL=types.d.ts.map