export declare const Mod: {
    export: any;
    init(enableFreeType: boolean, extensions: boolean, loaderPath?: string): Promise<void>;
};
/**
 * Base class for value structs (passed by value, no native pointer).
 */
export declare class ValueStruct {
}
/**
 * Base class for reference structs (carry native pointer/reference).
 * These structs manage native memory and require explicit cleanup.
 */
export declare class ReferenceStruct {
    /**
     * The native pointer to the struct.
     */
    ptr: any;
    /**
     * Construct a new JavaScript class instance and allocate native memory.
     */
    static New(): any;
    /**
     * Create a JavaScript class instance from a native pointer.
     */
    static From(ptr: any): any;
    /**
     * Free the struct's native allocated memory.
     */
    Drop(): void;
}
/**
 * Default: 16-bit (for maximum compatibility with renderer backends)
 */
export type ImDrawIdx = number;
/**
 * A unique ID used by widgets (typically the result of hashing a stack of string)
 */
export type ImGuiID = number;
/**
 * 8-bit signed integer
 */
export type ImS8 = number;
/**
 * 8-bit unsigned integer
 */
export type ImU8 = number;
/**
 * 16-bit signed integer
 */
export type ImS16 = number;
/**
 * 16-bit unsigned integer
 */
export type ImU16 = number;
/**
 * 32-bit signed integer == int
 */
export type ImS32 = number;
/**
 * 32-bit unsigned integer (often used to store packed colors)
 */
export type ImU32 = number;
/**
 * 64-bit signed integer
 */
export type ImS64 = bigint;
/**
 * 64-bit unsigned integer
 */
export type ImU64 = bigint;
/**
 * -> enum ImGuiDir              // Enum: A cardinal direction (Left, Right, Up, Down)
 */
export type ImGuiDir = number;
/**
 * -> enum ImGuiKey              // Enum: A key identifier (ImGuiKey_XXX or ImGuiMod_XXX value)
 */
export type ImGuiKey = number;
/**
 * -> enum ImGuiMouseSource      // Enum; A mouse input source identifier (Mouse, TouchScreen, Pen)
 */
export type ImGuiMouseSource = number;
/**
 * -> enum ImGuiSortDirection    // Enum: A sorting direction (ascending or descending)
 */
export type ImGuiSortDirection = ImU8;
/**
 * -> enum ImGuiCol_             // Enum: A color identifier for styling
 */
export type ImGuiCol = number;
/**
 * -> enum ImGuiCond_            // Enum: A condition for many Set*() functions
 */
export type ImGuiCond = number;
/**
 * -> enum ImGuiDataType_        // Enum: A primary data type
 */
export type ImGuiDataType = number;
/**
 * -> enum ImGuiMouseButton_     // Enum: A mouse button identifier (0=left, 1=right, 2=middle)
 */
export type ImGuiMouseButton = number;
/**
 * -> enum ImGuiMouseCursor_     // Enum: A mouse cursor shape
 */
export type ImGuiMouseCursor = number;
/**
 * -> enum ImGuiStyleVar_        // Enum: A variable identifier for styling
 */
export type ImGuiStyleVar = number;
/**
 * -> enum ImGuiTableBgTarget_   // Enum: A color target for TableSetBgColor()
 */
export type ImGuiTableBgTarget = number;
/**
 * -> enum ImDrawFlags_          // Flags: for ImDrawList functions
 */
export type ImDrawFlags = number;
/**
 * -> enum ImDrawListFlags_      // Flags: for ImDrawList instance
 */
export type ImDrawListFlags = number;
/**
 * -> enum ImDrawTextFlags_      // Internal, do not use!
 */
export type ImDrawTextFlags = number;
/**
 * -> enum ImFontFlags_          // Flags: for ImFont
 */
export type ImFontFlags = number;
/**
 * -> enum ImFontAtlasFlags_     // Flags: for ImFontAtlas
 */
export type ImFontAtlasFlags = number;
/**
 * -> enum ImGuiBackendFlags_    // Flags: for io.BackendFlags
 */
export type ImGuiBackendFlags = number;
/**
 * -> enum ImGuiButtonFlags_     // Flags: for InvisibleButton()
 */
export type ImGuiButtonFlags = number;
/**
 * -> enum ImGuiChildFlags_      // Flags: for BeginChild()
 */
export type ImGuiChildFlags = number;
/**
 * -> enum ImGuiColorEditFlags_  // Flags: for ColorEdit4(), ColorPicker4() etc.
 */
export type ImGuiColorEditFlags = number;
/**
 * -> enum ImGuiConfigFlags_     // Flags: for io.ConfigFlags
 */
export type ImGuiConfigFlags = number;
/**
 * -> enum ImGuiComboFlags_      // Flags: for BeginCombo()
 */
export type ImGuiComboFlags = number;
/**
 * -> enum ImGuiDockNodeFlags_   // Flags: for DockSpace()
 */
export type ImGuiDockNodeFlags = number;
/**
 * -> enum ImGuiDragDropFlags_   // Flags: for BeginDragDropSource(), AcceptDragDropPayload()
 */
export type ImGuiDragDropFlags = number;
/**
 * -> enum ImGuiFocusedFlags_    // Flags: for IsWindowFocused()
 */
export type ImGuiFocusedFlags = number;
/**
 * -> enum ImGuiHoveredFlags_    // Flags: for IsItemHovered(), IsWindowHovered() etc.
 */
export type ImGuiHoveredFlags = number;
/**
 * -> enum ImGuiInputFlags_      // Flags: for Shortcut(), SetNextItemShortcut()
 */
export type ImGuiInputFlags = number;
/**
 * -> enum ImGuiInputTextFlags_  // Flags: for InputText(), InputTextMultiline()
 */
export type ImGuiInputTextFlags = number;
/**
 * -> enum ImGuiItemFlags_       // Flags: for PushItemFlag(), shared by all items
 */
export type ImGuiItemFlags = number;
/**
 * -> ImGuiKey | ImGuiMod_XXX    // Flags: for IsKeyChordPressed(), Shortcut() etc. an ImGuiKey optionally OR-ed with one or more ImGuiMod_XXX values.
 */
export type ImGuiKeyChord = number;
/**
 * -> enum ImGuiListClipperFlags_// Flags: for ImGuiListClipper
 */
export type ImGuiListClipperFlags = number;
/**
 * -> enum ImGuiPopupFlags_      // Flags: for OpenPopup*(), BeginPopupContext*(), IsPopupOpen()
 */
export type ImGuiPopupFlags = number;
/**
 * -> enum ImGuiMultiSelectFlags_// Flags: for BeginMultiSelect()
 */
export type ImGuiMultiSelectFlags = number;
/**
 * -> enum ImGuiSelectableFlags_ // Flags: for Selectable()
 */
export type ImGuiSelectableFlags = number;
/**
 * -> enum ImGuiSliderFlags_     // Flags: for DragFloat(), DragInt(), SliderFloat(), SliderInt() etc.
 */
export type ImGuiSliderFlags = number;
/**
 * -> enum ImGuiTabBarFlags_     // Flags: for BeginTabBar()
 */
export type ImGuiTabBarFlags = number;
/**
 * -> enum ImGuiTabItemFlags_    // Flags: for BeginTabItem()
 */
export type ImGuiTabItemFlags = number;
/**
 * -> enum ImGuiTableFlags_      // Flags: For BeginTable()
 */
export type ImGuiTableFlags = number;
/**
 * -> enum ImGuiTableColumnFlags_// Flags: For TableSetupColumn()
 */
export type ImGuiTableColumnFlags = number;
/**
 * -> enum ImGuiTableRowFlags_   // Flags: For TableNextRow()
 */
export type ImGuiTableRowFlags = number;
/**
 * -> enum ImGuiTreeNodeFlags_   // Flags: for TreeNode(), TreeNodeEx(), CollapsingHeader()
 */
export type ImGuiTreeNodeFlags = number;
/**
 * -> enum ImGuiViewportFlags_   // Flags: for ImGuiViewport
 */
export type ImGuiViewportFlags = number;
/**
 * -> enum ImGuiWindowFlags_     // Flags: for Begin(), BeginChild()
 */
export type ImGuiWindowFlags = number;
/**
 * A single decoded U32 character/code point. We encode them as multi bytes UTF-8 when used in strings.
 */
export type ImWchar32 = number;
/**
 * A single decoded U16 character/code point. We encode them as multi bytes UTF-8 when used in strings.
 */
export type ImWchar16 = number;
/**
 * Multi-Selection item index or identifier when using BeginMultiSelect()
 * - Used by SetNextItemSelectionUserData() + and inside ImGuiMultiSelectIO structure.
 * - Most users are likely to use this store an item INDEX but this may be used to store a POINTER/ID as well. Read comments near ImGuiMultiSelectIO for details.
 */
export type ImGuiSelectionUserData = ImS64;
export type ImGuiInputTextCallback = (data: ImGuiInputTextCallbackData) => number;
export type ImGuiSizeCallback = (data: ImGuiSizeCallbackData) => void;
/**
 * Default: store up to 64-bits (any pointer or integer). A majority of backends are ok with that.
 */
export type ImTextureID = ImU64;
export type ImDrawCallback = (parent_list: ImDrawList, cmd: ImDrawCmd) => void;
/**
 * An opaque identifier to a rectangle in the atlas. -1 when invalid.
 * The rectangle may move and UV may be invalidated, use GetCustomRect() to retrieve it.
 */
export type ImFontAtlasRectId = number;
export type ImWchar = number;
/**
 * Flags for ImGui::Begin()
 * (Those are per-window flags. There are shared flags in ImGuiIO: io.ConfigWindowsResizeFromEdges and io.ConfigWindowsMoveFromTitleBarOnly)
 */
export declare const ImGuiWindowFlags: {
    readonly None: 0;
    /**
     * Disable title-bar
     */
    readonly NoTitleBar: 1;
    /**
     * Disable user resizing with the lower-right grip
     */
    readonly NoResize: 2;
    /**
     * Disable user moving the window
     */
    readonly NoMove: 4;
    /**
     * Disable scrollbars (window can still scroll with mouse or programmatically)
     */
    readonly NoScrollbar: 8;
    /**
     * Disable user vertically scrolling with mouse wheel. On child window, mouse wheel will be forwarded to the parent unless NoScrollbar is also set.
     */
    readonly NoScrollWithMouse: 16;
    /**
     * Disable user collapsing window by double-clicking on it. Also referred to as Window Menu Button (e.g. within a docking node).
     */
    readonly NoCollapse: 32;
    /**
     * Resize every window to its content every frame
     */
    readonly AlwaysAutoResize: 64;
    /**
     * Disable drawing background color (WindowBg, etc.) and outside border. Similar as using SetNextWindowBgAlpha(0.0f).
     */
    readonly NoBackground: 128;
    /**
     * Never load/save settings in .ini file
     */
    readonly NoSavedSettings: 256;
    /**
     * Disable catching mouse, hovering test with pass through.
     */
    readonly NoMouseInputs: 512;
    /**
     * Has a menu-bar
     */
    readonly MenuBar: 1024;
    /**
     * Allow horizontal scrollbar to appear (off by default). You may use SetNextWindowContentSize(ImVec2(width,0.0f)); prior to calling Begin() to specify width. Read code in imgui_demo in the "Horizontal Scrolling" section.
     */
    readonly HorizontalScrollbar: 2048;
    /**
     * Disable taking focus when transitioning from hidden to visible state
     */
    readonly NoFocusOnAppearing: 4096;
    /**
     * Disable bringing window to front when taking focus (e.g. clicking on it or programmatically giving it focus)
     */
    readonly NoBringToFrontOnFocus: 8192;
    /**
     * Always show vertical scrollbar (even if ContentSize.y < Size.y)
     */
    readonly AlwaysVerticalScrollbar: 16384;
    /**
     * Always show horizontal scrollbar (even if ContentSize.x < Size.x)
     */
    readonly AlwaysHorizontalScrollbar: 32768;
    /**
     * No keyboard/gamepad navigation within the window
     */
    readonly NoNavInputs: 65536;
    /**
     * No focusing toward this window with keyboard/gamepad navigation (e.g. skipped by Ctrl+Tab)
     */
    readonly NoNavFocus: 131072;
    /**
     * Display a dot next to the title. When used in a tab/docking context, tab is selected when clicking the X + closure is not assumed (will wait for user to stop submitting the tab). Otherwise closure is assumed when pressing the X, so if you keep submitting the tab may reappear at end of tab bar.
     */
    readonly UnsavedDocument: 262144;
    /**
     * Disable docking of this window
     */
    readonly NoDocking: 524288;
    readonly NoNav: 196608;
    readonly NoDecoration: 43;
    readonly NoInputs: 197120;
};
/**
 * Flags for ImGui::BeginChild()
 * (Legacy: bit 0 must always correspond to ImGuiChildFlags_Borders to be backward compatible with old API using 'bool border = false'.)
 * About using AutoResizeX/AutoResizeY flags:
 * - May be combined with SetNextWindowSizeConstraints() to set a min/max size for each axis (see "Demo->Child->Auto-resize with Constraints").
 * - Size measurement for a given axis is only performed when the child window is within visible boundaries, or is just appearing.
 *   - This allows BeginChild() to return false when not within boundaries (e.g. when scrolling), which is more optimal. BUT it won't update its auto-size while clipped.
 *     While not perfect, it is a better default behavior as the always-on performance gain is more valuable than the occasional "resizing after becoming visible again" glitch.
 *   - You may also use ImGuiChildFlags_AlwaysAutoResize to force an update even when child window is not in view.
 *     HOWEVER PLEASE UNDERSTAND THAT DOING SO WILL PREVENT BeginChild() FROM EVER RETURNING FALSE, disabling benefits of coarse clipping.
 */
export declare const ImGuiChildFlags: {
    readonly None: 0;
    /**
     * Show an outer border and enable WindowPadding. (IMPORTANT: this is always == 1 == true for legacy reason)
     */
    readonly Borders: 1;
    /**
     * Pad with style.WindowPadding even if no border are drawn (no padding by default for non-bordered child windows because it makes more sense)
     */
    readonly AlwaysUseWindowPadding: 2;
    /**
     * Allow resize from right border (layout direction). Enable .ini saving (unless ImGuiWindowFlags_NoSavedSettings passed to window flags)
     */
    readonly ResizeX: 4;
    /**
     * Allow resize from bottom border (layout direction). "
     */
    readonly ResizeY: 8;
    /**
     * Enable auto-resizing width. Read "IMPORTANT: Size measurement" details above.
     */
    readonly AutoResizeX: 16;
    /**
     * Enable auto-resizing height. Read "IMPORTANT: Size measurement" details above.
     */
    readonly AutoResizeY: 32;
    /**
     * Combined with AutoResizeX/AutoResizeY. Always measure size even when child is hidden, always return true, always disable clipping optimization! NOT RECOMMENDED.
     */
    readonly AlwaysAutoResize: 64;
    /**
     * Style the child window like a framed item: use FrameBg, FrameRounding, FrameBorderSize, FramePadding instead of ChildBg, ChildRounding, ChildBorderSize, WindowPadding.
     */
    readonly FrameStyle: 128;
    /**
     * [BETA] Share focus scope, allow keyboard/gamepad navigation to cross over parent border to this child or between sibling child windows.
     */
    readonly NavFlattened: 256;
};
/**
 * Flags for ImGui::PushItemFlag()
 * (Those are shared by all submitted items)
 */
export declare const ImGuiItemFlags: {
    /**
     * (Default)
     */
    readonly None: 0;
    /**
     * false    // Disable keyboard tabbing. This is a "lighter" version of ImGuiItemFlags_NoNav.
     */
    readonly NoTabStop: 1;
    /**
     * false    // Disable any form of focusing (keyboard/gamepad directional navigation and SetKeyboardFocusHere() calls).
     */
    readonly NoNav: 2;
    /**
     * false    // Disable item being a candidate for default focus (e.g. used by title bar items).
     */
    readonly NoNavDefaultFocus: 4;
    /**
     * false    // Any button-like behavior will have repeat mode enabled (based on io.KeyRepeatDelay and io.KeyRepeatRate values). Note that you can also call IsItemActive() after any button to tell if it is being held.
     */
    readonly ButtonRepeat: 8;
    /**
     * true     // MenuItem()/Selectable() automatically close their parent popup window.
     */
    readonly AutoClosePopups: 16;
    /**
     * false    // Allow submitting an item with the same identifier as an item already submitted this frame without triggering a warning tooltip if io.ConfigDebugHighlightIdConflicts is set.
     */
    readonly AllowDuplicateId: 32;
    /**
     * false    // [Internal] Disable interactions. DOES NOT affect visuals. This is used by BeginDisabled()/EndDisabled() and only provided here so you can read back via GetItemFlags().
     */
    readonly Disabled: 64;
};
/**
 * Flags for ImGui::InputText()
 * (Those are per-item flags. There are shared flags in ImGuiIO: io.ConfigInputTextCursorBlink and io.ConfigInputTextEnterKeepActive)
 */
export declare const ImGuiInputTextFlags: {
    /**
     * Basic filters (also see ImGuiInputTextFlags_CallbackCharFilter)
     */
    readonly None: 0;
    /**
     * Allow 0123456789.+-* /
     */
    readonly CharsDecimal: 1;
    /**
     * Allow 0123456789ABCDEFabcdef
     */
    readonly CharsHexadecimal: 2;
    /**
     * Allow 0123456789.+-* /eE (Scientific notation input)
     */
    readonly CharsScientific: 4;
    /**
     * Turn a..z into A..Z
     */
    readonly CharsUppercase: 8;
    /**
     * Filter out spaces, tabs
     */
    readonly CharsNoBlank: 16;
    /**
     * Pressing TAB input a '\t' character into the text field
     */
    readonly AllowTabInput: 32;
    /**
     * Return 'true' when Enter is pressed (as opposed to every time the value was modified). Consider using IsItemDeactivatedAfterEdit() instead!
     */
    readonly EnterReturnsTrue: 64;
    /**
     * Escape key clears content if not empty, and deactivate otherwise (contrast to default behavior of Escape to revert)
     */
    readonly EscapeClearsAll: 128;
    /**
     * In multi-line mode: validate with Enter, add new line with Ctrl+Enter (default is opposite: validate with Ctrl+Enter, add line with Enter). Note that Shift+Enter always enter a new line either way.
     */
    readonly CtrlEnterForNewLine: 256;
    /**
     * Read-only mode
     */
    readonly ReadOnly: 512;
    /**
     * Password mode, display all characters as '*', disable copy
     */
    readonly Password: 1024;
    /**
     * Overwrite mode
     */
    readonly AlwaysOverwrite: 2048;
    /**
     * Select entire text when first taking mouse focus
     */
    readonly AutoSelectAll: 4096;
    /**
     * InputFloat(), InputInt(), InputScalar() etc. only: parse empty string as zero value.
     */
    readonly ParseEmptyRefVal: 8192;
    /**
     * InputFloat(), InputInt(), InputScalar() etc. only: when value is zero, do not display it. Generally used with ImGuiInputTextFlags_ParseEmptyRefVal.
     */
    readonly DisplayEmptyRefVal: 16384;
    /**
     * Disable following the cursor horizontally
     */
    readonly NoHorizontalScroll: 32768;
    /**
     * Disable undo/redo. Note that input text owns the text data while active, if you want to provide your own undo/redo stack you need e.g. to call ClearActiveID().
     */
    readonly NoUndoRedo: 65536;
    /**
     * When text doesn't fit, elide left side to ensure right side stays visible. Useful for path/filenames. Single-line only!
     */
    readonly ElideLeft: 131072;
    /**
     * Callback on pressing TAB (for completion handling)
     */
    readonly CallbackCompletion: 262144;
    /**
     * Callback on pressing Up/Down arrows (for history handling)
     */
    readonly CallbackHistory: 524288;
    /**
     * Callback on each iteration. User code may query cursor position, modify text buffer.
     */
    readonly CallbackAlways: 1048576;
    /**
     * Callback on character inputs to replace or discard them. Modify 'EventChar' to replace or discard, or return 1 in callback to discard.
     */
    readonly CallbackCharFilter: 2097152;
    /**
     * Callback on buffer capacity changes request (beyond 'buf_size' parameter value), allowing the string to grow. Notify when the string wants to be resized (for string types which hold a cache of their Size). You will be provided a new BufSize in the callback and NEED to honor it. (see misc/cpp/imgui_stdlib.h for an example of using this)
     */
    readonly CallbackResize: 4194304;
    /**
     * Callback on any edit. Note that InputText() already returns true on edit + you can always use IsItemEdited(). The callback is useful to manipulate the underlying buffer while focus is active.
     */
    readonly CallbackEdit: 8388608;
    /**
     * InputTextMultiline(): word-wrap lines that are too long.
     */
    readonly WordWrap: 16777216;
};
/**
 * Flags for ImGui::TreeNodeEx(), ImGui::CollapsingHeader*()
 */
export declare const ImGuiTreeNodeFlags: {
    readonly None: 0;
    /**
     * Draw as selected
     */
    readonly Selected: 1;
    /**
     * Draw frame with background (e.g. for CollapsingHeader)
     */
    readonly Framed: 2;
    /**
     * Hit testing will allow subsequent widgets to overlap this one. Require previous frame HoveredId to match before being usable. Shortcut to calling SetNextItemAllowOverlap().
     */
    readonly AllowOverlap: 4;
    /**
     * Don't do a TreePush() when open (e.g. for CollapsingHeader) = no extra indent nor pushing on ID stack
     */
    readonly NoTreePushOnOpen: 8;
    /**
     * Don't automatically and temporarily open node when Logging is active (by default logging will automatically open tree nodes)
     */
    readonly NoAutoOpenOnLog: 16;
    /**
     * Default node to be open
     */
    readonly DefaultOpen: 32;
    /**
     * Open on double-click instead of simple click (default for multi-select unless any _OpenOnXXX behavior is set explicitly). Both behaviors may be combined.
     */
    readonly OpenOnDoubleClick: 64;
    /**
     * Open when clicking on the arrow part (default for multi-select unless any _OpenOnXXX behavior is set explicitly). Both behaviors may be combined.
     */
    readonly OpenOnArrow: 128;
    /**
     * No collapsing, no arrow (use as a convenience for leaf nodes). Note: will always open a tree/id scope and return true. If you never use that scope, add ImGuiTreeNodeFlags_NoTreePushOnOpen.
     */
    readonly Leaf: 256;
    /**
     * Display a bullet instead of arrow. IMPORTANT: node can still be marked open/close if you don't set the _Leaf flag!
     */
    readonly Bullet: 512;
    /**
     * Use FramePadding (even for an unframed text node) to vertically align text baseline to regular widget height. Equivalent to calling AlignTextToFramePadding() before the node.
     */
    readonly FramePadding: 1024;
    /**
     * Extend hit box to the right-most edge, even if not framed. This is not the default in order to allow adding other items on the same line without using AllowOverlap mode.
     */
    readonly SpanAvailWidth: 2048;
    /**
     * Extend hit box to the left-most and right-most edges (cover the indent area).
     */
    readonly SpanFullWidth: 4096;
    /**
     * Narrow hit box + narrow hovering highlight, will only cover the label text.
     */
    readonly SpanLabelWidth: 8192;
    /**
     * Frame will span all columns of its container table (label will still fit in current column)
     */
    readonly SpanAllColumns: 16384;
    /**
     * Label will span all columns of its container table
     */
    readonly LabelSpanAllColumns: 32768;
    /**
     * Nav: left arrow moves back to parent. This is processed in TreePop() when there's an unfulfilled Left nav request remaining.
     */
    readonly NavLeftJumpsToParent: 131072;
    readonly CollapsingHeader: 26;
    /**
     * No lines drawn
     */
    readonly DrawLinesNone: 262144;
    /**
     * Horizontal lines to child nodes. Vertical line drawn down to TreePop() position: cover full contents. Faster (for large trees).
     */
    readonly DrawLinesFull: 524288;
    /**
     * Horizontal lines to child nodes. Vertical line drawn down to bottom-most child node. Slower (for large trees).
     */
    readonly DrawLinesToNodes: 1048576;
};
/**
 * Flags for OpenPopup*(), BeginPopupContext*(), IsPopupOpen() functions.
 * - IMPORTANT: If you ever used the left mouse button with BeginPopupContextXXX() helpers before 1.92.6: Read "API BREAKING CHANGES" 2026/01/07 (1.92.6) entry in imgui.cpp or GitHub topic #9157.
 * - Multiple buttons currently cannot be combined/or-ed in those functions (we could allow it later).
 */
export declare const ImGuiPopupFlags: {
    readonly None: 0;
    /**
     * For BeginPopupContext*(): open on Left Mouse release. Only one button allowed!
     */
    readonly MouseButtonLeft: 4;
    /**
     * For BeginPopupContext*(): open on Right Mouse release. Only one button allowed! (default)
     */
    readonly MouseButtonRight: 8;
    /**
     * For BeginPopupContext*(): open on Middle Mouse release. Only one button allowed!
     */
    readonly MouseButtonMiddle: 12;
    /**
     * For OpenPopup*(), BeginPopupContext*(): don't reopen same popup if already open (won't reposition, won't reinitialize navigation)
     */
    readonly NoReopen: 32;
    /**
     * For OpenPopup*(), BeginPopupContext*(): don't open if there's already a popup at the same level of the popup stack
     */
    readonly NoOpenOverExistingPopup: 128;
    /**
     * For BeginPopupContextWindow(): don't return true when hovering items, only when hovering empty space
     */
    readonly NoOpenOverItems: 256;
    /**
     * For IsPopupOpen(): ignore the ImGuiID parameter and test for any popup.
     */
    readonly AnyPopupId: 1024;
    /**
     * For IsPopupOpen(): search/test at any level of the popup stack (default test in the current level)
     */
    readonly AnyPopupLevel: 2048;
    readonly AnyPopup: 3072;
};
/**
 * Flags for ImGui::Selectable()
 */
export declare const ImGuiSelectableFlags: {
    readonly None: 0;
    /**
     * Clicking this doesn't close parent popup window (overrides ImGuiItemFlags_AutoClosePopups)
     */
    readonly NoAutoClosePopups: 1;
    /**
     * Frame will span all columns of its container table (text will still fit in current column)
     */
    readonly SpanAllColumns: 2;
    /**
     * Generate press events on double clicks too
     */
    readonly AllowDoubleClick: 4;
    /**
     * Cannot be selected, display grayed out text
     */
    readonly Disabled: 8;
    /**
     * Hit testing will allow subsequent widgets to overlap this one. Require previous frame HoveredId to match before being usable. Shortcut to calling SetNextItemAllowOverlap().
     */
    readonly AllowOverlap: 16;
    /**
     * Make the item be displayed as if it is hovered
     */
    readonly Highlight: 32;
    /**
     * Auto-select when moved into, unless Ctrl is held. Automatic when in a BeginMultiSelect() block.
     */
    readonly SelectOnNav: 64;
};
/**
 * Flags for ImGui::BeginCombo()
 */
export declare const ImGuiComboFlags: {
    readonly None: 0;
    /**
     * Align the popup toward the left by default
     */
    readonly PopupAlignLeft: 1;
    /**
     * Max ~4 items visible. Tip: If you want your combo popup to be a specific size you can use SetNextWindowSizeConstraints() prior to calling BeginCombo()
     */
    readonly HeightSmall: 2;
    /**
     * Max ~8 items visible (default)
     */
    readonly HeightRegular: 4;
    /**
     * Max ~20 items visible
     */
    readonly HeightLarge: 8;
    /**
     * As many fitting items as possible
     */
    readonly HeightLargest: 16;
    /**
     * Display on the preview box without the square arrow button
     */
    readonly NoArrowButton: 32;
    /**
     * Display only a square arrow button
     */
    readonly NoPreview: 64;
    /**
     * Width dynamically calculated from preview contents
     */
    readonly WidthFitPreview: 128;
};
/**
 * Flags for ImGui::BeginTabBar()
 */
export declare const ImGuiTabBarFlags: {
    readonly None: 0;
    /**
     * Allow manually dragging tabs to re-order them + New tabs are appended at the end of list
     */
    readonly Reorderable: 1;
    /**
     * Automatically select new tabs when they appear
     */
    readonly AutoSelectNewTabs: 2;
    /**
     * Disable buttons to open the tab list popup
     */
    readonly TabListPopupButton: 4;
    /**
     * Disable behavior of closing tabs (that are submitted with p_open != NULL) with middle mouse button. You may handle this behavior manually on user's side with if (IsItemHovered() && IsMouseClicked(2)) *p_open = false.
     */
    readonly NoCloseWithMiddleMouseButton: 8;
    /**
     * Disable scrolling buttons (apply when fitting policy is ImGuiTabBarFlags_FittingPolicyScroll)
     */
    readonly NoTabListScrollingButtons: 16;
    /**
     * Disable tooltips when hovering a tab
     */
    readonly NoTooltip: 32;
    /**
     * Draw selected overline markers over selected tab
     */
    readonly DrawSelectedOverline: 64;
    /**
     * Shrink down tabs when they don't fit, until width is style.TabMinWidthShrink, then enable scrolling. Setting TabMinWidthShrink to FLT_MAX makes this behave like ImGuiTabBarFlags_FittingPolicyScroll.
     */
    readonly FittingPolicyMixed: 128;
    /**
     * Shrink down tabs when they don't fit
     */
    readonly FittingPolicyShrink: 256;
    /**
     * Enable scrolling buttons when tabs don't fit
     */
    readonly FittingPolicyScroll: 512;
};
/**
 * Flags for ImGui::BeginTabItem()
 */
export declare const ImGuiTabItemFlags: {
    readonly None: 0;
    /**
     * Display a dot next to the title + set ImGuiTabItemFlags_NoAssumedClosure.
     */
    readonly UnsavedDocument: 1;
    /**
     * Trigger flag to programmatically make the tab selected when calling BeginTabItem()
     */
    readonly SetSelected: 2;
    /**
     * Disable behavior of closing tabs (that are submitted with p_open != NULL) with middle mouse button. You may handle this behavior manually on user's side with if (IsItemHovered() && IsMouseClicked(2)) *p_open = false.
     */
    readonly NoCloseWithMiddleMouseButton: 4;
    /**
     * Don't call PushID()/PopID() on BeginTabItem()/EndTabItem()
     */
    readonly NoPushId: 8;
    /**
     * Disable tooltip for the given tab
     */
    readonly NoTooltip: 16;
    /**
     * Disable reordering this tab or having another tab cross over this tab
     */
    readonly NoReorder: 32;
    /**
     * Enforce the tab position to the left of the tab bar (after the tab list popup button)
     */
    readonly Leading: 64;
    /**
     * Enforce the tab position to the right of the tab bar (before the scrolling buttons)
     */
    readonly Trailing: 128;
    /**
     * Tab is selected when trying to close + closure is not immediately assumed (will wait for user to stop submitting the tab). Otherwise closure is assumed when pressing the X, so if you keep submitting the tab may reappear at end of tab bar.
     */
    readonly NoAssumedClosure: 256;
};
/**
 * Flags for ImGui::IsWindowFocused()
 */
export declare const ImGuiFocusedFlags: {
    readonly None: 0;
    /**
     * Return true if any children of the window is focused
     */
    readonly ChildWindows: 1;
    /**
     * Test from root window (top most parent of the current hierarchy)
     */
    readonly RootWindow: 2;
    /**
     * Return true if any window is focused. Important: If you are trying to tell how to dispatch your low-level inputs, do NOT use this. Use 'io.WantCaptureMouse' instead! Please read the FAQ!
     */
    readonly AnyWindow: 4;
    /**
     * Do not consider popup hierarchy (do not treat popup emitter as parent of popup) (when used with _ChildWindows or _RootWindow)
     */
    readonly NoPopupHierarchy: 8;
    /**
     * Consider docking hierarchy (treat dockspace host as parent of docked window) (when used with _ChildWindows or _RootWindow)
     */
    readonly DockHierarchy: 16;
    readonly RootAndChildWindows: 3;
};
/**
 * Flags for ImGui::IsItemHovered(), ImGui::IsWindowHovered()
 * Note: if you are trying to check whether your mouse should be dispatched to Dear ImGui or to your app, you should use 'io.WantCaptureMouse' instead! Please read the FAQ!
 * Note: windows with the ImGuiWindowFlags_NoInputs flag are ignored by IsWindowHovered() calls.
 */
