import type { DownloadMissingAlbumWorkflowInput, WishlistAlbumWorkflowInput, } from '@/platform/workflows/album-workflows'; import type { IssueDomainBridge } from '@/routes/issues/-issues.types'; import type { ShellProfileContext, ShellRouteDefinition, ShellPageId } from './bridge'; declare global { interface Window { showToast?: (message: string, type?: string, durationOrContext?: number | string) => void; SoulSyncIssueDomain?: IssueDomainBridge; SoulSyncWorkflowActions?: { openDownloadMissingAlbum: (input: DownloadMissingAlbumWorkflowInput) => void | Promise; openAddToWishlistAlbum: (input: WishlistAlbumWorkflowInput) => void | Promise; notify?: (message: string, type?: string) => void; }; SoulSyncWebRouter?: { routeManifest: ShellRouteDefinition[]; getCurrentPath: () => string; resolvePageId: (pathname: string) => ShellPageId | null; navigateToPage: ( pageId: ShellPageId, options?: { replace?: boolean; artistId?: string | number; artistSource?: string | null; }, ) => Promise; }; SoulSyncWebShellBridge?: { getCurrentProfileContext: () => ShellProfileContext | null; isPageAllowed: (pageId: ShellPageId) => boolean; getProfileHomePage: () => ShellPageId; resolveLegacyPath: (pathname: string) => ShellPageId | null; setActivePageChrome: (pageId: ShellPageId) => void; activateLegacyPath: (pathname: string) => void; navigateToArtistDetail: ( artistId: string | number, artistName: string, sourceOverride?: string | null, options?: { skipRouteChange?: boolean; }, ) => void; cancelSimilarArtistsLoad: () => void; showReactHost: (pageId: ShellPageId) => void; navigateToArtistDetail: ( artistId: string | number, artistName: string, sourceOverride?: string | null, options?: Record, ) => void; playLibraryTrack: ( track: { id: string | number; title: string; file_path: string; bitrate?: string | number | null; artist_id?: string | number | null; album_id?: string | number | null; _stats_image?: string | null; }, albumTitle: string, artistName: string, ) => void | Promise; startStream: (searchResult: Record) => void | Promise; showLoadingOverlay: (message?: string) => void; hideLoadingOverlay: () => void; }; } } export {};