declare global { interface Window { __TAURI_EVENT_PLUGIN_INTERNALS__: { unregisterListener: (event: string, eventId: number) => void; }; } } type EventTarget = { kind: 'Any'; } | { kind: 'AnyLabel'; label: string; } | { kind: 'App'; } | { kind: 'Window'; label: string; } | { kind: 'Webview'; label: string; } | { kind: 'WebviewWindow'; label: string; }; interface Event { /** Event name */ event: EventName; /** Event identifier used to unlisten */ id: number; /** Event payload */ payload: T; } type EventCallback = (event: Event) => void; type UnlistenFn = () => void; type EventName = `${TauriEvent}` | (string & Record); interface Options { /** * The event target to listen to, defaults to `{ kind: 'Any' }`, see {@link EventTarget}. * * If a string is provided, {@link EventTarget.AnyLabel} is used. */ target?: string | EventTarget; } /** * @since 1.1.0 */ declare enum TauriEvent { WINDOW_RESIZED = "tauri://resize", WINDOW_MOVED = "tauri://move", WINDOW_CLOSE_REQUESTED = "tauri://close-requested", WINDOW_DESTROYED = "tauri://destroyed", WINDOW_FOCUS = "tauri://focus", WINDOW_BLUR = "tauri://blur", WINDOW_SCALE_FACTOR_CHANGED = "tauri://scale-change", WINDOW_THEME_CHANGED = "tauri://theme-changed", WINDOW_CREATED = "tauri://window-created", WEBVIEW_CREATED = "tauri://webview-created", DRAG_ENTER = "tauri://drag-enter", DRAG_OVER = "tauri://drag-over", DRAG_DROP = "tauri://drag-drop", DRAG_LEAVE = "tauri://drag-leave" } /** * Listen to an emitted event to any {@link EventTarget|target}. * * @example * ```typescript * import { listen } from '@tauri-apps/api/event'; * const unlisten = await listen('error', (event) => { * console.log(`Got error, payload: ${event.payload}`); * }); * * // you need to call unlisten if your handler goes out of scope e.g. the component is unmounted * unlisten(); * ``` * * @param event Event name. Must include only alphanumeric characters, `-`, `/`, `:` and `_`. * @param handler Event handler callback. * @param options Event listening options. * @returns A promise resolving to a function to unlisten to the event. * Note that removing the listener is required if your listener goes out of scope e.g. the component is unmounted. * * @since 1.0.0 */ declare function listen(event: EventName, handler: EventCallback, options?: Options): Promise; /** * Listens once to an emitted event to any {@link EventTarget|target}. * * @example * ```typescript * import { once } from '@tauri-apps/api/event'; * interface LoadedPayload { * loggedIn: boolean, * token: string * } * const unlisten = await once('loaded', (event) => { * console.log(`App is loaded, loggedIn: ${event.payload.loggedIn}, token: ${event.payload.token}`); * }); * * // you need to call unlisten if your handler goes out of scope e.g. the component is unmounted * unlisten(); * ``` * * @param event Event name. Must include only alphanumeric characters, `-`, `/`, `:` and `_`. * @param handler Event handler callback. * @param options Event listening options. * @returns A promise resolving to a function to unlisten to the event. * Note that removing the listener is required if your listener goes out of scope e.g. the component is unmounted. * * @since 1.0.0 */ declare function once(event: EventName, handler: EventCallback, options?: Options): Promise; /** * Emits an event to all {@link EventTarget|targets}. * * @example * ```typescript * import { emit } from '@tauri-apps/api/event'; * await emit('frontend-loaded', { loggedIn: true, token: 'authToken' }); * ``` * * @param event Event name. Must include only alphanumeric characters, `-`, `/`, `:` and `_`. * @param payload Event payload. * * @since 1.0.0 */ declare function emit(event: string, payload?: T): Promise; /** * Emits an event to all {@link EventTarget|targets} matching the given target. * * @example * ```typescript * import { emitTo } from '@tauri-apps/api/event'; * await emitTo('main', 'frontend-loaded', { loggedIn: true, token: 'authToken' }); * ``` * * @param target Label of the target Window/Webview/WebviewWindow or raw {@link EventTarget} object. * @param event Event name. Must include only alphanumeric characters, `-`, `/`, `:` and `_`. * @param payload Event payload. * * @since 2.0.0 */ declare function emitTo(target: EventTarget | string, event: string, payload?: T): Promise; export type { Event, EventTarget, EventCallback, UnlistenFn, EventName, Options }; export { listen, once, emit, emitTo, TauriEvent };