/** @noResolution */ /** @noSelf */ declare module basalt { interface Theme { BaseFrameBG: number, BaseFrameText: number, FrameBG: number, FrameText: number, ButtonBG: number, ButtonText: number, CheckboxBG: number, CheckboxText: number, InputBG: number, InputText: number, TextfieldBG: number, TextfieldText: number, ListBG: number, ListText: number, MenubarBG: number, MenubarText: number, DropdownBG: number, DropdownText: number, RadioBG: number, RadioText: number, SelectionBG: number, SelectionText: number, GraphicBG: number, ImageBG: number, PaneBG: number, ProgramBG: number, ProgressbarBG: number, ProgressbarText: number, ProgressbarActiveBG: number, ScrollbarBG: number, ScrollbarText: number, ScrollbarSymbolColor: number, SliderBG: boolean, SliderText: number, SliderSymbolColor: number, SwitchBG: number, SwitchText: number, LabelBG: boolean, LabelText: number, GraphBG: number, GraphText: number, } function debug(...txt: string[]): void; function autoUpdate(enabled?: boolean): void; function stop(): void; function stopUpdate(): void; function addMonitor(): T; function createFrame(id?: string): T; function setActiveFrame(f: T): void; function getFrame(id: string): T; function getActiveFrame(): T; function removeFrame(id: string): void; function setTheme(theme: Theme): void; function getTheme(s: string): number; function setVariable(k: string, v: T): void; function getVariable(k: string): T; function getVersion(): string; function isKeyDown(key: number): boolean; function log(msg: string, prefix: "ERROR" | "WARN" | "INFO" | "DEBUG" | string): void; function memory(): number; function onEvent(fn: (event: string) => boolean): void; function schedule(fn: (v: T) => void): void; function setMouseDragThrottle(throttle: number): void; function setMouseMoveThrottle(throttle: number): void; function setRenderingThrottle(throttle: number): void; class Object { enable(): void; disable(): void; getType(): string; isType(t: string): boolean; getName(): string; getParent(): T | null; setParent(p: T): O; getZIndex(): number; } class VisualObject extends Object { show(): T; hide(): T; setVisible(vis: boolean): boolean; isVisible(): boolean; setPosition(x: number|string, y: number|string, add?: boolean): T; getPosition(): [number, number]; getX(): number; getY(): number; setSize(w: number|string, h: number|string): T; getSize(): [number, number]; getWidth(): number; getHeight(): number; setBackground(color: number|false, symbol?: string, symbol_color?: number): T; getBackground(): number|false; setForeground(color: number|false): T; getForeground(): number|false; setTransparency(v: boolean): T; setZIndex(i: number): T; getAbsolutePosition(x?: number, y?: number): [number, number]; ignoreOffset(v: boolean): T; isFocused(): boolean; setShadow(v: number): T; getShadow(): number|false; setBorder(c: number, ...sides: string[]): T; animatePosition(x: number, y: number, dur: number, offset?: number, mode?: string, fn?: () => void): T; animateSize(w: number, h: number, dur: number, offset?: number, mode?: string, fn?: () => void): T; animateOffset(x: number, y: number, dur: number, offset?: number, mode?: string, fn?: () => void): T; addTexture(path: string, isAnimated: boolean): T; setTextureMode(mode: string): T; setInfiniteMode(v: boolean): T; addDraw(id: string, fn: () => void, pos: number, where: number, imm: boolean): T; addPreDraw(id: string, fn: () => void, pos: number, imm: boolean): T; addPostDraw(id: string, fn: () => void, pos: number, imm: boolean): T; setDrawState(id: string, state: boolean): T; getDrawId(id: string): number; addText(x: number, y: number, s: string): T; addBg(x: number, y: number, c: string): T; addFg(x: number, y: number, c: string): T; addBlit(x: number, y: number, s: string, fg: string, bg: string): T; addBox(x: number, y: number, w: number, h: number, s: string): T; addBackgroundBox(x: number, y: number, w: number, h: number, c: number): T; addForegroundBox(x: number, y: number, w: number, h: number, c: number): T; addLabel(): T; addButton(): T; addGraph(): T; // addScrollbar(): T; addImage(): T; addFrame(): T; // addScrollableFrame(): T; // addInput(): T; // addDropdown(): T; } class ChangeableObject extends VisualObject { setValue(v: any): T; getValue(): T; } class Container extends VisualObject { addChild(c: T): T; getChild(id: string): T; getDeepChild(id: string): T; removeChild(id: string): boolean; removeChildren(): T; updateZIndex(which: O, idx: number): T; setImportant(id: string): T; clearFocusedChild(): T; setFocusedObject(o: O): T; } class BaseFrame extends Container { getOffset(): [number, number]; setOffset(x: number, y: number): T; } class MonitorFrame extends BaseFrame { setMonitor(mon: string|Monitor): T; setMonitorGroup(mon: (string|Monitor)[][]): T; } class Frame extends Container { getOffset(): [number, number]; setOffset(x: number, y: number): T; } class ScrollableFrame extends Frame { setDirection(d: string): T; } type Justify = "flex-start" | "flex-end" | "center" | "space-between" | "space-around" | "space-evenly"; type Direction = "row" | "column"; class Flexbox extends ScrollableFrame { setSpacing(s?: number): T; getSpacing(): number; setDirection(d: Direction): T; getDirection(): Direction; setJustifyContent(s?: Justify): T; getJustifyContent(): Justify; setWrap(w: "wrap" | "nowrap"): T; getWrap(): "wrap" | "nowrap"; updateLayout(): T; addBreak(): T; getFlexGrow(): number; setFlexGrow(g: number): T; getFlexShrink(): number; setFlexShrink(g: number): T; getFlexBasis(): number; setFlexBasis(g: number): T; } type DraggingMap = [number, number, number, number]; class MovableFrame extends Frame { setDraggingMap(m: DraggingMap): T; getDraggingMap(): DraggingMap; } class Button extends VisualObject { setText(t: string): T; setHorizontalAlign(a: "left" | "center" | "right"): T; setVerticalAlign(a: "top" | "center" | "bottom"): T; } class Checkbox extends ChangeableObject { setSymbol(s: string): T; } class Graph extends ChangeableObject { setGraphColor(c: number): T; setGraphSymbol(s: string): T; getGraphSymbol(): string; addDataPoint(v: number): T; setMaxValue(v: number): T; getMaxValue(): number; setMinValue(v: number): T; getMinValue(): number; setGraphType(t: "scatter" | "line" | "bar"): T; setMaxEntries(v: number): T; getMaxEntries(): number; } class Image extends VisualObject { loadImage(p: string): T; setImage(img: any, fmt: "nfp" | "bimg"): void; usePalette(change: boolean): T; play(p: boolean): T; selectFrame(idx: number): T; loadImage(p: string): T; getMetadata(k: string): unknown; setImageSize(w: number, h: number): T; getImageSize(): [number, number]; // TODO: finish this } class Label extends VisualObject { setText(t: string): T; setFontSize(s: number): T; getFontSize(): number; setTextAlign(a: "left" | "center" | "right"): T; } } export default basalt;