import { Buffer } from "nbind/dist/shim";

export class NBindBase { free?(): void }

export class App extends NBindBase {
	/** uint32_t getDesktopIndex(); */
	getDesktopIndex(): number;

	/** uint32_t getGroupCount(); */
	getGroupCount(): number;

	/** std::string getIconPath(); */
	getIconPath(): string;

	/** int32_t getProcessId(); */
	getProcessId(): number;

	/** std::string getProcessName(); */
	getProcessName(): string;

	/** std::string getProgramDescription(); */
	getProgramDescription(): string;

	/** std::string getProgramPath(); */
	getProgramPath(): string;

	/** std::string getRealPath(); */
	getRealPath(): string;

	/** std::string getWindowClass(); */
	getWindowClass(): string;

	/** std::string getWindowTitle(); */
	getWindowTitle(): string;

	/** bool IsPinned(); */
	IsPinned(): boolean;

	/** bool IsUWP(); */
	IsUWP(): boolean;

	/** bool IsVisible(); */
	IsVisible(): boolean;

	/** void bringToTop(); */
	bringToTop(): void;

	/** uint32_t getHWND(); */
	getHWND(): number;

	/** uint32_t getDesktopIndex(); */
	getDesktopIndex(): number;

	/** uint32_t getGroupCount(); */
	getGroupCount(): number;

	/** std::string getIconPath(); */
	getIconPath(): string;

	/** int32_t getProcessId(); */
	getProcessId(): number;

	/** std::string getProcessName(); */
	getProcessName(): string;

	/** std::string getProgramDescription(); */
	getProgramDescription(): string;

	/** std::string getProgramPath(); */
	getProgramPath(): string;

	/** std::string getRealPath(); */
	getRealPath(): string;

	/** std::string getWindowClass(); */
	getWindowClass(): string;

	/** std::string getWindowTitle(); */
	getWindowTitle(): string;

	/** bool IsPinned(); */
	IsPinned(): boolean;

	/** bool IsUWP(); */
	IsUWP(): boolean;

	/** bool IsVisible(); */
	IsVisible(): boolean;

	/** void bringToTop(); */
	bringToTop(): void;

	/** uint32_t getHWND(); */
	getHWND(): number;

	/** uint32_t getDesktopIndex(); */
	getDesktopIndex(): number;

	/** uint32_t getGroupCount(); */
	getGroupCount(): number;

	/** std::string getIconPath(); */
	getIconPath(): string;

	/** int32_t getProcessId(); */
	getProcessId(): number;

	/** std::string getProcessName(); */
	getProcessName(): string;

	/** std::string getProgramDescription(); */
	getProgramDescription(): string;

	/** std::string getProgramPath(); */
	getProgramPath(): string;

	/** std::string getRealPath(); */
	getRealPath(): string;

	/** std::string getWindowClass(); */
	getWindowClass(): string;

	/** std::string getWindowTitle(); */
	getWindowTitle(): string;

	/** bool IsPinned(); */
	IsPinned(): boolean;

	/** bool IsUWP(); */
	IsUWP(): boolean;

	/** bool IsVisible(); */
	IsVisible(): boolean;

	/** void bringToTop(); */
	bringToTop(): void;

	/** uint32_t getHWND(); */
	getHWND(): number;
}

export class Taskbar extends NBindBase {
	/** Taskbar(); */
	constructor();

	/** std::vector<App> getAllApps(bool); */
	getAllApps(p0: boolean): App[];

	/** void bringAppToTop(uint32_t); */
	bringAppToTop(p0: number): void;
}

export class VirtualDesktop extends NBindBase {
	/** VirtualDesktop(); */
	constructor();

	/** void Init(); */
	Init(): void;

	/** int32_t createDesktop(); */
	createDesktop(): number;

	/** void ex_destroyDesktop(uint32_t); */
	ex_destroyDesktop(p0: number): void;

	/** void ex_switchToDesktop(uint32_t); */
	ex_switchToDesktop(p0: number): void;

	/** uint32_t getCurrentDesktop(); */
	getCurrentDesktop(): number;

	/** uint32_t getDesktopCount(); */
	getDesktopCount(): number;

	/** VirtualDesktop(); */
	constructor();

	/** void Init(); */
	Init(): void;

	/** int32_t createDesktop(); */
	createDesktop(): number;

	/** void ex_destroyDesktop(uint32_t); */
	ex_destroyDesktop(p0: number): void;

	/** void ex_switchToDesktop(uint32_t); */
	ex_switchToDesktop(p0: number): void;

	/** uint32_t getCurrentDesktop(); */
	getCurrentDesktop(): number;

	/** uint32_t getDesktopCount(); */
	getDesktopCount(): number;

	/** VirtualDesktop(); */
	constructor();

	/** void Init(); */
	Init(): void;

	/** int32_t createDesktop(); */
	createDesktop(): number;

	/** void ex_destroyDesktop(uint32_t); */
	ex_destroyDesktop(p0: number): void;

	/** void ex_switchToDesktop(uint32_t); */
	ex_switchToDesktop(p0: number): void;

	/** uint32_t getCurrentDesktop(); */
	getCurrentDesktop(): number;

	/** uint32_t getDesktopCount(); */
	getDesktopCount(): number;
}