export declare const ImGuiHoveredFlags: {
    /**
     * Return true if directly over the item/window, not obstructed by another window, not obstructed by an active popup or modal blocking inputs under them.
     */
    readonly None: 0;
    /**
     * IsWindowHovered() only: Return true if any children of the window is hovered
     */
    readonly ChildWindows: 1;
    /**
     * IsWindowHovered() only: Test from root window (top most parent of the current hierarchy)
     */
    readonly RootWindow: 2;
    /**
     * IsWindowHovered() only: Return true if any window is hovered
     */
    readonly AnyWindow: 4;
    /**
     * IsWindowHovered() only: Do not consider popup hierarchy (do not treat popup emitter as parent of popup) (when used with _ChildWindows or _RootWindow)
     */
    readonly NoPopupHierarchy: 8;
    /**
     * IsWindowHovered() only: Consider docking hierarchy (treat dockspace host as parent of docked window) (when used with _ChildWindows or _RootWindow)
     */
    readonly DockHierarchy: 16;
    /**
     * Return true even if a popup window is normally blocking access to this item/window
     */
    readonly AllowWhenBlockedByPopup: 32;
    /**
     * Return true even if an active item is blocking access to this item/window. Useful for Drag and Drop patterns.
     */
    readonly AllowWhenBlockedByActiveItem: 128;
    /**
     * IsItemHovered() only: Return true even if the item uses AllowOverlap mode and is overlapped by another hoverable item.
     */
    readonly AllowWhenOverlappedByItem: 256;
    /**
     * IsItemHovered() only: Return true even if the position is obstructed or overlapped by another window.
     */
    readonly AllowWhenOverlappedByWindow: 512;
    /**
     * IsItemHovered() only: Return true even if the item is disabled
     */
    readonly AllowWhenDisabled: 1024;
    /**
     * IsItemHovered() only: Disable using keyboard/gamepad navigation state when active, always query mouse
     */
    readonly NoNavOverride: 2048;
    readonly AllowWhenOverlapped: 768;
    readonly RectOnly: 928;
    readonly RootAndChildWindows: 3;
    /**
     * Shortcut for standard flags when using IsItemHovered() + SetTooltip() sequence.
     */
    readonly ForTooltip: 4096;
    /**
     * Require mouse to be stationary for style.HoverStationaryDelay (~0.15 sec) _at least one time_. After this, can move on same item/window. Using the stationary test tends to reduces the need for a long delay.
     */
    readonly Stationary: 8192;
    /**
     * IsItemHovered() only: Return true immediately (default). As this is the default you generally ignore this.
     */
    readonly DelayNone: 16384;
    /**
     * IsItemHovered() only: Return true after style.HoverDelayShort elapsed (~0.15 sec) (shared between items) + requires mouse to be stationary for style.HoverStationaryDelay (once per item).
     */
    readonly DelayShort: 32768;
    /**
     * IsItemHovered() only: Return true after style.HoverDelayNormal elapsed (~0.40 sec) (shared between items) + requires mouse to be stationary for style.HoverStationaryDelay (once per item).
     */
    readonly DelayNormal: 65536;
    /**
     * IsItemHovered() only: Disable shared delay system where moving from one item to the next keeps the previous timer for a short time (standard for tooltips with long delays)
     */
    readonly NoSharedDelay: 131072;
};
/**
 * Flags for ImGui::DockSpace(), shared/inherited by child nodes.
 * (Some flags can be applied to individual nodes directly)
 * FIXME-DOCK: Also see ImGuiDockNodeFlagsPrivate_ which may involve using the WIP and internal DockBuilder api.
 */
export declare const ImGuiDockNodeFlags: {
    readonly None: 0;
    /**
     *       // Don't display the dockspace node but keep it alive. Windows docked into this dockspace node won't be undocked.
     */
    readonly KeepAliveOnly: 1;
    /**
     *       // Disable docking over the Central Node, which will be always kept empty.
     */
    readonly NoDockingOverCentralNode: 4;
    /**
     *       // Enable passthru dockspace: 1) DockSpace() will render a ImGuiCol_WindowBg background covering everything excepted the Central Node when empty. Meaning the host window should probably use SetNextWindowBgAlpha(0.0f) prior to Begin() when using this. 2) When Central Node is empty: let inputs pass-through + won't display a DockingEmptyBg background. See demo for details.
     */
    readonly PassthruCentralNode: 8;
    /**
     *       // Disable other windows/nodes from splitting this node.
     */
    readonly NoDockingSplit: 16;
    /**
     * Saved // Disable resizing node using the splitter/separators. Useful with programmatically setup dockspaces.
     */
    readonly NoResize: 32;
    /**
     *       // Tab bar will automatically hide when there is a single window in the dock node.
     */
    readonly AutoHideTabBar: 64;
    /**
     *       // Disable undocking this node.
     */
    readonly NoUndocking: 128;
};
/**
 * Flags for ImGui::BeginDragDropSource(), ImGui::AcceptDragDropPayload()
 */
export declare const ImGuiDragDropFlags: {
    readonly None: 0;
    /**
     * Disable preview tooltip. By default, a successful call to BeginDragDropSource opens a tooltip so you can display a preview or description of the source contents. This flag disables this behavior.
     */
    readonly SourceNoPreviewTooltip: 1;
    /**
     * By default, when dragging we clear data so that IsItemHovered() will return false, to avoid subsequent user code submitting tooltips. This flag disables this behavior so you can still call IsItemHovered() on the source item.
     */
    readonly SourceNoDisableHover: 2;
    /**
     * Disable the behavior that allows to open tree nodes and collapsing header by holding over them while dragging a source item.
     */
    readonly SourceNoHoldToOpenOthers: 4;
    /**
     * Allow items such as Text(), Image() that have no unique identifier to be used as drag source, by manufacturing a temporary identifier based on their window-relative position. This is extremely unusual within the dear imgui ecosystem and so we made it explicit.
     */
    readonly SourceAllowNullID: 8;
    /**
     * External source (from outside of dear imgui), won't attempt to read current item/window info. Will always return true. Only one Extern source can be active simultaneously.
     */
    readonly SourceExtern: 16;
    /**
     * Automatically expire the payload if the source cease to be submitted (otherwise payloads are persisting while being dragged)
     */
    readonly PayloadAutoExpire: 32;
    /**
     * Hint to specify that the payload may not be copied outside current dear imgui context.
     */
    readonly PayloadNoCrossContext: 64;
    /**
     * Hint to specify that the payload may not be copied outside current process.
     */
    readonly PayloadNoCrossProcess: 128;
    /**
     * AcceptDragDropPayload() will returns true even before the mouse button is released. You can then call IsDelivery() to test if the payload needs to be delivered.
     */
    readonly AcceptBeforeDelivery: 1024;
    /**
     * Do not draw the default highlight rectangle when hovering over target.
     */
    readonly AcceptNoDrawDefaultRect: 2048;
    /**
     * Request hiding the BeginDragDropSource tooltip from the BeginDragDropTarget site.
     */
    readonly AcceptNoPreviewTooltip: 4096;
    /**
     * Accepting item will render as if hovered. Useful for e.g. a Button() used as a drop target.
     */
    readonly AcceptDrawAsHovered: 8192;
    /**
     * For peeking ahead and inspecting the payload before delivery.
     */
    readonly AcceptPeekOnly: 3072;
};
/**
 * A primary data type
 */
export declare const ImGuiDataType: {
    /**
     * signed char / char (with sensible compilers)
     */
    readonly S8: 0;
    /**
     * unsigned char
     */
    readonly U8: 1;
    /**
     * short
     */
    readonly S16: 2;
    /**
     * unsigned short
     */
    readonly U16: 3;
    /**
     * int
     */
    readonly S32: 4;
    /**
     * unsigned int
     */
    readonly U32: 5;
    /**
     * long long / __int64
     */
    readonly S64: 6;
    /**
     * unsigned long long / unsigned __int64
     */
    readonly U64: 7;
    /**
     * float
     */
    readonly Float: 8;
    /**
     * double
     */
    readonly Double: 9;
    /**
     * bool (provided for user convenience, not supported by scalar widgets)
     */
    readonly Bool: 10;
    /**
     * char* (provided for user convenience, not supported by scalar widgets)
     */
    readonly String: 11;
    readonly COUNT: 12;
};
/**
 * Forward declared enum type ImGuiDir
 */
export declare const ImGuiDir: {
    readonly _None: -1;
    readonly _Left: 0;
    readonly _Right: 1;
    readonly _Up: 2;
    readonly _Down: 3;
    readonly _COUNT: 4;
};
/**
 * Forward declared enum type ImGuiSortDirection
 */
export declare const ImGuiSortDirection: {
    readonly _None: 0;
    /**
     * Ascending = 0->9, A->Z etc.
     */
    readonly _Ascending: 1;
    /**
     * Descending = 9->0, Z->A etc.
     */
    readonly _Descending: 2;
};
/**
 * Forward declared enum type ImGuiKey
 */
export declare const ImGuiKey: {
    /**
     * Keyboard
     */
    readonly _None: 0;
    /**
     * First valid key value (other than 0)
     */
    readonly _NamedKey_BEGIN: 512;
    /**
     * == ImGuiKey_NamedKey_BEGIN
     */
    readonly _Tab: 512;
    readonly _LeftArrow: 513;
    readonly _RightArrow: 514;
    readonly _UpArrow: 515;
    readonly _DownArrow: 516;
    readonly _PageUp: 517;
    readonly _PageDown: 518;
    readonly _Home: 519;
    readonly _End: 520;
    readonly _Insert: 521;
    readonly _Delete: 522;
    readonly _Backspace: 523;
    readonly _Space: 524;
    readonly _Enter: 525;
    readonly _Escape: 526;
    readonly _LeftCtrl: 527;
    readonly _LeftShift: 528;
    readonly _LeftAlt: 529;
    /**
     * Also see ImGuiMod_Ctrl, ImGuiMod_Shift, ImGuiMod_Alt, ImGuiMod_Super below!
     */
    readonly _LeftSuper: 530;
    readonly _RightCtrl: 531;
    readonly _RightShift: 532;
    readonly _RightAlt: 533;
    readonly _RightSuper: 534;
    readonly _Menu: 535;
    readonly _0: 536;
    readonly _1: 537;
    readonly _2: 538;
    readonly _3: 539;
    readonly _4: 540;
    readonly _5: 541;
    readonly _6: 542;
    readonly _7: 543;
    readonly _8: 544;
    readonly _9: 545;
    readonly _A: 546;
    readonly _B: 547;
    readonly _C: 548;
    readonly _D: 549;
    readonly _E: 550;
    readonly _F: 551;
    readonly _G: 552;
    readonly _H: 553;
    readonly _I: 554;
    readonly _J: 555;
    readonly _K: 556;
    readonly _L: 557;
    readonly _M: 558;
    readonly _N: 559;
    readonly _O: 560;
    readonly _P: 561;
    readonly _Q: 562;
    readonly _R: 563;
    readonly _S: 564;
    readonly _T: 565;
    readonly _U: 566;
    readonly _V: 567;
    readonly _W: 568;
    readonly _X: 569;
    readonly _Y: 570;
    readonly _Z: 571;
    readonly _F1: 572;
    readonly _F2: 573;
    readonly _F3: 574;
    readonly _F4: 575;
    readonly _F5: 576;
    readonly _F6: 577;
    readonly _F7: 578;
    readonly _F8: 579;
    readonly _F9: 580;
    readonly _F10: 581;
    readonly _F11: 582;
    readonly _F12: 583;
    readonly _F13: 584;
    readonly _F14: 585;
    readonly _F15: 586;
    readonly _F16: 587;
    readonly _F17: 588;
    readonly _F18: 589;
    readonly _F19: 590;
    readonly _F20: 591;
    readonly _F21: 592;
    readonly _F22: 593;
    readonly _F23: 594;
    readonly _F24: 595;
    /**
     * '
     */
    readonly _Apostrophe: 596;
    /**
     * ,
     */
    readonly _Comma: 597;
    /**
     * -
     */
    readonly _Minus: 598;
    /**
     * .
     */
    readonly _Period: 599;
    /**
     * /
     */
    readonly _Slash: 600;
    /**
     * ;
     */
    readonly _Semicolon: 601;
    /**
     * =
     */
    readonly _Equal: 602;
    /**
     * [
     */
    readonly _LeftBracket: 603;
    /**
     * \ (this text inhibit multiline comment caused by backslash)
     */
    readonly _Backslash: 604;
    /**
     * ]
     */
    readonly _RightBracket: 605;
    /**
     * `
     */
    readonly _GraveAccent: 606;
    readonly _CapsLock: 607;
    readonly _ScrollLock: 608;
    readonly _NumLock: 609;
    readonly _PrintScreen: 610;
    readonly _Pause: 611;
    readonly _Keypad0: 612;
    readonly _Keypad1: 613;
    readonly _Keypad2: 614;
    readonly _Keypad3: 615;
    readonly _Keypad4: 616;
    readonly _Keypad5: 617;
    readonly _Keypad6: 618;
    readonly _Keypad7: 619;
    readonly _Keypad8: 620;
    readonly _Keypad9: 621;
    readonly _KeypadDecimal: 622;
    readonly _KeypadDivide: 623;
    readonly _KeypadMultiply: 624;
    readonly _KeypadSubtract: 625;
    readonly _KeypadAdd: 626;
    readonly _KeypadEnter: 627;
    readonly _KeypadEqual: 628;
    /**
     * Available on some keyboard/mouses. Often referred as "Browser Back"
     */
    readonly _AppBack: 629;
    readonly _AppForward: 630;
    /**
     * Non-US backslash.
     */
    readonly _Oem102: 631;
    /**
     * Menu        | +       | Options  |
     */
    readonly _GamepadStart: 632;
    /**
     * View        | -       | Share    |
     */
    readonly _GamepadBack: 633;
    /**
     * X           | Y       | Square   | Toggle Menu. Hold for Windowing mode (Focus/Move/Resize windows)
     */
    readonly _GamepadFaceLeft: 634;
    /**
     * B           | A       | Circle   | Cancel / Close / Exit
     */
    readonly _GamepadFaceRight: 635;
    /**
     * Y           | X       | Triangle | Open Context Menu
     */
    readonly _GamepadFaceUp: 636;
    /**
     * A           | B       | Cross    | Activate / Open / Toggle. Hold for 0.60f to Activate in Text Input mode (e.g. wired to an on-screen keyboard).
     */
    readonly _GamepadFaceDown: 637;
    /**
     * D-pad Left  | "       | "        | Move / Tweak / Resize Window (in Windowing mode)
     */
    readonly _GamepadDpadLeft: 638;
    /**
     * D-pad Right | "       | "        | Move / Tweak / Resize Window (in Windowing mode)
     */
    readonly _GamepadDpadRight: 639;
    /**
     * D-pad Up    | "       | "        | Move / Tweak / Resize Window (in Windowing mode)
     */
    readonly _GamepadDpadUp: 640;
    /**
     * D-pad Down  | "       | "        | Move / Tweak / Resize Window (in Windowing mode)
     */
    readonly _GamepadDpadDown: 641;
    /**
     * L Bumper    | L       | L1       | Tweak Slower / Focus Previous (in Windowing mode)
     */
    readonly _GamepadL1: 642;
    /**
     * R Bumper    | R       | R1       | Tweak Faster / Focus Next (in Windowing mode)
     */
    readonly _GamepadR1: 643;
    /**
     * L Trigger   | ZL      | L2       | [Analog]
     */
    readonly _GamepadL2: 644;
    /**
     * R Trigger   | ZR      | R2       | [Analog]
     */
    readonly _GamepadR2: 645;
    /**
     * L Stick     | L3      | L3       |
     */
    readonly _GamepadL3: 646;
    /**
     * R Stick     | R3      | R3       |
     */
    readonly _GamepadR3: 647;
    /**
     *             |         |          | [Analog] Move Window (in Windowing mode)
     */
    readonly _GamepadLStickLeft: 648;
    /**
     *             |         |          | [Analog] Move Window (in Windowing mode)
     */
    readonly _GamepadLStickRight: 649;
    /**
     *             |         |          | [Analog] Move Window (in Windowing mode)
     */
    readonly _GamepadLStickUp: 650;
    /**
     *             |         |          | [Analog] Move Window (in Windowing mode)
     */
    readonly _GamepadLStickDown: 651;
    /**
     *             |         |          | [Analog]
     */
    readonly _GamepadRStickLeft: 652;
    /**
     *             |         |          | [Analog]
     */
    readonly _GamepadRStickRight: 653;
    /**
     *             |         |          | [Analog]
     */
    readonly _GamepadRStickUp: 654;
    /**
     *             |         |          | [Analog]
     */
    readonly _GamepadRStickDown: 655;
    /**
     * Aliases: Mouse Buttons (auto-submitted from AddMouseButtonEvent() calls)
     * - This is mirroring the data also written to io.MouseDown[], io.MouseWheel, in a format allowing them to be accessed via standard key API.
     */
    readonly _MouseLeft: 656;
    readonly _MouseRight: 657;
    readonly _MouseMiddle: 658;
    readonly _MouseX1: 659;
    readonly _MouseX2: 660;
    readonly _MouseWheelX: 661;
    readonly _MouseWheelY: 662;
    /**
     * Keyboard Modifiers (explicitly submitted by backend via AddKeyEvent() calls)
     * - Any functions taking a ImGuiKeyChord parameter can binary-or those with regular keys, e.g. Shortcut(ImGuiMod_Ctrl | ImGuiKey_S).
     * - Those are written back into io.KeyCtrl, io.KeyShift, io.KeyAlt, io.KeySuper for convenience,
     *   but may be accessed via standard key API such as IsKeyPressed(), IsKeyReleased(), querying duration etc.
     * - Code polling every key (e.g. an interface to detect a key press for input mapping) might want to ignore those
     *   and prefer using the real keys (e.g. ImGuiKey_LeftCtrl, ImGuiKey_RightCtrl instead of ImGuiMod_Ctrl).
     * - In theory the value of keyboard modifiers should be roughly equivalent to a logical or of the equivalent left/right keys.
     *   In practice: it's complicated; mods are often provided from different sources. Keyboard layout, IME, sticky keys and
     *   backends tend to interfere and break that equivalence. The safer decision is to relay that ambiguity down to the end-user...
     * - On macOS, we swap Cmd(Super) and Ctrl keys at the time of the io.AddKeyEvent() call.
     */
    readonly ImGuiMod_None: 0;
    /**
     * Ctrl (non-macOS), Cmd (macOS)
     */
    readonly ImGuiMod_Ctrl: 4096;
    /**
     * Shift
     */
    readonly ImGuiMod_Shift: 8192;
    /**
     * Option/Menu
     */
    readonly ImGuiMod_Alt: 16384;
    /**
     * Windows/Super (non-macOS), Ctrl (macOS)
     */
    readonly ImGuiMod_Super: 32768;
};
/**
 * Flags for Shortcut(), SetNextItemShortcut(),
 * (and for upcoming extended versions of IsKeyPressed(), IsMouseClicked(), Shortcut(), SetKeyOwner(), SetItemKeyOwner() that are still in imgui_internal.h)
 * Don't mistake with ImGuiInputTextFlags! (which is for ImGui::InputText() function)
 */
export declare const ImGuiInputFlags: {
    readonly None: 0;
    /**
     * Enable repeat. Return true on successive repeats. Default for legacy IsKeyPressed(). NOT Default for legacy IsMouseClicked(). MUST BE == 1.
     */
    readonly Repeat: 1;
    /**
     * Route to active item only.
     */
    readonly RouteActive: 1024;
    /**
     * Route to windows in the focus stack (DEFAULT). Deep-most focused window takes inputs. Active item takes inputs over deep-most focused window.
     */
    readonly RouteFocused: 2048;
    /**
     * Global route (unless a focused window or active item registered the route).
     */
    readonly RouteGlobal: 4096;
    /**
     * Do not register route, poll keys directly.
     */
    readonly RouteAlways: 8192;
    /**
     * Option: global route: higher priority than focused route (unless active item in focused route).
     */
    readonly RouteOverFocused: 16384;
    /**
     * Option: global route: higher priority than active item. Unlikely you need to use that: will interfere with every active items, e.g. Ctrl+A registered by InputText will be overridden by this. May not be fully honored as user/internal code is likely to always assume they can access keys when active.
     */
    readonly RouteOverActive: 32768;
    /**
     * Option: global route: will not be applied if underlying background/void is focused (== no Dear ImGui windows are focused). Useful for overlay applications.
     */
    readonly RouteUnlessBgFocused: 65536;
    /**
     * Option: route evaluated from the point of view of root window rather than current window.
     */
    readonly RouteFromRootWindow: 131072;
    /**
     * Automatically display a tooltip when hovering item [BETA] Unsure of right api (opt-in/opt-out)
     */
    readonly Tooltip: 262144;
};
/**
 * Configuration flags stored in io.ConfigFlags. Set by user/application.
 * Note that nowadays most of our configuration options are in other ImGuiIO fields, e.g. io.ConfigWindowsMoveFromTitleBarOnly.
 */
export declare const ImGuiConfigFlags: {
    readonly None: 0;
    /**
     * Master keyboard navigation enable flag. Enable full Tabbing + directional arrows + Space/Enter to activate. Note: some features such as basic Tabbing and CtrL+Tab are enabled by regardless of this flag (and may be disabled via other means, see #4828, #9218).
     */
    readonly NavEnableKeyboard: 1;
    /**
     * Master gamepad navigation enable flag. Backend also needs to set ImGuiBackendFlags_HasGamepad.
     */
    readonly NavEnableGamepad: 2;
    /**
     * Instruct dear imgui to disable mouse inputs and interactions.
     */
    readonly NoMouse: 16;
    /**
     * Instruct backend to not alter mouse cursor shape and visibility. Use if the backend cursor changes are interfering with yours and you don't want to use SetMouseCursor() to change mouse cursor. You may want to honor requests from imgui by reading GetMouseCursor() yourself instead.
     */
    readonly NoMouseCursorChange: 32;
    /**
     * Instruct dear imgui to disable keyboard inputs and interactions. This is done by ignoring keyboard events and clearing existing states.
     */
    readonly NoKeyboard: 64;
    /**
     * Docking enable flags.
     */
    readonly DockingEnable: 128;
    /**
     * Viewport enable flags (require both ImGuiBackendFlags_PlatformHasViewports + ImGuiBackendFlags_RendererHasViewports set by the respective backends)
     */
    readonly ViewportsEnable: 1024;
    /**
     * Application is SRGB-aware.
     */
    readonly IsSRGB: 1048576;
    /**
     * Application is using a touch screen instead of a mouse.
     */
    readonly IsTouchScreen: 2097152;
};
/**
 * Backend capabilities flags stored in io.BackendFlags. Set by imgui_impl_xxx or custom backend.
 */
export declare const ImGuiBackendFlags: {
    readonly None: 0;
    /**
     * Backend Platform supports gamepad and currently has one connected.
     */
    readonly HasGamepad: 1;
    /**
     * Backend Platform supports honoring GetMouseCursor() value to change the OS cursor shape.
     */
    readonly HasMouseCursors: 2;
    /**
     * Backend Platform supports io.WantSetMousePos requests to reposition the OS mouse position (only used if io.ConfigNavMoveSetMousePos is set).
     */
    readonly HasSetMousePos: 4;
    /**
     * Backend Renderer supports ImDrawCmd::VtxOffset. This enables output of large meshes (64K+ vertices) while still using 16-bit indices.
     */
    readonly RendererHasVtxOffset: 8;
    /**
     * Backend Renderer supports ImTextureData requests to create/update/destroy textures. This enables incremental texture updates and texture reloads. See https://github.com/ocornut/imgui/blob/master/docs/BACKENDS.md for instructions on how to upgrade your custom backend.
     */
    readonly RendererHasTextures: 16;
    /**
     * Backend Renderer supports multiple viewports.
     */
    readonly RendererHasViewports: 1024;
    /**
     * Backend Platform supports multiple viewports.
     */
    readonly PlatformHasViewports: 2048;
    /**
     * Backend Platform supports calling io.AddMouseViewportEvent() with the viewport under the mouse. IF POSSIBLE, ignore viewports with the ImGuiViewportFlags_NoInputs flag (Win32 backend, GLFW 3.30+ backend can do this, SDL backend cannot). If this cannot be done, Dear ImGui needs to use a flawed heuristic to find the viewport under.
     */
    readonly HasMouseHoveredViewport: 4096;
    /**
     * Backend Platform supports honoring viewport->ParentViewport/ParentViewportId value, by applying the corresponding parent/child relationship at the Platform level. Child windows always appear in front of their parent window.
     */
    readonly HasParentViewport: 8192;
};
/**
 * Enumeration for PushStyleColor() / PopStyleColor()
 */
export declare const ImGuiCol: {
    readonly Text: 0;
    readonly TextDisabled: 1;
    /**
     * Background of normal windows
     */
    readonly WindowBg: 2;
    /**
     * Background of child windows
     */
    readonly ChildBg: 3;
    /**
     * Background of popups, menus, tooltips windows
     */
    readonly PopupBg: 4;
    readonly Border: 5;
    readonly BorderShadow: 6;
    /**
     * Background of checkbox, radio button, plot, slider, text input
     */
    readonly FrameBg: 7;
    readonly FrameBgHovered: 8;
    readonly FrameBgActive: 9;
    /**
     * Title bar
     */
    readonly TitleBg: 10;
    /**
     * Title bar when focused
     */
    readonly TitleBgActive: 11;
    /**
     * Title bar when collapsed
     */
    readonly TitleBgCollapsed: 12;
    readonly MenuBarBg: 13;
    readonly ScrollbarBg: 14;
    readonly ScrollbarGrab: 15;
    readonly ScrollbarGrabHovered: 16;
    readonly ScrollbarGrabActive: 17;
    /**
     * Checkbox tick and RadioButton circle
     */
    readonly CheckMark: 18;
    /**
     * Checkbox background when Selected, otherwise use FrameBg
     */
    readonly CheckboxSelectedBg: 19;
    readonly SliderGrab: 20;
    readonly SliderGrabActive: 21;
    readonly Button: 22;
    readonly ButtonHovered: 23;
    readonly ButtonActive: 24;
    /**
     * Header* colors are used for CollapsingHeader, TreeNode, Selectable, MenuItem
     */
    readonly Header: 25;
    readonly HeaderHovered: 26;
    readonly HeaderActive: 27;
    readonly Separator: 28;
    readonly SeparatorHovered: 29;
    readonly SeparatorActive: 30;
    /**
     * Resize grip in lower-right and lower-left corners of windows.
     */
    readonly ResizeGrip: 31;
    readonly ResizeGripHovered: 32;
    readonly ResizeGripActive: 33;
    /**
     * InputText cursor/caret
     */
    readonly InputTextCursor: 34;
    /**
     * Tab background, when hovered
     */
    readonly TabHovered: 35;
    /**
     * Tab background, when tab-bar is focused & tab is unselected
     */
    readonly Tab: 36;
    /**
     * Tab background, when tab-bar is focused & tab is selected
     */
    readonly TabSelected: 37;
    /**
     * Tab horizontal overline, when tab-bar is focused & tab is selected
     */
    readonly TabSelectedOverline: 38;
    /**
     * Tab background, when tab-bar is unfocused & tab is unselected
     */
    readonly TabDimmed: 39;
    /**
     * Tab background, when tab-bar is unfocused & tab is selected
     */
    readonly TabDimmedSelected: 40;
    /**
     * .horizontal overline, when tab-bar is unfocused & tab is selected
     */
    readonly TabDimmedSelectedOverline: 41;
    /**
     * Preview overlay color when about to docking something
     */
    readonly DockingPreview: 42;
    /**
     * Background color for empty node (e.g. CentralNode with no window docked into it)
     */
    readonly DockingEmptyBg: 43;
    readonly PlotLines: 44;
    readonly PlotLinesHovered: 45;
    readonly PlotHistogram: 46;
    readonly PlotHistogramHovered: 47;
    /**
     * Table header background
     */
    readonly TableHeaderBg: 48;
    /**
     * Table outer and header borders (prefer using Alpha=1.0 here)
     */
    readonly TableBorderStrong: 49;
    /**
     * Table inner borders (prefer using Alpha=1.0 here)
     */
    readonly TableBorderLight: 50;
    /**
     * Table row background (even rows)
     */
    readonly TableRowBg: 51;
    /**
     * Table row background (odd rows)
     */
    readonly TableRowBgAlt: 52;
    /**
     * Hyperlink color
     */
    readonly TextLink: 53;
    /**
     * Selected text inside an InputText
     */
    readonly TextSelectedBg: 54;
    /**
     * Tree node hierarchy outlines when using ImGuiTreeNodeFlags_DrawLines
     */
    readonly TreeLines: 55;
    /**
     * Rectangle border highlighting a drop target
     */
    readonly DragDropTarget: 56;
    /**
     * Rectangle background highlighting a drop target
     */
    readonly DragDropTargetBg: 57;
    /**
     * Unsaved Document marker (in window title and tabs)
     */
    readonly UnsavedMarker: 58;
    /**
     * Color of keyboard/gamepad navigation cursor/rectangle, when visible
     */
    readonly NavCursor: 59;
    /**
     * Highlight window when using Ctrl+Tab
     */
    readonly NavWindowingHighlight: 60;
    /**
     * Darken/colorize entire screen behind the Ctrl+Tab window list, when active
     */
    readonly NavWindowingDimBg: 61;
    /**
     * Darken/colorize entire screen behind a modal window, when one is active
     */
    readonly ModalWindowDimBg: 62;
    readonly COUNT: 63;
};
/**
 * Enumeration for PushStyleVar() / PopStyleVar() to temporarily modify the ImGuiStyle structure.
 * - The enum only refers to fields of ImGuiStyle which makes sense to be pushed/popped inside UI code.
 *   During initialization or between frames, feel free to just poke into ImGuiStyle directly.
 * - Tip: Use your programming IDE navigation facilities on the names in the _second column_ below to find the actual members and their description.
 *   - In Visual Studio: Ctrl+Comma ("Edit.GoToAll") can follow symbols inside comments, whereas Ctrl+F12 ("Edit.GoToImplementation") cannot.
 *   - In Visual Studio w/ Visual Assist installed: Alt+G ("VAssistX.GoToImplementation") can also follow symbols inside comments.
 *   - In VS Code, CLion, etc.: Ctrl+Click can follow symbols inside comments.
 * - When changing this enum, you need to update the associated internal table GStyleVarInfo[] accordingly. This is where we link enum values to members offset/type.
 */
export declare const ImGuiStyleVar: {
    /**
     * float     Alpha
     */
    readonly Alpha: 0;
    /**
     * float     DisabledAlpha
     */
    readonly DisabledAlpha: 1;
    /**
     * ImVec2    WindowPadding
     */
    readonly WindowPadding: 2;
    /**
     * float     WindowRounding
     */
    readonly WindowRounding: 3;
    /**
     * float     WindowBorderSize
     */
    readonly WindowBorderSize: 4;
    /**
     * ImVec2    WindowMinSize
     */
    readonly WindowMinSize: 5;
    /**
     * ImVec2    WindowTitleAlign
     */
    readonly WindowTitleAlign: 6;
    /**
     * float     ChildRounding
     */
    readonly ChildRounding: 7;
    /**
     * float     ChildBorderSize
     */
    readonly ChildBorderSize: 8;
    /**
     * float     PopupRounding
     */
    readonly PopupRounding: 9;
    /**
     * float     PopupBorderSize
     */
    readonly PopupBorderSize: 10;
    /**
     * ImVec2    FramePadding
     */
    readonly FramePadding: 11;
    /**
     * float     FrameRounding
     */
    readonly FrameRounding: 12;
    /**
     * float     FrameBorderSize
     */
    readonly FrameBorderSize: 13;
    /**
     * ImVec2    ItemSpacing
     */
    readonly ItemSpacing: 14;
    /**
     * ImVec2    ItemInnerSpacing
     */
    readonly ItemInnerSpacing: 15;
    /**
     * float     IndentSpacing
     */
    readonly IndentSpacing: 16;
    /**
     * ImVec2    CellPadding
     */
    readonly CellPadding: 17;
    /**
     * float     ScrollbarSize
     */
    readonly ScrollbarSize: 18;
    /**
     * float     ScrollbarRounding
     */
    readonly ScrollbarRounding: 19;
    /**
     * float     ScrollbarPadding
     */
    readonly ScrollbarPadding: 20;
    /**
     * float     GrabMinSize
     */
    readonly GrabMinSize: 21;
    /**
     * float     GrabRounding
     */
    readonly GrabRounding: 22;
    /**
     * float     ImageRounding
     */
    readonly ImageRounding: 23;
    /**
     * float     ImageBorderSize
     */
    readonly ImageBorderSize: 24;
    /**
     * float     TabRounding
     */
    readonly TabRounding: 25;
    /**
     * float     TabBorderSize
     */
    readonly TabBorderSize: 26;
    /**
     * float     TabMinWidthBase
     */
    readonly TabMinWidthBase: 27;
    /**
     * float     TabMinWidthShrink
     */
    readonly TabMinWidthShrink: 28;
    /**
     * float     TabBarBorderSize
     */
    readonly TabBarBorderSize: 29;
    /**
     * float     TabBarOverlineSize
     */
    readonly TabBarOverlineSize: 30;
    /**
     * float     TableAngledHeadersAngle
     */
    readonly TableAngledHeadersAngle: 31;
    /**
     * ImVec2  TableAngledHeadersTextAlign
     */
    readonly TableAngledHeadersTextAlign: 32;
    /**
     * float     TreeLinesSize
     */
    readonly TreeLinesSize: 33;
    /**
     * float     TreeLinesRounding
     */
    readonly TreeLinesRounding: 34;
    /**
     * float     DragDropTargetRounding
     */
    readonly DragDropTargetRounding: 35;
    /**
     * ImVec2    ButtonTextAlign
     */
    readonly ButtonTextAlign: 36;
    /**
     * ImVec2    SelectableTextAlign
     */
    readonly SelectableTextAlign: 37;
    /**
     * float     SeparatorSize
     */
    readonly SeparatorSize: 38;
    /**
     * float     SeparatorTextBorderSize
     */
    readonly SeparatorTextBorderSize: 39;
    /**
     * ImVec2    SeparatorTextAlign
     */
    readonly SeparatorTextAlign: 40;
    /**
     * ImVec2    SeparatorTextPadding
     */
    readonly SeparatorTextPadding: 41;
    /**
     * float     DockingSeparatorSize
     */
    readonly DockingSeparatorSize: 42;
    readonly COUNT: 43;
};
/**
 * Flags for InvisibleButton() [extended in imgui_internal.h]
 */
