import Gtk from "gi://Gtk";
import type { GjsElement } from "../../gjs-element";
import type { DiffedProps } from "../../utils/element-extenders/map-properties";
import { WindowElement } from "../window/window";
import type { ApplicationContext } from "./context";
export type ApplicationOptions = {
/**
* ID of the application (e.g. "org.gnome.Weather").
*
* If you are using `react-gnome` to build the application, you can
* just pass the `appId` environment variable.
*
* @example
* import env from "gapp:env";
*
* render(, { appId: env.appId });
*/
appId: string;
};
export declare class ApplicationElement extends Gtk.Application {
readonly kind = "APPLICATION";
protected _isAppActive: boolean;
protected _rootGjsElement: GjsElement | null;
protected _windowList: WindowElement[];
reactContext?: ApplicationContext;
constructor(options: ApplicationOptions);
runAsync: (args: string[]) => Promise;
addWindowToApp(window: WindowElement): void;
removeWindowFromApp(window: WindowElement): void;
getWindowCount(): number;
notifyWillAppendTo(parent: GjsElement): void;
appendChild(child: GjsElement): void;
updateProps(props: DiffedProps): void;
notifyChildWillUnmount(): void;
/**
* Alias to `ApplicationElement.quit()` inherited from
* `Gtk.Application`.
*/
remove(): void;
render(): void;
clear(): void;
show(): void;
hide(): void;
diffProps(oldProps: Record, newProps: Record): DiffedProps;
vfunc_startup(): void;
vfunc_activate(): void;
}