import type { DisplayMetadata } from 'fdc3v1/src/api/DisplayMetadata'; import type { Listener } from 'fdc3v1/src/api/Listener'; import type { AppMetadata } from 'fdc3v1/src/api/AppMetadata'; import type { AppIntent } from 'fdc3v1/src/api/AppIntent'; import type { ImplementationMetadata } from 'fdc3v1/src/api/ImplementationMetadata'; export type { DisplayMetadata } from 'fdc3v1/src/api/DisplayMetadata'; export type { Listener } from 'fdc3v1/src/api/Listener'; export type { AppMetadata } from 'fdc3v1/src/api/AppMetadata'; export type { AppIntent } from 'fdc3v1/src/api/AppIntent'; export type { ImplementationMetadata } from 'fdc3v1/src/api/ImplementationMetadata'; export type ContextHandler = (context: Context) => void; export type TargetApp = string | AppMetadata; export interface Context { id?: { [key: string]: string; }; name?: string; type: string; } export interface IntentResolution { source: TargetApp; data?: object; version: string; } export interface Channel { id: string; type: string; displayMetadata?: DisplayMetadata; broadcast(context: Context): void; getCurrentContext(contextType?: string): Promise; addContextListener(contextType: string | null, handler: ContextHandler): Listener & Promise; } export type SystemChannel = Omit & { addContextListener(): Error; broadcast(): Error; getCurrentContext(): Error; }; export interface DesktopAgent { open(app: TargetApp, context?: Context): Promise; findIntent(intent: string, context?: Context): Promise; findIntentsByContext(context: Context): Promise>; broadcast(context: Context): void; raiseIntent(intent: string, context: Context, app?: TargetApp): Promise; raiseIntentForContext(context: Context, app?: TargetApp): Promise; addIntentListener(intent: string, handler: ContextHandler): Listener; joinChannel(channelId: string): Promise; leaveCurrentChannel(): Promise; getInfo(): ImplementationMetadata; addContextListener(contextType: string | null, handler: ContextHandler): Listener & Promise; getOrCreateChannel(channelId: string): Promise; getSystemChannels(): Promise; getCurrentChannel(): Promise; }