export declare const ImGuiButtonFlags: {
    readonly None: 0;
    /**
     * React on left mouse button (default)
     */
    readonly MouseButtonLeft: 1;
    /**
     * React on right mouse button
     */
    readonly MouseButtonRight: 2;
    /**
     * React on center mouse button
     */
    readonly MouseButtonMiddle: 4;
    /**
     * InvisibleButton(): do not disable navigation/tabbing. Otherwise disabled by default.
     */
    readonly EnableNav: 8;
    /**
     * Hit testing will allow subsequent widgets to overlap this one. Require previous frame HoveredId to match before being usable. Shortcut to calling SetNextItemAllowOverlap().
     */
    readonly AllowOverlap: 4096;
};
/**
 * Flags for ColorEdit3() / ColorEdit4() / ColorPicker3() / ColorPicker4() / ColorButton()
 */
export declare const ImGuiColorEditFlags: {
    readonly None: 0;
    /**
     *              // ColorEdit, ColorPicker, ColorButton: ignore Alpha component (will only read 3 components from the input pointer).
     */
    readonly NoAlpha: 2;
    /**
     *              // ColorEdit: disable picker when clicking on color square.
     */
    readonly NoPicker: 4;
    /**
     *              // ColorEdit: disable toggling options menu when right-clicking on inputs/small preview.
     */
    readonly NoOptions: 8;
    /**
     *              // ColorEdit, ColorPicker: disable color square preview next to the inputs. (e.g. to show only the inputs)
     */
    readonly NoSmallPreview: 16;
    /**
     *              // ColorEdit, ColorPicker: disable inputs sliders/text widgets (e.g. to show only the small preview color square).
     */
    readonly NoInputs: 32;
    /**
     *              // ColorEdit, ColorPicker, ColorButton: disable tooltip when hovering the preview.
     */
    readonly NoTooltip: 64;
    /**
     *              // ColorEdit, ColorPicker: disable display of inline text label (the label is still forwarded to the tooltip and picker).
     */
    readonly NoLabel: 128;
    /**
     *              // ColorPicker: disable bigger color preview on right side of the picker, use small color square preview instead.
     */
    readonly NoSidePreview: 256;
    /**
     *              // ColorEdit: disable drag and drop target/source. ColorButton: disable drag and drop source.
     */
    readonly NoDragDrop: 512;
    /**
     *              // ColorButton: disable border (which is enforced by default)
     */
    readonly NoBorder: 1024;
    /**
     *              // ColorEdit: disable rendering R/G/B/A color marker. May also be disabled globally by setting style.ColorMarkerSize = 0.
     */
    readonly NoColorMarkers: 2048;
    /**
     *              // ColorEdit, ColorPicker, ColorButton: disable alpha in the preview,. Contrary to _NoAlpha it may still be edited when calling ColorEdit4()/ColorPicker4(). For ColorButton() this does the same as _NoAlpha.
     */
    readonly AlphaOpaque: 4096;
    /**
     *              // ColorEdit, ColorPicker, ColorButton: disable rendering a checkerboard background behind transparent color.
     */
    readonly AlphaNoBg: 8192;
    /**
     *              // ColorEdit, ColorPicker, ColorButton: display half opaque / half transparent preview.
     */
    readonly AlphaPreviewHalf: 16384;
    /**
     *              // ColorEdit, ColorPicker: show vertical alpha bar/gradient in picker.
     */
    readonly AlphaBar: 262144;
    /**
     *              // (WIP) ColorEdit: Currently only disable 0.0f..1.0f limits in RGBA edition (note: you probably want to use ImGuiColorEditFlags_Float flag as well).
     */
    readonly HDR: 524288;
    /**
     * [Display]    // ColorEdit: override _display_ type among RGB/HSV/Hex. ColorPicker: select any combination using one or more of RGB/HSV/Hex.
     */
    readonly DisplayRGB: 1048576;
    /**
     * [Display]    // "
     */
    readonly DisplayHSV: 2097152;
    /**
     * [Display]    // "
     */
    readonly DisplayHex: 4194304;
    /**
     * [DataType]   // ColorEdit, ColorPicker, ColorButton: _display_ values formatted as 0..255.
     */
    readonly Uint8: 8388608;
    /**
     * [DataType]   // ColorEdit, ColorPicker, ColorButton: _display_ values formatted as 0.0f..1.0f floats instead of 0..255 integers. No round-trip of value via integers.
     */
    readonly Float: 16777216;
    /**
     * [Picker]     // ColorPicker: bar for Hue, rectangle for Sat/Value.
     */
    readonly PickerHueBar: 33554432;
    /**
     * [Picker]     // ColorPicker: wheel for Hue, triangle for Sat/Value.
     */
    readonly PickerHueWheel: 67108864;
    /**
     * [Input]      // ColorEdit, ColorPicker: input and output data in RGB format.
     */
    readonly InputRGB: 134217728;
    /**
     * [Input]      // ColorEdit, ColorPicker: input and output data in HSV format.
     */
    readonly InputHSV: 268435456;
};
/**
 * Flags for DragFloat(), DragInt(), SliderFloat(), SliderInt() etc.
 * We use the same sets of flags for DragXXX() and SliderXXX() functions as the features are the same and it makes it easier to swap them.
 * (Those are per-item flags. There is shared behavior flag too: ImGuiIO: io.ConfigDragClickToInputText)
 */
export declare const ImGuiSliderFlags: {
    readonly None: 0;
    /**
     * Make the widget logarithmic (linear otherwise). Consider using ImGuiSliderFlags_NoRoundToFormat with this if using a format-string with small amount of digits.
     */
    readonly Logarithmic: 32;
    /**
     * Disable rounding underlying value to match precision of the display format string (e.g. %.3f values are rounded to those 3 digits).
     */
    readonly NoRoundToFormat: 64;
    /**
     * Disable Ctrl+Click or Enter key allowing to input text directly into the widget.
     */
    readonly NoInput: 128;
    /**
     * Enable wrapping around from max to min and from min to max. Only supported by DragXXX() functions for now.
     */
    readonly WrapAround: 256;
    /**
     * Clamp value to min/max bounds when input manually with Ctrl+Click. By default Ctrl+Click allows going out of bounds.
     */
    readonly ClampOnInput: 512;
    /**
     * Clamp even if min==max==0.0f. Otherwise due to legacy reason DragXXX functions don't clamp with those values. When your clamping limits are dynamic you almost always want to use it.
     */
    readonly ClampZeroRange: 1024;
    /**
     * Disable keyboard modifiers altering tweak speed. Useful if you want to alter tweak speed yourself based on your own logic.
     */
    readonly NoSpeedTweaks: 2048;
    /**
     * DragScalarN(), SliderScalarN(): Draw R/G/B/A color markers on each component.
     */
    readonly ColorMarkers: 4096;
    readonly AlwaysClamp: 1536;
};
/**
 * Identify a mouse button.
 * Those values are guaranteed to be stable and we frequently use 0/1 directly. Named enums provided for convenience.
 */
export declare const ImGuiMouseButton: {
    readonly Left: 0;
    readonly Right: 1;
    readonly Middle: 2;
    readonly COUNT: 5;
};
/**
 * Enumeration for GetMouseCursor()
 * User code may request backend to display given cursor by calling SetMouseCursor(), which is why we have some cursors that are marked unused here
 */
export declare const ImGuiMouseCursor: {
    readonly None: -1;
    readonly Arrow: 0;
    /**
     * When hovering over InputText, etc.
     */
    readonly TextInput: 1;
    /**
     * (Unused by Dear ImGui functions)
     */
    readonly ResizeAll: 2;
    /**
     * When hovering over a horizontal border
     */
    readonly ResizeNS: 3;
    /**
     * When hovering over a vertical border or a column
     */
    readonly ResizeEW: 4;
    /**
     * When hovering over the bottom-left corner of a window
     */
    readonly ResizeNESW: 5;
    /**
     * When hovering over the bottom-right corner of a window
     */
    readonly ResizeNWSE: 6;
    /**
     * (Unused by Dear ImGui functions. Use for e.g. hyperlinks)
     */
    readonly Hand: 7;
    /**
     * When waiting for something to process/load.
     */
    readonly Wait: 8;
    /**
     * When waiting for something to process/load, but application is still interactive.
     */
    readonly Progress: 9;
    /**
     * When hovering something with disallowed interaction. Usually a crossed circle.
     */
    readonly NotAllowed: 10;
    readonly COUNT: 11;
};
/**
 * Forward declared enum type ImGuiMouseSource
 */
export declare const ImGuiMouseSource: {
    /**
     * Input is coming from an actual mouse.
     */
    readonly _Mouse: 0;
    /**
     * Input is coming from a touch screen (no hovering prior to initial press, less precise initial press aiming, dual-axis wheeling possible).
     */
    readonly _TouchScreen: 1;
    /**
     * Input is coming from a pressure/magnetic pen (often used in conjunction with high-sampling rates).
     */
    readonly _Pen: 2;
    readonly _COUNT: 3;
};
/**
 * Enumeration for ImGui::SetNextWindow***(), SetWindow***(), SetNextItem***() functions
 * Represent a condition.
 * Important: Treat as a regular enum! Do NOT combine multiple values using binary operators! All the functions above treat 0 as a shortcut to ImGuiCond_Always.
 */
export declare const ImGuiCond: {
    /**
     * No condition (always set the variable), same as _Always
     */
    readonly None: 0;
    /**
     * No condition (always set the variable), same as _None
     */
    readonly Always: 1;
    /**
     * Set the variable once per runtime session (only the first call will succeed)
     */
    readonly Once: 2;
    /**
     * Set the variable if the object/window has no persistently saved data (no entry in .ini file)
     */
    readonly FirstUseEver: 4;
    /**
     * Set the variable if the object/window is appearing after being hidden/inactive (or the first time)
     */
    readonly Appearing: 8;
};
/**
 * Flags for ImGui::BeginTable()
 * - Important! Sizing policies have complex and subtle side effects, much more so than you would expect.
 *   Read comments/demos carefully + experiment with live demos to get acquainted with them.
 * - The DEFAULT sizing policies are:
 *    - Default to ImGuiTableFlags_SizingFixedFit    if ScrollX is on, or if host window has ImGuiWindowFlags_AlwaysAutoResize.
 *    - Default to ImGuiTableFlags_SizingStretchSame if ScrollX is off.
 * - When ScrollX is off:
 *    - Table defaults to ImGuiTableFlags_SizingStretchSame -> all Columns defaults to ImGuiTableColumnFlags_WidthStretch with same weight.
 *    - Columns sizing policy allowed: Stretch (default), Fixed/Auto.
 *    - Fixed Columns (if any) will generally obtain their requested width (unless the table cannot fit them all).
 *    - Stretch Columns will share the remaining width according to their respective weight.
 *    - Mixed Fixed/Stretch columns is possible but has various side-effects on resizing behaviors.
 *      The typical use of mixing sizing policies is: any number of LEADING Fixed columns, followed by one or two TRAILING Stretch columns.
 *      (this is because the visible order of columns have subtle but necessary effects on how they react to manual resizing).
 * - When ScrollX is on:
 *    - Table defaults to ImGuiTableFlags_SizingFixedFit -> all Columns defaults to ImGuiTableColumnFlags_WidthFixed
 *    - Columns sizing policy allowed: Fixed/Auto mostly.
 *    - Fixed Columns can be enlarged as needed. Table will show a horizontal scrollbar if needed.
 *    - When using auto-resizing (non-resizable) fixed columns, querying the content width to use item right-alignment e.g. SetNextItemWidth(-FLT_MIN) doesn't make sense, would create a feedback loop.
 *    - Using Stretch columns OFTEN DOES NOT MAKE SENSE if ScrollX is on, UNLESS you have specified a value for 'inner_width' in BeginTable().
 *      If you specify a value for 'inner_width' then effectively the scrolling space is known and Stretch or mixed Fixed/Stretch columns become meaningful again.
 * - Read on documentation at the top of imgui_tables.cpp for details.
 */
export declare const ImGuiTableFlags: {
    /**
     * Features
     */
    readonly None: 0;
    /**
     * Enable resizing columns.
     */
    readonly Resizable: 1;
    /**
     * Enable reordering columns in header row. (Need calling TableSetupColumn() + TableHeadersRow() to display headers, or using ImGuiTableFlags_ContextMenuInBody to access context-menu without headers).
     */
    readonly Reorderable: 2;
    /**
     * Enable hiding/disabling columns in context menu.
     */
    readonly Hideable: 4;
    /**
     * Enable sorting. Call TableGetSortSpecs() to obtain sort specs. Also see ImGuiTableFlags_SortMulti and ImGuiTableFlags_SortTristate.
     */
    readonly Sortable: 8;
    /**
     * Disable persisting columns order, width, visibility and sort settings in the .ini file.
     */
    readonly NoSavedSettings: 16;
    /**
     * Right-click on columns body/contents will also display table context menu. By default it is available in TableHeadersRow().
     */
    readonly ContextMenuInBody: 32;
    /**
     * Set each RowBg color with ImGuiCol_TableRowBg or ImGuiCol_TableRowBgAlt (equivalent of calling TableSetBgColor with ImGuiTableBgFlags_RowBg0 on each row manually)
     */
    readonly RowBg: 64;
    /**
     * Draw horizontal borders between rows.
     */
    readonly BordersInnerH: 128;
    /**
     * Draw horizontal borders at the top and bottom.
     */
    readonly BordersOuterH: 256;
    /**
     * Draw vertical borders between columns.
     */
    readonly BordersInnerV: 512;
    /**
     * Draw vertical borders on the left and right sides.
     */
    readonly BordersOuterV: 1024;
    /**
     * Draw horizontal borders.
     */
    readonly BordersH: 384;
    /**
     * Draw vertical borders.
     */
    readonly BordersV: 1536;
    /**
     * Draw inner borders.
     */
    readonly BordersInner: 640;
    /**
     * Draw outer borders.
     */
    readonly BordersOuter: 1280;
    /**
     * Draw all borders.
     */
    readonly Borders: 1920;
    /**
     * [ALPHA] Disable vertical borders in columns Body (borders will always appear in Headers). -> May move to style
     */
    readonly NoBordersInBody: 2048;
    /**
     * [ALPHA] Disable vertical borders in columns Body until hovered for resize (borders will always appear in Headers). -> May move to style
     */
    readonly NoBordersInBodyUntilResize: 4096;
    /**
     * Columns default to _WidthFixed or _WidthAuto (if resizable or not resizable), matching contents width.
     */
    readonly SizingFixedFit: 8192;
    /**
     * Columns default to _WidthFixed or _WidthAuto (if resizable or not resizable), matching the maximum contents width of all columns. Implicitly enable ImGuiTableFlags_NoKeepColumnsVisible.
     */
    readonly SizingFixedSame: 16384;
    /**
     * Columns default to _WidthStretch with default weights proportional to each columns contents widths.
     */
    readonly SizingStretchProp: 24576;
    /**
     * Columns default to _WidthStretch with default weights all equal, unless overridden by TableSetupColumn().
     */
    readonly SizingStretchSame: 32768;
    /**
     * Make outer width auto-fit to columns, overriding outer_size.x value. Only available when ScrollX/ScrollY are disabled and Stretch columns are not used.
     */
    readonly NoHostExtendX: 65536;
    /**
     * Make outer height stop exactly at outer_size.y (prevent auto-extending table past the limit). Only available when ScrollX/ScrollY are disabled. Data below the limit will be clipped and not visible.
     */
    readonly NoHostExtendY: 131072;
    /**
     * Disable keeping column always minimally visible when ScrollX is off and table gets too small. Not recommended if columns are resizable.
     */
    readonly NoKeepColumnsVisible: 262144;
    /**
     * Disable distributing remainder width to stretched columns (width allocation on a 100-wide table with 3 columns: Without this flag: 33,33,34. With this flag: 33,33,33). With larger number of columns, resizing will appear to be less smooth.
     */
    readonly PreciseWidths: 524288;
    /**
     * Disable clipping rectangle for every individual columns (reduce draw command count, items will be able to overflow into other columns). Generally incompatible with TableSetupScrollFreeze().
     */
    readonly NoClip: 1048576;
    /**
     * Default if BordersOuterV is on. Enable outermost padding. Generally desirable if you have headers.
     */
    readonly PadOuterX: 2097152;
    /**
     * Default if BordersOuterV is off. Disable outermost padding.
     */
    readonly NoPadOuterX: 4194304;
    /**
     * Disable inner padding between columns (double inner padding if BordersOuterV is on, single inner padding if BordersOuterV is off).
     */
    readonly NoPadInnerX: 8388608;
    /**
     * Enable horizontal scrolling. Require 'outer_size' parameter of BeginTable() to specify the container size. Changes default sizing policy. Because this creates a child window, ScrollY is currently generally recommended when using ScrollX.
     */
    readonly ScrollX: 16777216;
    /**
     * Enable vertical scrolling. Require 'outer_size' parameter of BeginTable() to specify the container size.
     */
    readonly ScrollY: 33554432;
    /**
     * Hold shift when clicking headers to sort on multiple column. TableGetSortSpecs() may return specs where (SpecsCount > 1).
     */
    readonly SortMulti: 67108864;
    /**
     * Allow no sorting, disable default sorting. TableGetSortSpecs() may return specs where (SpecsCount == 0).
     */
    readonly SortTristate: 134217728;
    /**
     * Highlight column headers when hovered (may evolve into a fuller highlight)
     */
    readonly HighlightHoveredColumn: 268435456;
};
/**
 * Flags for ImGui::TableSetupColumn()
 */
export declare const ImGuiTableColumnFlags: {
    /**
     * Input configuration flags
     */
    readonly None: 0;
    /**
     * Overriding/master disable flag: hide column, won't show in context menu (unlike calling TableSetColumnEnabled() which manipulates the user accessible state)
     */
    readonly Disabled: 1;
    /**
     * Default as a hidden/disabled column.
     */
    readonly DefaultHide: 2;
    /**
     * Default as a sorting column.
     */
    readonly DefaultSort: 4;
    /**
     * Column will stretch. Preferable with horizontal scrolling disabled (default if table sizing policy is _SizingStretchSame or _SizingStretchProp).
     */
    readonly WidthStretch: 8;
    /**
     * Column will not stretch. Preferable with horizontal scrolling enabled (default if table sizing policy is _SizingFixedFit and table is resizable).
     */
    readonly WidthFixed: 16;
    /**
     * Disable manual resizing.
     */
    readonly NoResize: 32;
    /**
     * Disable manual reordering this column, this will also prevent other columns from crossing over this column.
     */
    readonly NoReorder: 64;
    /**
     * Disable ability to hide/disable this column.
     */
    readonly NoHide: 128;
    /**
     * Disable clipping for this column (all NoClip columns will render in a same draw command).
     */
    readonly NoClip: 256;
    /**
     * Disable ability to sort on this field (even if ImGuiTableFlags_Sortable is set on the table).
     */
    readonly NoSort: 512;
    /**
     * Disable ability to sort in the ascending direction.
     */
    readonly NoSortAscending: 1024;
    /**
     * Disable ability to sort in the descending direction.
     */
    readonly NoSortDescending: 2048;
    /**
     * TableHeadersRow() will submit an empty label for this column. Convenient for some small columns. Name will still appear in context menu or in angled headers. You may append into this cell by calling TableSetColumnIndex() right after the TableHeadersRow() call.
     */
    readonly NoHeaderLabel: 4096;
    /**
     * Disable header text width contribution to automatic column width.
     */
    readonly NoHeaderWidth: 8192;
    /**
     * Make the initial sort direction Ascending when first sorting on this column (default).
     */
    readonly PreferSortAscending: 16384;
    /**
     * Make the initial sort direction Descending when first sorting on this column.
     */
    readonly PreferSortDescending: 32768;
    /**
     * Use current Indent value when entering cell (default for column 0).
     */
    readonly IndentEnable: 65536;
    /**
     * Ignore current Indent value when entering cell (default for columns > 0). Indentation changes _within_ the cell will still be honored.
     */
    readonly IndentDisable: 131072;
    /**
     * TableHeadersRow() will submit an angled header row for this column. Note this will add an extra row.
     */
    readonly AngledHeader: 262144;
    /**
     * Status: is enabled == not hidden by user/api (referred to as "Hide" in _DefaultHide and _NoHide) flags.
     */
    readonly IsEnabled: 16777216;
    /**
     * Status: is visible == is enabled AND not clipped by scrolling.
     */
    readonly IsVisible: 33554432;
    /**
     * Status: is currently part of the sort specs
     */
    readonly IsSorted: 67108864;
    /**
     * Status: is hovered by mouse
     */
    readonly IsHovered: 134217728;
};
/**
 * Flags for ImGui::TableNextRow()
 */
export declare const ImGuiTableRowFlags: {
    readonly None: 0;
    /**
     * Identify header row (set default background color + width of its contents accounted differently for auto column width)
     */
    readonly Headers: 1;
};
/**
 * Enum for ImGui::TableSetBgColor()
 * Background colors are rendering in 3 layers:
 *  - Layer 0: draw with RowBg0 color if set, otherwise draw with ColumnBg0 if set.
 *  - Layer 1: draw with RowBg1 color if set, otherwise draw with ColumnBg1 if set.
 *  - Layer 2: draw with CellBg color if set.
 * The purpose of the two row/columns layers is to let you decide if a background color change should override or blend with the existing color.
 * When using ImGuiTableFlags_RowBg on the table, each row has the RowBg0 color automatically set for odd/even rows.
 * If you set the color of RowBg0 target, your color will override the existing RowBg0 color.
 * If you set the color of RowBg1 or ColumnBg1 target, your color will blend over the RowBg0 color.
 */
export declare const ImGuiTableBgTarget: {
    readonly None: 0;
    /**
     * Set row background color 0 (generally used for background, automatically set when ImGuiTableFlags_RowBg is used)
     */
    readonly RowBg0: 1;
    /**
     * Set row background color 1 (generally used for selection marking)
     */
    readonly RowBg1: 2;
    /**
     * Set cell background color (top-most color)
     */
    readonly CellBg: 3;
};
/**
 * Flags for ImGuiListClipper (currently not fully exposed in function calls: a future refactor will likely add this to ImGuiListClipper::Begin function equivalent)
 */
export declare const ImGuiListClipperFlags: {
    readonly None: 0;
    /**
     * [Internal] Disabled modifying table row counters. Avoid assumption that 1 clipper item == 1 table row.
     */
    readonly NoSetTableRowCounters: 1;
};
/**
 * Flags for BeginMultiSelect()
 */
export declare const ImGuiMultiSelectFlags: {
    readonly None: 0;
    /**
     * Disable selecting more than one item. This is available to allow single-selection code to share same code/logic if desired. It essentially disables the main purpose of BeginMultiSelect() tho!
     */
    readonly SingleSelect: 1;
    /**
     * Disable Ctrl+A shortcut to select all.
     */
    readonly NoSelectAll: 2;
    /**
     * Disable Shift+selection mouse/keyboard support (useful for unordered 2D selection). With BoxSelect is also ensure contiguous SetRange requests are not combined into one. This allows not handling interpolation in SetRange requests.
     */
    readonly NoRangeSelect: 4;
    /**
     * Disable selecting items when navigating (useful for e.g. supporting range-select in a list of checkboxes).
     */
    readonly NoAutoSelect: 8;
    /**
     * Disable clearing selection when navigating or selecting another one (generally used with ImGuiMultiSelectFlags_NoAutoSelect. useful for e.g. supporting range-select in a list of checkboxes).
     */
    readonly NoAutoClear: 16;
    /**
     * Disable clearing selection when clicking/selecting an already selected item.
     */
    readonly NoAutoClearOnReselect: 32;
    /**
     * Enable box-selection with same width and same x pos items (e.g. full row Selectable()). Box-selection works better with little bit of spacing between items hit-box in order to be able to aim at empty space.
     */
    readonly BoxSelect1d: 64;
    /**
     * Enable box-selection with varying width or varying x pos items support (e.g. different width labels, or 2D layout/grid). This is slower: alters clipping logic so that e.g. horizontal movements will update selection of normally clipped items.
     */
    readonly BoxSelect2d: 128;
    /**
     * Disable scrolling when box-selecting and moving mouse near edges of scope.
     */
    readonly BoxSelectNoScroll: 256;
    /**
     * Clear selection when pressing Escape while scope is focused.
     */
    readonly ClearOnEscape: 512;
    /**
     * Clear selection when clicking on empty location within scope.
     */
    readonly ClearOnClickVoid: 1024;
    /**
     * Scope for _BoxSelect and _ClearOnClickVoid is whole window (Default). Use if BeginMultiSelect() covers a whole window or used a single time in same window.
     */
    readonly ScopeWindow: 2048;
    /**
     * Scope for _BoxSelect and _ClearOnClickVoid is rectangle encompassing BeginMultiSelect()/EndMultiSelect(). Use if BeginMultiSelect() is called multiple times in same window.
     */
    readonly ScopeRect: 4096;
    /**
     * Apply selection on mouse down when clicking on unselected item, on mouse up when clicking on selected item. (Default)
     */
    readonly SelectOnAuto: 8192;
    /**
     * Apply selection on mouse down when clicking on any items. Prevents Drag and Drop from being used on multiple-selection, but allows e.g. BoxSelect to always reselect even when clicking inside an existing selection. (Excel style behavior)
     */
    readonly SelectOnClickAlways: 16384;
    /**
     * Apply selection on mouse release when clicking an unselected item. Allow dragging an unselected item without altering selection.
     */
    readonly SelectOnClickRelease: 32768;
    /**
     * [Temporary] Enable navigation wrapping on X axis. Provided as a convenience because we don't have a design for the general Nav API for this yet. When the more general feature be public we may obsolete this flag in favor of new one.
     */
    readonly NavWrapX: 65536;
    /**
     * Disable default right-click processing, which selects item on mouse down, and is designed for context-menus.
     */
    readonly NoSelectOnRightClick: 131072;
};
/**
 * Selection request type
 */
export declare const ImGuiSelectionRequestType: {
    readonly _None: 0;
    /**
     * Request app to clear selection (if Selected==false) or select all items (if Selected==true). We cannot set RangeFirstItem/RangeLastItem as its contents is entirely up to user (not necessarily an index)
     */
    readonly _SetAll: 1;
    /**
     * Request app to select/unselect [RangeFirstItem..RangeLastItem] items (inclusive) based on value of Selected. Only EndMultiSelect() request this, app code can read after BeginMultiSelect() and it will always be false.
     */
    readonly _SetRange: 2;
};
/**
 * Flags for ImDrawList functions
 */
export declare const ImDrawFlags: {
    readonly None: 0;
    /**
     * AddRect(), AddRectFilled(), PathRect(): enable rounding top-left corner only (when rounding > 0.0f, we default to all corners). Was 0x01.
     */
    readonly RoundCornersTopLeft: 16;
    /**
     * AddRect(), AddRectFilled(), PathRect(): enable rounding top-right corner only (when rounding > 0.0f, we default to all corners). Was 0x02.
     */
    readonly RoundCornersTopRight: 32;
    /**
     * AddRect(), AddRectFilled(), PathRect(): enable rounding bottom-left corner only (when rounding > 0.0f, we default to all corners). Was 0x04.
     */
    readonly RoundCornersBottomLeft: 64;
    /**
     * AddRect(), AddRectFilled(), PathRect(): enable rounding bottom-right corner only (when rounding > 0.0f, we default to all corners). Wax 0x08.
     */
    readonly RoundCornersBottomRight: 128;
    /**
     * AddRect(), AddRectFilled(), PathRect(): disable rounding on all corners (when rounding > 0.0f). This is NOT zero, NOT an implicit flag!
     */
    readonly RoundCornersNone: 256;
    /**
     * PathStroke(), AddPolyline(): specify that shape should be closed (Important: this is always == 1 for legacy reason)
     */
    readonly Closed: 512;
    readonly RoundCornersTop: 48;
    readonly RoundCornersBottom: 192;
    readonly RoundCornersLeft: 80;
    readonly RoundCornersRight: 160;
    readonly RoundCornersAll: 240;
};
/**
 * Flags for ImDrawList instance. Those are set automatically by ImGui:: functions from ImGuiIO settings, and generally not manipulated directly.
 * It is however possible to temporarily alter flags between calls to ImDrawList:: functions.
 */
export declare const ImDrawListFlags: {
    readonly None: 0;
    /**
     * Enable anti-aliased lines/borders (*2 the number of triangles for 1.0f wide line or lines thin enough to be drawn using textures, otherwise *3 the number of triangles)
     */
    readonly AntiAliasedLines: 1;
    /**
     * Enable anti-aliased lines/borders using textures when possible. Require backend to render with bilinear filtering (NOT point/nearest filtering).
     */
    readonly AntiAliasedLinesUseTex: 2;
    /**
     * Enable anti-aliased edge around filled shapes (rounded rectangles, circles).
     */
    readonly AntiAliasedFill: 4;
    /**
     * Can emit 'VtxOffset > 0' to allow large meshes. Set when 'ImGuiBackendFlags_RendererHasVtxOffset' is enabled.
     */
    readonly AllowVtxOffset: 8;
};
/**
 * Most standard backends only support RGBA32 but we provide a single channel option for low-resource/embedded systems.
 */
export declare const ImTextureFormat: {
    /**
     * 4 components per pixel, each is unsigned 8-bit. Total size = TexWidth * TexHeight * 4
     */
    readonly _RGBA32: 0;
    /**
     * 1 component per pixel, each is unsigned 8-bit. Total size = TexWidth * TexHeight
     */
    readonly _Alpha8: 1;
};
/**
 * Status of a texture to communicate with Renderer Backend.
 */
export declare const ImTextureStatus: {
    readonly _OK: 0;
    /**
     * Backend destroyed the texture.
     */
    readonly _Destroyed: 1;
    /**
     * Requesting backend to create the texture. Set status OK when done.
     */
    readonly _WantCreate: 2;
    /**
     * Requesting backend to update specific blocks of pixels (write to texture portions which have never been used before). Set status OK when done.
     */
    readonly _WantUpdates: 3;
    /**
     * Requesting backend to destroy the texture. Set status to Destroyed when done.
     */
    readonly _WantDestroy: 4;
};
/**
 * Flags for ImFontAtlas build
 */
export declare const ImFontAtlasFlags: {
    readonly None: 0;
    /**
     * Don't round the height to next power of two
     */
    readonly NoPowerOfTwoHeight: 1;
    /**
     * Don't build software mouse cursors into the atlas (save a little texture memory)
     */
    readonly NoMouseCursors: 2;
    /**
     * Don't build thick line textures into the atlas (save a little texture memory, allow support for point/nearest filtering). The AntiAliasedLinesUseTex features uses them, otherwise they will be rendered using polygons (more expensive for CPU/GPU).
     */
    readonly NoBakedLines: 4;
};
/**
 * Font flags
 * (in future versions as we redesign font loading API, this will become more important and better documented. for now please consider this as internal/advanced use)
 */
export declare const ImFontFlags: {
    readonly None: 0;
    /**
     * Disable throwing an error/assert when calling AddFontXXX() with missing file/data. Calling code is expected to check AddFontXXX() return value.
     */
    readonly NoLoadError: 2;
    /**
     * [Internal] Disable loading new glyphs.
     */
    readonly NoLoadGlyphs: 4;
    /**
     * [Internal] Disable loading new baked sizes, disable garbage collecting current ones. e.g. if you want to lock a font to a single size. Important: if you use this to preload given sizes, consider the possibility of multiple font density used on Retina display.
     */
    readonly LockBakedSizes: 8;
    /**
     * [Internal] Reference size was not set explicitly.
     */
    readonly ImplicitRefSize: 16;
};
/**
 * Flags stored in ImGuiViewport::Flags, giving indications to the platform backends.
 */
export declare const ImGuiViewportFlags: {
    readonly None: 0;
    /**
     * Represent a Platform Window
     */
    readonly IsPlatformWindow: 1;
    /**
     * Represent a Platform Monitor (unused yet)
     */
    readonly IsPlatformMonitor: 2;
    /**
     * Platform Window: Is created/managed by the user application? (rather than our backend)
     */
    readonly OwnedByApp: 4;
    /**
     * Platform Window: Disable platform decorations: title bar, borders, etc. (generally set all windows, but if ImGuiConfigFlags_ViewportsDecoration is set we only set this on popups/tooltips)
     */
    readonly NoDecoration: 8;
    /**
     * Platform Window: Disable platform task bar icon (generally set on popups/tooltips, or all windows if ImGuiConfigFlags_ViewportsNoTaskBarIcon is set)
     */
    readonly NoTaskBarIcon: 16;
    /**
     * Platform Window: Don't take focus when created.
     */
    readonly NoFocusOnAppearing: 32;
    /**
     * Platform Window: Don't take focus when clicked on.
     */
    readonly NoFocusOnClick: 64;
    /**
     * Platform Window: Make mouse pass through so we can drag this window while peaking behind it.
     */
    readonly NoInputs: 128;
    /**
     * Platform Window: Renderer doesn't need to clear the framebuffer ahead (because we will fill it entirely).
     */
    readonly NoRendererClear: 256;
    /**
     * Platform Window: Avoid merging this window into another host window. This can only be set via ImGuiWindowClass viewport flags override (because we need to now ahead if we are going to create a viewport in the first place!).
     */
    readonly NoAutoMerge: 512;
    /**
     * Platform Window: Display on top (for tooltips only).
     */
    readonly TopMost: 1024;
    /**
     * Viewport can host multiple imgui windows (secondary viewports are associated to a single window). // FIXME: In practice there's still probably code making the assumption that this is always and only on the MainViewport. Will fix once we add support for "no main viewport".
     */
    readonly CanHostOtherWindows: 2048;
    /**
     * Platform Window: Window is minimized, can skip render. When minimized we tend to avoid using the viewport pos/size for clipping window or testing if they are contained in the viewport.
     */
    readonly IsMinimized: 4096;
    /**
     * Platform Window: Window is focused (last call to Platform_GetWindowFocus() returned true)
     */
    readonly IsFocused: 8192;
};
export declare const FreeTypeLoaderFlags: {
    readonly NoHinting: 1;
    readonly NoAutoHint: 2;
    readonly ForceAutoHint: 4;
    readonly LightHinting: 8;
    readonly MonoHinting: 16;
    readonly Bold: 32;
    readonly Oblique: 64;
    readonly Monochrome: 128;
    readonly LoadColor: 256;
    readonly Bitmap: 512;
};
export declare class ImVec2 extends ValueStruct {
    x: number;
    y: number;
    constructor(x: number, y: number);
    static From(obj: {
        x: number;
        y: number;
    }): ImVec2;
}
/**
 * ImVec4: 4D vector used to store clipping rectangles, colors etc. [Compile-time configurable type]
 */
export declare class ImVec4 extends ValueStruct {
    x: number;
    y: number;
    z: number;
    w: number;
    constructor(x: number, y: number, z: number, w: number);
    static From(obj: {
        x: number;
        y: number;
        z: number;
        w: number;
    }): ImVec4;
}
export declare class ImTextureRef extends ValueStruct {
    _TexID: ImTextureID;
    constructor(_TexID: ImTextureID);
    static From(obj: {
        _TexID: ImTextureID;
    }): ImTextureRef;
} /**
 * Data shared among multiple draw lists (typically owned by parent ImGui context, but you may create one yourself)
 */
export declare class ImDrawListSharedData extends ReferenceStruct {
}
/**
 * Opaque storage for building a ImFontAtlas
 */
export declare class ImFontAtlasBuilder extends ReferenceStruct {
}
/**
 * Opaque interface to a font loading backend (stb_truetype, FreeType etc.).
 */
export declare class ImFontLoader extends ReferenceStruct {
}
/**
 * Dear ImGui context (opaque structure, unless including imgui_internal.h)
 */
export declare class ImGuiContext extends ReferenceStruct {
}
/**
 * Sorting specifications for a table (often handling sort specs for a single column, occasionally more)
 * Obtained by calling TableGetSortSpecs().
 * When 'SpecsDirty == true' you can sort your data. It will be true with sorting specs have changed since last call, or the first time.
 * Make sure to set 'SpecsDirty = false' after sorting, else you may wastefully sort your data every frame!
 */
export declare class ImGuiTableSortSpecs extends ReferenceStruct {
    /**
     * Pointer to sort spec array.
     */
    get Specs(): ImGuiTableColumnSortSpecs;
    set Specs(v: ImGuiTableColumnSortSpecs);
    /**
     * Sort spec count. Most often 1. May be > 1 when ImGuiTableFlags_SortMulti is enabled. May be == 0 when ImGuiTableFlags_SortTristate is enabled.
     */
    get SpecsCount(): number;
    set SpecsCount(v: number);
    /**
     * Set to true when specs have changed since last time! Use this to sort again, then clear the flag.
     */
    get SpecsDirty(): boolean;
    set SpecsDirty(v: boolean);
}
/**
 * Sorting specification for one column of a table (sizeof == 12 bytes)
 */
export declare class ImGuiTableColumnSortSpecs extends ReferenceStruct {
    /**
     * User id of the column (if specified by a TableSetupColumn() call)
     */
    get ColumnUserID(): ImGuiID;
    set ColumnUserID(v: ImGuiID);
    /**
     * Index of the column
     */
    get ColumnIndex(): ImS16;
    set ColumnIndex(v: ImS16);
    /**
     * Index within parent ImGuiTableSortSpecs (always stored in order starting from 0, tables sorted on a single criteria will always have a 0 here)
     */
    get SortOrder(): ImS16;
    set SortOrder(v: ImS16);
    /**
     * ImGuiSortDirection_Ascending or ImGuiSortDirection_Descending
     */
    get SortDirection(): ImGuiSortDirection;
    set SortDirection(v: ImGuiSortDirection);
}
export declare class ImGuiStyle extends ReferenceStruct {
    /**
     * Current base font size before external global factors are applied. Use PushFont(NULL, size) to modify. Use ImGui::GetFontSize() to obtain scaled value.
     */
    get FontSizeBase(): number;
    set FontSizeBase(v: number);
    /**
     * Main global scale factor. May be set by application once, or exposed to end-user.
     */
    get FontScaleMain(): number;
    set FontScaleMain(v: number);
    /**
     * Additional global scale factor from viewport/monitor contents scale. In docking branch: when io.ConfigDpiScaleFonts is enabled, this is automatically overwritten when changing monitor DPI.
     */
    get FontScaleDpi(): number;
    set FontScaleDpi(v: number);
    /**
     * Global alpha applies to everything in Dear ImGui.
     */
    get Alpha(): number;
    set Alpha(v: number);
    /**
     * Additional alpha multiplier applied by BeginDisabled(). Multiply over current value of Alpha.
     */
    get DisabledAlpha(): number;
    set DisabledAlpha(v: number);
    /**
     * Padding within a window.
     */
    get WindowPadding(): ImVec2;
    set WindowPadding(v: ImVec2);
    /**
     * Radius of window corners rounding. Set to 0.0f to have rectangular windows. Large values tend to lead to variety of artifacts and are not recommended.
     */
    get WindowRounding(): number;
    set WindowRounding(v: number);
    /**
     * Thickness of border around windows. Generally set to 0.0f or 1.0f. (Other values are not well tested and more CPU/GPU costly).
     */
    get WindowBorderSize(): number;
    set WindowBorderSize(v: number);
    /**
     * Hit-testing extent outside/inside resizing border. Also extend determination of hovered window. Generally meaningfully larger than WindowBorderSize to make it easy to reach borders.
     */
    get WindowBorderHoverPadding(): number;
    set WindowBorderHoverPadding(v: number);
    /**
     * Minimum window size. This is a global setting. If you want to constrain individual windows, use SetNextWindowSizeConstraints().
     */
    get WindowMinSize(): ImVec2;
    set WindowMinSize(v: ImVec2);
    /**
     * Alignment for title bar text. Defaults to (0.0f,0.5f) for left-aligned,vertically centered.
     */
    get WindowTitleAlign(): ImVec2;
    set WindowTitleAlign(v: ImVec2);
    /**
     * Side of the collapsing/docking button in the title bar (None/Left/Right). Defaults to ImGuiDir_Left.
     */
    get WindowMenuButtonPosition(): ImGuiDir;
    set WindowMenuButtonPosition(v: ImGuiDir);
    /**
     * Radius of child window corners rounding. Set to 0.0f to have rectangular windows.
     */
    get ChildRounding(): number;
    set ChildRounding(v: number);
    /**
     * Thickness of border around child windows. Generally set to 0.0f or 1.0f. (Other values are not well tested and more CPU/GPU costly).
     */
    get ChildBorderSize(): number;
    set ChildBorderSize(v: number);
    /**
     * Radius of popup window corners rounding. (Note that tooltip windows use WindowRounding)
     */
    get PopupRounding(): number;
    set PopupRounding(v: number);
    /**
     * Thickness of border around popup/tooltip windows. Generally set to 0.0f or 1.0f. (Other values are not well tested and more CPU/GPU costly).
     */
    get PopupBorderSize(): number;
    set PopupBorderSize(v: number);
    /**
     * Padding within a framed rectangle (used by most widgets).
     */
    get FramePadding(): ImVec2;
    set FramePadding(v: ImVec2);
    /**
     * Radius of frame corners rounding. Set to 0.0f to have rectangular frame (used by most widgets).
     */
    get FrameRounding(): number;
    set FrameRounding(v: number);
    /**
     * Thickness of border around frames. Generally set to 0.0f or 1.0f. (Other values are not well tested and more CPU/GPU costly).
     */
    get FrameBorderSize(): number;
    set FrameBorderSize(v: number);
    /**
     * Horizontal and vertical spacing between widgets/lines.
     */
    get ItemSpacing(): ImVec2;
    set ItemSpacing(v: ImVec2);
    /**
     * Horizontal and vertical spacing between within elements of a composed widget (e.g. a slider and its label).
     */
    get ItemInnerSpacing(): ImVec2;
    set ItemInnerSpacing(v: ImVec2);
    /**
     * Padding within a table cell. Cellpadding.x is locked for entire table. CellPadding.y may be altered between different rows.
     */
    get CellPadding(): ImVec2;
    set CellPadding(v: ImVec2);
    /**
     * Expand reactive bounding box for touch-based system where touch position is not accurate enough. Unfortunately we don't sort widgets so priority on overlap will always be given to the first widget. So don't grow this too much!
     */
    get TouchExtraPadding(): ImVec2;
    set TouchExtraPadding(v: ImVec2);
    /**
     * Horizontal indentation when e.g. entering a tree node. Generally == (FontSize + FramePadding.x*2).
     */
    get IndentSpacing(): number;
    set IndentSpacing(v: number);
    /**
     * Minimum horizontal spacing between two columns. Preferably > (FramePadding.x + 1).
     */
    get ColumnsMinSpacing(): number;
    set ColumnsMinSpacing(v: number);
    /**
     * Width of the vertical scrollbar, Height of the horizontal scrollbar.
     */
    get ScrollbarSize(): number;
    set ScrollbarSize(v: number);
    /**
     * Radius of grab corners for scrollbar.
     */
    get ScrollbarRounding(): number;
    set ScrollbarRounding(v: number);
    /**
     * Padding of scrollbar grab within its frame (same for both axes).
     */
    get ScrollbarPadding(): number;
    set ScrollbarPadding(v: number);
    /**
     * Minimum width/height of a grab box for slider/scrollbar.
     */
    get GrabMinSize(): number;
    set GrabMinSize(v: number);
    /**
     * Radius of grabs corners rounding. Set to 0.0f to have rectangular slider grabs.
     */
    get GrabRounding(): number;
    set GrabRounding(v: number);
    /**
     * The size in pixels of the dead-zone around zero on logarithmic sliders that cross zero.
     */
    get LogSliderDeadzone(): number;
    set LogSliderDeadzone(v: number);
    /**
     * Rounding of Image() calls.
     */
    get ImageRounding(): number;
    set ImageRounding(v: number);
    /**
     * Thickness of border around Image() calls.
     */
    get ImageBorderSize(): number;
    set ImageBorderSize(v: number);
    /**
     * Radius of upper corners of a tab. Set to 0.0f to have rectangular tabs.
     */
    get TabRounding(): number;
    set TabRounding(v: number);
    /**
     * Thickness of border around tabs.
     */
    get TabBorderSize(): number;
    set TabBorderSize(v: number);
    /**
     * Minimum tab width, to make tabs larger than their contents. TabBar buttons are not affected.
     */
    get TabMinWidthBase(): number;
    set TabMinWidthBase(v: number);
    /**
     * Minimum tab width after shrinking, when using ImGuiTabBarFlags_FittingPolicyMixed policy.
     */
    get TabMinWidthShrink(): number;
    set TabMinWidthShrink(v: number);
    /**
     * -1: always visible. 0.0f: visible when hovered. >0.0f: visible when hovered if minimum width. FLT_MAX: never shrink, will behave like ImGuiTabBarFlags_FittingPolicyScroll.
     */
    get TabCloseButtonMinWidthSelected(): number;
    set TabCloseButtonMinWidthSelected(v: number);
    /**
     * -1: always visible. 0.0f: visible when hovered. >0.0f: visible when hovered if minimum width. FLT_MAX: never show close button when unselected.
     */
    get TabCloseButtonMinWidthUnselected(): number;
    set TabCloseButtonMinWidthUnselected(v: number);
    /**
     * Thickness of tab-bar separator, which takes on the tab active color to denote focus.
     */
    get TabBarBorderSize(): number;
    set TabBarBorderSize(v: number);
    /**
     * Thickness of tab-bar overline, which highlights the selected tab-bar.
     */
    get TabBarOverlineSize(): number;
    set TabBarOverlineSize(v: number);
    /**
     * Angle of angled headers (supported values range from -50.0f degrees to +50.0f degrees).
     */
    get TableAngledHeadersAngle(): number;
    set TableAngledHeadersAngle(v: number);
    /**
     * Alignment of angled headers within the cell
     */
    get TableAngledHeadersTextAlign(): ImVec2;
    set TableAngledHeadersTextAlign(v: ImVec2);
    /**
     * Default way to draw lines connecting TreeNode hierarchy. ImGuiTreeNodeFlags_DrawLinesNone or ImGuiTreeNodeFlags_DrawLinesFull or ImGuiTreeNodeFlags_DrawLinesToNodes.
     */
    get TreeLinesFlags(): ImGuiTreeNodeFlags;
    set TreeLinesFlags(v: ImGuiTreeNodeFlags);
    /**
     * Thickness of outlines when using ImGuiTreeNodeFlags_DrawLines.
     */
    get TreeLinesSize(): number;
    set TreeLinesSize(v: number);
    /**
     * Radius of lines connecting child nodes to the vertical line.
     */
    get TreeLinesRounding(): number;
    set TreeLinesRounding(v: number);
    /**
     * Radius of the drag and drop target frame. When <0.0f: use FrameRounding.
     */
    get DragDropTargetRounding(): number;
    set DragDropTargetRounding(v: number);
    /**
     * Thickness of the drag and drop target border.
     */
    get DragDropTargetBorderSize(): number;
    set DragDropTargetBorderSize(v: number);
    /**
     * Size to expand the drag and drop target from actual target item size.
     */
    get DragDropTargetPadding(): number;
    set DragDropTargetPadding(v: number);
    /**
     * Size of R/G/B/A color markers for ColorEdit4() and for Drags/Sliders when using ImGuiSliderFlags_ColorMarkers.
     */
    get ColorMarkerSize(): number;
    set ColorMarkerSize(v: number);
    /**
     * Side of the color button in the ColorEdit4 widget (left/right). Defaults to ImGuiDir_Right.
     */
    get ColorButtonPosition(): ImGuiDir;
    set ColorButtonPosition(v: ImGuiDir);
    /**
     * Alignment of button text when button is larger than text. Defaults to (0.5f, 0.5f) (centered).
     */
    get ButtonTextAlign(): ImVec2;
    set ButtonTextAlign(v: ImVec2);
    /**
     * Alignment of selectable text. Defaults to (0.0f, 0.0f) (top-left aligned). It's generally important to keep this left-aligned if you want to lay multiple items on a same line.
     */
    get SelectableTextAlign(): ImVec2;
    set SelectableTextAlign(v: ImVec2);
    /**
     * Thickness of border in Separator(). Must be >= 1.0f.
     */
    get SeparatorSize(): number;
    set SeparatorSize(v: number);
    /**
     * Thickness of border in SeparatorText()
     */
    get SeparatorTextBorderSize(): number;
    set SeparatorTextBorderSize(v: number);
    /**
     * Alignment of text within the separator. Defaults to (0.0f, 0.5f) (left aligned, center).
     */
    get SeparatorTextAlign(): ImVec2;
    set SeparatorTextAlign(v: ImVec2);
    /**
     * Horizontal offset of text from each edge of the separator + spacing on other axis. Generally small values. .y is recommended to be == FramePadding.y.
     */
    get SeparatorTextPadding(): ImVec2;
    set SeparatorTextPadding(v: ImVec2);
    /**
     * Apply to regular windows: amount which we enforce to keep visible when moving near edges of your screen.
     */
    get DisplayWindowPadding(): ImVec2;
    set DisplayWindowPadding(v: ImVec2);
    /**
     * Apply to every windows, menus, popups, tooltips: amount where we avoid displaying contents. Adjust if you cannot see the edges of your screen (e.g. on a TV where scaling has not been configured).
     */
    get DisplaySafeAreaPadding(): ImVec2;
    set DisplaySafeAreaPadding(v: ImVec2);
    /**
     * Docking node has their own CloseButton() to close all docked windows.
     */
    get DockingNodeHasCloseButton(): boolean;
    set DockingNodeHasCloseButton(v: boolean);
    /**
     * Thickness of resizing border between docked windows
     */
    get DockingSeparatorSize(): number;
    set DockingSeparatorSize(v: number);
    /**
     * Scale software rendered mouse cursor (when io.MouseDrawCursor is enabled). We apply per-monitor DPI scaling over this scale. May be removed later.
     */
    get MouseCursorScale(): number;
    set MouseCursorScale(v: number);
    /**
     * Enable anti-aliased lines/borders. Disable if you are really tight on CPU/GPU. Latched at the beginning of the frame (copied to ImDrawList).
     */
    get AntiAliasedLines(): boolean;
    set AntiAliasedLines(v: boolean);
    /**
     * Enable anti-aliased lines/borders using textures where possible. Require backend to render with bilinear filtering (NOT point/nearest filtering). Latched at the beginning of the frame (copied to ImDrawList).
     */
    get AntiAliasedLinesUseTex(): boolean;
    set AntiAliasedLinesUseTex(v: boolean);
    /**
     * Enable anti-aliased edges around filled shapes (rounded rectangles, circles, etc.). Disable if you are really tight on CPU/GPU. Latched at the beginning of the frame (copied to ImDrawList).
     */
    get AntiAliasedFill(): boolean;
    set AntiAliasedFill(v: boolean);
    /**
     * Tessellation tolerance when using PathBezierCurveTo() without a specific number of segments. Decrease for highly tessellated curves (higher quality, more polygons), increase to reduce quality.
     */
    get CurveTessellationTol(): number;
    set CurveTessellationTol(v: number);
    /**
     * Maximum error (in pixels) allowed when using AddCircle()/AddCircleFilled() or drawing rounded corner rectangles with no explicit segment count specified. Decrease for higher quality but more geometry.
     */
    get CircleTessellationMaxError(): number;
    set CircleTessellationMaxError(v: number);
    get Colors(): ImVec4[];
    set Colors(v: ImVec4[]);
    /**
     * Delay for IsItemHovered(ImGuiHoveredFlags_Stationary). Time required to consider mouse stationary.
     */
    get HoverStationaryDelay(): number;
    set HoverStationaryDelay(v: number);
    /**
     * Delay for IsItemHovered(ImGuiHoveredFlags_DelayShort). Usually used along with HoverStationaryDelay.
     */
    get HoverDelayShort(): number;
    set HoverDelayShort(v: number);
    /**
     * Delay for IsItemHovered(ImGuiHoveredFlags_DelayNormal). "
     */
    get HoverDelayNormal(): number;
    set HoverDelayNormal(v: number);
    /**
     * Default flags when using IsItemHovered(ImGuiHoveredFlags_ForTooltip) or BeginItemTooltip()/SetItemTooltip() while using mouse.
     */
    get HoverFlagsForTooltipMouse(): ImGuiHoveredFlags;
    set HoverFlagsForTooltipMouse(v: ImGuiHoveredFlags);
    /**
     * Default flags when using IsItemHovered(ImGuiHoveredFlags_ForTooltip) or BeginItemTooltip()/SetItemTooltip() while using keyboard/gamepad.
     */
    get HoverFlagsForTooltipNav(): ImGuiHoveredFlags;
    set HoverFlagsForTooltipNav(v: ImGuiHoveredFlags);
    /**
     * Scale all spacing/padding/thickness values. Do not scale fonts. See comments in definition. Consider not calling this if your initial scale factor if <1.0.
     */
    ScaleAllSizes(scale_factor: number): void;
}
export declare class ImGuiIO extends ReferenceStruct {
    /**
     * = 0              // See ImGuiConfigFlags_ enum. Set by user/application. Keyboard/Gamepad navigation options, etc.
     */
    get ConfigFlags(): ImGuiConfigFlags;
    set ConfigFlags(v: ImGuiConfigFlags);
    /**
     * = 0              // See ImGuiBackendFlags_ enum. Set by backend (imgui_impl_xxx files or custom backend) to communicate features supported by the backend.
     */
    get BackendFlags(): ImGuiBackendFlags;
    set BackendFlags(v: ImGuiBackendFlags);
    /**
     * <unset>          // Main display size, in pixels (== GetMainViewport()->Size). May change every frame.
     */
    get DisplaySize(): ImVec2;
    set DisplaySize(v: ImVec2);
    /**
     * = (1, 1)         // Main display density. For retina display where window coordinates are different from framebuffer coordinates. This will affect font density + will end up in ImDrawData::FramebufferScale.
     */
    get DisplayFramebufferScale(): ImVec2;
    set DisplayFramebufferScale(v: ImVec2);
    /**
     * = 1.0f/60.0f     // Time elapsed since last frame, in seconds. May change every frame.
     */
    get DeltaTime(): number;
    set DeltaTime(v: number);
    /**
     * = 5.0f           // Minimum time between saving positions/sizes to .ini file, in seconds.
     */
    get IniSavingRate(): number;
    set IniSavingRate(v: number);
    /**
     * = "imgui.ini"    // Path to .ini file (important: default "imgui.ini" is relative to current working dir!). Set NULL to disable automatic .ini loading/saving or if you want to manually call LoadIniSettingsXXX() / SaveIniSettingsXXX() functions.
     */
    get IniFilename(): string;
    set IniFilename(v: string);
    /**
     * = "imgui_log.txt"// Path to .log file (default parameter to ImGui::LogToFile when no file is specified).
     */
    get LogFilename(): string;
    set LogFilename(v: string);
    /**
     * = NULL           // Store your own data.
     */
    get UserData(): any;
    set UserData(v: any);
    /**
     * <auto>           // Font atlas: load, rasterize and pack one or more fonts into a single texture.
     */
    get Fonts(): ImFontAtlas;
    set Fonts(v: ImFontAtlas);
    /**
     * = NULL           // Font to use on NewFrame(). Use NULL to uses Fonts->Fonts[0].
     */
    get FontDefault(): ImFont;
    set FontDefault(v: ImFont);
    /**
     * = false          // Allow user scaling text of individual window with Ctrl+Wheel.
     */
    get FontAllowUserScaling(): boolean;
    set FontAllowUserScaling(v: boolean);
    /**
     * = false          // Swap Activate<>Cancel (A<>B) buttons, matching typical "Nintendo/Japanese style" gamepad layout.
     */
    get ConfigNavSwapGamepadButtons(): boolean;
    set ConfigNavSwapGamepadButtons(v: boolean);
    /**
     * = false          // Directional/tabbing navigation teleports the mouse cursor. May be useful on TV/console systems where moving a virtual mouse is difficult. Will update io.MousePos and set io.WantSetMousePos=true.
     */
    get ConfigNavMoveSetMousePos(): boolean;
    set ConfigNavMoveSetMousePos(v: boolean);
    /**
     * = true           // Sets io.WantCaptureKeyboard when io.NavActive is set.
     */
    get ConfigNavCaptureKeyboard(): boolean;
    set ConfigNavCaptureKeyboard(v: boolean);
    /**
     * = true           // Pressing Escape can clear focused item + navigation id/highlight. Set to false if you want to always keep highlight on.
     */
    get ConfigNavEscapeClearFocusItem(): boolean;
    set ConfigNavEscapeClearFocusItem(v: boolean);
    /**
     * = false          // Pressing Escape can clear focused window as well (super set of io.ConfigNavEscapeClearFocusItem).
     */
    get ConfigNavEscapeClearFocusWindow(): boolean;
    set ConfigNavEscapeClearFocusWindow(v: boolean);
    /**
     * = true           // Using directional navigation key makes the cursor visible. Mouse click hides the cursor.
     */
    get ConfigNavCursorVisibleAuto(): boolean;
    set ConfigNavCursorVisibleAuto(v: boolean);
    /**
     * = false          // Navigation cursor is always visible.
     */
    get ConfigNavCursorVisibleAlways(): boolean;
    set ConfigNavCursorVisibleAlways(v: boolean);
    /**
     * = false          // Simplified docking mode: disable window splitting, so docking is limited to merging multiple windows together into tab-bars.
     */
    get ConfigDockingNoSplit(): boolean;
    set ConfigDockingNoSplit(v: boolean);
    /**
     * = false          // Simplified docking mode: disable window merging into a same tab-bar, so docking is limited to splitting windows.
     */
    get ConfigDockingNoDockingOver(): boolean;
    set ConfigDockingNoDockingOver(v: boolean);
    /**
     * = false          // Enable docking with holding Shift key (reduce visual noise, allows dropping in wider space)
     */
    get ConfigDockingWithShift(): boolean;
    set ConfigDockingWithShift(v: boolean);
    /**
     * = false          // [BETA] [FIXME: This currently creates regression with auto-sizing and general overhead] Make every single floating window display within a docking node.
     */
    get ConfigDockingAlwaysTabBar(): boolean;
    set ConfigDockingAlwaysTabBar(v: boolean);
    /**
     * = false          // [BETA] Make window or viewport transparent when docking and only display docking boxes on the target viewport. Useful if rendering of multiple viewport cannot be synced. Best used with ConfigViewportsNoAutoMerge.
     */
    get ConfigDockingTransparentPayload(): boolean;
    set ConfigDockingTransparentPayload(v: boolean);
    /**
     * = false;         // Set to make all floating imgui windows always create their own viewport. Otherwise, they are merged into the main host viewports when overlapping it. May also set ImGuiViewportFlags_NoAutoMerge on individual viewport.
     */
    get ConfigViewportsNoAutoMerge(): boolean;
    set ConfigViewportsNoAutoMerge(v: boolean);
    /**
     * = false          // Disable default OS task bar icon flag for secondary viewports. When a viewport doesn't want a task bar icon, ImGuiViewportFlags_NoTaskBarIcon will be set on it.
     */
    get ConfigViewportsNoTaskBarIcon(): boolean;
    set ConfigViewportsNoTaskBarIcon(v: boolean);
    /**
     * = true           // Disable default OS window decoration flag for secondary viewports. When a viewport doesn't want window decorations, ImGuiViewportFlags_NoDecoration will be set on it. Enabling decoration can create subsequent issues at OS levels (e.g. minimum window size).
     */
    get ConfigViewportsNoDecoration(): boolean;
    set ConfigViewportsNoDecoration(v: boolean);
    /**
     * = true           // Disable setting OS window parent to main viewport by default. The platform backend is expected to honor `viewport->ParentViewportID` to setup a parent/child relationship between the OS windows (supported if ImGuiBackendFlags_HasParentViewport is set). When parented: child windows always appear in front of their parent. Set to false if you want viewports to automatically be parent of main viewport, otherwise all viewports will be top-level OS windows. Parent/child relationship may be set on a per-window basis using ImGuiWindowClass.
     */
    get ConfigViewportsNoDefaultParent(): boolean;
    set ConfigViewportsNoDefaultParent(v: boolean);
    /**
     *  true // When a platform window is focused (e.g. using Alt+Tab, clicking Platform Title Bar), apply corresponding focus on imgui windows (may clear focus/active id from imgui windows location in other platform windows). In principle this is better enabled but we provide an opt-out, because some Linux window managers tend to eagerly focus windows (e.g. on mouse hover, or even a simple window pos/size change).
     */
    get ConfigViewportsPlatformFocusSetsImGuiFocus(): boolean;
    set ConfigViewportsPlatformFocusSetsImGuiFocus(v: boolean);
    /**
     * = false          // [EXPERIMENTAL] Automatically overwrite style.FontScaleDpi when Monitor DPI changes. This will scale fonts but _NOT_ scale sizes/padding for now.
     */
    get ConfigDpiScaleFonts(): boolean;
    set ConfigDpiScaleFonts(v: boolean);
    /**
     * = false          // [EXPERIMENTAL] Scale Dear ImGui and Platform Windows when Monitor DPI changes.
     */
    get ConfigDpiScaleViewports(): boolean;
    set ConfigDpiScaleViewports(v: boolean);
    /**
     * = false          // Request ImGui to draw a mouse cursor for you (if you are on a platform without a mouse cursor). Cannot be easily renamed to 'io.ConfigXXX' because this is frequently used by backend implementations.
     */
    get MouseDrawCursor(): boolean;
    set MouseDrawCursor(v: boolean);
    /**
     * = defined(__APPLE__) // Swap Cmd<>Ctrl keys + OS X style text editing cursor movement using Alt instead of Ctrl, Shortcuts using Cmd/Super instead of Ctrl, Line/Text Start and End using Cmd+Arrows instead of Home/End, Double click selects by word instead of selecting whole text, Multi-selection in lists uses Cmd/Super instead of Ctrl.
     */
    get ConfigMacOSXBehaviors(): boolean;
    set ConfigMacOSXBehaviors(v: boolean);
    /**
     * = true           // Enable input queue trickling: some types of events submitted during the same frame (e.g. button down + up) will be spread over multiple frames, improving interactions with low framerates.
     */
    get ConfigInputTrickleEventQueue(): boolean;
    set ConfigInputTrickleEventQueue(v: boolean);
    /**
     * = true           // Enable blinking cursor (optional as some users consider it to be distracting).
     */
    get ConfigInputTextCursorBlink(): boolean;
    set ConfigInputTextCursorBlink(v: boolean);
    /**
     * = false          // [BETA] Pressing Enter will reactivate item and select all text (single-line only).
     */
    get ConfigInputTextEnterKeepActive(): boolean;
    set ConfigInputTextEnterKeepActive(v: boolean);
    /**
     * = false          // [BETA] Enable turning DragXXX widgets into text input with a simple mouse click-release (without moving). Not desirable on devices without a keyboard.
     */
    get ConfigDragClickToInputText(): boolean;
    set ConfigDragClickToInputText(v: boolean);
    /**
     * = true           // Enable resizing of windows from their edges and from the lower-left corner. This requires ImGuiBackendFlags_HasMouseCursors for better mouse cursor feedback. (This used to be a per-window ImGuiWindowFlags_ResizeFromAnySide flag)
     */
    get ConfigWindowsResizeFromEdges(): boolean;
    set ConfigWindowsResizeFromEdges(v: boolean);
    /**
     * = false      // Enable allowing to move windows only when clicking on their title bar. Does not apply to windows without a title bar.
     */
    get ConfigWindowsMoveFromTitleBarOnly(): boolean;
    set ConfigWindowsMoveFromTitleBarOnly(v: boolean);
    /**
     * = false      // [EXPERIMENTAL] Ctrl+C copy the contents of focused window into the clipboard. Experimental because: (1) has known issues with nested Begin/End pairs (2) text output quality varies (3) text output is in submission order rather than spatial order.
     */
    get ConfigWindowsCopyContentsWithCtrlC(): boolean;
    set ConfigWindowsCopyContentsWithCtrlC(v: boolean);
    /**
     * = true           // Enable scrolling page by page when clicking outside the scrollbar grab. When disabled, always scroll to clicked location. When enabled, Shift+Click scrolls to clicked location.
     */
    get ConfigScrollbarScrollByPage(): boolean;
    set ConfigScrollbarScrollByPage(v: boolean);
    /**
     * = 60.0f          // Timer (in seconds) to free transient windows/tables memory buffers when unused. Set to -1.0f to disable.
     */
    get ConfigMemoryCompactTimer(): number;
    set ConfigMemoryCompactTimer(v: number);
    /**
     * = 0.30f          // Time for a double-click, in seconds.
     */
    get MouseDoubleClickTime(): number;
    set MouseDoubleClickTime(v: number);
    /**
     * = 6.0f           // Distance threshold to stay in to validate a double-click, in pixels.
     */
    get MouseDoubleClickMaxDist(): number;
    set MouseDoubleClickMaxDist(v: number);
    /**
     * = 6.0f           // Distance threshold before considering we are dragging.
     */
    get MouseDragThreshold(): number;
    set MouseDragThreshold(v: number);
    /**
     * = 0.275f         // When holding a key/button, time before it starts repeating, in seconds (for buttons in Repeat mode, etc.).
     */
    get KeyRepeatDelay(): number;
    set KeyRepeatDelay(v: number);
    /**
     * = 0.050f         // When holding a key/button, rate at which it repeats, in seconds.
     */
    get KeyRepeatRate(): number;
    set KeyRepeatRate(v: number);
    /**
     * = true       // Enable error recovery support. Some errors won't be detected and lead to direct crashes if recovery is disabled.
     */
    get ConfigErrorRecovery(): boolean;
    set ConfigErrorRecovery(v: boolean);
    /**
     * = true       // Enable asserts on recoverable error. By default call IM_ASSERT() when returning from a failing IM_ASSERT_USER_ERROR()
     */
    get ConfigErrorRecoveryEnableAssert(): boolean;
    set ConfigErrorRecoveryEnableAssert(v: boolean);
    /**
     * = true       // Enable debug log output on recoverable errors.
     */
    get ConfigErrorRecoveryEnableDebugLog(): boolean;
    set ConfigErrorRecoveryEnableDebugLog(v: boolean);
    /**
     * = true       // Enable tooltip on recoverable errors. The tooltip include a way to enable asserts if they were disabled.
     */
    get ConfigErrorRecoveryEnableTooltip(): boolean;
    set ConfigErrorRecoveryEnableTooltip(v: boolean);
    /**
     * = false          // Enable various tools calling IM_DEBUG_BREAK().
     */
    get ConfigDebugIsDebuggerPresent(): boolean;
    set ConfigDebugIsDebuggerPresent(v: boolean);
    /**
     * = true           // Highlight and show an error message popup when multiple items have conflicting identifiers.
     */
    get ConfigDebugHighlightIdConflicts(): boolean;
    set ConfigDebugHighlightIdConflicts(v: boolean);
    /**
     * true // Show "Item Picker" button in aforementioned popup.
     */
    get ConfigDebugHighlightIdConflictsShowItemPicker(): boolean;
    set ConfigDebugHighlightIdConflictsShowItemPicker(v: boolean);
    /**
     * = false          // First-time calls to Begin()/BeginChild() will return false. NEEDS TO BE SET AT APPLICATION BOOT TIME if you don't want to miss windows.
     */
    get ConfigDebugBeginReturnValueOnce(): boolean;
    set ConfigDebugBeginReturnValueOnce(v: boolean);
    /**
     * = false          // Some calls to Begin()/BeginChild() will return false. Will cycle through window depths then repeat. Suggested use: add "io.ConfigDebugBeginReturnValue = io.KeyShift" in your main loop then occasionally press SHIFT. Windows should be flickering while running.
     */
    get ConfigDebugBeginReturnValueLoop(): boolean;
    set ConfigDebugBeginReturnValueLoop(v: boolean);
    /**
     * = false          // Ignore io.AddFocusEvent(false), consequently not calling io.ClearInputKeys()/io.ClearInputMouse() in input processing.
     */
    get ConfigDebugIgnoreFocusLoss(): boolean;
    set ConfigDebugIgnoreFocusLoss(v: boolean);
    /**
     * = false          // Save .ini data with extra comments (particularly helpful for Docking, but makes saving slower)
     */
    get ConfigDebugIniSettings(): boolean;
    set ConfigDebugIniSettings(v: boolean);
    /**
     * = NULL
     */
    get BackendPlatformName(): string;
    set BackendPlatformName(v: string);
    /**
     * = NULL
     */
    get BackendRendererName(): string;
    set BackendRendererName(v: string);
    /**
     * = NULL           // User data for platform backend
     */
    get BackendPlatformUserData(): any;
    set BackendPlatformUserData(v: any);
    /**
     * = NULL           // User data for renderer backend
     */
    get BackendRendererUserData(): any;
    set BackendRendererUserData(v: any);
    /**
     * = NULL           // User data for non C++ programming language backend
     */
    get BackendLanguageUserData(): any;
    set BackendLanguageUserData(v: any);
    /**
     * Set when Dear ImGui will use mouse inputs, in this case do not dispatch them to your main game/application (either way, always pass on mouse inputs to imgui). (e.g. unclicked mouse is hovering over an imgui window, widget is active, mouse was clicked over an imgui window, etc.).
     */
    get WantCaptureMouse(): boolean;
    set WantCaptureMouse(v: boolean);
    /**
     * Set when Dear ImGui will use keyboard inputs, in this case do not dispatch them to your main game/application (either way, always pass keyboard inputs to imgui). (e.g. InputText active, or an imgui window is focused and navigation is enabled, etc.).
     */
    get WantCaptureKeyboard(): boolean;
    set WantCaptureKeyboard(v: boolean);
    /**
     * Mobile/console: when set, you may display an on-screen keyboard. This is set by Dear ImGui when it wants textual keyboard input to happen (e.g. when a InputText widget is active).
     */
    get WantTextInput(): boolean;
    set WantTextInput(v: boolean);
    /**
     * MousePos has been altered, backend should reposition mouse on next frame. Rarely used! Set only when io.ConfigNavMoveSetMousePos is enabled.
     */
    get WantSetMousePos(): boolean;
    set WantSetMousePos(v: boolean);
    /**
     * When manual .ini load/save is active (io.IniFilename == NULL), this will be set to notify your application that you can call SaveIniSettingsToMemory() and save yourself. Important: clear io.WantSaveIniSettings yourself after saving!
     */
    get WantSaveIniSettings(): boolean;
    set WantSaveIniSettings(v: boolean);
    /**
     * Keyboard/Gamepad navigation is currently allowed (will handle ImGuiKey_NavXXX events) = a window is focused and it doesn't use the ImGuiWindowFlags_NoNavInputs flag.
     */
    get NavActive(): boolean;
    set NavActive(v: boolean);
    /**
     * Keyboard/Gamepad navigation highlight is visible and allowed (will handle ImGuiKey_NavXXX events).
     */
    get NavVisible(): boolean;
    set NavVisible(v: boolean);
    /**
     * Estimate of application framerate (rolling average over 60 frames, based on io.DeltaTime), in frame per second. Solely for convenience. Slow applications may not want to use a moving average or may want to reset underlying buffers occasionally.
     */
    get Framerate(): number;
    set Framerate(v: number);
    /**
     * Vertices output during last call to Render()
     */
    get MetricsRenderVertices(): number;
    set MetricsRenderVertices(v: number);
    /**
     * Indices output during last call to Render() = number of triangles * 3
     */
    get MetricsRenderIndices(): number;
    set MetricsRenderIndices(v: number);
    /**
     * Number of visible windows
     */
    get MetricsRenderWindows(): number;
    set MetricsRenderWindows(v: number);
    /**
     * Number of active windows
     */
    get MetricsActiveWindows(): number;
    set MetricsActiveWindows(v: number);
    /**
     * Mouse delta. Note that this is zero if either current or previous position are invalid (-FLT_MAX,-FLT_MAX), so a disappearing/reappearing mouse won't have a huge delta.
     */
    get MouseDelta(): ImVec2;
    set MouseDelta(v: ImVec2);
    /**
     * Parent UI context (needs to be set explicitly by parent).
     */
    get Ctx(): ImGuiContext;
    set Ctx(v: ImGuiContext);
    /**
     * Mouse position, in pixels. Set to ImVec2(-FLT_MAX, -FLT_MAX) if mouse is unavailable (on another screen, etc.)
     */
    get MousePos(): ImVec2;
    set MousePos(v: ImVec2);
    /**
     * Mouse wheel Vertical: 1 unit scrolls about 5 lines text. >0 scrolls Up, <0 scrolls Down. Hold Shift to turn vertical scroll into horizontal scroll.
     */
    get MouseWheel(): number;
    set MouseWheel(v: number);
    /**
     * Mouse wheel Horizontal. >0 scrolls Left, <0 scrolls Right. Most users don't have a mouse with a horizontal wheel, may not be filled by all backends.
     */
    get MouseWheelH(): number;
    set MouseWheelH(v: number);
    /**
     * Mouse actual input peripheral (Mouse/TouchScreen/Pen).
     */
    get MouseSource(): ImGuiMouseSource;
    set MouseSource(v: ImGuiMouseSource);
    /**
     * (Optional) Modify using io.AddMouseViewportEvent(). With multi-viewports: viewport the OS mouse is hovering. If possible _IGNORING_ viewports with the ImGuiViewportFlags_NoInputs flag is much better (few backends can handle that). Set io.BackendFlags |= ImGuiBackendFlags_HasMouseHoveredViewport if you can provide this info. If you don't imgui will infer the value using the rectangles and last focused time of the viewports it knows about (ignoring other OS windows).
     */
    get MouseHoveredViewport(): ImGuiID;
    set MouseHoveredViewport(v: ImGuiID);
    /**
     * Keyboard modifier down: Ctrl (non-macOS), Cmd (macOS)
     */
    get KeyCtrl(): boolean;
    set KeyCtrl(v: boolean);
    /**
     * Keyboard modifier down: Shift
     */
    get KeyShift(): boolean;
    set KeyShift(v: boolean);
    /**
     * Keyboard modifier down: Alt
     */
    get KeyAlt(): boolean;
    set KeyAlt(v: boolean);
    /**
     * Keyboard modifier down: Windows/Super (non-macOS), Ctrl (macOS)
     */
    get KeySuper(): boolean;
    set KeySuper(v: boolean);
    /**
     * Key mods flags (any of ImGuiMod_Ctrl/ImGuiMod_Shift/ImGuiMod_Alt/ImGuiMod_Super flags, same as io.KeyCtrl/KeyShift/KeyAlt/KeySuper but merged into flags). Read-only, updated by NewFrame()
     */
    get KeyMods(): ImGuiKeyChord;
    set KeyMods(v: ImGuiKeyChord);
    /**
     * Alternative to WantCaptureMouse: (WantCaptureMouse == true && WantCaptureMouseUnlessPopupClose == false) when a click over void is expected to close a popup.
     */
    get WantCaptureMouseUnlessPopupClose(): boolean;
    set WantCaptureMouseUnlessPopupClose(v: boolean);
    /**
     * Previous mouse position (note that MouseDelta is not necessary == MousePos-MousePosPrev, in case either position is invalid)
     */
    get MousePosPrev(): ImVec2;
    set MousePosPrev(v: ImVec2);
    /**
     * On a non-Mac system, holding Shift requests WheelY to perform the equivalent of a WheelX event. On a Mac system this is already enforced by the system.
     */
    get MouseWheelRequestAxisSwap(): boolean;
    set MouseWheelRequestAxisSwap(v: boolean);
    /**
     * (OSX) Set to true when the current click was a Ctrl+Click that spawned a simulated right click
     */
    get MouseCtrlLeftAsRightClick(): boolean;
    set MouseCtrlLeftAsRightClick(v: boolean);
    /**
     * Touch/Pen pressure (0.0f to 1.0f, should be >0.0f only when MouseDown[0] == true). Helper storage currently unused by Dear ImGui.
     */
    get PenPressure(): number;
    set PenPressure(v: number);
    /**
     * Only modify via AddFocusEvent()
     */
    get AppFocusLost(): boolean;
    set AppFocusLost(v: boolean);
    /**
     * Only modify via SetAppAcceptingEvents()
     */
    get AppAcceptingEvents(): boolean;
    set AppAcceptingEvents(v: boolean);
    /**
     * For AddInputCharacterUTF16()
     */
    get InputQueueSurrogate(): ImWchar16;
    set InputQueueSurrogate(v: ImWchar16);
    /**
     * Queue a new key down/up event. Key should be "translated" (as in, generally ImGuiKey_A matches the key end-user would use to emit an 'A' character)
     */
    AddKeyEvent(key: ImGuiKey, down: boolean): void;
    /**
     * Queue a new key down/up event for analog values (e.g. ImGuiKey_Gamepad_ values). Dead-zones should be handled by the backend.
     */
    AddKeyAnalogEvent(key: ImGuiKey, down: boolean, v: number): void;
    /**
     * Queue a mouse position update. Use -FLT_MAX,-FLT_MAX to signify no mouse (e.g. app not focused and not hovered)
     */
    AddMousePosEvent(x: number, y: number): void;
    /**
     * Queue a mouse button change
     */
    AddMouseButtonEvent(button: number, down: boolean): void;
    /**
     * Queue a mouse wheel update. wheel_y<0: scroll down, wheel_y>0: scroll up, wheel_x<0: scroll right, wheel_x>0: scroll left.
     */
    AddMouseWheelEvent(wheel_x: number, wheel_y: number): void;
    /**
     * Queue a mouse source change (Mouse/TouchScreen/Pen)
     */
    AddMouseSourceEvent(source: ImGuiMouseSource): void;
    /**
     * Queue a mouse hovered viewport. Requires backend to set ImGuiBackendFlags_HasMouseHoveredViewport to call this (for multi-viewport support).
     */
    AddMouseViewportEvent(id: ImGuiID): void;
    /**
     * Queue a gain/loss of focus for the application (generally based on OS/platform focus of your window)
     */
    AddFocusEvent(focused: boolean): void;
    /**
     * Queue a new character input
     */
    AddInputCharacter(c: number): void;
    /**
     * Queue a new character input from a UTF-16 character, it can be a surrogate
     */
    AddInputCharacterUTF16(c: ImWchar16): void;
    /**
     * Queue a new characters input from a UTF-8 string
     */
    AddInputCharactersUTF8(str: string): void;
    /**
     * [Optional] Specify index for legacy <1.87 IsKeyXXX() functions with native indices + specify native keycode, scancode.
     */
    SetKeyEventNativeData(key: ImGuiKey, native_keycode: number, native_scancode: number, native_legacy_index?: number): void;
    /**
     * Set master flag for accepting key/mouse/text events (default to true). Useful if you have native dialog boxes that are interrupting your application loop/refresh, and you want to disable events being queued while your app is frozen.
     */
    SetAppAcceptingEvents(accepting_events: boolean): void;
    /**
     * Clear all incoming events.
     */
    ClearEventsQueue(): void;
    /**
     * Clear current keyboard/gamepad state + current frame text input buffer. Equivalent to releasing all keys/buttons.
     */
    ClearInputKeys(): void;
    /**
     * Clear current mouse state.
     */
    ClearInputMouse(): void;
}
/**
 * Shared state of InputText(), passed as an argument to your callback when a ImGuiInputTextFlags_Callback* flag is used.
 * The callback function should return 0 by default.
 * Callbacks (follow a flag name and see comments in ImGuiInputTextFlags_ declarations for more details)
 * - ImGuiInputTextFlags_CallbackEdit:        Callback on buffer edit. Note that InputText() already returns true on edit + you can always use IsItemEdited(). The callback is useful to manipulate the underlying buffer while focus is active.
 * - ImGuiInputTextFlags_CallbackAlways:      Callback on each iteration
 * - ImGuiInputTextFlags_CallbackCompletion:  Callback on pressing TAB
 * - ImGuiInputTextFlags_CallbackHistory:     Callback on pressing Up/Down arrows
 * - ImGuiInputTextFlags_CallbackCharFilter:  Callback on character inputs to replace or discard them. Modify 'EventChar' to replace or discard, or return 1 in callback to discard.
 * - ImGuiInputTextFlags_CallbackResize:      Callback on buffer capacity changes request (beyond 'buf_size' parameter value), allowing the string to grow.
 */
export declare class ImGuiInputTextCallbackData extends ReferenceStruct {
    /**
     * Parent UI context
     */
    get Ctx(): ImGuiContext;
    set Ctx(v: ImGuiContext);
    /**
     * One ImGuiInputTextFlags_Callback*    // Read-only
     */
    get EventFlag(): ImGuiInputTextFlags;
    set EventFlag(v: ImGuiInputTextFlags);
    /**
     * What user passed to InputText()      // Read-only
     */
    get Flags(): ImGuiInputTextFlags;
    set Flags(v: ImGuiInputTextFlags);
    /**
     * What user passed to InputText()      // Read-only
     */
    get UserData(): any;
    set UserData(v: any);
    /**
     * Widget ID                            // Read-only
     */
    get ID(): ImGuiID;
    set ID(v: ImGuiID);
    /**
     * Key pressed (Up/Down/TAB)            // Read-only    // [Completion,History]
     */
    get EventKey(): ImGuiKey;
    set EventKey(v: ImGuiKey);
    /**
     * Character input                      // Read-write   // [CharFilter] Replace character with another one, or set to zero to drop. return 1 is equivalent to setting EventChar=0;
     */
    get EventChar(): ImWchar;
    set EventChar(v: ImWchar);
    /**
     * Input field just got activated       // Read-only    // [Always]
     */
    get EventActivated(): boolean;
    set EventActivated(v: boolean);
    /**
     * Set if you modify Buf/BufTextLen!    // Write        // [Completion,History,Always]
     */
    get BufDirty(): boolean;
    set BufDirty(v: boolean);
    /**
     * Text buffer                          // Read-write   // [Resize] Can replace pointer / [Completion,History,Always] Only write to pointed data, don't replace the actual pointer!
     */
    get Buf(): string;
    set Buf(v: string);
    /**
     * Text length (in bytes)               // Read-write   // [Resize,Completion,History,Always] Exclude zero-terminator storage. In C land: == strlen(some_text), in C++ land: string.length()
     */
    get BufTextLen(): number;
    set BufTextLen(v: number);
    /**
     * Buffer size (in bytes) = capacity+1  // Read-only    // [Resize,Completion,History,Always] Include zero-terminator storage. In C land: == ARRAYSIZE(my_char_array), in C++ land: string.capacity()+1
     */
    get BufSize(): number;
    set BufSize(v: number);
    /**
     *                                      // Read-write   // [Completion,History,Always,CharFilter]
     */
    get CursorPos(): number;
    set CursorPos(v: number);
    /**
     *                                      // Read-write   // [Completion,History,Always,CharFilter] == to SelectionEnd when no selection
     */
    get SelectionStart(): number;
    set SelectionStart(v: number);
    /**
     *                                      // Read-write   // [Completion,History,Always,CharFilter]
     */
    get SelectionEnd(): number;
    set SelectionEnd(v: number);
    DeleteChars(pos: number, bytes_count: number): void;
    InsertChars(pos: number, text: string, text_end?: string): void;
    SelectAll(): void;
    SetSelection(s: number, e: number): void;
    ClearSelection(): void;
    HasSelection(): boolean;
}
/**
 * Resizing callback data to apply custom constraint. As enabled by SetNextWindowSizeConstraints(). Callback is called during the next Begin().
 * NB: For basic min/max size constraint on each axis you don't need to use the callback! The SetNextWindowSizeConstraints() parameters are enough.
 */
export declare class ImGuiSizeCallbackData extends ReferenceStruct {
    /**
     * Read-only.   What user passed to SetNextWindowSizeConstraints(). Generally store an integer or float in here (need reinterpret_cast<>).
     */
    get UserData(): any;
    set UserData(v: any);
    /**
     * Read-only.   Window position, for reference.
     */
    get Pos(): ImVec2;
    set Pos(v: ImVec2);
    /**
     * Read-only.   Current window size.
     */
    get CurrentSize(): ImVec2;
    set CurrentSize(v: ImVec2);
    /**
     * Read-write.  Desired size, based on user's mouse position. Write to this field to restrain resizing.
     */
    get DesiredSize(): ImVec2;
    set DesiredSize(v: ImVec2);
}
/**
 * [ALPHA] Rarely used / very advanced uses only. Use with SetNextWindowClass() and DockSpace() functions.
 * Important: the content of this class is still highly WIP and likely to change and be refactored
 * before we stabilize Docking features. Please be mindful if using this.
 * Provide hints:
 * - To the platform backend via altered viewport flags (enable/disable OS decoration, OS task bar icons, etc.)
 * - To the platform backend for OS level parent/child relationships of viewport (otherwise: default is configured via io.ConfigViewportsNoDefaultParent)
 * - To the docking system for various options and filtering.
 */
export declare class ImGuiWindowClass extends ReferenceStruct {
    /**
     * User data. 0 = Default class (unclassed). Windows of different classes cannot be docked with each others.
     */
    get ClassId(): ImGuiID;
    set ClassId(v: ImGuiID);
    /**
     * Hint for the platform backend. -1: use default. 0: request platform backend to not parent the platform. != 0: request platform backend to create a parent<>child relationship between the platform windows. Not conforming backends are free to e.g. parent every viewport to the main viewport or not.
     */
    get ParentViewportId(): ImGuiID;
    set ParentViewportId(v: ImGuiID);
    /**
     * ID of parent window for shortcut focus route evaluation, e.g. Shortcut() call from Parent Window will succeed when this window is focused.
     */
    get FocusRouteParentWindowId(): ImGuiID;
    set FocusRouteParentWindowId(v: ImGuiID);
    /**
     * Viewport flags to set when a window of this class owns a viewport. This allows you to enforce OS decoration or task bar icon, override the defaults on a per-window basis.
     */
    get ViewportFlagsOverrideSet(): ImGuiViewportFlags;
    set ViewportFlagsOverrideSet(v: ImGuiViewportFlags);
    /**
     * Viewport flags to clear when a window of this class owns a viewport. This allows you to enforce OS decoration or task bar icon, override the defaults on a per-window basis.
     */
    get ViewportFlagsOverrideClear(): ImGuiViewportFlags;
    set ViewportFlagsOverrideClear(v: ImGuiViewportFlags);
    /**
     * [EXPERIMENTAL] TabItem flags to set when a window of this class gets submitted into a dock node tab bar. May use with ImGuiTabItemFlags_Leading or ImGuiTabItemFlags_Trailing.
     */
    get TabItemFlagsOverrideSet(): ImGuiTabItemFlags;
    set TabItemFlagsOverrideSet(v: ImGuiTabItemFlags);
    /**
     * [EXPERIMENTAL] Dock node flags to set when a window of this class is hosted by a dock node (it doesn't have to be selected!)
     */
    get DockNodeFlagsOverrideSet(): ImGuiDockNodeFlags;
    set DockNodeFlagsOverrideSet(v: ImGuiDockNodeFlags);
    /**
     * Set to true to enforce single floating windows of this class always having their own docking node (equivalent of setting the global io.ConfigDockingAlwaysTabBar)
     */
    get DockingAlwaysTabBar(): boolean;
    set DockingAlwaysTabBar(v: boolean);
    /**
     * Set to true to allow windows of this class to be docked/merged with an unclassed window. // FIXME-DOCK: Move to DockNodeFlags override?
     */
    get DockingAllowUnclassed(): boolean;
    set DockingAllowUnclassed(v: boolean);
    /**
     * [EXPERIMENTAL] Pass opaque data for Platform backend to handle.
     */
    get PlatformIconData(): any;
    set PlatformIconData(v: any);
}
/**
 * Data payload for Drag and Drop operations: AcceptDragDropPayload(), GetDragDropPayload()
 */
export declare class ImGuiPayload extends ReferenceStruct {
    get Data(): string;
    get DataSize(): number;
    Clear(): void;
    IsDataType(type: string): boolean;
    IsPreview(): boolean;
    IsDelivery(): boolean;
}
/**
 * Helper: Manually clip large list of items.
 * If you have lots evenly spaced items and you have random access to the list, you can perform coarse
 * clipping based on visibility to only submit items that are in view.
 * The clipper calculates the range of visible items and advance the cursor to compensate for the non-visible items we have skipped.
 * (Dear ImGui already clip items based on their bounds but: it needs to first layout the item to do so, and generally
 *  fetching/submitting your own data incurs additional cost. Coarse clipping using ImGuiListClipper allows you to easily
 *  scale using lists with tens of thousands of items without a problem)
 * Usage:
 *   ImGuiListClipper clipper;
 *   clipper.Begin(1000);         // We have 1000 elements, evenly spaced.
 *   while (clipper.Step())
 *       for (int i = clipper.DisplayStart; i < clipper.DisplayEnd; i++)
 *           ImGui::Text("line number %d", i);
 * Generally what happens is:
 * - Clipper lets you process the first element (DisplayStart = 0, DisplayEnd = 1) regardless of it being visible or not.
 * - User code submit that one element.
 * - Clipper can measure the height of the first element
 * - Clipper calculate the actual range of elements to display based on the current clipping rectangle, position the cursor before the first visible element.
 * - User code submit visible elements.
 * - The clipper also handles various subtleties related to keyboard/gamepad navigation, wrapping etc.
 */
export declare class ImGuiListClipper extends ReferenceStruct {
    /**
     * First item to display, updated by each call to Step()
     */
    get DisplayStart(): number;
    set DisplayStart(v: number);
    /**
     * End of items to display (exclusive)
     */
    get DisplayEnd(): number;
    set DisplayEnd(v: number);
    /**
     * Helper storage for user convenience/code. Optional, and otherwise unused if you don't use it.
     */
    get UserIndex(): number;
    set UserIndex(v: number);
    /**
     * [Internal] Number of items
     */
    get ItemsCount(): number;
    set ItemsCount(v: number);
    /**
     * [Internal] Height of item after a first step and item submission can calculate it
     */
    get ItemsHeight(): number;
    set ItemsHeight(v: number);
    /**
     * [Internal] Flags, currently not yet well exposed.
     */
    get Flags(): ImGuiListClipperFlags;
    set Flags(v: ImGuiListClipperFlags);
    /**
     * [Internal] Cursor position at the time of Begin() or after table frozen rows are all processed
     */
    get StartPosY(): number;
    set StartPosY(v: number);
    /**
     * [Internal] Account for frozen rows in a table and initial loss of precision in very large windows.
     */
    get StartSeekOffsetY(): number;
    set StartSeekOffsetY(v: number);
    /**
     * [Internal] Parent UI context
     */
    get Ctx(): ImGuiContext;
    set Ctx(v: ImGuiContext);
    /**
     * [Internal] Internal data
     */
    get TempData(): any;
    set TempData(v: any);
    Begin(items_count: number, items_height?: number): void;
    /**
     * Automatically called on the last call of Step() that returns false.
     */
    End(): void;
    /**
     * Call until it returns false. The DisplayStart/DisplayEnd fields will be set and you can process/draw those items.
     */
    Step(): boolean;
    /**
     * Call IncludeItemByIndex() or IncludeItemsByIndex() *BEFORE* first call to Step() if you need a range of items to not be clipped, regardless of their visibility.
     * (Due to alignment / padding of certain items it is possible that an extra item may be included on either end of the display range).
     */
    IncludeItemByIndex(item_index: number): void;
    /**
     * item_end is exclusive e.g. use (42, 42+1) to make item 42 never clipped.
     */
    IncludeItemsByIndex(item_begin: number, item_end: number): void;
    /**
     * Seek cursor toward given item. This is automatically called while stepping.
     * - The only reason to call this is: you can use ImGuiListClipper::Begin(INT_MAX) if you don't know item count ahead of time.
     * - In this case, after all steps are done, you'll want to call SeekCursorForItem(item_count).
     */
    SeekCursorForItem(item_index: number): void;
}
/**
 * Helper: ImColor() implicitly converts colors to either ImU32 (packed 4x1 byte) or ImVec4 (4x1 float)
 * Prefer using IM_COL32() macros if you want a guaranteed compile-time ImU32 for usage with ImDrawList API.
 * **Avoid storing ImColor! Store either u32 of ImVec4. This is not a full-featured color class. MAY OBSOLETE.
 * **None of the ImGui API are using ImColor directly but you can use it as a convenience to pass colors in either ImU32 or ImVec4 formats. Explicitly cast to ImU32 or ImVec4 if needed.
 */
export declare class ImColor extends ReferenceStruct {
    get Value(): ImVec4;
    set Value(v: ImVec4);
    /**
     * FIXME-OBSOLETE: May need to obsolete/cleanup those helpers.
     */
    SetHSV(h: number, s: number, v: number, a?: number): void;
    HSV(h: number, s: number, v: number, a?: number): ImColor;
}
/**
 * Main IO structure returned by BeginMultiSelect()/EndMultiSelect().
 * This mainly contains a list of selection requests.
 * - Use 'Demo->Tools->Debug Log->Selection' to see requests as they happen.
 * - Some fields are only useful if your list is dynamic and allows deletion (getting post-deletion focus/state right is shown in the demo)
 * - Below: who reads/writes each fields? 'r'=read, 'w'=write, 'ms'=multi-select code, 'app'=application/user code.
 */
export declare class ImGuiMultiSelectIO extends ReferenceStruct {
}
/**
 * Typically, 1 command = 1 GPU draw call (unless command is a callback)
 * - VtxOffset: When 'io.BackendFlags & ImGuiBackendFlags_RendererHasVtxOffset' is enabled,
 *   this fields allow us to render meshes larger than 64K vertices while keeping 16-bit indices.
 *   Backends made for <1.71. will typically ignore the VtxOffset fields.
 * - The ClipRect/TexRef/VtxOffset fields must be contiguous as we memcmp() them together (this is asserted for).
 */
export declare class ImDrawCmd extends ReferenceStruct {
    /**
     * 4*4  // Clipping rectangle (x1, y1, x2, y2). Subtract ImDrawData->DisplayPos to get clipping rectangle in "viewport" coordinates
     */
    get ClipRect(): ImVec4;
    set ClipRect(v: ImVec4);
    /**
     * 16   // Reference to a font/texture atlas (where backend called ImTextureData::SetTexID()) or to a user-provided texture ID (via e.g. ImGui::Image() calls). Both will lead to a ImTextureID value.
     */
    get TexRef(): ImTextureRef;
    set TexRef(v: ImTextureRef);
    /**
     * 4    // Start offset in vertex buffer. ImGuiBackendFlags_RendererHasVtxOffset: always 0, otherwise may be >0 to support meshes larger than 64K vertices with 16-bit indices.
     */
    get VtxOffset(): number;
    set VtxOffset(v: number);
    /**
     * 4    // Start offset in index buffer.
     */
    get IdxOffset(): number;
    set IdxOffset(v: number);
    /**
     * 4    // Number of indices (multiple of 3) to be rendered as triangles. Vertices are stored in the callee ImDrawList's vtx_buffer[] array, indices in idx_buffer[].
     */
    get ElemCount(): number;
    set ElemCount(v: number);
    /**
     * 4-8  // If != NULL, call the function instead of rendering the vertices. clip_rect and texture_id will be set normally.
     */
    get UserCallback(): ImDrawCallback;
    set UserCallback(v: ImDrawCallback);
    /**
     * 4-8  // Callback user data (when UserCallback != NULL). If called AddCallback() with size == 0, this is a copy of the AddCallback() argument. If called AddCallback() with size > 0, this is pointing to a buffer where data is stored.
     */
    get UserCallbackData(): any;
    set UserCallbackData(v: any);
    /**
     * 4 // Size of callback user data when using storage, otherwise 0.
     */
    get UserCallbackDataSize(): number;
    set UserCallbackDataSize(v: number);
    /**
     * 4 // [Internal] Offset of callback user data when using storage, otherwise -1.
     */
    get UserCallbackDataOffset(): number;
    set UserCallbackDataOffset(v: number);
    /**
     * == (TexRef._TexData ? TexRef._TexData->TexID : TexRef._TexID)
     */
    GetTexID(): ImTextureID;
}
/**
 * Draw command list
 * This is the low-level list of polygons that ImGui:: functions are filling. At the end of the frame,
 * all command lists are passed to your ImGuiIO::RenderDrawListFn function for rendering.
 * Each dear imgui window contains its own ImDrawList. You can use ImGui::GetWindowDrawList() to
 * access the current window draw list and draw custom primitives.
 * You can interleave normal ImGui:: calls and adding primitives to the current draw list.
 * In single viewport mode, top-left is == GetMainViewport()->Pos (generally 0,0), bottom-right is == GetMainViewport()->Pos+Size (generally io.DisplaySize).
 * You are totally free to apply whatever transformation matrix you want to the data (depending on the use of the transformation you may want to apply it to ClipRect as well!)
 * Important: Primitives are always added to the list and not culled (culling is done at higher-level by ImGui:: functions), if you use this API a lot consider coarse culling your drawn objects.
 */
export declare class ImDrawList extends ReferenceStruct {
    /**
     * Flags, you may poke into these to adjust anti-aliasing settings per-primitive.
     */
    get Flags(): ImDrawListFlags;
    set Flags(v: ImDrawListFlags);
    /**
     * Render-level scissoring. This is passed down to your render function but not used for CPU-side coarse clipping. Prefer using higher-level ImGui::PushClipRect() to affect logic (hit-testing and widget culling)
     */
    PushClipRect(clip_rect_min: ImVec2, clip_rect_max: ImVec2, intersect_with_current_clip_rect?: boolean): void;
    PushClipRectFullScreen(): void;
    PopClipRect(): void;
    PushTexture(tex_ref: ImTextureRef): void;
    PopTexture(): void;
    GetClipRectMin(): ImVec2;
    GetClipRectMax(): ImVec2;
    /**
     * Primitives
     * - Filled shapes must always use clockwise winding order. The anti-aliasing fringe depends on it. Counter-clockwise shapes will have "inward" anti-aliasing.
     * - For rectangular primitives, "p_min" and "p_max" represent the upper-left and lower-right corners.
     * - For circle primitives, use "num_segments == 0" to automatically calculate tessellation (preferred).
     *   In older versions (until Dear ImGui 1.77) the AddCircle functions defaulted to num_segments == 12.
     *   In future versions we will use textures to provide cheaper and higher-quality circles.
     *   Use AddNgon() and AddNgonFilled() functions if you need to guarantee a specific number of sides.
     */
    AddLine(p1: ImVec2, p2: ImVec2, col: ImU32, thickness?: number): void;
    AddLineH(min_x: number, max_x: number, y: number, col: ImU32, thickness?: number): void;
    AddLineV(x: number, min_y: number, max_y: number, col: ImU32, thickness?: number): void;
    /**
     * a: upper-left, b: lower-right (== upper-left + size)
     */
    AddRect(p_min: ImVec2, p_max: ImVec2, col: ImU32, rounding?: number, thickness?: number, flags?: ImDrawFlags): void;
    /**
     * a: upper-left, b: lower-right (== upper-left + size)
     */
    AddRectFilled(p_min: ImVec2, p_max: ImVec2, col: ImU32, rounding?: number, flags?: ImDrawFlags): void;
    AddRectFilledMultiColor(p_min: ImVec2, p_max: ImVec2, col_upr_left: ImU32, col_upr_right: ImU32, col_bot_right: ImU32, col_bot_left: ImU32): void;
    AddQuad(p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, col: ImU32, thickness?: number): void;
    AddQuadFilled(p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, col: ImU32): void;
    AddTriangle(p1: ImVec2, p2: ImVec2, p3: ImVec2, col: ImU32, thickness?: number): void;
    AddTriangleFilled(p1: ImVec2, p2: ImVec2, p3: ImVec2, col: ImU32): void;
    AddCircle(center: ImVec2, radius: number, col: ImU32, num_segments?: number, thickness?: number): void;
    AddCircleFilled(center: ImVec2, radius: number, col: ImU32, num_segments?: number): void;
    AddNgon(center: ImVec2, radius: number, col: ImU32, num_segments: number, thickness?: number): void;
    AddNgonFilled(center: ImVec2, radius: number, col: ImU32, num_segments: number): void;
    AddEllipse(center: ImVec2, radius: ImVec2, col: ImU32, rot?: number, num_segments?: number, thickness?: number): void;
    AddEllipseFilled(center: ImVec2, radius: ImVec2, col: ImU32, rot?: number, num_segments?: number): void;
    AddText(pos: ImVec2, col: ImU32, text_begin: string, text_end?: string): void;
    AddTextImFontPtr(font: ImFont, font_size: number, pos: ImVec2, col: ImU32, text_begin: string, text_end?: string, wrap_width?: number, cpu_fine_clip_rect?: ImVec4 | null): void;
    /**
     * Cubic Bezier (4 control points)
     */
    AddBezierCubic(p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, col: ImU32, thickness: number, num_segments?: number): void;
    /**
     * Quadratic Bezier (3 control points)
     */
    AddBezierQuadratic(p1: ImVec2, p2: ImVec2, p3: ImVec2, col: ImU32, thickness: number, num_segments?: number): void;
    /**
     * General polygon
     * - Only simple polygons are supported by filling functions (no self-intersections, no holes).
     * - Concave polygon fill is more expensive than convex one: it has O(N^2) complexity. Provided as a convenience for the user but not used by the main library.
     */
    AddPolyline(points: ImVec2, num_points: number, col: ImU32, thickness: number, flags?: ImDrawFlags): void;
    AddConvexPolyFilled(points: ImVec2, num_points: number, col: ImU32): void;
    AddConcavePolyFilled(points: ImVec2, num_points: number, col: ImU32): void;
    /**
     * Image primitives
     * - Read FAQ to understand what ImTextureID/ImTextureRef are.
     * - "p_min" and "p_max" represent the upper-left and lower-right corners of the rectangle.
     * - "uv_min" and "uv_max" represent the normalized texture coordinates to use for those corners. Using (0,0)->(1,1) texture coordinates will generally display the entire texture.
     */
    AddImage(tex_ref: ImTextureRef, p_min: ImVec2, p_max: ImVec2, uv_min?: ImVec2, uv_max?: ImVec2, col?: ImU32): void;
    AddImageQuad(tex_ref: ImTextureRef, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, uv1?: ImVec2, uv2?: ImVec2, uv3?: ImVec2, uv4?: ImVec2, col?: ImU32): void;
    AddImageRounded(tex_ref: ImTextureRef, p_min: ImVec2, p_max: ImVec2, uv_min: ImVec2, uv_max: ImVec2, col: ImU32, rounding: number, flags?: ImDrawFlags): void;
    /**
     * Stateful path API, add points then finish with PathFillConvex() or PathStroke()
     * - Important: filled shapes must always use clockwise winding order! The anti-aliasing fringe depends on it. Counter-clockwise shapes will have "inward" anti-aliasing.
     *   so e.g. 'PathArcTo(center, radius, PI * -0.5f, PI)' is ok, whereas 'PathArcTo(center, radius, PI, PI * -0.5f)' won't have correct anti-aliasing when followed by PathFillConvex().
     */
    PathClear(): void;
    PathLineTo(pos: ImVec2): void;
    PathLineToMergeDuplicate(pos: ImVec2): void;
    PathFillConvex(col: ImU32): void;
    PathFillConcave(col: ImU32): void;
    PathStroke(col: ImU32, thickness?: number, flags?: ImDrawFlags): void;
    PathArcTo(center: ImVec2, radius: number, a_min: number, a_max: number, num_segments?: number): void;
    /**
     * Use precomputed angles for a 12 steps circle
     */
    PathArcToFast(center: ImVec2, radius: number, a_min_of_12: number, a_max_of_12: number): void;
    /**
     * Ellipse
     */
    PathEllipticalArcTo(center: ImVec2, radius: ImVec2, rot: number, a_min: number, a_max: number, num_segments?: number): void;
    /**
     * Cubic Bezier (4 control points)
     */
    PathBezierCubicCurveTo(p2: ImVec2, p3: ImVec2, p4: ImVec2, num_segments?: number): void;
    /**
     * Quadratic Bezier (3 control points)
     */
    PathBezierQuadraticCurveTo(p2: ImVec2, p3: ImVec2, num_segments?: number): void;
    PathRect(rect_min: ImVec2, rect_max: ImVec2, rounding?: number, flags?: ImDrawFlags): void;
    /**
     * Advanced: Draw Callbacks
     * - May be used to alter render state (change sampler, blending, current shader). May be used to emit custom rendering commands (difficult to do correctly, but possible).
     * - Use special GetPlatformIO().DrawCallback_ResetRenderState callback to instruct backend to reset its render state to the default.
     * - See other standard callbacks in GetPlatformIO(), which may or not be supported by your backend.
     * - Your rendering loop must check for 'UserCallback' in ImDrawCmd and call the function instead of rendering triangles. All standard backends are honoring this.
     * - For some backends, the callback may access selected render-states exposed by the backend in a ImGui_ImplXXXX_RenderState structure pointed to by platform_io.Renderer_RenderState.
     * - IMPORTANT: please be mindful of the different level of indirection between using size==0 (copying argument) and using size>0 (copying pointed data into a buffer).
     *   - If userdata_size == 0: we copy/store the 'userdata' argument as-is. It will be available unmodified in ImDrawCmd::UserCallbackData during render.
     *   - If userdata_size > 0,  we copy/store 'userdata_size' bytes pointed to by 'userdata'. We store them in a buffer stored inside the drawlist. ImDrawCmd::UserCallbackData will point inside that buffer so you have to retrieve data from there. Your callback may need to use ImDrawCmd::UserCallbackDataSize if you expect dynamically-sized data.
     *   - Support for userdata_size > 0 was added in v1.91.4, October 2024. So earlier code always only allowed to copy/store a simple void*.
     */
    AddCallback(callback: ImDrawCallback, userdata?: any | null, userdata_size?: number): void;
    /**
     * This is useful if you need to forcefully create a new draw call (to allow for dependent rendering / blending). Otherwise primitives are merged into the same draw-call as much as possible
     */
    AddDrawCmd(): void;
    /**
     * Create a clone of the CmdBuffer/IdxBuffer/VtxBuffer. For multi-threaded rendering, consider using `imgui_threaded_rendering` from https://github.com/ocornut/imgui_club instead.
     */
    CloneOutput(): ImDrawList;
    /**
     * Advanced: Channels
     * - Use to split render into layers. By switching channels to can render out-of-order (e.g. submit FG primitives before BG primitives)
     * - Use to minimize draw calls (e.g. if going back-and-forth between multiple clipping rectangles, prefer to append into separate channels then merge at the end)
     * - This API shouldn't have been in ImDrawList in the first place!
     *   Prefer using your own persistent instance of ImDrawListSplitter as you can stack them.
     *   Using the ImDrawList::ChannelsXXXX you cannot stack a split over another.
     */
    ChannelsSplit(count: number): void;
    ChannelsMerge(): void;
    ChannelsSetCurrent(n: number): void;
    /**
     * Advanced: Primitives allocations
     * - We render triangles (three vertices)
     * - All primitives needs to be reserved via PrimReserve() beforehand.
     */
    PrimReserve(idx_count: number, vtx_count: number): void;
    PrimUnreserve(idx_count: number, vtx_count: number): void;
    /**
     * Axis aligned rectangle (composed of two triangles)
     */
    PrimRect(a: ImVec2, b: ImVec2, col: ImU32): void;
    PrimRectUV(a: ImVec2, b: ImVec2, uv_a: ImVec2, uv_b: ImVec2, col: ImU32): void;
    PrimQuadUV(a: ImVec2, b: ImVec2, c: ImVec2, d: ImVec2, uv_a: ImVec2, uv_b: ImVec2, uv_c: ImVec2, uv_d: ImVec2, col: ImU32): void;
    PrimWriteVtx(pos: ImVec2, uv: ImVec2, col: ImU32): void;
    PrimWriteIdx(idx: ImDrawIdx): void;
    /**
     * Write vertex with unique index
     */
    PrimVtx(pos: ImVec2, uv: ImVec2, col: ImU32): void;
    /**
     * [Internal helpers]
     */
    _SetDrawListSharedData(data: ImDrawListSharedData): void;
    _ResetForNewFrame(): void;
    _ClearFreeMemory(): void;
    _PopUnusedDrawCmd(): void;
    _TryMergeDrawCmds(): void;
    _OnChangedClipRect(): void;
    _OnChangedTexture(): void;
    _OnChangedVtxOffset(): void;
    _SetTexture(tex_ref: ImTextureRef): void;
    _CalcCircleAutoSegmentCount(radius: number): number;
    _PathArcToFastEx(center: ImVec2, radius: number, a_min_sample: number, a_max_sample: number, a_step: number): void;
    _PathArcToN(center: ImVec2, radius: number, a_min: number, a_max: number, num_segments: number): void;
}
/**
 * All draw data to render a Dear ImGui frame
 * (NB: the style and the naming convention here is a little inconsistent, we currently preserve them for backward compatibility purpose,
 * as this is one of the oldest structure exposed by the library! Basically, ImDrawList == CmdList)
 */
export declare class ImDrawData extends ReferenceStruct {
}
/**
 * A font input/source (we may rename this to ImFontSource in the future)
 */
export declare class ImFontConfig extends ReferenceStruct {
    /**
     *          // TTF/OTF data
     */
    get FontData(): any;
    set FontData(v: any);
    /**
     *          // TTF/OTF data size
     */
    get FontDataSize(): number;
    set FontDataSize(v: number);
    /**
     * true     // TTF/OTF data ownership taken by the owner ImFontAtlas (will delete memory itself). SINCE 1.92, THE DATA NEEDS TO PERSIST FOR WHOLE DURATION OF ATLAS.
     */
    get FontDataOwnedByAtlas(): boolean;
    set FontDataOwnedByAtlas(v: boolean);
    /**
     * false    // Merge into previous ImFont, so you can combine multiple inputs font into one ImFont (e.g. ASCII font + icons + Japanese glyphs). You may want to use GlyphOffset.y when merge font of different heights.
     */
    get MergeMode(): boolean;
    set MergeMode(v: boolean);
    /**
     * false    // Align every glyph AdvanceX to pixel boundaries. Prevents fractional font size from working correctly! Useful e.g. if you are merging a non-pixel aligned font with the default font. If enabled, OversampleH/V will default to 1.
     */
    get PixelSnapH(): boolean;
    set PixelSnapH(v: boolean);
    /**
     * 0 (2)    // Rasterize at higher quality for sub-pixel positioning. 0 == auto == 1 or 2 depending on size. Note the difference between 2 and 3 is minimal. You can reduce this to 1 for large glyphs save memory. Read https://github.com/nothings/stb/blob/master/tests/oversample/README.md for details.
     */
    get OversampleH(): ImS8;
    set OversampleH(v: ImS8);
    /**
     * 0 (1)    // Rasterize at higher quality for sub-pixel positioning. 0 == auto == 1. This is not really useful as we don't use sub-pixel positions on the Y axis.
     */
    get OversampleV(): ImS8;
    set OversampleV(v: ImS8);
    /**
     * 0        // Explicitly specify Unicode codepoint of ellipsis character. When fonts are being merged first specified ellipsis will be used.
     */
    get EllipsisChar(): ImWchar;
    set EllipsisChar(v: ImWchar);
    /**
     *          // Output size in pixels for rasterizer (more or less maps to the resulting font height).
     */
    get SizePixels(): number;
    set SizePixels(v: number);
    /**
     * NULL     // *LEGACY* THE ARRAY DATA NEEDS TO PERSIST AS LONG AS THE FONT IS ALIVE. Pointer to a user-provided list of Unicode range (2 value per range, values are inclusive, zero-terminated list).
     */
    get GlyphRanges(): ImWchar;
    set GlyphRanges(v: ImWchar);
    /**
     * NULL     // Pointer to a small user-provided list of Unicode ranges (2 value per range, values are inclusive, zero-terminated list). This is very close to GlyphRanges[] but designed to exclude ranges from a font source, when merging fonts with overlapping glyphs. Use "Input Glyphs Overlap Detection Tool" to find about your overlapping ranges.
     */
    get GlyphExcludeRanges(): ImWchar;
    set GlyphExcludeRanges(v: ImWchar);
    /**
     * 0, 0     // Offset (in pixels) all glyphs from this font input. Absolute value for default size, other sizes will scale this value.
     */
    get GlyphOffset(): ImVec2;
    set GlyphOffset(v: ImVec2);
    /**
     * 0        // Minimum AdvanceX for glyphs, set Min to align font icons, set both Min/Max to enforce mono-space font. Absolute value for default size, other sizes will scale this value.
     */
    get GlyphMinAdvanceX(): number;
    set GlyphMinAdvanceX(v: number);
    /**
     * FLT_MAX  // Maximum AdvanceX for glyphs
     */
    get GlyphMaxAdvanceX(): number;
    set GlyphMaxAdvanceX(v: number);
    /**
     * 0        // Extra spacing (in pixels) between glyphs. Please contact us if you are using this. // FIXME-NEWATLAS: Intentionally unscaled
     */
    get GlyphExtraAdvanceX(): number;
    set GlyphExtraAdvanceX(v: number);
    /**
     * 0        // Index of font within TTF/OTF file
     */
    get FontNo(): ImU32;
    set FontNo(v: ImU32);
    /**
     * 0        // Settings for custom font builder. THIS IS BUILDER IMPLEMENTATION DEPENDENT. Leave as zero if unsure.
     */
    get FontLoaderFlags(): number;
    set FontLoaderFlags(v: number);
    /**
     * 1.0f     // Linearly brighten (>1.0f) or darken (<1.0f) font output. Brightening small fonts may be a good workaround to make them more readable. This is a silly thing we may remove in the future.
     */
    get RasterizerMultiply(): number;
    set RasterizerMultiply(v: number);
    /**
     * 1.0f     // [LEGACY: this only makes sense when ImGuiBackendFlags_RendererHasTextures is not supported] DPI scale multiplier for rasterization. Not altering other font metrics: makes it easy to swap between e.g. a 100% and a 400% fonts for a zooming display, or handle Retina screen. IMPORTANT: If you change this it is expected that you increase/decrease font scale roughly to the inverse of this, otherwise quality may look lowered.
     */
    get RasterizerDensity(): number;
    set RasterizerDensity(v: number);
    /**
     * 1.0f     // Extra rasterizer scale over SizePixels.
     */
    get ExtraSizeScale(): number;
    set ExtraSizeScale(v: number);
}
/**
 * Output of ImFontAtlas::GetCustomRect() when using custom rectangles.
 * Those values may not be cached/stored as they are only valid for the current value of atlas->TexRef
 * (this is in theory derived from ImTextureRect but we use separate structures for reasons)
 */
export declare class ImFontAtlasRect extends ReferenceStruct {
    /**
     * Position (in current texture)
     */
    get x(): number;
    set x(v: number);
    /**
     * Position (in current texture)
     */
    get y(): number;
    set y(v: number);
    /**
     * Size
     */
    get w(): number;
    set w(v: number);
    /**
     * Size
     */
    get h(): number;
    set h(v: number);
    /**
     * UV coordinates (in current texture)
     */
    get uv0(): ImVec2;
    set uv0(v: ImVec2);
    /**
     * UV coordinates (in current texture)
     */
    get uv1(): ImVec2;
    set uv1(v: ImVec2);
}
/**
 * Load and rasterize multiple TTF/OTF fonts into a same texture. The font atlas will build a single texture holding:
 *  - One or more fonts.
 *  - Custom graphics data needed to render the shapes needed by Dear ImGui.
 *  - Mouse cursor shapes for software cursor rendering (unless setting 'Flags |= ImFontAtlasFlags_NoMouseCursors' in the font atlas).
 *  - If you don't call any AddFont*** functions, the default font embedded in the code will be loaded for you.
 * It is the rendering backend responsibility to upload texture into your graphics API:
 *  - ImGui_ImplXXXX_RenderDrawData() functions generally iterate platform_io->Textures[] to create/update/destroy each ImTextureData instance.
 *  - Backend then set ImTextureData's TexID and BackendUserData.
 *  - Texture id are passed back to you during rendering to identify the texture. Read FAQ entry about ImTextureID/ImTextureRef for more details.
 * Legacy path:
 *  - Call Build() + GetTexDataAsAlpha8() or GetTexDataAsRGBA32() to build and retrieve pixels data.
 *  - Call SetTexID(my_tex_id); and pass the pointer/identifier to your texture in a format natural to your graphics API.
 * Common pitfalls:
 * - If you pass a 'glyph_ranges' array to AddFont*** functions, you need to make sure that your array persists up until the
 *   atlas is build (when calling GetTexData*** or Build()). We only copy the pointer, not the data.
 * - Important: By default, AddFontFromMemoryTTF() takes ownership of the data. Even though we are not writing to it, we will free the pointer on destruction.
 *   You can set font_cfg->FontDataOwnedByAtlas=false to keep ownership of your data and it won't be freed,
 * - Even though many functions are suffixed with "TTF", OTF data is supported just as well.
 * - This is an old API and it is currently awkward for those and various other reasons! We will address them in the future!
 */
export declare class ImFontAtlas extends ReferenceStruct {
    /**
     * Build flags (see ImFontAtlasFlags_)
     */
    get Flags(): ImFontAtlasFlags;
    set Flags(v: ImFontAtlasFlags);
    /**
     * FIXME: Should be called "TexPackPadding". Padding between glyphs within texture in pixels. Defaults to 1. If your rendering method doesn't rely on bilinear filtering you may set this to 0 (will also need to set AntiAliasedLinesUseTex = false).
     */
    get TexGlyphPadding(): number;
    set TexGlyphPadding(v: number);
    /**
     * Minimum desired texture width. Must be a power of two. Default to 512.
     */
    get TexMinWidth(): number;
    set TexMinWidth(v: number);
    /**
     * Minimum desired texture height. Must be a power of two. Default to 128.
     */
    get TexMinHeight(): number;
    set TexMinHeight(v: number);
    /**
     * Maximum desired texture width. Must be a power of two. Default to 8192.
     */
    get TexMaxWidth(): number;
    set TexMaxWidth(v: number);
    /**
     * Maximum desired texture height. Must be a power of two. Default to 8192.
     */
    get TexMaxHeight(): number;
    set TexMaxHeight(v: number);
    /**
     * Store your own atlas related user-data (if e.g. you have multiple font atlas).
     */
    get UserData(): any;
    set UserData(v: any);
    /**
     * Latest texture identifier == TexData->GetTexRef().
     */
    get TexRef(): ImTextureRef;
    set TexRef(v: ImTextureRef);
    AddFont(font_cfg: ImFontConfig): ImFont;
    /**
     * Selects between AddFontDefaultVector() and AddFontDefaultBitmap().
     */
    AddFontDefault(font_cfg?: ImFontConfig | null): ImFont;
    /**
     * Embedded scalable font. Recommended at any higher size.
     */
    AddFontDefaultVector(font_cfg?: ImFontConfig | null): ImFont;
    /**
     * Embedded classic pixel-clean font. Recommended at Size 13px with no scaling.
     */
    AddFontDefaultBitmap(font_cfg?: ImFontConfig | null): ImFont;
    AddFontFromFileTTF(filename: string, size_pixels?: number, font_cfg?: ImFontConfig | null, glyph_ranges?: ImWchar[] | null): ImFont;
    RemoveFont(font: ImFont): void;
    /**
     * Clear everything (fonts + textures). Don't call mid-frame!
     */
    Clear(): void;
    /**
     * Clear input+output font data/glyphs. You can call this mid-frame if you load new fonts afterwards!
     */
    ClearFonts(): void;
    /**
     * Compact cached glyphs and texture.
     */
    CompactCache(): void;
    /**
     * Change font loader at runtime.
     */
    SetFontLoader(font_loader: ImFontLoader): void;
    /**
     * [OBSOLETE] Clear input data (all ImFontConfig structures including sizes, TTF data, glyph ranges, etc.) = all the data used to build the texture and fonts.
     */
    ClearInputData(): void;
    /**
     * [OBSOLETE] Clear CPU-side copy of the texture data. Saves RAM once the texture has been copied to graphics memory.
     */
    ClearTexData(): void;
    /**
     * Basic Latin, Extended Latin
     */
    GetGlyphRangesDefault(): ImWchar;
    /**
     * Register a rectangle. Return -1 (ImFontAtlasRectId_Invalid) on error.
     */
    AddCustomRect(width: number, height: number, out_r?: ImFontAtlasRect | null): ImFontAtlasRectId;
    /**
     * Unregister a rectangle. Existing pixels will stay in texture until resized / garbage collected.
     */
    RemoveCustomRect(id: ImFontAtlasRectId): void;
    /**
     * Get rectangle coordinates for current texture. Valid immediately, never store this (read above)!
     */
    GetCustomRect(id: ImFontAtlasRectId, out_r: ImFontAtlasRect): boolean;
}
/**
 * Font runtime data for a given size
 * Important: pointers to ImFontBaked are only valid for the current frame.
 */
export declare class ImFontBaked extends ReferenceStruct {
}
/**
 * Font runtime data and rendering
 * - ImFontAtlas automatically loads a default embedded font for you if you didn't load one manually.
 * - Since 1.92.0 a font may be rendered as any size! Therefore a font doesn't have one specific size.
 * - Use 'font->GetFontBaked(size)' to retrieve the ImFontBaked* corresponding to a given size.
 * - If you used g.Font + g.FontSize (which is frequent from the ImGui layer), you can use g.FontBaked as a shortcut, as g.FontBaked == g.Font->GetFontBaked(g.FontSize).
 */
export declare class ImFont extends ReferenceStruct {
}
/**
 * - Currently represents the Platform Window created by the application which is hosting our Dear ImGui windows.
 * - With multi-viewport enabled, we extend this concept to have multiple active viewports.
 * - In the future we will extend this concept further to also represent Platform Monitor and support a "no main platform window" operation mode.
 * - About Main Area vs Work Area:
 *   - Main Area = entire viewport.
 *   - Work Area = entire viewport minus sections used by main menu bars (for platform windows), or by task bar (for platform monitor).
 *   - Windows are generally trying to stay within the Work Area of their host viewport.
 */
export declare class ImGuiViewport extends ReferenceStruct {
    /**
     * Unique identifier for the viewport
     */
    get ID(): ImGuiID;
    set ID(v: ImGuiID);
    /**
     * See ImGuiViewportFlags_
     */
    get Flags(): ImGuiViewportFlags;
    set Flags(v: ImGuiViewportFlags);
    /**
     * Main Area: Position of the viewport (Dear ImGui coordinates are the same as OS desktop/native coordinates)
     */
    get Pos(): ImVec2;
    set Pos(v: ImVec2);
    /**
     * Main Area: Size of the viewport.
     */
    get Size(): ImVec2;
    set Size(v: ImVec2);
    /**
     * Density of the viewport for Retina display (always 1,1 on Windows, may be 2,2 etc on macOS/iOS). This will affect font rasterizer density.
     */
    get FramebufferScale(): ImVec2;
    set FramebufferScale(v: ImVec2);
    /**
     * Work Area: Position of the viewport minus task bars, menus bars, status bars (>= Pos)
     */
    get WorkPos(): ImVec2;
    set WorkPos(v: ImVec2);
    /**
     * Work Area: Size of the viewport minus task bars, menu bars, status bars (<= Size)
     */
    get WorkSize(): ImVec2;
    set WorkSize(v: ImVec2);
    /**
     * 1.0f = 96 DPI = No extra scale.
     */
    get DpiScale(): number;
    set DpiScale(v: number);
    /**
     * (Advanced) 0: no parent. Instruct the platform backend to setup a parent/child relationship between platform windows.
     */
    get ParentViewportId(): ImGuiID;
    set ParentViewportId(v: ImGuiID);
    /**
     * (Advanced) Direct shortcut to ImGui::FindViewportByID(ParentViewportId). NULL: no parent.
     */
    get ParentViewport(): ImGuiViewport;
    set ParentViewport(v: ImGuiViewport);
    /**
     * The ImDrawData corresponding to this viewport. Valid after Render() and until the next call to NewFrame().
     */
    get DrawData(): ImDrawData;
    set DrawData(v: ImDrawData);
    /**
     * void* to hold custom data structure for the renderer (e.g. swap chain, framebuffers etc.). generally set by your Renderer_CreateWindow function.
     */
    get RendererUserData(): any;
    set RendererUserData(v: any);
    /**
     * void* to hold custom data structure for the OS / platform (e.g. windowing info, render context). generally set by your Platform_CreateWindow function.
     */
    get PlatformUserData(): any;
    set PlatformUserData(v: any);
    /**
     * void* to hold custom data structure for the OS / platform to specify an icon. Currently unused for exposed to allow experiments.
     */
    get PlatformIconData(): any;
    set PlatformIconData(v: any);
    /**
     * void* to hold higher-level, platform window handle (e.g. HWND for Win32 backend, Uint32 WindowID for SDL, GLFWWindow* for GLFW), for FindViewportByPlatformHandle().
     */
    get PlatformHandle(): any;
    set PlatformHandle(v: any);
    /**
     * void* to hold lower-level, platform-native window handle (always HWND on Win32 platform, unused for other platforms).
     */
    get PlatformHandleRaw(): any;
    set PlatformHandleRaw(v: any);
    /**
     * Platform window has been created (Platform_CreateWindow() has been called). This is false during the first frame where a viewport is being created.
     */
    get PlatformWindowCreated(): boolean;
    set PlatformWindowCreated(v: boolean);
    /**
     * Platform window requested move (e.g. window was moved by the OS / host window manager, authoritative position will be OS window position)
     */
    get PlatformRequestMove(): boolean;
    set PlatformRequestMove(v: boolean);
    /**
     * Platform window requested resize (e.g. window was resized by the OS / host window manager, authoritative size will be OS window size)
     */
    get PlatformRequestResize(): boolean;
    set PlatformRequestResize(v: boolean);
    /**
     * Platform window requested closure (e.g. window was moved by the OS / host window manager, e.g. pressing ALT-F4)
     */
    get PlatformRequestClose(): boolean;
    set PlatformRequestClose(v: boolean);
    /**
     * Helpers
     */
    GetCenter(): ImVec2;
    GetWorkCenter(): ImVec2;
    GetDebugName(): string;
}
/**
 * Access via ImGui::GetPlatformIO()
 */
export declare class ImGuiPlatformIO extends ReferenceStruct {
}
export declare class ImGui {
    /**
     * Context creation and access
     * - Each context create its own ImFontAtlas by default. You may instance one yourself and pass it to CreateContext() to share a font atlas between contexts.
     * - DLL users: heaps and globals are not shared across DLL boundaries! You will need to call SetCurrentContext() + SetAllocatorFunctions()
     *   for each static/DLL boundary you are calling from. Read "Context and Memory Allocators" section of imgui.cpp for details.
     */
    static CreateContext(shared_font_atlas?: ImFontAtlas | null): ImGuiContext;
    /**
     * NULL = destroy current context
     */
    static DestroyContext(ctx?: ImGuiContext | null): void;
    static GetCurrentContext(): ImGuiContext;
    static SetCurrentContext(ctx: ImGuiContext): void;
    /**
     * access the ImGuiIO structure (mouse/keyboard/gamepad inputs, time, various configuration options/flags)
     */
    static GetIO(): ImGuiIO;
    /**
     * access the ImGuiPlatformIO structure (mostly hooks/functions to connect to platform/renderer and OS Clipboard, IME etc.)
     */
    static GetPlatformIO(): ImGuiPlatformIO;
    /**
     * access the Style structure (colors, sizes). Always use PushStyleColor(), PushStyleVar() to modify style mid-frame!
     */
    static GetStyle(): ImGuiStyle;
    /**
     * start a new Dear ImGui frame, you can submit any command from this point until Render()/EndFrame().
     */
    static NewFrame(): void;
    /**
     * ends the Dear ImGui frame. automatically called by Render(). If you don't need to render data (skipping rendering) you may call EndFrame() without Render()... but you'll have wasted CPU already! If you don't need to render, better to not create any windows and not call NewFrame() at all!
     */
    static EndFrame(): void;
    /**
     * ends the Dear ImGui frame, finalize the draw data. You can then get call GetDrawData().
     */
    static Render(): void;
    /**
     * valid after Render() and until the next call to NewFrame(). Call ImGui_ImplXXXX_RenderDrawData() function in your Renderer Backend to render.
     */
    static GetDrawData(): ImDrawData;
    /**
     * create Demo window. demonstrate most ImGui features. call this to learn about the library! try to make it always available in your application!
     */
    static ShowDemoWindow(p_open?: [boolean] | null): void;
    /**
     * create Metrics/Debugger window. display Dear ImGui internals: windows, draw commands, various internal state, etc.
     */
    static ShowMetricsWindow(p_open?: [boolean] | null): void;
    /**
     * create Debug Log window. display a simplified log of important dear imgui events.
     */
    static ShowDebugLogWindow(p_open?: [boolean] | null): void;
    /**
     * create Stack Tool window. hover items with mouse to query information about the source of their unique ID.
     */
    static ShowIDStackToolWindow(p_open?: [boolean] | null): void;
    /**
     * create About window. display Dear ImGui version, credits and build/system information.
     */
    static ShowAboutWindow(p_open?: [boolean] | null): void;
    /**
     * add style editor block (not a window). you can pass in a reference ImGuiStyle structure to compare to, revert to and save to (else it uses the default style)
     */
    static ShowStyleEditor(ref?: ImGuiStyle | null): void;
    /**
     * add style selector block (not a window), essentially a combo listing the default styles.
     */
    static ShowStyleSelector(label: string): boolean;
    /**
     * add font selector block (not a window), essentially a combo listing the loaded fonts.
     */
    static ShowFontSelector(label: string): void;
    /**
     * add basic help/info block (not a window): how to manipulate ImGui as an end-user (mouse/keyboard controls).
     */
    static ShowUserGuide(): void;
    /**
     * get the compiled version string e.g. "1.80 WIP" (essentially the value for IMGUI_VERSION from the compiled version of imgui.cpp)
     */
    static GetVersion(): string;
    /**
     * new, recommended style (default)
     */
    static StyleColorsDark(dst?: ImGuiStyle | null): void;
    /**
     * best used with borders and a custom, thicker font
     */
    static StyleColorsLight(dst?: ImGuiStyle | null): void;
    /**
     * classic imgui style
     */
    static StyleColorsClassic(dst?: ImGuiStyle | null): void;
    /**
     * Windows
     * - Begin() = push window to the stack and start appending to it. End() = pop window from the stack.
     * - Passing 'bool* p_open != NULL' shows a window-closing widget in the upper-right corner of the window,
     *   which clicking will set the boolean to false when clicked.
     * - You may append multiple times to the same window during the same frame by calling Begin()/End() pairs multiple times.
     *   Some information such as 'flags' or 'p_open' will only be considered by the first call to Begin().
     * - Begin() return false to indicate the window is collapsed or fully clipped, so you may early out and omit submitting
     *   anything to the window. Always call a matching End() for each Begin() call, regardless of its return value!
     *   [Important: due to legacy reason, Begin/End and BeginChild/EndChild are inconsistent with all other functions
     *    such as BeginMenu/EndMenu, BeginPopup/EndPopup, etc. where the EndXXX call should only be called if the corresponding
     *    BeginXXX function returned true. Begin and BeginChild are the only odd ones out. Will be fixed in a future update.]
     * - Note that the bottom of window stack always contains a window called "Debug".
     */
    static Begin(name: string, p_open?: [boolean] | null, flags?: ImGuiWindowFlags): boolean;
    static End(): void;
    /**
     * Child Windows
     * - Use child windows to begin into a self-contained independent scrolling/clipping regions within a host window. Child windows can embed their own child.
     * - Before 1.90 (November 2023), the "ImGuiChildFlags child_flags = 0" parameter was "bool border = false".
     *   This API is backward compatible with old code, as we guarantee that ImGuiChildFlags_Borders == true.
     *   Consider updating your old code:
     *      BeginChild("Name", size, false)   -> Begin("Name", size, 0); or Begin("Name", size, ImGuiChildFlags_None);
     *      BeginChild("Name", size, true)    -> Begin("Name", size, ImGuiChildFlags_Borders);
     * - Manual sizing (each axis can use a different setting e.g. ImVec2(0.0f, 400.0f)):
     *     == 0.0f: use remaining parent window size for this axis.
     *      > 0.0f: use specified size for this axis.
     *      < 0.0f: right/bottom-align to specified distance from available content boundaries.
     * - Specifying ImGuiChildFlags_AutoResizeX or ImGuiChildFlags_AutoResizeY makes the sizing automatic based on child contents.
     *   Combining both ImGuiChildFlags_AutoResizeX _and_ ImGuiChildFlags_AutoResizeY defeats purpose of a scrolling region and is NOT recommended.
     * - BeginChild() returns false to indicate the window is collapsed or fully clipped, so you may early out and omit submitting
     *   anything to the window. Always call a matching EndChild() for each BeginChild() call, regardless of its return value.
     *   [Important: due to legacy reason, Begin/End and BeginChild/EndChild are inconsistent with all other functions
     *    such as BeginMenu/EndMenu, BeginPopup/EndPopup, etc. where the EndXXX call should only be called if the corresponding
     *    BeginXXX function returned true. Begin and BeginChild are the only odd ones out. Will be fixed in a future update.]
     */
    static BeginChild(str_id: string, size?: ImVec2, child_flags?: ImGuiChildFlags, window_flags?: ImGuiWindowFlags): boolean;
    static BeginChildID(id: ImGuiID, size?: ImVec2, child_flags?: ImGuiChildFlags, window_flags?: ImGuiWindowFlags): boolean;
    static EndChild(): void;
    /**
     * Windows Utilities
     * - 'current window' = the window we are appending into while inside a Begin()/End() block. 'next window' = next window we will Begin() into.
     */
    static IsWindowAppearing(): boolean;
    static IsWindowCollapsed(): boolean;
    /**
     * is current window focused? or its root/child, depending on flags. see flags for options.
     */
    static IsWindowFocused(flags?: ImGuiFocusedFlags): boolean;
    /**
     * is current window hovered and hoverable (e.g. not blocked by a popup/modal)? See ImGuiHoveredFlags_ for options. IMPORTANT: If you are trying to check whether your mouse should be dispatched to Dear ImGui or to your underlying app, you should not use this function! Use the 'io.WantCaptureMouse' boolean for that! Refer to FAQ entry "How can I tell whether to dispatch mouse/keyboard to Dear ImGui or my application?" for details.
     */
    static IsWindowHovered(flags?: ImGuiHoveredFlags): boolean;
    /**
     * get draw list associated to the current window, to append your own drawing primitives
     */
    static GetWindowDrawList(): ImDrawList;
    /**
     * get DPI scale currently associated to the current window's viewport.
     */
    static GetWindowDpiScale(): number;
    /**
     * get current window position in screen space (IT IS UNLIKELY YOU EVER NEED TO USE THIS. Consider always using GetCursorScreenPos() and GetContentRegionAvail() instead)
     */
    static GetWindowPos(): ImVec2;
    /**
     * get current window size (IT IS UNLIKELY YOU EVER NEED TO USE THIS. Consider always using GetCursorScreenPos() and GetContentRegionAvail() instead)
     */
    static GetWindowSize(): ImVec2;
    /**
     * get current window width (IT IS UNLIKELY YOU EVER NEED TO USE THIS). Shortcut for GetWindowSize().x.
     */
    static GetWindowWidth(): number;
    /**
     * get current window height (IT IS UNLIKELY YOU EVER NEED TO USE THIS). Shortcut for GetWindowSize().y.
     */
    static GetWindowHeight(): number;
    /**
     * get viewport currently associated to the current window.
     */
    static GetWindowViewport(): ImGuiViewport;
    /**
     * set next window position. call before Begin(). use pivot=(0.5f,0.5f) to center on given point, etc.
     */
    static SetNextWindowPos(pos: ImVec2, cond?: ImGuiCond, pivot?: ImVec2): void;
    /**
     * set next window size. set axis to 0.0f to force an auto-fit on this axis. call before Begin()
     */
    static SetNextWindowSize(size: ImVec2, cond?: ImGuiCond): void;
    static SetNextWindowSizeConstraints(min: ImVec2, max: ImVec2): void;
    /**
     * set next window content size (~ scrollable client area, which enforce the range of scrollbars). Not including window decorations (title bar, menu bar, etc.) nor WindowPadding. set an axis to 0.0f to leave it automatic. call before Begin()
     */
    static SetNextWindowContentSize(size: ImVec2): void;
    /**
     * set next window collapsed state. call before Begin()
     */
    static SetNextWindowCollapsed(collapsed: boolean, cond?: ImGuiCond): void;
    /**
     * set next window to be focused / top-most. call before Begin()
     */
    static SetNextWindowFocus(): void;
    /**
     * set next window scrolling value (use < 0.0f to not affect a given axis).
     */
    static SetNextWindowScroll(scroll: ImVec2): void;
    /**
     * set next window background color alpha. helper to easily override the Alpha component of ImGuiCol_WindowBg/ChildBg/PopupBg. you may also use ImGuiWindowFlags_NoBackground.
     */
    static SetNextWindowBgAlpha(alpha: number): void;
    /**
     * set next window viewport
     */
    static SetNextWindowViewport(viewport_id: ImGuiID): void;
    /**
     * (not recommended) set current window position - call within Begin()/End(). prefer using SetNextWindowPos(), as this may incur tearing and side-effects.
     */
    static SetWindowPos(pos: ImVec2, cond?: ImGuiCond): void;
    /**
     * (not recommended) set current window size - call within Begin()/End(). set to ImVec2(0, 0) to force an auto-fit. prefer using SetNextWindowSize(), as this may incur tearing and minor side-effects.
     */
    static SetWindowSize(size: ImVec2, cond?: ImGuiCond): void;
    /**
     * (not recommended) set current window collapsed state. prefer using SetNextWindowCollapsed().
     */
    static SetWindowCollapsed(collapsed: boolean, cond?: ImGuiCond): void;
    /**
     * (not recommended) set current window to be focused / top-most. prefer using SetNextWindowFocus().
     */
    static SetWindowFocus(): void;
    /**
     * set named window position.
     */
    static SetWindowPosStr(name: string, pos: ImVec2, cond?: ImGuiCond): void;
    /**
     * set named window size. set axis to 0.0f to force an auto-fit on this axis.
     */
    static SetWindowSizeStr(name: string, size: ImVec2, cond?: ImGuiCond): void;
    /**
     * set named window collapsed state
     */
    static SetWindowCollapsedStr(name: string, collapsed: boolean, cond?: ImGuiCond): void;
    /**
     * set named window to be focused / top-most. use NULL to remove focus.
     */
    static SetWindowFocusStr(name: string): void;
    /**
     * get scrolling amount [0 .. GetScrollMaxX()]
     */
    static GetScrollX(): number;
    /**
     * get scrolling amount [0 .. GetScrollMaxY()]
     */
    static GetScrollY(): number;
    /**
     * set scrolling amount [0 .. GetScrollMaxX()]
     */
    static SetScrollX(scroll_x: number): void;
    /**
     * set scrolling amount [0 .. GetScrollMaxY()]
     */
    static SetScrollY(scroll_y: number): void;
    /**
     * get maximum scrolling amount ~~ ContentSize.x - WindowSize.x - DecorationsSize.x
     */
    static GetScrollMaxX(): number;
    /**
     * get maximum scrolling amount ~~ ContentSize.y - WindowSize.y - DecorationsSize.y
     */
    static GetScrollMaxY(): number;
    /**
     * adjust scrolling amount to make current cursor position visible. center_x_ratio=0.0: left, 0.5: center, 1.0: right. When using to make a "default/current item" visible, consider using SetItemDefaultFocus() instead.
     */
    static SetScrollHereX(center_x_ratio?: number): void;
    /**
     * adjust scrolling amount to make current cursor position visible. center_y_ratio=0.0: top, 0.5: center, 1.0: bottom. When using to make a "default/current item" visible, consider using SetItemDefaultFocus() instead.
     */
    static SetScrollHereY(center_y_ratio?: number): void;
    /**
     * adjust scrolling amount to make given position visible. Generally GetCursorStartPos() + offset to compute a valid position.
     */
    static SetScrollFromPosX(local_x: number, center_x_ratio?: number): void;
    /**
     * adjust scrolling amount to make given position visible. Generally GetCursorStartPos() + offset to compute a valid position.
     */
    static SetScrollFromPosY(local_y: number, center_y_ratio?: number): void;
    /**
     * Use NULL as a shortcut to keep current font. Use 0.0f to keep current size.
     */
    static PushFontFloat(font: ImFont, font_size_base_unscaled: number): void;
    static PopFont(): void;
    /**
     * get current font
     */
    static GetFont(): ImFont;
    /**
     * get current scaled font size (= height in pixels). AFTER global scale factors applied. *IMPORTANT* DO NOT PASS THIS VALUE TO PushFont()! Use ImGui::GetStyle().FontSizeBase to get value before global scale factors.
     */
    static GetFontSize(): number;
    /**
     * get current font bound at current size // == GetFont()->GetFontBaked(GetFontSize())
     */
    static GetFontBaked(): ImFontBaked;
    /**
     * modify a style color. always use this if you modify the style after NewFrame().
     */
    static PushStyleColor(idx: ImGuiCol, col: ImU32): void;
    static PushStyleColorImVec4(idx: ImGuiCol, col: ImVec4): void;
    static PopStyleColor(count?: number): void;
    /**
     * modify a style float variable. always use this if you modify the style after NewFrame()!
     */
    static PushStyleVar(idx: ImGuiStyleVar, val: number): void;
    /**
     * modify a style ImVec2 variable. "
     */
    static PushStyleVarImVec2(idx: ImGuiStyleVar, val: ImVec2): void;
    /**
     * modify X component of a style ImVec2 variable. "
     */
    static PushStyleVarX(idx: ImGuiStyleVar, val_x: number): void;
    /**
     * modify Y component of a style ImVec2 variable. "
     */
    static PushStyleVarY(idx: ImGuiStyleVar, val_y: number): void;
    static PopStyleVar(count?: number): void;
    /**
     * modify specified shared item flag, e.g. PushItemFlag(ImGuiItemFlags_NoTabStop, true)
     */
    static PushItemFlag(option: ImGuiItemFlags, enabled: boolean): void;
    static PopItemFlag(): void;
    /**
     * push width of items for common large "item+label" widgets. >0.0f: width in pixels, <0.0f align xx pixels to the right of window (so -FLT_MIN always align width to the right side).
     */
    static PushItemWidth(item_width: number): void;
    static PopItemWidth(): void;
    /**
     * set width of the _next_ common large "item+label" widget. >0.0f: width in pixels, <0.0f align xx pixels to the right of window (so -FLT_MIN always align width to the right side)
     */
    static SetNextItemWidth(item_width: number): void;
    /**
     * width of item given pushed settings and current cursor position. NOT necessarily the width of last item unlike most 'Item' functions.
     */
    static CalcItemWidth(): number;
    /**
     * push word-wrapping position for Text*() commands. < 0.0f: no wrapping; 0.0f: wrap to end of window (or column); > 0.0f: wrap at 'wrap_pos_x' position in window local space
     */
    static PushTextWrapPos(wrap_local_pos_x?: number): void;
    static PopTextWrapPos(): void;
    /**
     * get UV coordinate for a white pixel, useful to draw custom shapes via the ImDrawList API
     */
    static GetFontTexUvWhitePixel(): ImVec2;
    /**
     * retrieve given style color with style alpha applied and optional extra alpha multiplier, packed as a 32-bit value suitable for ImDrawList
     */
    static GetColorU32(idx: ImGuiCol, alpha_mul?: number): ImU32;
    /**
     * retrieve given color with style alpha applied, packed as a 32-bit value suitable for ImDrawList
     */
    static GetColorU32ImVec4(col: ImVec4): ImU32;
    /**
     * retrieve given color with style alpha applied, packed as a 32-bit value suitable for ImDrawList
     */
    static GetColorU32ImU32(col: ImU32, alpha_mul?: number): ImU32;
    /**
     * retrieve style color as stored in ImGuiStyle structure. use to feed back into PushStyleColor(), otherwise use GetColorU32() to get style color with style alpha baked in.
     */
    static GetStyleColorVec4(idx: ImGuiCol): ImVec4;
    /**
     * cursor position, absolute coordinates. THIS IS YOUR BEST FRIEND (prefer using this rather than GetCursorPos(), also more useful to work with ImDrawList API).
     */
    static GetCursorScreenPos(): ImVec2;
    /**
     * cursor position, absolute coordinates. THIS IS YOUR BEST FRIEND.
     */
    static SetCursorScreenPos(pos: ImVec2): void;
    /**
     * available space from current position. THIS IS YOUR BEST FRIEND.
     */
    static GetContentRegionAvail(): ImVec2;
    /**
     * [window-local] cursor position in window-local coordinates. This is not your best friend.
     */
    static GetCursorPos(): ImVec2;
    /**
     * [window-local] "
     */
    static GetCursorPosX(): number;
    /**
     * [window-local] "
     */
    static GetCursorPosY(): number;
    /**
     * [window-local] "
     */
    static SetCursorPos(local_pos: ImVec2): void;
    /**
     * [window-local] "
     */
    static SetCursorPosX(local_x: number): void;
    /**
     * [window-local] "
     */
    static SetCursorPosY(local_y: number): void;
    /**
     * [window-local] initial cursor position, in window-local coordinates. Call GetCursorScreenPos() after Begin() to get the absolute coordinates version.
     */
    static GetCursorStartPos(): ImVec2;
    /**
     * separator, generally horizontal. inside a menu bar or in horizontal layout mode, this becomes a vertical separator.
     */
    static Separator(): void;
    /**
     * call between widgets or groups to layout them horizontally. X position given in window coordinates.
     */
    static SameLine(offset_from_start_x?: number, spacing?: number): void;
    /**
     * undo a SameLine() or force a new line when in a horizontal-layout context.
     */
    static NewLine(): void;
    /**
     * add vertical spacing.
     */
    static Spacing(): void;
    /**
     * add a dummy item of given size. unlike InvisibleButton(), Dummy() won't take the mouse click or be navigable into.
     */
    static Dummy(size: ImVec2): void;
    /**
     * move content position toward the right, by indent_w, or style.IndentSpacing if indent_w <= 0
     */
    static Indent(indent_w?: number): void;
    /**
     * move content position back to the left, by indent_w, or style.IndentSpacing if indent_w <= 0
     */
    static Unindent(indent_w?: number): void;
    /**
     * lock horizontal starting position
     */
    static BeginGroup(): void;
    /**
     * unlock horizontal starting position + capture the whole group bounding box into one "item" (so you can use IsItemHovered() or layout primitives such as SameLine() on whole group, etc.)
     */
    static EndGroup(): void;
    /**
     * vertically align upcoming text baseline to FramePadding.y so that it will align properly to regularly framed items (call if you have text on a line before a framed item)
     */
    static AlignTextToFramePadding(): void;
    /**
     * ~ FontSize
     */
    static GetTextLineHeight(): number;
    /**
     * ~ FontSize + style.ItemSpacing.y (distance in pixels between 2 consecutive lines of text)
     */
    static GetTextLineHeightWithSpacing(): number;
    /**
     * ~ FontSize + style.FramePadding.y * 2
     */
    static GetFrameHeight(): number;
    /**
     * ~ FontSize + style.FramePadding.y * 2 + style.ItemSpacing.y (distance in pixels between 2 consecutive lines of framed widgets)
     */
    static GetFrameHeightWithSpacing(): number;
    /**
     * push string into the ID stack (will hash string).
     */
    static PushID(str_id: string): void;
    /**
     * push integer into the ID stack (will hash integer).
     */
    static PushIDInt(int_id: number): void;
    /**
     * pop from the ID stack.
     */
    static PopID(): void;
    /**
     * calculate unique ID (hash of whole ID stack + given parameter). e.g. if you want to query into ImGuiStorage yourself
     */
    static GetID(str_id: string): ImGuiID;
    static GetIDInt(int_id: number): ImGuiID;
    static Text(fmt: string): void;
    static TextColored(col: ImVec4, fmt: string): void;
    static TextDisabled(fmt: string): void;
    static TextWrapped(fmt: string): void;
    static LabelText(label: string, fmt: string): void;
    static BulletText(fmt: string): void;
    /**
     * currently: formatted text with a horizontal line
     */
    static SeparatorText(label: string): void;
    /**
     * button
     */
    static Button(label: string, size?: ImVec2): boolean;
    /**
     * button with (FramePadding.y == 0) to easily embed within text
     */
    static SmallButton(label: string): boolean;
    /**
     * flexible button behavior without the visuals, frequently useful to build custom behaviors using the public api (along with IsItemActive, IsItemHovered, etc.)
     */
    static InvisibleButton(str_id: string, size: ImVec2, flags?: ImGuiButtonFlags): boolean;
    /**
     * square button with an arrow shape
     */
    static ArrowButton(str_id: string, dir: ImGuiDir): boolean;
    static Checkbox(label: string, v: [boolean]): boolean;
    static CheckboxFlagsIntPtr(label: string, flags: [number], flags_value: number): boolean;
    static CheckboxFlagsUintPtr(label: string, flags: [number], flags_value: number): boolean;
    /**
     * use with e.g. if (RadioButton("one", my_value==1)) { my_value = 1; }
     */
    static RadioButton(label: string, active: boolean): boolean;
    /**
     * shortcut to handle the above pattern when value is an integer
     */
    static RadioButtonIntPtr(label: string, v: [number], v_button: number): boolean;
    static ProgressBar(fraction: number, size_arg?: ImVec2, overlay?: string): void;
    /**
     * draw a small circle + keep the cursor on the same line. advance cursor x position by GetTreeNodeToLabelSpacing(), same distance that TreeNode() uses
     */
    static Bullet(): void;
    /**
     * hyperlink text button, return true when clicked
     */
    static TextLink(label: string): boolean;
    /**
     * hyperlink text button, automatically open file/url when clicked
     */
    static TextLinkOpenURL(label: string, url?: string): boolean;
    /**
     * Widgets: Images
     * - Read about ImTextureID/ImTextureRef  here: https://github.com/ocornut/imgui/wiki/Image-Loading-and-Displaying-Examples
     * - 'uv0' and 'uv1' are texture coordinates. Read about them from the same link above.
     * - Image() pads adds style.ImageBorderSize on each side, ImageButton() adds style.FramePadding on each side.
     * - ImageButton() draws a background based on regular Button() color + optionally an inner background if specified.
     * - An obsolete version of Image(), before 1.91.9 (March 2025), had a 'tint_col' parameter which is now supported by the ImageWithBg() function.
     */
    static Image(tex_ref: ImTextureRef, image_size: ImVec2, uv0?: ImVec2, uv1?: ImVec2): void;
    static ImageWithBg(tex_ref: ImTextureRef, image_size: ImVec2, uv0?: ImVec2, uv1?: ImVec2, bg_col?: ImVec4, tint_col?: ImVec4): void;
    static ImageButton(str_id: string, tex_ref: ImTextureRef, image_size: ImVec2, uv0?: ImVec2, uv1?: ImVec2, bg_col?: ImVec4, tint_col?: ImVec4): boolean;
    /**
     * Widgets: Combo Box (Dropdown)
     * - The BeginCombo()/EndCombo() api allows you to manage your contents and selection state however you want it, by creating e.g. Selectable() items.
     * - The old Combo() api are helpers over BeginCombo()/EndCombo() which are kept available for convenience purpose. This is analogous to how ListBox are created.
     */
    static BeginCombo(label: string, preview_value: string, flags?: ImGuiComboFlags): boolean;
    /**
     * only call EndCombo() if BeginCombo() returns true!
     */
    static EndCombo(): void;
    /**
     * Separate items with \0 within a string, end item-list with \0\0. e.g. "One\0Two\0Three\0"
     */
    static Combo(label: string, current_item: [number], items_separated_by_zeros: string, popup_max_height_in_items?: number): boolean;
    /**
     * If v_min >= v_max we have no bound
     */
    static DragFloat(label: string, v: [number], v_speed?: number, v_min?: number, v_max?: number, format?: string, flags?: ImGuiSliderFlags): boolean;
    static DragFloat2(label: string, v: [number, number], v_speed?: number, v_min?: number, v_max?: number, format?: string, flags?: ImGuiSliderFlags): boolean;
    static DragFloat3(label: string, v: [number, number, number], v_speed?: number, v_min?: number, v_max?: number, format?: string, flags?: ImGuiSliderFlags): boolean;
    static DragFloat4(label: string, v: [number, number, number, number], v_speed?: number, v_min?: number, v_max?: number, format?: string, flags?: ImGuiSliderFlags): boolean;
    static DragFloatRange2(label: string, v_current_min: [number], v_current_max: [number], v_speed?: number, v_min?: number, v_max?: number, format?: string, format_max?: string, flags?: ImGuiSliderFlags): boolean;
    /**
     * If v_min >= v_max we have no bound
     */
    static DragInt(label: string, v: [number], v_speed?: number, v_min?: number, v_max?: number, format?: string, flags?: ImGuiSliderFlags): boolean;
    static DragInt2(label: string, v: [number, number], v_speed?: number, v_min?: number, v_max?: number, format?: string, flags?: ImGuiSliderFlags): boolean;
    static DragInt3(label: string, v: [number, number, number], v_speed?: number, v_min?: number, v_max?: number, format?: string, flags?: ImGuiSliderFlags): boolean;
    static DragInt4(label: string, v: [number, number, number, number], v_speed?: number, v_min?: number, v_max?: number, format?: string, flags?: ImGuiSliderFlags): boolean;
    static DragIntRange2(label: string, v_current_min: [number], v_current_max: [number], v_speed?: number, v_min?: number, v_max?: number, format?: string, format_max?: string, flags?: ImGuiSliderFlags): boolean;
    /**
     * adjust format to decorate the value with a prefix or a suffix for in-slider labels or unit display.
     */
    static SliderFloat(label: string, v: [number], v_min: number, v_max: number, format?: string, flags?: ImGuiSliderFlags): boolean;
    static SliderFloat2(label: string, v: [number, number], v_min: number, v_max: number, format?: string, flags?: ImGuiSliderFlags): boolean;
    static SliderFloat3(label: string, v: [number, number, number], v_min: number, v_max: number, format?: string, flags?: ImGuiSliderFlags): boolean;
    static SliderFloat4(label: string, v: [number, number, number, number], v_min: number, v_max: number, format?: string, flags?: ImGuiSliderFlags): boolean;
    static SliderAngle(label: string, v_rad: [number], v_degrees_min?: number, v_degrees_max?: number, format?: string, flags?: ImGuiSliderFlags): boolean;
    static SliderInt(label: string, v: [number], v_min: number, v_max: number, format?: string, flags?: ImGuiSliderFlags): boolean;
    static SliderInt2(label: string, v: [number, number], v_min: number, v_max: number, format?: string, flags?: ImGuiSliderFlags): boolean;
    static SliderInt3(label: string, v: [number, number, number], v_min: number, v_max: number, format?: string, flags?: ImGuiSliderFlags): boolean;
    static SliderInt4(label: string, v: [number, number, number, number], v_min: number, v_max: number, format?: string, flags?: ImGuiSliderFlags): boolean;
    static InputText(label: string, buf: [string], buf_size: number, flags?: ImGuiInputTextFlags): boolean;
    static InputTextMultiline(label: string, buf: [string], buf_size: number, size?: ImVec2, flags?: ImGuiInputTextFlags): boolean;
    static InputTextWithHint(label: string, hint: string, buf: [string], buf_size: number, flags?: ImGuiInputTextFlags): boolean;
    static InputFloat(label: string, v: [number], step?: number, step_fast?: number, format?: string, flags?: ImGuiInputTextFlags): boolean;
    static InputFloat2(label: string, v: [number, number], format?: string, flags?: ImGuiInputTextFlags): boolean;
    static InputFloat3(label: string, v: [number, number, number], format?: string, flags?: ImGuiInputTextFlags): boolean;
    static InputFloat4(label: string, v: [number, number, number, number], format?: string, flags?: ImGuiInputTextFlags): boolean;
    static InputInt(label: string, v: [number], step?: number, step_fast?: number, flags?: ImGuiInputTextFlags): boolean;
    static InputInt2(label: string, v: [number, number], flags?: ImGuiInputTextFlags): boolean;
    static InputInt3(label: string, v: [number, number, number], flags?: ImGuiInputTextFlags): boolean;
    static InputInt4(label: string, v: [number, number, number, number], flags?: ImGuiInputTextFlags): boolean;
    static InputDouble(label: string, v: [number], step?: number, step_fast?: number, format?: string, flags?: ImGuiInputTextFlags): boolean;
    /**
     * Widgets: Color Editor/Picker (tip: the ColorEdit* functions have a little color square that can be left-clicked to open a picker, and right-clicked to open an option menu.)
     * - Note that in C++ a 'float v[X]' function argument is the _same_ as 'float* v', the array syntax is just a way to document the number of elements that are expected to be accessible.
     * - You can pass the address of a first float element out of a contiguous structure, e.g. &myvector.x
     */
    static ColorEdit3(label: string, col: [number, number, number], flags?: ImGuiColorEditFlags): boolean;
    static ColorEdit4(label: string, col: [number, number, number, number], flags?: ImGuiColorEditFlags): boolean;
    static ColorPicker3(label: string, col: [number, number, number], flags?: ImGuiColorEditFlags): boolean;
    static ColorPicker4(label: string, col: [number, number, number, number], flags?: ImGuiColorEditFlags, ref_col?: number[] | null): boolean;
    /**
     * display a color square/button, hover for details, return true when pressed.
     */
    static ColorButton(desc_id: string, col: ImVec4, flags?: ImGuiColorEditFlags, size?: ImVec2): boolean;
    /**
     * initialize current options (generally on application startup) if you want to select a default format, picker type, etc. User will be able to change many settings, unless you pass the _NoOptions flag to your calls.
     */
    static SetColorEditOptions(flags: ImGuiColorEditFlags): void;
    /**
     * Widgets: Trees
     * - TreeNode functions return true when the node is open, in which case you need to also call TreePop() when you are finished displaying the tree node contents.
     */
    static TreeNode(label: string): boolean;
    static TreeNodeEx(label: string, flags?: ImGuiTreeNodeFlags): boolean;
    /**
     * ~ Indent()+PushID(). Already called by TreeNode() when returning true, but you can call TreePush/TreePop yourself if desired.
     */
    static TreePush(str_id: string): void;
    /**
     * ~ Unindent()+PopID()
     */
    static TreePop(): void;
    /**
     * horizontal distance preceding label when using TreeNode*() or Bullet() == (g.FontSize + style.FramePadding.x*2) for a regular unframed TreeNode
     */
    static GetTreeNodeToLabelSpacing(): number;
    /**
     * if returning 'true' the header is open. doesn't indent nor push on ID stack. user doesn't have to call TreePop().
     */
    static CollapsingHeader(label: string, flags?: ImGuiTreeNodeFlags): boolean;
    /**
     * when 'p_visible != NULL': if '*p_visible==true' display an additional small close button on upper right of the header which will set the bool to false when clicked, if '*p_visible==false' don't display the header.
     */
    static CollapsingHeaderBoolPtr(label: string, p_visible: [boolean], flags?: ImGuiTreeNodeFlags): boolean;
    /**
     * set next TreeNode/CollapsingHeader open state.
     */
    static SetNextItemOpen(is_open: boolean, cond?: ImGuiCond): void;
    /**
     * set id to use for open/close storage (default to same as item id).
     */
    static SetNextItemStorageID(storage_id: ImGuiID): void;
    /**
     * retrieve tree node open/close state.
     */
    static TreeNodeGetOpen(storage_id: ImGuiID): boolean;
    /**
     * "bool selected" carry the selection state (read-only). Selectable() is clicked is returns true so you can modify your selection state. size.x==0.0: use remaining width, size.x>0.0: specify width. size.y==0.0: use label height, size.y>0.0: specify height
     */
    static Selectable(label: string, selected?: boolean, flags?: ImGuiSelectableFlags, size?: ImVec2): boolean;
    /**
     * "bool* p_selected" point to the selection state (read-write), as a convenient helper.
     */
    static SelectableBoolPtr(label: string, p_selected: [boolean], flags?: ImGuiSelectableFlags, size?: ImVec2): boolean;
    /**
     * Multi-selection system for Selectable(), Checkbox(), TreeNode() functions [BETA]
     * - This enables standard multi-selection/range-selection idioms (Ctrl+Mouse/Keyboard, Shift+Mouse/Keyboard, etc.) in a way that also allow a clipper to be used.
     * - ImGuiSelectionUserData is often used to store your item index within the current view (but may store something else).
     * - Read comments near ImGuiMultiSelectIO for instructions/details and see 'Demo->Widgets->Selection State & Multi-Select' for demo.
     * - TreeNode() is technically supported but... using this correctly is more complicated. You need some sort of linear/random access to your tree,
     *   which is suited to advanced trees setups already implementing filters and clipper. We will work simplifying the current demo.
     * - 'selection_size' and 'items_count' parameters are optional and used by a few features. If they are costly for you to compute, you may avoid them.
     */
    static BeginMultiSelect(flags: ImGuiMultiSelectFlags, selection_size?: number, items_count?: number): ImGuiMultiSelectIO;
    static EndMultiSelect(): ImGuiMultiSelectIO;
    static SetNextItemSelectionUserData(selection_user_data: ImGuiSelectionUserData): void;
    /**
     * Was the last item selection state toggled? Useful if you need the per-item information _before_ reaching EndMultiSelect(). We only returns toggle _event_ in order to handle clipping correctly.
     */
    static IsItemToggledSelection(): boolean;
    /**
     * open a framed scrolling region
     */
    static BeginListBox(label: string, size?: ImVec2): boolean;
    /**
     * only call EndListBox() if BeginListBox() returned true!
     */
    static EndListBox(): void;
    /**
     * Widgets: Data Plotting
     * - Consider using ImPlot (https://github.com/epezent/implot) which is much better!
     */
    static PlotLines(label: string, values: number[], values_count: number, values_offset?: number, overlay_text?: string, scale_min?: number, scale_max?: number, graph_size?: ImVec2, stride?: number): void;
    static PlotHistogram(label: string, values: number[], values_count: number, values_offset?: number, overlay_text?: string, scale_min?: number, scale_max?: number, graph_size?: ImVec2, stride?: number): void;
    /**
     * append to menu-bar of current window (requires ImGuiWindowFlags_MenuBar flag set on parent window).
     */
    static BeginMenuBar(): boolean;
    /**
     * only call EndMenuBar() if BeginMenuBar() returns true!
     */
    static EndMenuBar(): void;
    /**
     * create and append to a full screen menu-bar.
     */
    static BeginMainMenuBar(): boolean;
    /**
     * only call EndMainMenuBar() if BeginMainMenuBar() returns true!
     */
    static EndMainMenuBar(): void;
    /**
     * create a sub-menu entry. only call EndMenu() if this returns true!
     */
    static BeginMenu(label: string, enabled?: boolean): boolean;
    /**
     * only call EndMenu() if BeginMenu() returns true!
     */
    static EndMenu(): void;
    /**
     * return true when activated.
     */
    static MenuItem(label: string, shortcut?: string, selected?: boolean, enabled?: boolean): boolean;
    /**
     * return true when activated + toggle (*p_selected) if p_selected != NULL
     */
    static MenuItemBoolPtr(label: string, shortcut: string, p_selected: [boolean], enabled?: boolean): boolean;
    /**
     * begin/append a tooltip window.
     */
    static BeginTooltip(): boolean;
    /**
     * only call EndTooltip() if BeginTooltip()/BeginItemTooltip() returns true!
     */
    static EndTooltip(): void;
    static SetTooltip(fmt: string): void;
    /**
     * begin/append a tooltip window if preceding item was hovered.
     */
    static BeginItemTooltip(): boolean;
    static SetItemTooltip(fmt: string): void;
    /**
     * return true if the popup is open, and you can start outputting to it.
     */
    static BeginPopup(str_id: string, flags?: ImGuiWindowFlags): boolean;
    /**
     * return true if the modal is open, and you can start outputting to it.
     */
    static BeginPopupModal(name: string, p_open?: [boolean] | null, flags?: ImGuiWindowFlags): boolean;
    /**
     * only call EndPopup() if BeginPopupXXX() returns true!
     */
    static EndPopup(): void;
    /**
     * call to mark popup as open (don't call every frame!).
     */
    static OpenPopup(str_id: string, popup_flags?: ImGuiPopupFlags): void;
    /**
     * id overload to facilitate calling from nested stacks
     */
    static OpenPopupID(id: ImGuiID, popup_flags?: ImGuiPopupFlags): void;
    /**
     * helper to open popup when clicked on last item. Default to ImGuiPopupFlags_MouseButtonRight == 1. (note: actually triggers on the mouse _released_ event to be consistent with popup behaviors)
     */
    static OpenPopupOnItemClick(str_id?: string, popup_flags?: ImGuiPopupFlags): void;
    /**
     * manually close the popup we have begin-ed into.
     */
    static CloseCurrentPopup(): void;
    /**
     * open+begin popup when clicked on last item. Use str_id==NULL to associate the popup to previous item. If you want to use that on a non-interactive item such as Text() you need to pass in an explicit ID here. read comments in .cpp!
     */
    static BeginPopupContextItem(str_id?: string, popup_flags?: ImGuiPopupFlags): boolean;
    /**
     * open+begin popup when clicked on current window.
     */
    static BeginPopupContextWindow(str_id?: string, popup_flags?: ImGuiPopupFlags): boolean;
    /**
     * open+begin popup when clicked in void (where there are no windows).
     */
    static BeginPopupContextVoid(str_id?: string, popup_flags?: ImGuiPopupFlags): boolean;
    /**
     * return true if the popup is open.
     */
    static IsPopupOpen(str_id: string, flags?: ImGuiPopupFlags): boolean;
    /**
     * Tables
     * - Full-featured replacement for old Columns API.
     * - See Demo->Tables for demo code. See top of imgui_tables.cpp for general commentary.
     * - See ImGuiTableFlags_ and ImGuiTableColumnFlags_ enums for a description of available flags.
     * The typical call flow is:
     * - 1. Call BeginTable(), early out if returning false.
     * - 2. Optionally call TableSetupColumn() to submit column name/flags/defaults.
     * - 3. Optionally call TableSetupScrollFreeze() to request scroll freezing of columns/rows.
     * - 4. Optionally call TableHeadersRow() to submit a header row. Names are pulled from TableSetupColumn() data.
     * - 5. Populate contents:
     *    - In most situations you can use TableNextRow() + TableSetColumnIndex(N) to start appending into a column.
     *    - If you are using tables as a sort of grid, where every column is holding the same type of contents,
     *      you may prefer using TableNextColumn() instead of TableNextRow() + TableSetColumnIndex().
     *      TableNextColumn() will automatically wrap-around into the next row if needed.
     *    - IMPORTANT: Comparatively to the old Columns() API, we need to call TableNextColumn() for the first column!
     *    - Summary of possible call flow:
     *        - TableNextRow() -> TableSetColumnIndex(0) -> Text("Hello 0") -> TableSetColumnIndex(1) -> Text("Hello 1")  // OK
     *        - TableNextRow() -> TableNextColumn()      -> Text("Hello 0") -> TableNextColumn()      -> Text("Hello 1")  // OK
     *        -                   TableNextColumn()      -> Text("Hello 0") -> TableNextColumn()      -> Text("Hello 1")  // OK: TableNextColumn() automatically gets to next row!
     *        - TableNextRow()                           -> Text("Hello 0")                                               // Not OK! Missing TableSetColumnIndex() or TableNextColumn()! Text will not appear!
     * - 5. Call EndTable()
     */
    static BeginTable(str_id: string, columns: number, flags?: ImGuiTableFlags, outer_size?: ImVec2, inner_width?: number): boolean;
    /**
     * only call EndTable() if BeginTable() returns true!
     */
    static EndTable(): void;
    /**
     * append into the first cell of a new row. 'min_row_height' include the minimum top and bottom padding aka CellPadding.y * 2.0f.
     */
    static TableNextRow(row_flags?: ImGuiTableRowFlags, min_row_height?: number): void;
    /**
     * append into the next column (or first column of next row if currently in last column). Return true when column is visible.
     */
    static TableNextColumn(): boolean;
    /**
     * append into the specified column. Return true when column is visible.
     */
    static TableSetColumnIndex(column_n: number): boolean;
    /**
     * Tables: Headers & Columns declaration
     * - Use TableSetupColumn() to specify label, resizing policy, default width/weight, id, various other flags etc.
     * - Use TableHeadersRow() to create a header row and automatically submit a TableHeader() for each column.
     *   Headers are required to perform: reordering, sorting, and opening the context menu.
     *   The context menu can also be made available in columns body using ImGuiTableFlags_ContextMenuInBody.
     * - You may manually submit headers using TableNextRow() + TableHeader() calls, but this is only useful in
     *   some advanced use cases (e.g. adding custom widgets in header row).
     * - Use TableSetupScrollFreeze() to lock columns/rows so they stay visible when scrolled. When freezing columns you would usually also use ImGuiTableColumnFlags_NoHide on them.
     */
    static TableSetupColumn(label: string, flags?: ImGuiTableColumnFlags, init_width_or_weight?: number, user_id?: ImGuiID): void;
    /**
     * lock columns/rows so they stay visible when scrolled.
     */
    static TableSetupScrollFreeze(cols: number, rows: number): void;
    /**
     * submit one header cell manually (rarely used)
     */
    static TableHeader(label: string): void;
    /**
     * submit a row with headers cells based on data provided to TableSetupColumn() + submit context menu
     */
    static TableHeadersRow(): void;
    /**
     * submit a row with angled headers for every column with the ImGuiTableColumnFlags_AngledHeader flag. MUST BE FIRST ROW.
     */
    static TableAngledHeadersRow(): void;
    /**
     * get latest sort specs for the table (NULL if not sorting).  Lifetime: don't hold on this pointer over multiple frames or past any subsequent call to BeginTable().
     */
    static TableGetSortSpecs(): ImGuiTableSortSpecs;
    /**
     * return number of columns (value passed to BeginTable)
     */
    static TableGetColumnCount(): number;
    /**
     * return current column index.
     */
    static TableGetColumnIndex(): number;
    /**
     * return current row index (header rows are accounted for)
     */
    static TableGetRowIndex(): number;
    /**
     * return "" if column didn't have a name declared by TableSetupColumn(). Pass -1 to use current column.
     */
    static TableGetColumnName(column_n?: number): string;
    /**
     * return column flags so you can query their Enabled/Visible/Sorted/Hovered status flags. Pass -1 to use current column.
     */
    static TableGetColumnFlags(column_n?: number): ImGuiTableColumnFlags;
    /**
     * change user accessible enabled/disabled state of a column. Set to false to hide the column. User can use the context menu to change this themselves (right-click in headers, or right-click in columns body with ImGuiTableFlags_ContextMenuInBody)
     */
    static TableSetColumnEnabled(column_n: number, v: boolean): void;
    /**
     * return hovered column. return -1 when table is not hovered. return columns_count if the unused space at the right of visible columns is hovered. Can also use (TableGetColumnFlags() & ImGuiTableColumnFlags_IsHovered) instead.
     */
    static TableGetHoveredColumn(): number;
    /**
     * change the color of a cell, row, or column. See ImGuiTableBgTarget_ flags for details.
     */
    static TableSetBgColor(target: ImGuiTableBgTarget, color: ImU32, column_n?: number): void;
    /**
     * Legacy Columns API (prefer using Tables!)
     * - You can also use SameLine(pos_x) to mimic simplified columns.
     */
    static Columns(count?: number, id?: string, borders?: boolean): void;
    /**
     * next column, defaults to current row or next row if the current row is finished
     */
    static NextColumn(): void;
    /**
     * get current column index
     */
    static GetColumnIndex(): number;
    /**
     * get column width (in pixels). pass -1 to use current column
     */
    static GetColumnWidth(column_index?: number): number;
    /**
     * set column width (in pixels). pass -1 to use current column
     */
    static SetColumnWidth(column_index: number, width: number): void;
    /**
     * get position of column line (in pixels, from the left side of the contents region). pass -1 to use current column, otherwise 0..GetColumnsCount() inclusive. column 0 is typically 0.0f
     */
    static GetColumnOffset(column_index?: number): number;
    /**
     * set position of column line (in pixels, from the left side of the contents region). pass -1 to use current column
     */
    static SetColumnOffset(column_index: number, offset_x: number): void;
    static GetColumnsCount(): number;
    /**
     * create and append into a TabBar
     */
    static BeginTabBar(str_id: string, flags?: ImGuiTabBarFlags): boolean;
    /**
     * only call EndTabBar() if BeginTabBar() returns true!
     */
    static EndTabBar(): void;
    /**
     * create a Tab. Returns true if the Tab is selected.
     */
    static BeginTabItem(label: string, p_open?: [boolean] | null, flags?: ImGuiTabItemFlags): boolean;
    /**
     * only call EndTabItem() if BeginTabItem() returns true!
     */
    static EndTabItem(): void;
    /**
     * create a Tab behaving like a button. return true when clicked. cannot be selected in the tab bar.
     */
    static TabItemButton(label: string, flags?: ImGuiTabItemFlags): boolean;
    /**
     * notify TabBar or Docking system of a closed tab/window ahead (useful to reduce visual flicker on reorderable tab bars). For tab-bar: call after BeginTabBar() and before Tab submissions. Otherwise call with a window name.
     */
    static SetTabItemClosed(tab_or_docked_window_label: string): void;
    /**
     * Docking
     * - Read https://github.com/ocornut/imgui/wiki/Docking for details.
     * - Enable with io.ConfigFlags |= ImGuiConfigFlags_DockingEnable.
     * - You can use many Docking facilities without calling any API.
     *   - Drag from window title bar or their tab to dock/undock. Hold SHIFT to disable docking.
     *   - Drag from window menu button (upper-left button) to undock an entire node (all windows).
     *   - When io.ConfigDockingWithShift == true, you instead need to hold SHIFT to enable docking.
     * - DockSpaceOverViewport:
     *   - This is a helper to create an invisible window covering a viewport, then submit a DockSpace() into it.
     *   - Most applications can simply call DockSpaceOverViewport() once to allow docking windows into e.g. the edge of your screen.
     *     e.g. ImGui::NewFrame(); ImGui::DockSpaceOverViewport();                                                   // Create a dockspace in main viewport.
     *      or: ImGui::NewFrame(); ImGui::DockSpaceOverViewport(0, nullptr, ImGuiDockNodeFlags_PassthruCentralNode); // Create a dockspace in main viewport, central node is transparent.
     * - Dockspaces:
     *   - A dockspace is an explicit dock node within an existing window.
     *   - IMPORTANT: Dockspaces need to be submitted _before_ any window they can host. Submit them early in your frame!
     *   - IMPORTANT: Dockspaces need to be kept alive if hidden, otherwise windows docked into it will be undocked.
     *     If you have e.g. multiple tabs with a dockspace inside each tab: submit the non-visible dockspaces with ImGuiDockNodeFlags_KeepAliveOnly.
     *   - See 'Demo->Examples->Dockspace' or 'Demo->Examples->Documents' for more detailed demos.
     * - Programmatic docking:
     *   - There is no public API yet other than the very limited SetNextWindowDockID() function. Sorry for that!
     *   - Read https://github.com/ocornut/imgui/wiki/Docking for examples of how to use current internal API.
     */
    static DockSpace(dockspace_id: ImGuiID, size?: ImVec2, flags?: ImGuiDockNodeFlags, window_class?: ImGuiWindowClass | null): ImGuiID;
    static DockSpaceOverViewport(dockspace_id?: ImGuiID, viewport?: ImGuiViewport | null, flags?: ImGuiDockNodeFlags, window_class?: ImGuiWindowClass | null): ImGuiID;
    /**
     * set next window dock id
     */
    static SetNextWindowDockID(dock_id: ImGuiID, cond?: ImGuiCond): void;
    /**
     * set next window class (control docking compatibility + provide hints to platform backend via custom viewport flags and platform parent/child relationship)
     */
    static SetNextWindowClass(window_class: ImGuiWindowClass): void;
    /**
     * get dock id of current window, or 0 if not associated to any docking node.
     */
    static GetWindowDockID(): ImGuiID;
    /**
     * is current window docked into another window?
     */
    static IsWindowDocked(): boolean;
    /**
     * start logging to tty (stdout)
     */
    static LogToTTY(auto_open_depth?: number): void;
    /**
     * start logging to file
     */
    static LogToFile(auto_open_depth?: number, filename?: string): void;
    /**
     * start logging to OS clipboard
     */
    static LogToClipboard(auto_open_depth?: number): void;
    /**
     * stop logging (close file, etc.)
     */
    static LogFinish(): void;
    /**
     * helper to display buttons for logging to tty/file/clipboard
     */
    static LogButtons(): void;
    static LogText(fmt: string): void;
    /**
     * call after submitting an item which may be dragged. when this return true, you can call SetDragDropPayload() + EndDragDropSource()
     */
    static BeginDragDropSource(flags?: ImGuiDragDropFlags): boolean;
    static SetDragDropPayload(type: string, data: string, sz: number, cond: ImGuiCond): boolean;
    /**
     * only call EndDragDropSource() if BeginDragDropSource() returns true!
     */
    static EndDragDropSource(): void;
    /**
     * call after submitting an item that may receive a payload. If this returns true, you can call AcceptDragDropPayload() + EndDragDropTarget()
     */
    static BeginDragDropTarget(): boolean;
    /**
     * accept contents of a given type. If ImGuiDragDropFlags_AcceptBeforeDelivery is set you can peek into the payload before the mouse button is released.
     */
    static AcceptDragDropPayload(type: string, flags?: ImGuiDragDropFlags): ImGuiPayload;
    /**
     * only call EndDragDropTarget() if BeginDragDropTarget() returns true!
     */
    static EndDragDropTarget(): void;
    /**
     * peek directly into the current payload from anywhere. returns NULL when drag and drop is finished or inactive. use ImGuiPayload::IsDataType() to test for the payload type.
     */
    static GetDragDropPayload(): ImGuiPayload;
    /**
     * Disabling [BETA API]
     * - Disable all user interactions and dim items visuals (applying style.DisabledAlpha over current colors)
     * - Those can be nested but it cannot be used to enable an already disabled section (a single BeginDisabled(true) in the stack is enough to keep everything disabled)
     * - Tooltips windows are automatically opted out of disabling. Note that IsItemHovered() by default returns false on disabled items, unless using ImGuiHoveredFlags_AllowWhenDisabled.
     * - BeginDisabled(false)/EndDisabled() essentially does nothing but is provided to facilitate use of boolean expressions (as a micro-optimization: if you have tens of thousands of BeginDisabled(false)/EndDisabled() pairs, you might want to reformulate your code to avoid making those calls)
     */
    static BeginDisabled(disabled?: boolean): void;
    static EndDisabled(): void;
    /**
     * Clipping
     * - Mouse hovering is affected by ImGui::PushClipRect() calls, unlike direct calls to ImDrawList::PushClipRect() which are render only.
     */
    static PushClipRect(clip_rect_min: ImVec2, clip_rect_max: ImVec2, intersect_with_current_clip_rect: boolean): void;
    static PopClipRect(): void;
    /**
     * make last item the default focused item of a newly appearing window.
     */
    static SetItemDefaultFocus(): void;
    /**
     * focus keyboard on the next widget. Use positive 'offset' to access sub components of a multiple component widget. Use -1 to access previous widget.
     */
    static SetKeyboardFocusHere(offset?: number): void;
    /**
     * alter visibility of keyboard/gamepad cursor. by default: show when using an arrow key, hide when clicking with mouse.
     */
    static SetNavCursorVisible(visible: boolean): void;
    /**
     * allow next item to be overlapped by a subsequent item. Typically useful with InvisibleButton(), Selectable(), TreeNode() covering an area where subsequent items may need to be added. Note that both Selectable() and TreeNode() have dedicated flags doing this.
     */
    static SetNextItemAllowOverlap(): void;
    /**
     * is the last item hovered? (and usable, aka not blocked by a popup, etc.). See ImGuiHoveredFlags for more options.
     */
    static IsItemHovered(flags?: ImGuiHoveredFlags): boolean;
    /**
     * is the last item active? (e.g. button being held, text field being edited. This will continuously return true while holding mouse button on an item. Items that don't interact will always return false)
     */
    static IsItemActive(): boolean;
    /**
     * is the last item focused for keyboard/gamepad navigation?
     */
    static IsItemFocused(): boolean;
    /**
     * is the last item hovered and mouse clicked on? (**)  == IsMouseClicked(mouse_button) && IsItemHovered()Important. (**) this is NOT equivalent to the behavior of e.g. Button(). Read comments in function definition.
     */
    static IsItemClicked(mouse_button?: ImGuiMouseButton): boolean;
    /**
     * is the last item visible? (items may be out of sight because of clipping/scrolling)
     */
    static IsItemVisible(): boolean;
    /**
     * did the last item modify its underlying value this frame? or was pressed? This is generally the same as the "bool" return value of many widgets.
     */
    static IsItemEdited(): boolean;
    /**
     * was the last item just made active (item was previously inactive).
     */
    static IsItemActivated(): boolean;
    /**
     * was the last item just made inactive (item was previously active). Useful for Undo/Redo patterns with widgets that require continuous editing.
     */
    static IsItemDeactivated(): boolean;
    /**
     * was the last item just made inactive and made a value change when it was active? (e.g. Slider/Drag moved). Useful for Undo/Redo patterns with widgets that require continuous editing. Note that you may get false positives (some widgets such as Combo()/ListBox()/Selectable() will return true even when clicking an already selected item).
     */
    static IsItemDeactivatedAfterEdit(): boolean;
    /**
     * was the last item open state toggled? set by TreeNode().
     */
    static IsItemToggledOpen(): boolean;
    /**
     * is any item hovered?
     */
    static IsAnyItemHovered(): boolean;
    /**
     * is any item active?
     */
    static IsAnyItemActive(): boolean;
    /**
     * is any item focused?
     */
    static IsAnyItemFocused(): boolean;
    /**
     * get ID of last item (~~ often same ImGui::GetID(label) beforehand)
     */
    static GetItemID(): ImGuiID;
    /**
     * get upper-left bounding rectangle of the last item (screen space)
     */
    static GetItemRectMin(): ImVec2;
    /**
     * get lower-right bounding rectangle of the last item (screen space)
     */
    static GetItemRectMax(): ImVec2;
    /**
     * get size of last item
     */
    static GetItemRectSize(): ImVec2;
    /**
     * get generic flags of last item
     */
    static GetItemFlags(): ImGuiItemFlags;
    /**
     * return primary/default viewport. This can never be NULL.
     */
    static GetMainViewport(): ImGuiViewport;
    /**
     * get background draw list for the given viewport or viewport associated to the current window. this draw list will be the first rendering one. Useful to quickly draw shapes/text behind dear imgui contents.
     */
    static GetBackgroundDrawList(viewport?: ImGuiViewport | null): ImDrawList;
    /**
     * get foreground draw list for the given viewport or viewport associated to the current window. this draw list will be the top-most rendered one. Useful to quickly draw shapes/text over dear imgui contents.
     */
    static GetForegroundDrawList(viewport?: ImGuiViewport | null): ImDrawList;
    /**
     * test if rectangle (of given size, starting from cursor position) is visible / not clipped.
     */
    static IsRectVisibleBySize(size: ImVec2): boolean;
    /**
     * test if rectangle (in screen space) is visible / not clipped. to perform coarse clipping on user's side.
     */
    static IsRectVisible(rect_min: ImVec2, rect_max: ImVec2): boolean;
    /**
     * get global imgui time. incremented by io.DeltaTime every frame.
     */
    static GetTime(): number;
    /**
     * get global imgui frame count. incremented by 1 every frame.
     */
    static GetFrameCount(): number;
    /**
     * you may use this when creating your own ImDrawList instances.
     */
    static GetDrawListSharedData(): ImDrawListSharedData;
    /**
     * get a string corresponding to the enum value (for display, saving, etc.).
     */
    static GetStyleColorName(idx: ImGuiCol): string;
    /**
     * Text Utilities
     */
    static CalcTextSize(text: string, text_end?: string, hide_text_after_double_hash?: boolean, wrap_width?: number): ImVec2;
    /**
     * Color Utilities
     */
    static ColorConvertU32ToFloat4(in_: ImU32): ImVec4;
    static ColorConvertFloat4ToU32(in_: ImVec4): ImU32;
    static ColorConvertRGBtoHSV(r: number, g: number, b: number, out_h: [number], out_s: [number], out_v: [number]): void;
    static ColorConvertHSVtoRGB(h: number, s: number, v: number, out_r: [number], out_g: [number], out_b: [number]): void;
    /**
     * is key being held.
     */
    static IsKeyDown(key: ImGuiKey): boolean;
    /**
     * was key pressed (went from !Down to Down)? Repeat rate uses io.KeyRepeatDelay / KeyRepeatRate.
     */
    static IsKeyPressed(key: ImGuiKey, repeat?: boolean): boolean;
    /**
     * was key released (went from Down to !Down)?
     */
    static IsKeyReleased(key: ImGuiKey): boolean;
    /**
     * was key chord (mods + key) pressed, e.g. you can pass 'ImGuiMod_Ctrl | ImGuiKey_S' as a key-chord. This doesn't do any routing or focus check, please consider using Shortcut() function instead.
     */
    static IsKeyChordPressed(key_chord: ImGuiKeyChord): boolean;
    /**
     * uses provided repeat rate/delay. return a count, most often 0 or 1 but might be >1 if RepeatRate is small enough that DeltaTime > RepeatRate
     */
    static GetKeyPressedAmount(key: ImGuiKey, repeat_delay: number, rate: number): number;
    /**
     * [DEBUG] returns English name of the key. Those names are provided for debugging purpose and are not meant to be saved persistently nor compared.
     */
    static GetKeyName(key: ImGuiKey): string;
    /**
     * Override io.WantCaptureKeyboard flag next frame (said flag is left for your application to handle, typically when true it instructs your app to ignore inputs). e.g. force capture keyboard when your widget is being hovered. This is equivalent to setting "io.WantCaptureKeyboard = want_capture_keyboard"; after the next NewFrame() call.
     */
    static SetNextFrameWantCaptureKeyboard(want_capture_keyboard: boolean): void;
    /**
     * Inputs Utilities: Shortcut Testing & Routing
     * - Typical use is e.g.: 'if (ImGui::Shortcut(ImGuiMod_Ctrl | ImGuiKey_S)) { ... }'.
     * - Flags: Default route use ImGuiInputFlags_RouteFocused, but see ImGuiInputFlags_RouteGlobal and other options in ImGuiInputFlags_!
     * - Flags: Use ImGuiInputFlags_Repeat to support repeat.
     * - ImGuiKeyChord = a ImGuiKey + optional ImGuiMod_Alt/ImGuiMod_Ctrl/ImGuiMod_Shift/ImGuiMod_Super.
     *       ImGuiKey_C                          // Accepted by functions taking ImGuiKey or ImGuiKeyChord arguments
     *       ImGuiMod_Ctrl | ImGuiKey_C          // Accepted by functions taking ImGuiKeyChord arguments
     *   only ImGuiMod_XXX values are legal to combine with an ImGuiKey. You CANNOT combine two ImGuiKey values.
     * - The general idea is that several callers may register interest in a shortcut, and only one owner gets it.
     *      Parent   -> call Shortcut(Ctrl+S)    // When Parent is focused, Parent gets the shortcut.
     *        Child1 -> call Shortcut(Ctrl+S)    // When Child1 is focused, Child1 gets the shortcut (Child1 overrides Parent shortcuts)
     *        Child2 -> no call                  // When Child2 is focused, Parent gets the shortcut.
     *   The whole system is order independent, so if Child1 makes its calls before Parent, results will be identical.
     *   This is an important property as it facilitate working with foreign code or larger codebase.
     * - To understand the difference:
     *   - IsKeyChordPressed() compares mods and call IsKeyPressed()
     *     -> the function has no side-effect.
     *   - Shortcut() submits a route, routes are resolved, if it currently can be routed it calls IsKeyChordPressed()
     *     -> the function has (desirable) side-effects as it can prevents another call from getting the route.
     * - Visualize registered routes in 'Metrics/Debugger->Inputs'.
     */
    static Shortcut(key_chord: ImGuiKeyChord, flags?: ImGuiInputFlags): boolean;
    static SetNextItemShortcut(key_chord: ImGuiKeyChord, flags?: ImGuiInputFlags): void;
    /**
     * Set key owner to last item ID if it is hovered or active. Return true when ownership has been set. Roughly equivalent to 'if (TestKeyOwner(key, GetItemID()) && (IsItemHovered() || IsItemActive())) { SetKeyOwner(key, GetItemID());'.
     */
    static SetItemKeyOwner(key: ImGuiKey): boolean;
    /**
     * is mouse button held?
     */
    static IsMouseDown(button: ImGuiMouseButton): boolean;
    /**
     * did mouse button clicked? (went from !Down to Down). Same as GetMouseClickedCount() == 1.
     */
    static IsMouseClicked(button: ImGuiMouseButton, repeat?: boolean): boolean;
    /**
     * did mouse button released? (went from Down to !Down)
     */
    static IsMouseReleased(button: ImGuiMouseButton): boolean;
    /**
     * did mouse button double-clicked? Same as GetMouseClickedCount() == 2. (note that a double-click will also report IsMouseClicked() == true)
     */
    static IsMouseDoubleClicked(button: ImGuiMouseButton): boolean;
    /**
     * delayed mouse release (use very sparingly!). Generally used with 'delay >= io.MouseDoubleClickTime' + combined with a 'io.MouseClickedLastCount==1' test. This is a very rarely used UI idiom, but some apps use this: e.g. MS Explorer single click on an icon to rename.
     */
    static IsMouseReleasedWithDelay(button: ImGuiMouseButton, delay: number): boolean;
    /**
     * return the number of successive mouse-clicks at the time where a click happen (otherwise 0).
     */
    static GetMouseClickedCount(button: ImGuiMouseButton): number;
    /**
     * is mouse hovering given bounding rect (in screen space). clipped by current clipping settings, but disregarding of other consideration of focus/window ordering/popup-block.
     */
    static IsMouseHoveringRect(r_min: ImVec2, r_max: ImVec2, clip?: boolean): boolean;
    /**
     * by convention we use (-FLT_MAX,-FLT_MAX) to denote that there is no mouse available
     */
    static IsMousePosValid(mouse_pos?: ImVec2 | null): boolean;
    /**
     * [WILL OBSOLETE] is any mouse button held? This was designed for backends, but prefer having backend maintain a mask of held mouse buttons, because upcoming input queue system will make this invalid.
     */
    static IsAnyMouseDown(): boolean;
    /**
     * shortcut to ImGui::GetIO().MousePos provided by user, to be consistent with other calls
     */
    static GetMousePos(): ImVec2;
    /**
     * retrieve mouse position at the time of opening popup we have BeginPopup() into (helper to avoid user backing that value themselves)
     */
    static GetMousePosOnOpeningCurrentPopup(): ImVec2;
    /**
     * is mouse dragging? (uses io.MouseDraggingThreshold if lock_threshold < 0.0f)
     */
    static IsMouseDragging(button: ImGuiMouseButton, lock_threshold?: number): boolean;
    /**
     * return the delta from the initial clicking position while the mouse button is pressed or was just released. This is locked and return 0.0f until the mouse moves past a distance threshold at least once (uses io.MouseDraggingThreshold if lock_threshold < 0.0f)
     */
    static GetMouseDragDelta(button?: ImGuiMouseButton, lock_threshold?: number): ImVec2;
    /**
     *
     */
    static ResetMouseDragDelta(button?: ImGuiMouseButton): void;
    /**
     * get desired mouse cursor shape. Important: reset in ImGui::NewFrame(), this is updated during the frame. valid before Render(). If you use software rendering by setting io.MouseDrawCursor ImGui will render those for you
     */
    static GetMouseCursor(): ImGuiMouseCursor;
    /**
     * set desired mouse cursor shape
     */
    static SetMouseCursor(cursor_type: ImGuiMouseCursor): void;
    /**
     * Override io.WantCaptureMouse flag next frame (said flag is left for your application to handle, typical when true it instructs your app to ignore inputs). This is equivalent to setting "io.WantCaptureMouse = want_capture_mouse;" after the next NewFrame() call.
     */
    static SetNextFrameWantCaptureMouse(want_capture_mouse: boolean): void;
    /**
     * Clipboard Utilities
     * - Also see the LogToClipboard() function to capture GUI into clipboard, or easily output text data to the clipboard.
     */
    static GetClipboardText(): string;
    static SetClipboardText(text: string): void;
    /**
     * call after CreateContext() and before the first call to NewFrame() to provide .ini data from your own data source.
     */
    static LoadIniSettingsFromMemory(ini_data: string, ini_size?: number): void;
    /**
     * return a zero-terminated string with the .ini data which you can save by your own mean. call when io.WantSaveIniSettings is set, then save data by your own mean and clear io.WantSaveIniSettings.
     */
    static SaveIniSettingsToMemory(out_ini_size?: [number] | null): string;
    /**
     * Debug Utilities
     * - Your main debugging friend is the ShowMetricsWindow() function.
     * - Interactive tools are all accessible from the 'Dear ImGui Demo->Tools' menu.
     * - Read https://github.com/ocornut/imgui/wiki/Debug-Tools for a description of all available debug tools.
     */
    static DebugTextEncoding(text: string): void;
    static DebugFlashStyleColor(idx: ImGuiCol): void;
    static DebugStartItemPicker(): void;
    /**
     * This is called by IMGUI_CHECKVERSION() macro.
     */
    static DebugCheckVersionAndDataLayout(version_str: string, sz_io: number, sz_style: number, sz_vec2: number, sz_vec4: number, sz_drawvert: number, sz_drawidx: number): boolean;
    static DebugLog(fmt: string): void;
    /**
     * call in main loop. will call CreateWindow/ResizeWindow/etc. platform functions for each secondary viewport, and DestroyWindow for each inactive viewport.
     */
    static UpdatePlatformWindows(): void;
    /**
     * call in main loop. will call RenderWindow/SwapBuffers platform functions for each secondary viewport which doesn't have the ImGuiViewportFlags_Minimized flag set. May be reimplemented by user for custom rendering needs.
     */
    static RenderPlatformWindowsDefault(platform_render_arg?: any | null, renderer_render_arg?: any | null): void;
    /**
     * call DestroyWindow platform functions for all viewports. call from backend Shutdown() if you need to close platform windows before imgui shutdown. otherwise will be called by DestroyContext().
     */
    static DestroyPlatformWindows(): void;
    /**
     * this is a helper for backends.
     */
    static FindViewportByID(viewport_id: ImGuiID): ImGuiViewport;
    /**
     * this is a helper for backends. the type platform_handle is decided by the backend (e.g. HWND, MyWindow*, GLFWwindow* etc.)
     */
    static FindViewportByPlatformHandle(platform_handle: any): ImGuiViewport;
}
export declare class ImGuiImplOpenGL3 {
    static Init(): boolean;
    static Shutdown(): void;
    static NewFrame(): void;
    static RenderDrawData(draw_data: ImDrawData): void;
}
export declare class ImGuiImplWGPU {
    static Init(device: GPUDevice): boolean;
    static Shutdown(): void;
    static NewFrame(): void;
    static RenderDrawData(draw_data: ImDrawData, pass_encoder: GPURenderPassEncoder): void;
}
/**
 * Object containing some state information for jsimgui. Users most likely don't need to worry
 * about this.
 */
export declare const State: {
    canvas: HTMLCanvasElement | null;
    device: GPUDevice | null;
    backend: "webgl" | "webgl2" | "webgpu" | null;
    beginRenderFn: (() => void) | null;
    endRenderFn: ((passEncoder?: GPURenderPassEncoder) => void) | null;
    clipboardData: string;
    saveIniSettingsFn: ((iniData: string) => void) | null;
    loadIniSettingsFn: (() => string) | null;
};
/**
 * Options for loading a texture.
 */
export interface TextureOptions {
    /**
     * The texture reference to update. Only required if you want to update an existing texture.
     */
    ref?: ImTextureRef;
    /**
     * The width of the texture. This needs to be specified if the texture is loaded
     * from a `Uint8Array`.
     */
    width?: number;
    /**
     * The height of the texture. This needs to be specified if the texture is loaded
     * from a `Uint8Array`.
     */
    height?: number;
    /**
     * Custom load function to use for loading the texture/image. You can use this if you require
     * additional processing. Note that you will need to write backend-specific code for this.
     *
     * @param data The image data to load.
     * @param options The options for loading the texture.
     * @returns The ImTextureID of the loaded image.
     */
    processFn?: (data?: HTMLImageElement | Uint8Array, options?: TextureOptions) => WebGLTexture | [GPUTexture, GPUTextureView];
}
/**
 * Object containing memory information of the WASM heap, mallinfo and stack.
 */
interface MemoryInfo {
    heap: {
        size: number;
        max: number;
        sbrk_ptr: number;
    };
    mall: {
        arena: number;
        ordblks: number;
        smblks: number;
        hblks: number;
        hblkhd: number;
        usmblks: number;
        fsmblks: number;
        uordblks: number;
        fordblks: number;
        keepcost: number;
    };
    stack: {
        base: number;
        end: number;
        current: number;
        free: number;
    };
}
/**
 * Initialization options for jsimgui used in {@linkcode ImGuiImplWeb.Init}.
 */
export interface InitOptions {
    /**
     * The canvas element to render Dear ImGui on.
     */
    canvas: HTMLCanvasElement;
    /**
     * The WebGPU device used for rendering. This is only required when using the WebGPU backend.
     */
    device?: GPUDevice;
    /**
     * Specify the rendering backend to use. If not specified, will be inferred from the canvas or
     * from {@linkcode device}.
     */
    backend?: "webgl" | "webgl2" | "webgpu";
    /**
     * The font loader and rasterizer to use for loading fonts. Can be one of the following:
     *
     * - `truetype` (stb_truetype) is the default option.
     * - `freetype` (FreeType) is an alternative option which supports more features than `truetype`
     * but this also loads an increased WASM file (+500kb).
     *
     * Default is `truetype`.
     */
    fontLoader?: "truetype" | "freetype";
    /**
     * Whether to enable Dear ImGui extensions (imnodes, implot, ...).
     */
    extensions?: boolean;
    /**
     * Custom path to the emscripten loader script. If not provided, will be constructed
     * automatically. If you use jsimgui via a package manager or CDN, you will most likely not
     * need to worry about this.
     */
    loaderPath?: string;
}
/**
 * Object providing easy to use functions for initializing jsimgui as well as other things like
 * loading images and fonts (TODO).
 */
export declare class ImGuiImplWeb {
    /**
     * Returns the exports and runtime methods of the emscripten module.
     *
     * @returns The emscripten exports object.
     */
    static GetEmscriptenExports(): any;
    /**
     * Returns memory information of the WASM heap, mallinfo and stack.
     *
     * @returns Object containing the memory information.
     */
    static GetMemoryInfo(): MemoryInfo;
    /**
     * Set the callback for saving the Dear ImGui ini settings. The ini settings will be passed as
     * string to the callback.
     *
     * @param fn The function to save the ImGui ini settings.
     */
    static SetSaveIniSettingsFn(fn: (iniData: string) => void): void;
    /**
     * Set the callback for loading the Dear ImGui ini settings. The callback should return a string
     * of the ini settings. This callback will be called in the {@linkcode ImGuiImplWeb.Init}
     * function.
     *
     * @param fn The function to load the ImGui ini settings.
     */
    static SetLoadIniSettingsFn(fn: () => string): void;
    /**
     * Register a texture for the current backend to be used in image related functions (`ImGui.Image()`).
     */
    static RegisterTexture(texture: WebGLTexture | GPUTexture): ImTextureRef;
    /**
     * Returns a dummy (1x1 pixel, black, fully transparent) texture for the current backend.
     * This can be useful if you asynchronously load an image, and need to use a placeholder in the meantime.
     */
    static DummyTexture(): ImTextureRef;
    /**
     * Load a font file to the filesystem for the current backend. Add it then using
     * `ImGui.GetIO().Fonts.AddFontFromFileTTF(filename);`
     * @param filename The filename of the font to load.
     * @param fontData The font data to load.
     */
    static LoadFont(filename: string, fontData: Uint8Array): void;
    /**
     * Begins a new ImGui frame. Call this at the beginning of your render loop.
     */
    static BeginRender(): void;
    /**
     * Ends the current ImGui frame. Call this at the end of your render loop. The `passEncoder`
     * is only required when using the WebGPU backend.
     *
     * @param passEncoder The WebGPU render pass encoder to use.
     */
    static EndRender(passEncoder?: GPURenderPassEncoder): void;
    /**
     * Initialize Dear ImGui with the specified configuration. This is asynchronous because it
     * waits for the WASM file to be loaded.
     *
     * @param options The initialization options: {@linkcode InitOptions}.
     */
    static Init(options: InitOptions): Promise<void>;
}
export {};
