[
  {
    "path": ".eslintignore",
    "content": "node_modules/"
  },
  {
    "path": ".eslintrc.json",
    "content": "{\n    \"$schema\": \"https://json.schemastore.org/eslintrc\",\n    \"env\": {\n        \"es2021\": true\n    },\n    \"extends\": [\n        \"eslint:recommended\",\n        \"plugin:@typescript-eslint/recommended\"\n    ],\n    \"parser\": \"@typescript-eslint/parser\",\n    \"parserOptions\": {\n        \"ecmaVersion\": 12,\n        \"sourceType\": \"module\"\n    },\n    \"plugins\": [\n        \"@typescript-eslint\"\n    ],\n    \"rules\": {\n        \"indent\": [\n            \"error\",\n            \"tab\",\n            {\n                \"SwitchCase\": 1\n            }\n        ],\n        \"linebreak-style\": [\n            \"error\",\n            \"unix\"\n        ],\n        \"quotes\": [\n            \"error\",\n            \"single\"\n        ],\n        \"semi\": [\n            \"warn\",\n            \"always\"\n        ],\n        \"no-var\": \"error\",\n        \"no-unused-expressions\": \"error\",\n        \"no-unused-labels\": \"error\",\n        \"no-unused-vars\": \"off\",\n        \"@typescript-eslint/no-unused-vars\": [\n            \"error\",\n            {\n                \"vars\": \"all\",\n                \"args\": \"all\",\n                \"varsIgnorePattern\": \"^_\",\n                \"argsIgnorePattern\": \"^_\"\n            }\n        ],\n        \"no-empty\": \"error\",\n        \"no-mixed-spaces-and-tabs\": \"error\",\n        \"comma-dangle\": [\n            \"error\",\n            \"always-multiline\"\n        ],\n        \"lines-between-class-members\": [\n            \"error\",\n            \"always\",\n            {\n                \"exceptAfterSingleLine\": true\n            }\n        ],\n        \"no-multiple-empty-lines\": [\n            \"error\",\n            {\n                \"max\": 2,\n                \"maxEOF\": 0\n            }\n        ],\n        \"object-curly-newline\": [\n            \"error\",\n            {\n                \"multiline\": true\n            }\n        ],\n        \"function-call-argument-newline\": [\n            \"error\",\n            \"consistent\"\n        ],\n        \"function-paren-newline\": [\n            \"error\",\n            \"multiline-arguments\"\n        ],\n        \"eqeqeq\": \"error\"\n    },\n    \"overrides\": [\n        {\n            \"files\": [\n                \"build/**/*.js\",\n                \"extension/**/*.js\"\n            ],\n            \"globals\": {\n                \"log\": \"readonly\",\n                \"global\": \"readonly\",\n                \"imports\": \"readonly\",\n                \"console\": \"readonly\",\n                \"process\": \"readonly\",\n                \"TextEncoder\": \"readonly\",\n                \"TextDecoder\": \"readonly\"\n            },\n            \"rules\": {\n                \"no-console\": \"off\",\n                \"no-var\": \"off\",\n                \"@typescript-eslint/no-unused-vars\": \"off\",\n                \"@typescript-eslint/explicit-module-boundary-types\": \"off\",\n                \"no-unused-expressions\": \"off\",\n                \"no-mixed-spaces-and-tabs\": \"off\",\n                \"comma-dangle\": \"off\",\n                \"no-multiple-empty-lines\": [\"error\", { \"max\": 1 }],\n                \"padding-line-between-statements\": [\n                    \"error\",\n                    { \"blankLine\": \"always\", \"prev\": \"*\", \"next\": [\"function\", \"multiline-var\"] },\n                    {\n                        \"blankLine\": \"always\", \n                        \"prev\": [\n                            \"function\", \"multiline-const\", \n                            \"multiline-var\", \"multiline-let\",\n                            \"multiline-expression\", \"multiline-block-like\"\n                        ],\n                        \"next\": \"*\"\n                    }\n                ],\n                \"lines-around-comment\": [\n                    \"error\",\n                    {\n                        \"beforeBlockComment\": true,\n                        \"beforeLineComment\": true,\n                        \"allowBlockStart\": true\n                    }\n                ]\n            }\n        },\n        {\n            \"env\": {\n                \"node\": true\n            },\n            \"files\": [\n                \"scripts/**/*.ts\"\n            ]\n        }\n    ]\n}"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "# To get started with Dependabot version updates, you'll need to specify which\n# package ecosystems to update and where the package manifests are located.\n# Please see the documentation for all configuration options:\n# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates\n\nversion: 2\nupdates:\n  - package-ecosystem: \"npm\" # See documentation for possible values\n    directory: \"/\" # Location of package manifests\n    schedule:\n      interval: \"monthly\"\n"
  },
  {
    "path": ".github/workflows/ci.yml",
    "content": "name: Build\n\non:\n  push:\n    branches: [\"*\"]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    strategy:\n      matrix:\n        node-version: [16.x]\n\n    steps:\n      - uses: actions/checkout@v3\n\n      - name: Use Node.js ${{ matrix.node-version }}\n        uses: actions/setup-node@v3\n        with:\n          node-version: ${{ matrix.node-version }}\n\n      - name: Install dependencies\n        run: |\n          npm install\n\n      - name: Lint Source\n        run: |\n          npm run clean\n          npm run lint:extension\n\n      - name: Build\n        run: |\n          tsc\n          node build/scripts/transpile.js\n\n      - name: Lint package\n        run: |\n          npm run lint:package\n\n      - name: Create archive artifact\n        run: |\n          make pack\n\n      - name: Create ZipFile Name\n        run: echo \"zipFileName=gestureImprovements.$(date --iso-8601).$(git rev-parse --short HEAD)@gestures.shell-extension.zip\" >> $GITHUB_ENV\n\n      - name: Upload archive artifact\n        uses: \"actions/upload-artifact@v3\"\n        with:\n          name: ${{ env.zipFileName }}\n          path: ${{ github.workspace }}/build/gestureImprovements@gestures.shell-extension.zip\n"
  },
  {
    "path": ".github/workflows/codeql.yml",
    "content": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# You may wish to alter this file to override the set of languages analyzed,\n# or to provide custom queries or build logic.\n#\n# ******** NOTE ********\n# We have attempted to detect the languages in your repository. Please check\n# the `language` matrix defined below to confirm you have the correct set of\n# supported CodeQL languages.\n#\nname: \"CodeQL\"\n\non:\n  push:\n    branches: [ \"main\" ]\n  pull_request:\n    # The branches below must be a subset of the branches above\n    branches: [ \"main\" ]\n  schedule:\n    - cron: '31 5 1 * *'\n\njobs:\n  analyze:\n    name: Analyze\n    runs-on: ubuntu-latest\n    permissions:\n      actions: read\n      contents: read\n      security-events: write\n\n    strategy:\n      fail-fast: false\n      matrix:\n        language: [ 'javascript' ]\n        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]\n        # Use only 'java' to analyze code written in Java, Kotlin or both\n        # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both\n        # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support\n\n    steps:\n    - name: Checkout repository\n      uses: actions/checkout@v3\n\n    # Initializes the CodeQL tools for scanning.\n    - name: Initialize CodeQL\n      uses: github/codeql-action/init@v2\n      with:\n        languages: ${{ matrix.language }}\n        # If you wish to specify custom queries, you can do so here or in a config file.\n        # By default, queries listed here will override any specified in a config file.\n        # Prefix the list here with \"+\" to use these queries and those in the config file.\n\n        # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs\n        # queries: security-extended,security-and-quality\n\n\n    # Autobuild attempts to build any compiled languages  (C/C++, C#, Go, or Java).\n    # If this step fails, then you should remove it and run the build manually (see below)\n    - name: Autobuild\n      uses: github/codeql-action/autobuild@v2\n\n    # ℹ️ Command-line programs to run using the OS shell.\n    # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun\n\n    #   If the Autobuild fails above, remove it and uncomment the following three lines.\n    #   modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.\n\n    # - run: |\n    #     echo \"Run, Build Application using script\"\n    #     ./location_of_script_within_repo/buildscript.sh\n\n    - name: Perform CodeQL Analysis\n      uses: github/codeql-action/analyze@v2\n      with:\n        category: \"/language:${{matrix.language}}\"\n"
  },
  {
    "path": ".github/workflows/pr.yml",
    "content": "name: Linter\n\non:\n  pull_request:\n    branches: [main]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    strategy:\n      matrix:\n        node-version: [16.x]\n\n    steps:\n      - uses: actions/checkout@v3\n\n      - name: Use Node.js ${{ matrix.node-version }}\n        uses: actions/setup-node@v3\n        with:\n          node-version: ${{ matrix.node-version }}\n\n      - name: Install dependencies\n        run: |\n          npm install\n\n      - name: Lint Source\n        run: |\n          npm run clean\n          npm run lint:extension\n"
  },
  {
    "path": ".gitignore",
    "content": "build/\nnode_modules/"
  },
  {
    "path": ".vscode/launch.json",
    "content": "{\n    // Use IntelliSense to learn about possible attributes.\n    // Hover to view descriptions of existing attributes.\n    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            \"type\": \"node\",\n            \"request\": \"launch\",\n            \"name\": \"Launch Program\",\n            \"program\": \"${workspaceFolder}/scripts/transpile.ts\",\n            \"preLaunchTask\": \"npm: build:transpile\",\n            \"outFiles\": [\n                \"${workspaceFolder}/build/transpile.js\"\n            ]\n        }\n    ]\n}"
  },
  {
    "path": ".vscode/settings.json",
    "content": "{\n    \"files.exclude\": {\n        \"**/.git\": true,\n        \"**/.svn\": true,\n        \"**/.hg\": true,\n        \"**/CVS\": true,\n        \"**/.DS_Store\": true,\n        \"**/Thumbs.db\": true,\n        \"node_modules\": true,\n    },\n    \"typescript.preferences.importModuleSpecifierEnding\": \"index\",\n}"
  },
  {
    "path": "@types/adw1/doc.json",
    "content": "{\n    \"name\": \"Adw\",\n    \"api_version\": \"1\",\n    \"package_version\": \"1.3.1\",\n    \"imports\": {\n        \"Gtk\": \"4.0\",\n        \"GObject\": \"2.0\",\n        \"Gio\": \"2.0\",\n        \"GLib\": \"2.0\",\n        \"Gdk\": \"4.0\",\n        \"Pango\": \"1.0\",\n        \"Gsk\": \"4.0\"\n    }\n}"
  },
  {
    "path": "@types/adw1/index.d.ts",
    "content": "/**\n * Adw 1\n *\n * Generated from 1.3.1\n */\n\nimport * as Gtk from \"@gi-types/gtk4\";\nimport * as GObject from \"@gi-types/gobject2\";\nimport * as Gio from \"@gi-types/gio2\";\nimport * as GLib from \"@gi-types/glib2\";\nimport * as Gdk from \"@gi-types/gdk4\";\nimport * as Pango from \"@gi-types/pango1\";\nimport * as Gsk from \"@gi-types/gsk4\";\n\nexport const DURATION_INFINITE: number;\nexport const MAJOR_VERSION: number;\nexport const MICRO_VERSION: number;\nexport const MINOR_VERSION: number;\nexport const VERSION_S: string;\nexport function easing_ease(self: Easing, value: number): number;\nexport function get_enable_animations(widget: Gtk.Widget): boolean;\nexport function get_major_version(): number;\nexport function get_micro_version(): number;\nexport function get_minor_version(): number;\nexport function init(): void;\nexport function is_initialized(): boolean;\nexport function lerp(a: number, b: number, t: number): number;\nexport type AnimationTargetFunc = (value: number) => void;\n\nexport namespace AnimationState {\n    export const $gtype: GObject.GType<AnimationState>;\n}\n\nexport enum AnimationState {\n    IDLE = 0,\n    PAUSED = 1,\n    PLAYING = 2,\n    FINISHED = 3,\n}\n\nexport namespace CenteringPolicy {\n    export const $gtype: GObject.GType<CenteringPolicy>;\n}\n\nexport enum CenteringPolicy {\n    LOOSE = 0,\n    STRICT = 1,\n}\n\nexport namespace ColorScheme {\n    export const $gtype: GObject.GType<ColorScheme>;\n}\n\nexport enum ColorScheme {\n    DEFAULT = 0,\n    FORCE_LIGHT = 1,\n    PREFER_LIGHT = 2,\n    PREFER_DARK = 3,\n    FORCE_DARK = 4,\n}\n\nexport namespace Easing {\n    export const $gtype: GObject.GType<Easing>;\n}\n\nexport enum Easing {\n    LINEAR = 0,\n    EASE_IN_QUAD = 1,\n    EASE_OUT_QUAD = 2,\n    EASE_IN_OUT_QUAD = 3,\n    EASE_IN_CUBIC = 4,\n    EASE_OUT_CUBIC = 5,\n    EASE_IN_OUT_CUBIC = 6,\n    EASE_IN_QUART = 7,\n    EASE_OUT_QUART = 8,\n    EASE_IN_OUT_QUART = 9,\n    EASE_IN_QUINT = 10,\n    EASE_OUT_QUINT = 11,\n    EASE_IN_OUT_QUINT = 12,\n    EASE_IN_SINE = 13,\n    EASE_OUT_SINE = 14,\n    EASE_IN_OUT_SINE = 15,\n    EASE_IN_EXPO = 16,\n    EASE_OUT_EXPO = 17,\n    EASE_IN_OUT_EXPO = 18,\n    EASE_IN_CIRC = 19,\n    EASE_OUT_CIRC = 20,\n    EASE_IN_OUT_CIRC = 21,\n    EASE_IN_ELASTIC = 22,\n    EASE_OUT_ELASTIC = 23,\n    EASE_IN_OUT_ELASTIC = 24,\n    EASE_IN_BACK = 25,\n    EASE_OUT_BACK = 26,\n    EASE_IN_OUT_BACK = 27,\n    EASE_IN_BOUNCE = 28,\n    EASE_OUT_BOUNCE = 29,\n    EASE_IN_OUT_BOUNCE = 30,\n}\n\nexport namespace FlapFoldPolicy {\n    export const $gtype: GObject.GType<FlapFoldPolicy>;\n}\n\nexport enum FlapFoldPolicy {\n    NEVER = 0,\n    ALWAYS = 1,\n    AUTO = 2,\n}\n\nexport namespace FlapTransitionType {\n    export const $gtype: GObject.GType<FlapTransitionType>;\n}\n\nexport enum FlapTransitionType {\n    OVER = 0,\n    UNDER = 1,\n    SLIDE = 2,\n}\n\nexport namespace FoldThresholdPolicy {\n    export const $gtype: GObject.GType<FoldThresholdPolicy>;\n}\n\nexport enum FoldThresholdPolicy {\n    MINIMUM = 0,\n    NATURAL = 1,\n}\n\nexport namespace LeafletTransitionType {\n    export const $gtype: GObject.GType<LeafletTransitionType>;\n}\n\nexport enum LeafletTransitionType {\n    OVER = 0,\n    UNDER = 1,\n    SLIDE = 2,\n}\n\nexport namespace NavigationDirection {\n    export const $gtype: GObject.GType<NavigationDirection>;\n}\n\nexport enum NavigationDirection {\n    BACK = 0,\n    FORWARD = 1,\n}\n\nexport namespace ResponseAppearance {\n    export const $gtype: GObject.GType<ResponseAppearance>;\n}\n\nexport enum ResponseAppearance {\n    DEFAULT = 0,\n    SUGGESTED = 1,\n    DESTRUCTIVE = 2,\n}\n\nexport namespace SqueezerTransitionType {\n    export const $gtype: GObject.GType<SqueezerTransitionType>;\n}\n\nexport enum SqueezerTransitionType {\n    NONE = 0,\n    CROSSFADE = 1,\n}\n\nexport namespace ToastPriority {\n    export const $gtype: GObject.GType<ToastPriority>;\n}\n\nexport enum ToastPriority {\n    NORMAL = 0,\n    HIGH = 1,\n}\n\nexport namespace ViewSwitcherPolicy {\n    export const $gtype: GObject.GType<ViewSwitcherPolicy>;\n}\n\nexport enum ViewSwitcherPolicy {\n    NARROW = 0,\n    WIDE = 1,\n}\n\nexport namespace TabViewShortcuts {\n    export const $gtype: GObject.GType<TabViewShortcuts>;\n}\n\nexport enum TabViewShortcuts {\n    NONE = 0,\n    CONTROL_TAB = 1,\n    CONTROL_SHIFT_TAB = 2,\n    CONTROL_PAGE_UP = 4,\n    CONTROL_PAGE_DOWN = 8,\n    CONTROL_HOME = 16,\n    CONTROL_END = 32,\n    CONTROL_SHIFT_PAGE_UP = 64,\n    CONTROL_SHIFT_PAGE_DOWN = 128,\n    CONTROL_SHIFT_HOME = 256,\n    CONTROL_SHIFT_END = 512,\n    ALT_DIGITS = 1024,\n    ALT_ZERO = 2048,\n    ALL_SHORTCUTS = 4095,\n}\nexport module AboutWindow {\n    export interface ConstructorProperties extends Window.ConstructorProperties {\n        [key: string]: any;\n        application_icon: string;\n        applicationIcon: string;\n        application_name: string;\n        applicationName: string;\n        artists: string[];\n        comments: string;\n        copyright: string;\n        debug_info: string;\n        debugInfo: string;\n        debug_info_filename: string;\n        debugInfoFilename: string;\n        designers: string[];\n        developer_name: string;\n        developerName: string;\n        developers: string[];\n        documenters: string[];\n        issue_url: string;\n        issueUrl: string;\n        license: string;\n        license_type: Gtk.License;\n        licenseType: Gtk.License;\n        release_notes: string;\n        releaseNotes: string;\n        release_notes_version: string;\n        releaseNotesVersion: string;\n        support_url: string;\n        supportUrl: string;\n        translator_credits: string;\n        translatorCredits: string;\n        version: string;\n        website: string;\n    }\n}\nexport class AboutWindow\n    extends Window\n    implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Native, Gtk.Root, Gtk.ShortcutManager\n{\n    static $gtype: GObject.GType<AboutWindow>;\n\n    constructor(properties?: Partial<AboutWindow.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<AboutWindow.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get application_icon(): string;\n    set application_icon(val: string);\n    get applicationIcon(): string;\n    set applicationIcon(val: string);\n    get application_name(): string;\n    set application_name(val: string);\n    get applicationName(): string;\n    set applicationName(val: string);\n    get artists(): string[];\n    set artists(val: string[]);\n    get comments(): string;\n    set comments(val: string);\n    get copyright(): string;\n    set copyright(val: string);\n    get debug_info(): string;\n    set debug_info(val: string);\n    get debugInfo(): string;\n    set debugInfo(val: string);\n    get debug_info_filename(): string;\n    set debug_info_filename(val: string);\n    get debugInfoFilename(): string;\n    set debugInfoFilename(val: string);\n    get designers(): string[];\n    set designers(val: string[]);\n    get developer_name(): string;\n    set developer_name(val: string);\n    get developerName(): string;\n    set developerName(val: string);\n    get developers(): string[];\n    set developers(val: string[]);\n    get documenters(): string[];\n    set documenters(val: string[]);\n    get issue_url(): string;\n    set issue_url(val: string);\n    get issueUrl(): string;\n    set issueUrl(val: string);\n    get license(): string;\n    set license(val: string);\n    get license_type(): Gtk.License;\n    set license_type(val: Gtk.License);\n    get licenseType(): Gtk.License;\n    set licenseType(val: Gtk.License);\n    get release_notes(): string;\n    set release_notes(val: string);\n    get releaseNotes(): string;\n    set releaseNotes(val: string);\n    get release_notes_version(): string;\n    set release_notes_version(val: string);\n    get releaseNotesVersion(): string;\n    set releaseNotesVersion(val: string);\n    get support_url(): string;\n    set support_url(val: string);\n    get supportUrl(): string;\n    set supportUrl(val: string);\n    get translator_credits(): string;\n    set translator_credits(val: string);\n    get translatorCredits(): string;\n    set translatorCredits(val: string);\n    get version(): string;\n    set version(val: string);\n    get website(): string;\n    set website(val: string);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"activate-link\", callback: (_source: this, uri: string) => boolean): number;\n    connect_after(signal: \"activate-link\", callback: (_source: this, uri: string) => boolean): number;\n    emit(signal: \"activate-link\", uri: string): void;\n\n    // Constructors\n\n    static [\"new\"](): AboutWindow;\n\n    // Members\n\n    add_acknowledgement_section(name: string | null, people: string[]): void;\n    add_credit_section(name: string | null, people: string[]): void;\n    add_legal_section(\n        title: string,\n        copyright: string | null,\n        license_type: Gtk.License,\n        license?: string | null\n    ): void;\n    add_link(title: string, url: string): void;\n    get_application_icon(): string;\n    get_application_name(): string;\n    get_artists(): string[] | null;\n    get_comments(): string;\n    get_copyright(): string;\n    get_debug_info(): string;\n    get_debug_info_filename(): string;\n    get_designers(): string[] | null;\n    get_developer_name(): string;\n    get_developers(): string[] | null;\n    get_documenters(): string[] | null;\n    get_issue_url(): string;\n    get_license(): string;\n    get_license_type(): Gtk.License;\n    get_release_notes(): string;\n    get_release_notes_version(): string;\n    get_support_url(): string;\n    get_translator_credits(): string;\n    get_version(): string;\n    get_website(): string;\n    set_application_icon(application_icon: string): void;\n    set_application_name(application_name: string): void;\n    set_artists(artists?: string[] | null): void;\n    set_comments(comments: string): void;\n    set_copyright(copyright: string): void;\n    set_debug_info(debug_info: string): void;\n    set_debug_info_filename(filename: string): void;\n    set_designers(designers?: string[] | null): void;\n    set_developer_name(developer_name: string): void;\n    set_developers(developers?: string[] | null): void;\n    set_documenters(documenters?: string[] | null): void;\n    set_issue_url(issue_url: string): void;\n    set_license(license: string): void;\n    set_license_type(license_type: Gtk.License): void;\n    set_release_notes(release_notes: string): void;\n    set_release_notes_version(version: string): void;\n    set_support_url(support_url: string): void;\n    set_translator_credits(translator_credits: string): void;\n    set_version(version: string): void;\n    set_website(website: string): void;\n}\nexport module ActionRow {\n    export interface ConstructorProperties extends PreferencesRow.ConstructorProperties {\n        [key: string]: any;\n        activatable_widget: Gtk.Widget;\n        activatableWidget: Gtk.Widget;\n        icon_name: string;\n        iconName: string;\n        subtitle: string;\n        subtitle_lines: number;\n        subtitleLines: number;\n        subtitle_selectable: boolean;\n        subtitleSelectable: boolean;\n        title_lines: number;\n        titleLines: number;\n    }\n}\nexport class ActionRow\n    extends PreferencesRow\n    implements Gtk.Accessible, Gtk.Actionable, Gtk.Buildable, Gtk.ConstraintTarget\n{\n    static $gtype: GObject.GType<ActionRow>;\n\n    constructor(properties?: Partial<ActionRow.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ActionRow.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get activatable_widget(): Gtk.Widget;\n    set activatable_widget(val: Gtk.Widget);\n    get activatableWidget(): Gtk.Widget;\n    set activatableWidget(val: Gtk.Widget);\n    get icon_name(): string;\n    set icon_name(val: string);\n    get iconName(): string;\n    set iconName(val: string);\n    get subtitle(): string;\n    set subtitle(val: string);\n    get subtitle_lines(): number;\n    set subtitle_lines(val: number);\n    get subtitleLines(): number;\n    set subtitleLines(val: number);\n    get subtitle_selectable(): boolean;\n    set subtitle_selectable(val: boolean);\n    get subtitleSelectable(): boolean;\n    set subtitleSelectable(val: boolean);\n    get title_lines(): number;\n    set title_lines(val: number);\n    get titleLines(): number;\n    set titleLines(val: number);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"activated\", callback: (_source: this) => void): number;\n    connect_after(signal: \"activated\", callback: (_source: this) => void): number;\n    emit(signal: \"activated\"): void;\n\n    // Constructors\n\n    static [\"new\"](): ActionRow;\n\n    // Members\n\n    activate(): void;\n    // Conflicted with Gtk.Widget.activate\n    activate(...args: never[]): any;\n    add_prefix(widget: Gtk.Widget): void;\n    add_suffix(widget: Gtk.Widget): void;\n    get_activatable_widget(): Gtk.Widget | null;\n    get_icon_name(): string | null;\n    get_subtitle(): string | null;\n    get_subtitle_lines(): number;\n    get_subtitle_selectable(): boolean;\n    get_title_lines(): number;\n    remove(widget: Gtk.Widget): void;\n    set_activatable_widget(widget?: Gtk.Widget | null): void;\n    set_icon_name(icon_name?: string | null): void;\n    set_subtitle(subtitle: string): void;\n    set_subtitle_lines(subtitle_lines: number): void;\n    set_subtitle_selectable(subtitle_selectable: boolean): void;\n    set_title_lines(title_lines: number): void;\n    vfunc_activate(): void;\n}\nexport module Animation {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        follow_enable_animations_setting: boolean;\n        followEnableAnimationsSetting: boolean;\n        state: AnimationState;\n        target: AnimationTarget;\n        value: number;\n        widget: Gtk.Widget;\n    }\n}\nexport abstract class Animation extends GObject.Object {\n    static $gtype: GObject.GType<Animation>;\n\n    constructor(properties?: Partial<Animation.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Animation.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get follow_enable_animations_setting(): boolean;\n    set follow_enable_animations_setting(val: boolean);\n    get followEnableAnimationsSetting(): boolean;\n    set followEnableAnimationsSetting(val: boolean);\n    get state(): AnimationState;\n    get target(): AnimationTarget;\n    set target(val: AnimationTarget);\n    get value(): number;\n    get widget(): Gtk.Widget;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"done\", callback: (_source: this) => void): number;\n    connect_after(signal: \"done\", callback: (_source: this) => void): number;\n    emit(signal: \"done\"): void;\n\n    // Members\n\n    get_follow_enable_animations_setting(): boolean;\n    get_state(): AnimationState;\n    get_target(): AnimationTarget;\n    get_value(): number;\n    get_widget(): Gtk.Widget;\n    pause(): void;\n    play(): void;\n    reset(): void;\n    resume(): void;\n    set_follow_enable_animations_setting(setting: boolean): void;\n    set_target(target: AnimationTarget): void;\n    skip(): void;\n}\nexport module AnimationTarget {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport abstract class AnimationTarget extends GObject.Object {\n    static $gtype: GObject.GType<AnimationTarget>;\n\n    constructor(properties?: Partial<AnimationTarget.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<AnimationTarget.ConstructorProperties>, ...args: any[]): void;\n}\nexport module Application {\n    export interface ConstructorProperties extends Gtk.Application.ConstructorProperties {\n        [key: string]: any;\n        style_manager: StyleManager;\n        styleManager: StyleManager;\n    }\n}\nexport class Application extends Gtk.Application implements Gio.ActionGroup, Gio.ActionMap {\n    static $gtype: GObject.GType<Application>;\n\n    constructor(properties?: Partial<Application.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Application.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get style_manager(): StyleManager;\n    get styleManager(): StyleManager;\n\n    // Constructors\n\n    static [\"new\"](application_id: string | null, flags: Gio.ApplicationFlags): Application;\n\n    // Members\n\n    get_style_manager(): StyleManager;\n}\nexport module ApplicationWindow {\n    export interface ConstructorProperties extends Gtk.ApplicationWindow.ConstructorProperties {\n        [key: string]: any;\n        content: Gtk.Widget;\n    }\n}\nexport class ApplicationWindow\n    extends Gtk.ApplicationWindow\n    implements\n        Gio.ActionGroup,\n        Gio.ActionMap,\n        Gtk.Accessible,\n        Gtk.Buildable,\n        Gtk.ConstraintTarget,\n        Gtk.Native,\n        Gtk.Root,\n        Gtk.ShortcutManager\n{\n    static $gtype: GObject.GType<ApplicationWindow>;\n\n    constructor(properties?: Partial<ApplicationWindow.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ApplicationWindow.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get content(): Gtk.Widget;\n    set content(val: Gtk.Widget);\n\n    // Constructors\n\n    static [\"new\"](app: Gtk.Application): ApplicationWindow;\n    // Conflicted with Gtk.Window.new\n    static [\"new\"](...args: never[]): any;\n\n    // Members\n\n    get_content(): Gtk.Widget | null;\n    set_content(content?: Gtk.Widget | null): void;\n\n    // Implemented Members\n\n    action_added(action_name: string): void;\n    action_enabled_changed(action_name: string, enabled: boolean): void;\n    action_removed(action_name: string): void;\n    action_state_changed(action_name: string, state: GLib.Variant): void;\n    activate_action(action_name: string, parameter?: GLib.Variant | null): void;\n    // Conflicted with Gtk.Widget.activate_action\n    activate_action(...args: never[]): any;\n    change_action_state(action_name: string, value: GLib.Variant): void;\n    get_action_enabled(action_name: string): boolean;\n    get_action_parameter_type(action_name: string): GLib.VariantType | null;\n    get_action_state(action_name: string): GLib.Variant | null;\n    get_action_state_hint(action_name: string): GLib.Variant | null;\n    get_action_state_type(action_name: string): GLib.VariantType | null;\n    has_action(action_name: string): boolean;\n    list_actions(): string[];\n    query_action(\n        action_name: string\n    ): [boolean, boolean, GLib.VariantType | null, GLib.VariantType | null, GLib.Variant | null, GLib.Variant | null];\n    vfunc_action_added(action_name: string): void;\n    vfunc_action_enabled_changed(action_name: string, enabled: boolean): void;\n    vfunc_action_removed(action_name: string): void;\n    vfunc_action_state_changed(action_name: string, state: GLib.Variant): void;\n    vfunc_activate_action(action_name: string, parameter?: GLib.Variant | null): void;\n    vfunc_change_action_state(action_name: string, value: GLib.Variant): void;\n    vfunc_get_action_enabled(action_name: string): boolean;\n    vfunc_get_action_parameter_type(action_name: string): GLib.VariantType | null;\n    vfunc_get_action_state(action_name: string): GLib.Variant | null;\n    vfunc_get_action_state_hint(action_name: string): GLib.Variant | null;\n    vfunc_get_action_state_type(action_name: string): GLib.VariantType | null;\n    vfunc_has_action(action_name: string): boolean;\n    vfunc_list_actions(): string[];\n    vfunc_query_action(\n        action_name: string\n    ): [boolean, boolean, GLib.VariantType | null, GLib.VariantType | null, GLib.Variant | null, GLib.Variant | null];\n    add_action(action: Gio.Action): void;\n    add_action_entries(entries: Gio.ActionEntry[], user_data?: any | null): void;\n    lookup_action(action_name: string): Gio.Action | null;\n    remove_action(action_name: string): void;\n    vfunc_add_action(action: Gio.Action): void;\n    vfunc_lookup_action(action_name: string): Gio.Action | null;\n    vfunc_remove_action(action_name: string): void;\n}\nexport module Avatar {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        custom_image: Gdk.Paintable;\n        customImage: Gdk.Paintable;\n        icon_name: string;\n        iconName: string;\n        show_initials: boolean;\n        showInitials: boolean;\n        size: number;\n        text: string;\n    }\n}\nexport class Avatar extends Gtk.Widget implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<Avatar>;\n\n    constructor(properties?: Partial<Avatar.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Avatar.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get custom_image(): Gdk.Paintable;\n    set custom_image(val: Gdk.Paintable);\n    get customImage(): Gdk.Paintable;\n    set customImage(val: Gdk.Paintable);\n    get icon_name(): string;\n    set icon_name(val: string);\n    get iconName(): string;\n    set iconName(val: string);\n    get show_initials(): boolean;\n    set show_initials(val: boolean);\n    get showInitials(): boolean;\n    set showInitials(val: boolean);\n    get size(): number;\n    set size(val: number);\n    get text(): string;\n    set text(val: string);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Constructors\n\n    static [\"new\"](size: number, text: string | null, show_initials: boolean): Avatar;\n\n    // Members\n\n    draw_to_texture(scale_factor: number): Gdk.Texture;\n    get_custom_image(): Gdk.Paintable | null;\n    get_icon_name(): string | null;\n    get_show_initials(): boolean;\n    get_size(): number;\n    get_text(): string | null;\n    set_custom_image(custom_image?: Gdk.Paintable | null): void;\n    set_icon_name(icon_name?: string | null): void;\n    set_show_initials(show_initials: boolean): void;\n    set_size(size: number): void;\n    set_text(text?: string | null): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module Banner {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        button_label: string;\n        buttonLabel: string;\n        revealed: boolean;\n        title: string;\n        use_markup: boolean;\n        useMarkup: boolean;\n    }\n}\nexport class Banner extends Gtk.Widget implements Gtk.Accessible, Gtk.Actionable, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<Banner>;\n\n    constructor(properties?: Partial<Banner.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Banner.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get button_label(): string;\n    set button_label(val: string);\n    get buttonLabel(): string;\n    set buttonLabel(val: string);\n    get revealed(): boolean;\n    set revealed(val: boolean);\n    get title(): string;\n    set title(val: string);\n    get use_markup(): boolean;\n    set use_markup(val: boolean);\n    get useMarkup(): boolean;\n    set useMarkup(val: boolean);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"button-clicked\", callback: (_source: this) => void): number;\n    connect_after(signal: \"button-clicked\", callback: (_source: this) => void): number;\n    emit(signal: \"button-clicked\"): void;\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n    get action_name(): string;\n    set action_name(val: string);\n    get actionName(): string;\n    set actionName(val: string);\n    get action_target(): GLib.Variant;\n    set action_target(val: GLib.Variant);\n    get actionTarget(): GLib.Variant;\n    set actionTarget(val: GLib.Variant);\n\n    // Constructors\n\n    static [\"new\"](title: string): Banner;\n\n    // Members\n\n    get_button_label(): string | null;\n    get_revealed(): boolean;\n    get_title(): string;\n    get_use_markup(): boolean;\n    set_button_label(label?: string | null): void;\n    set_revealed(revealed: boolean): void;\n    set_title(title: string): void;\n    set_use_markup(use_markup: boolean): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_action_name(): string | null;\n    get_action_target_value(): GLib.Variant | null;\n    set_action_name(action_name?: string | null): void;\n    set_action_target_value(target_value?: GLib.Variant | null): void;\n    set_detailed_action_name(detailed_action_name: string): void;\n    vfunc_get_action_name(): string | null;\n    vfunc_get_action_target_value(): GLib.Variant | null;\n    vfunc_set_action_name(action_name?: string | null): void;\n    vfunc_set_action_target_value(target_value?: GLib.Variant | null): void;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module Bin {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        child: Gtk.Widget;\n    }\n}\nexport class Bin extends Gtk.Widget implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<Bin>;\n\n    constructor(properties?: Partial<Bin.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Bin.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get child(): Gtk.Widget;\n    set child(val: Gtk.Widget);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Constructors\n\n    static [\"new\"](): Bin;\n\n    // Members\n\n    get_child(): Gtk.Widget | null;\n    set_child(child?: Gtk.Widget | null): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module ButtonContent {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        icon_name: string;\n        iconName: string;\n        label: string;\n        use_underline: boolean;\n        useUnderline: boolean;\n    }\n}\nexport class ButtonContent extends Gtk.Widget implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<ButtonContent>;\n\n    constructor(properties?: Partial<ButtonContent.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ButtonContent.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get icon_name(): string;\n    set icon_name(val: string);\n    get iconName(): string;\n    set iconName(val: string);\n    get label(): string;\n    set label(val: string);\n    get use_underline(): boolean;\n    set use_underline(val: boolean);\n    get useUnderline(): boolean;\n    set useUnderline(val: boolean);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Constructors\n\n    static [\"new\"](): ButtonContent;\n\n    // Members\n\n    get_icon_name(): string;\n    get_label(): string;\n    get_use_underline(): boolean;\n    set_icon_name(icon_name: string): void;\n    set_label(label: string): void;\n    set_use_underline(use_underline: boolean): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module CallbackAnimationTarget {\n    export interface ConstructorProperties extends AnimationTarget.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class CallbackAnimationTarget extends AnimationTarget {\n    static $gtype: GObject.GType<CallbackAnimationTarget>;\n\n    constructor(properties?: Partial<CallbackAnimationTarget.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<CallbackAnimationTarget.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](): CallbackAnimationTarget;\n}\nexport module Carousel {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        allow_long_swipes: boolean;\n        allowLongSwipes: boolean;\n        allow_mouse_drag: boolean;\n        allowMouseDrag: boolean;\n        allow_scroll_wheel: boolean;\n        allowScrollWheel: boolean;\n        interactive: boolean;\n        n_pages: number;\n        nPages: number;\n        position: number;\n        reveal_duration: number;\n        revealDuration: number;\n        scroll_params: SpringParams;\n        scrollParams: SpringParams;\n        spacing: number;\n    }\n}\nexport class Carousel\n    extends Gtk.Widget\n    implements Swipeable, Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Orientable\n{\n    static $gtype: GObject.GType<Carousel>;\n\n    constructor(properties?: Partial<Carousel.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Carousel.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get allow_long_swipes(): boolean;\n    set allow_long_swipes(val: boolean);\n    get allowLongSwipes(): boolean;\n    set allowLongSwipes(val: boolean);\n    get allow_mouse_drag(): boolean;\n    set allow_mouse_drag(val: boolean);\n    get allowMouseDrag(): boolean;\n    set allowMouseDrag(val: boolean);\n    get allow_scroll_wheel(): boolean;\n    set allow_scroll_wheel(val: boolean);\n    get allowScrollWheel(): boolean;\n    set allowScrollWheel(val: boolean);\n    get interactive(): boolean;\n    set interactive(val: boolean);\n    get n_pages(): number;\n    get nPages(): number;\n    get position(): number;\n    get reveal_duration(): number;\n    set reveal_duration(val: number);\n    get revealDuration(): number;\n    set revealDuration(val: number);\n    get scroll_params(): SpringParams;\n    set scroll_params(val: SpringParams);\n    get scrollParams(): SpringParams;\n    set scrollParams(val: SpringParams);\n    get spacing(): number;\n    set spacing(val: number);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"page-changed\", callback: (_source: this, index: number) => void): number;\n    connect_after(signal: \"page-changed\", callback: (_source: this, index: number) => void): number;\n    emit(signal: \"page-changed\", index: number): void;\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n    get orientation(): Gtk.Orientation;\n    set orientation(val: Gtk.Orientation);\n\n    // Constructors\n\n    static [\"new\"](): Carousel;\n\n    // Members\n\n    append(child: Gtk.Widget): void;\n    get_allow_long_swipes(): boolean;\n    get_allow_mouse_drag(): boolean;\n    get_allow_scroll_wheel(): boolean;\n    get_interactive(): boolean;\n    get_n_pages(): number;\n    get_nth_page(n: number): Gtk.Widget;\n    get_position(): number;\n    get_reveal_duration(): number;\n    get_scroll_params(): SpringParams;\n    get_spacing(): number;\n    insert(child: Gtk.Widget, position: number): void;\n    prepend(child: Gtk.Widget): void;\n    remove(child: Gtk.Widget): void;\n    reorder(child: Gtk.Widget, position: number): void;\n    scroll_to(widget: Gtk.Widget, animate: boolean): void;\n    set_allow_long_swipes(allow_long_swipes: boolean): void;\n    set_allow_mouse_drag(allow_mouse_drag: boolean): void;\n    set_allow_scroll_wheel(allow_scroll_wheel: boolean): void;\n    set_interactive(interactive: boolean): void;\n    set_reveal_duration(reveal_duration: number): void;\n    set_scroll_params(params: SpringParams): void;\n    set_spacing(spacing: number): void;\n\n    // Implemented Members\n\n    get_cancel_progress(): number;\n    get_distance(): number;\n    get_progress(): number;\n    get_snap_points(): number[];\n    get_swipe_area(navigation_direction: NavigationDirection, is_drag: boolean): Gdk.Rectangle;\n    vfunc_get_cancel_progress(): number;\n    vfunc_get_distance(): number;\n    vfunc_get_progress(): number;\n    vfunc_get_snap_points(): number[];\n    vfunc_get_swipe_area(navigation_direction: NavigationDirection, is_drag: boolean): Gdk.Rectangle;\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n    get_orientation(): Gtk.Orientation;\n    set_orientation(orientation: Gtk.Orientation): void;\n}\nexport module CarouselIndicatorDots {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        carousel: Carousel;\n    }\n}\nexport class CarouselIndicatorDots\n    extends Gtk.Widget\n    implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Orientable\n{\n    static $gtype: GObject.GType<CarouselIndicatorDots>;\n\n    constructor(properties?: Partial<CarouselIndicatorDots.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<CarouselIndicatorDots.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get carousel(): Carousel;\n    set carousel(val: Carousel);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n    get orientation(): Gtk.Orientation;\n    set orientation(val: Gtk.Orientation);\n\n    // Constructors\n\n    static [\"new\"](): CarouselIndicatorDots;\n\n    // Members\n\n    get_carousel(): Carousel | null;\n    set_carousel(carousel?: Carousel | null): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n    get_orientation(): Gtk.Orientation;\n    set_orientation(orientation: Gtk.Orientation): void;\n}\nexport module CarouselIndicatorLines {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        carousel: Carousel;\n    }\n}\nexport class CarouselIndicatorLines\n    extends Gtk.Widget\n    implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Orientable\n{\n    static $gtype: GObject.GType<CarouselIndicatorLines>;\n\n    constructor(properties?: Partial<CarouselIndicatorLines.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<CarouselIndicatorLines.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get carousel(): Carousel;\n    set carousel(val: Carousel);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n    get orientation(): Gtk.Orientation;\n    set orientation(val: Gtk.Orientation);\n\n    // Constructors\n\n    static [\"new\"](): CarouselIndicatorLines;\n\n    // Members\n\n    get_carousel(): Carousel | null;\n    set_carousel(carousel?: Carousel | null): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n    get_orientation(): Gtk.Orientation;\n    set_orientation(orientation: Gtk.Orientation): void;\n}\nexport module Clamp {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        child: Gtk.Widget;\n        maximum_size: number;\n        maximumSize: number;\n        tightening_threshold: number;\n        tighteningThreshold: number;\n    }\n}\nexport class Clamp extends Gtk.Widget implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Orientable {\n    static $gtype: GObject.GType<Clamp>;\n\n    constructor(properties?: Partial<Clamp.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Clamp.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get child(): Gtk.Widget;\n    set child(val: Gtk.Widget);\n    get maximum_size(): number;\n    set maximum_size(val: number);\n    get maximumSize(): number;\n    set maximumSize(val: number);\n    get tightening_threshold(): number;\n    set tightening_threshold(val: number);\n    get tighteningThreshold(): number;\n    set tighteningThreshold(val: number);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n    get orientation(): Gtk.Orientation;\n    set orientation(val: Gtk.Orientation);\n\n    // Constructors\n\n    static [\"new\"](): Clamp;\n\n    // Members\n\n    get_child(): Gtk.Widget | null;\n    get_maximum_size(): number;\n    get_tightening_threshold(): number;\n    set_child(child?: Gtk.Widget | null): void;\n    set_maximum_size(maximum_size: number): void;\n    set_tightening_threshold(tightening_threshold: number): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n    get_orientation(): Gtk.Orientation;\n    set_orientation(orientation: Gtk.Orientation): void;\n}\nexport module ClampLayout {\n    export interface ConstructorProperties extends Gtk.LayoutManager.ConstructorProperties {\n        [key: string]: any;\n        maximum_size: number;\n        maximumSize: number;\n        tightening_threshold: number;\n        tighteningThreshold: number;\n    }\n}\nexport class ClampLayout extends Gtk.LayoutManager implements Gtk.Orientable {\n    static $gtype: GObject.GType<ClampLayout>;\n\n    constructor(properties?: Partial<ClampLayout.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ClampLayout.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get maximum_size(): number;\n    set maximum_size(val: number);\n    get maximumSize(): number;\n    set maximumSize(val: number);\n    get tightening_threshold(): number;\n    set tightening_threshold(val: number);\n    get tighteningThreshold(): number;\n    set tighteningThreshold(val: number);\n\n    // Implemented Properties\n\n    get orientation(): Gtk.Orientation;\n    set orientation(val: Gtk.Orientation);\n\n    // Constructors\n\n    static [\"new\"](): ClampLayout;\n\n    // Members\n\n    get_maximum_size(): number;\n    get_tightening_threshold(): number;\n    set_maximum_size(maximum_size: number): void;\n    set_tightening_threshold(tightening_threshold: number): void;\n\n    // Implemented Members\n\n    get_orientation(): Gtk.Orientation;\n    set_orientation(orientation: Gtk.Orientation): void;\n}\nexport module ClampScrollable {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        child: Gtk.Widget;\n        maximum_size: number;\n        maximumSize: number;\n        tightening_threshold: number;\n        tighteningThreshold: number;\n    }\n}\nexport class ClampScrollable\n    extends Gtk.Widget\n    implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Orientable, Gtk.Scrollable\n{\n    static $gtype: GObject.GType<ClampScrollable>;\n\n    constructor(properties?: Partial<ClampScrollable.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ClampScrollable.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get child(): Gtk.Widget;\n    set child(val: Gtk.Widget);\n    get maximum_size(): number;\n    set maximum_size(val: number);\n    get maximumSize(): number;\n    set maximumSize(val: number);\n    get tightening_threshold(): number;\n    set tightening_threshold(val: number);\n    get tighteningThreshold(): number;\n    set tighteningThreshold(val: number);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n    get orientation(): Gtk.Orientation;\n    set orientation(val: Gtk.Orientation);\n    get hadjustment(): Gtk.Adjustment;\n    set hadjustment(val: Gtk.Adjustment);\n    get hscroll_policy(): Gtk.ScrollablePolicy;\n    set hscroll_policy(val: Gtk.ScrollablePolicy);\n    get hscrollPolicy(): Gtk.ScrollablePolicy;\n    set hscrollPolicy(val: Gtk.ScrollablePolicy);\n    get vadjustment(): Gtk.Adjustment;\n    set vadjustment(val: Gtk.Adjustment);\n    get vscroll_policy(): Gtk.ScrollablePolicy;\n    set vscroll_policy(val: Gtk.ScrollablePolicy);\n    get vscrollPolicy(): Gtk.ScrollablePolicy;\n    set vscrollPolicy(val: Gtk.ScrollablePolicy);\n\n    // Constructors\n\n    static [\"new\"](): ClampScrollable;\n\n    // Members\n\n    get_child(): Gtk.Widget | null;\n    get_maximum_size(): number;\n    get_tightening_threshold(): number;\n    set_child(child?: Gtk.Widget | null): void;\n    set_maximum_size(maximum_size: number): void;\n    set_tightening_threshold(tightening_threshold: number): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n    get_orientation(): Gtk.Orientation;\n    set_orientation(orientation: Gtk.Orientation): void;\n    get_border(): [boolean, Gtk.Border];\n    get_hadjustment(): Gtk.Adjustment | null;\n    get_hscroll_policy(): Gtk.ScrollablePolicy;\n    get_vadjustment(): Gtk.Adjustment | null;\n    get_vscroll_policy(): Gtk.ScrollablePolicy;\n    set_hadjustment(hadjustment?: Gtk.Adjustment | null): void;\n    set_hscroll_policy(policy: Gtk.ScrollablePolicy): void;\n    set_vadjustment(vadjustment?: Gtk.Adjustment | null): void;\n    set_vscroll_policy(policy: Gtk.ScrollablePolicy): void;\n    vfunc_get_border(): [boolean, Gtk.Border];\n}\nexport module ComboRow {\n    export interface ConstructorProperties extends ActionRow.ConstructorProperties {\n        [key: string]: any;\n        expression: Gtk.Expression;\n        factory: Gtk.ListItemFactory;\n        list_factory: Gtk.ListItemFactory;\n        listFactory: Gtk.ListItemFactory;\n        model: Gio.ListModel;\n        selected: number;\n        selected_item: GObject.Object;\n        selectedItem: GObject.Object;\n        use_subtitle: boolean;\n        useSubtitle: boolean;\n    }\n}\nexport class ComboRow extends ActionRow implements Gtk.Accessible, Gtk.Actionable, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<ComboRow>;\n\n    constructor(properties?: Partial<ComboRow.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ComboRow.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get expression(): Gtk.Expression;\n    set expression(val: Gtk.Expression);\n    get factory(): Gtk.ListItemFactory;\n    set factory(val: Gtk.ListItemFactory);\n    get list_factory(): Gtk.ListItemFactory;\n    set list_factory(val: Gtk.ListItemFactory);\n    get listFactory(): Gtk.ListItemFactory;\n    set listFactory(val: Gtk.ListItemFactory);\n    get model(): Gio.ListModel;\n    set model(val: Gio.ListModel);\n    get selected(): number;\n    set selected(val: number);\n    get selected_item(): GObject.Object;\n    get selectedItem(): GObject.Object;\n    get use_subtitle(): boolean;\n    set use_subtitle(val: boolean);\n    get useSubtitle(): boolean;\n    set useSubtitle(val: boolean);\n\n    // Constructors\n\n    static [\"new\"](): ComboRow;\n\n    // Members\n\n    get_expression(): Gtk.Expression | null;\n    get_factory(): Gtk.ListItemFactory | null;\n    get_list_factory(): Gtk.ListItemFactory | null;\n    get_model(): Gio.ListModel | null;\n    get_selected(): number;\n    get_selected_item<T = GObject.Object>(): T;\n    get_use_subtitle(): boolean;\n    set_expression(expression?: Gtk.Expression | null): void;\n    set_factory(factory?: Gtk.ListItemFactory | null): void;\n    set_list_factory(factory?: Gtk.ListItemFactory | null): void;\n    set_model(model?: Gio.ListModel | null): void;\n    set_selected(position: number): void;\n    set_use_subtitle(use_subtitle: boolean): void;\n}\nexport module EntryRow {\n    export interface ConstructorProperties extends PreferencesRow.ConstructorProperties {\n        [key: string]: any;\n        activates_default: boolean;\n        activatesDefault: boolean;\n        attributes: Pango.AttrList;\n        enable_emoji_completion: boolean;\n        enableEmojiCompletion: boolean;\n        input_hints: Gtk.InputHints;\n        inputHints: Gtk.InputHints;\n        input_purpose: Gtk.InputPurpose;\n        inputPurpose: Gtk.InputPurpose;\n        show_apply_button: boolean;\n        showApplyButton: boolean;\n    }\n}\nexport class EntryRow\n    extends PreferencesRow\n    implements Gtk.Accessible, Gtk.Actionable, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Editable\n{\n    static $gtype: GObject.GType<EntryRow>;\n\n    constructor(properties?: Partial<EntryRow.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<EntryRow.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get activates_default(): boolean;\n    set activates_default(val: boolean);\n    get activatesDefault(): boolean;\n    set activatesDefault(val: boolean);\n    get attributes(): Pango.AttrList;\n    set attributes(val: Pango.AttrList);\n    get enable_emoji_completion(): boolean;\n    set enable_emoji_completion(val: boolean);\n    get enableEmojiCompletion(): boolean;\n    set enableEmojiCompletion(val: boolean);\n    get input_hints(): Gtk.InputHints;\n    set input_hints(val: Gtk.InputHints);\n    get inputHints(): Gtk.InputHints;\n    set inputHints(val: Gtk.InputHints);\n    get input_purpose(): Gtk.InputPurpose;\n    set input_purpose(val: Gtk.InputPurpose);\n    get inputPurpose(): Gtk.InputPurpose;\n    set inputPurpose(val: Gtk.InputPurpose);\n    get show_apply_button(): boolean;\n    set show_apply_button(val: boolean);\n    get showApplyButton(): boolean;\n    set showApplyButton(val: boolean);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"apply\", callback: (_source: this) => void): number;\n    connect_after(signal: \"apply\", callback: (_source: this) => void): number;\n    emit(signal: \"apply\"): void;\n    connect(signal: \"entry-activated\", callback: (_source: this) => void): number;\n    connect_after(signal: \"entry-activated\", callback: (_source: this) => void): number;\n    emit(signal: \"entry-activated\"): void;\n\n    // Implemented Properties\n\n    get cursor_position(): number;\n    get cursorPosition(): number;\n    get editable(): boolean;\n    set editable(val: boolean);\n    get enable_undo(): boolean;\n    set enable_undo(val: boolean);\n    get enableUndo(): boolean;\n    set enableUndo(val: boolean);\n    get max_width_chars(): number;\n    set max_width_chars(val: number);\n    get maxWidthChars(): number;\n    set maxWidthChars(val: number);\n    get selection_bound(): number;\n    get selectionBound(): number;\n    get text(): string;\n    set text(val: string);\n    get width_chars(): number;\n    set width_chars(val: number);\n    get widthChars(): number;\n    set widthChars(val: number);\n    get xalign(): number;\n    set xalign(val: number);\n\n    // Constructors\n\n    static [\"new\"](): EntryRow;\n\n    // Members\n\n    add_prefix(widget: Gtk.Widget): void;\n    add_suffix(widget: Gtk.Widget): void;\n    get_activates_default(): boolean;\n    get_attributes(): Pango.AttrList | null;\n    get_enable_emoji_completion(): boolean;\n    get_input_hints(): Gtk.InputHints;\n    get_input_purpose(): Gtk.InputPurpose;\n    get_show_apply_button(): boolean;\n    grab_focus_without_selecting(): boolean;\n    remove(widget: Gtk.Widget): void;\n    set_activates_default(activates: boolean): void;\n    set_attributes(attributes?: Pango.AttrList | null): void;\n    set_enable_emoji_completion(enable_emoji_completion: boolean): void;\n    set_input_hints(hints: Gtk.InputHints): void;\n    set_input_purpose(purpose: Gtk.InputPurpose): void;\n    set_show_apply_button(show_apply_button: boolean): void;\n\n    // Implemented Members\n\n    delegate_get_accessible_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    delete_selection(): void;\n    delete_text(start_pos: number, end_pos: number): void;\n    finish_delegate(): void;\n    get_alignment(): number;\n    get_chars(start_pos: number, end_pos: number): string;\n    get_delegate(): Gtk.Editable | null;\n    get_editable(): boolean;\n    get_enable_undo(): boolean;\n    get_max_width_chars(): number;\n    get_position(): number;\n    get_selection_bounds(): [boolean, number | null, number | null];\n    get_text(): string;\n    get_width_chars(): number;\n    init_delegate(): void;\n    insert_text(text: string, length: number, position: number): number;\n    select_region(start_pos: number, end_pos: number): void;\n    set_alignment(xalign: number): void;\n    set_editable(is_editable: boolean): void;\n    set_enable_undo(enable_undo: boolean): void;\n    set_max_width_chars(n_chars: number): void;\n    set_position(position: number): void;\n    set_text(text: string): void;\n    set_width_chars(n_chars: number): void;\n    vfunc_changed(): void;\n    vfunc_delete_text(start_pos: number, end_pos: number): void;\n    vfunc_do_delete_text(start_pos: number, end_pos: number): void;\n    vfunc_do_insert_text(text: string, length: number, position: number): number;\n    vfunc_get_delegate(): Gtk.Editable | null;\n    vfunc_get_selection_bounds(): [boolean, number | null, number | null];\n    vfunc_get_text(): string;\n    vfunc_insert_text(text: string, length: number, position: number): number;\n    vfunc_set_selection_bounds(start_pos: number, end_pos: number): void;\n}\nexport module EnumListItem {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        name: string;\n        nick: string;\n        value: number;\n    }\n}\nexport class EnumListItem extends GObject.Object {\n    static $gtype: GObject.GType<EnumListItem>;\n\n    constructor(properties?: Partial<EnumListItem.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<EnumListItem.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get name(): string;\n    get nick(): string;\n    get value(): number;\n\n    // Members\n\n    get_name(): string;\n    get_nick(): string;\n    get_value(): number;\n}\nexport module EnumListModel {\n    export interface ConstructorProperties<A extends GObject.Object = GObject.Object>\n        extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        enum_type: GObject.GType;\n        enumType: GObject.GType;\n    }\n}\nexport class EnumListModel<A extends GObject.Object = GObject.Object>\n    extends GObject.Object\n    implements Gio.ListModel<A>\n{\n    static $gtype: GObject.GType<EnumListModel>;\n\n    constructor(properties?: Partial<EnumListModel.ConstructorProperties<A>>, ...args: any[]);\n    _init(properties?: Partial<EnumListModel.ConstructorProperties<A>>, ...args: any[]): void;\n\n    // Properties\n    get enum_type(): GObject.GType;\n    get enumType(): GObject.GType;\n\n    // Constructors\n\n    static [\"new\"](enum_type: GObject.GType): EnumListModel;\n\n    // Members\n\n    find_position(value: number): number;\n    get_enum_type(): GObject.GType;\n\n    // Implemented Members\n\n    get_item_type(): GObject.GType;\n    get_n_items(): number;\n    get_item(position: number): A | null;\n    items_changed(position: number, removed: number, added: number): void;\n    vfunc_get_item(position: number): A | null;\n    vfunc_get_item_type(): GObject.GType;\n    vfunc_get_n_items(): number;\n}\nexport module ExpanderRow {\n    export interface ConstructorProperties extends PreferencesRow.ConstructorProperties {\n        [key: string]: any;\n        enable_expansion: boolean;\n        enableExpansion: boolean;\n        expanded: boolean;\n        icon_name: string;\n        iconName: string;\n        show_enable_switch: boolean;\n        showEnableSwitch: boolean;\n        subtitle: string;\n        subtitle_lines: number;\n        subtitleLines: number;\n        title_lines: number;\n        titleLines: number;\n    }\n}\nexport class ExpanderRow\n    extends PreferencesRow\n    implements Gtk.Accessible, Gtk.Actionable, Gtk.Buildable, Gtk.ConstraintTarget\n{\n    static $gtype: GObject.GType<ExpanderRow>;\n\n    constructor(properties?: Partial<ExpanderRow.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ExpanderRow.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get enable_expansion(): boolean;\n    set enable_expansion(val: boolean);\n    get enableExpansion(): boolean;\n    set enableExpansion(val: boolean);\n    get expanded(): boolean;\n    set expanded(val: boolean);\n    get icon_name(): string;\n    set icon_name(val: string);\n    get iconName(): string;\n    set iconName(val: string);\n    get show_enable_switch(): boolean;\n    set show_enable_switch(val: boolean);\n    get showEnableSwitch(): boolean;\n    set showEnableSwitch(val: boolean);\n    get subtitle(): string;\n    set subtitle(val: string);\n    get subtitle_lines(): number;\n    set subtitle_lines(val: number);\n    get subtitleLines(): number;\n    set subtitleLines(val: number);\n    get title_lines(): number;\n    set title_lines(val: number);\n    get titleLines(): number;\n    set titleLines(val: number);\n\n    // Constructors\n\n    static [\"new\"](): ExpanderRow;\n\n    // Members\n\n    add_action(widget: Gtk.Widget): void;\n    add_prefix(widget: Gtk.Widget): void;\n    add_row(child: Gtk.Widget): void;\n    get_enable_expansion(): boolean;\n    get_expanded(): boolean;\n    get_icon_name(): string | null;\n    get_show_enable_switch(): boolean;\n    get_subtitle(): string;\n    get_subtitle_lines(): boolean;\n    get_title_lines(): boolean;\n    remove(child: Gtk.Widget): void;\n    set_enable_expansion(enable_expansion: boolean): void;\n    set_expanded(expanded: boolean): void;\n    set_icon_name(icon_name?: string | null): void;\n    set_show_enable_switch(show_enable_switch: boolean): void;\n    set_subtitle(subtitle: string): void;\n    set_subtitle_lines(subtitle_lines: number): void;\n    set_title_lines(title_lines: number): void;\n}\nexport module Flap {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        content: Gtk.Widget;\n        flap: Gtk.Widget;\n        flap_position: Gtk.PackType;\n        flapPosition: Gtk.PackType;\n        fold_duration: number;\n        foldDuration: number;\n        fold_policy: FlapFoldPolicy;\n        foldPolicy: FlapFoldPolicy;\n        fold_threshold_policy: FoldThresholdPolicy;\n        foldThresholdPolicy: FoldThresholdPolicy;\n        folded: boolean;\n        locked: boolean;\n        modal: boolean;\n        reveal_flap: boolean;\n        revealFlap: boolean;\n        reveal_params: SpringParams;\n        revealParams: SpringParams;\n        reveal_progress: number;\n        revealProgress: number;\n        separator: Gtk.Widget;\n        swipe_to_close: boolean;\n        swipeToClose: boolean;\n        swipe_to_open: boolean;\n        swipeToOpen: boolean;\n        transition_type: FlapTransitionType;\n        transitionType: FlapTransitionType;\n    }\n}\nexport class Flap\n    extends Gtk.Widget\n    implements Swipeable, Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Orientable\n{\n    static $gtype: GObject.GType<Flap>;\n\n    constructor(properties?: Partial<Flap.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Flap.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get content(): Gtk.Widget;\n    set content(val: Gtk.Widget);\n    get flap(): Gtk.Widget;\n    set flap(val: Gtk.Widget);\n    get flap_position(): Gtk.PackType;\n    set flap_position(val: Gtk.PackType);\n    get flapPosition(): Gtk.PackType;\n    set flapPosition(val: Gtk.PackType);\n    get fold_duration(): number;\n    set fold_duration(val: number);\n    get foldDuration(): number;\n    set foldDuration(val: number);\n    get fold_policy(): FlapFoldPolicy;\n    set fold_policy(val: FlapFoldPolicy);\n    get foldPolicy(): FlapFoldPolicy;\n    set foldPolicy(val: FlapFoldPolicy);\n    get fold_threshold_policy(): FoldThresholdPolicy;\n    set fold_threshold_policy(val: FoldThresholdPolicy);\n    get foldThresholdPolicy(): FoldThresholdPolicy;\n    set foldThresholdPolicy(val: FoldThresholdPolicy);\n    get folded(): boolean;\n    get locked(): boolean;\n    set locked(val: boolean);\n    get modal(): boolean;\n    set modal(val: boolean);\n    get reveal_flap(): boolean;\n    set reveal_flap(val: boolean);\n    get revealFlap(): boolean;\n    set revealFlap(val: boolean);\n    get reveal_params(): SpringParams;\n    set reveal_params(val: SpringParams);\n    get revealParams(): SpringParams;\n    set revealParams(val: SpringParams);\n    get reveal_progress(): number;\n    get revealProgress(): number;\n    get separator(): Gtk.Widget;\n    set separator(val: Gtk.Widget);\n    get swipe_to_close(): boolean;\n    set swipe_to_close(val: boolean);\n    get swipeToClose(): boolean;\n    set swipeToClose(val: boolean);\n    get swipe_to_open(): boolean;\n    set swipe_to_open(val: boolean);\n    get swipeToOpen(): boolean;\n    set swipeToOpen(val: boolean);\n    get transition_type(): FlapTransitionType;\n    set transition_type(val: FlapTransitionType);\n    get transitionType(): FlapTransitionType;\n    set transitionType(val: FlapTransitionType);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n    get orientation(): Gtk.Orientation;\n    set orientation(val: Gtk.Orientation);\n\n    // Constructors\n\n    static [\"new\"](): Flap;\n\n    // Members\n\n    get_content(): Gtk.Widget | null;\n    get_flap(): Gtk.Widget | null;\n    get_flap_position(): Gtk.PackType;\n    get_fold_duration(): number;\n    get_fold_policy(): FlapFoldPolicy;\n    get_fold_threshold_policy(): FoldThresholdPolicy;\n    get_folded(): boolean;\n    get_locked(): boolean;\n    get_modal(): boolean;\n    get_reveal_flap(): boolean;\n    get_reveal_params(): SpringParams;\n    get_reveal_progress(): number;\n    get_separator(): Gtk.Widget | null;\n    get_swipe_to_close(): boolean;\n    get_swipe_to_open(): boolean;\n    get_transition_type(): FlapTransitionType;\n    set_content(content?: Gtk.Widget | null): void;\n    set_flap(flap?: Gtk.Widget | null): void;\n    set_flap_position(position: Gtk.PackType): void;\n    set_fold_duration(duration: number): void;\n    set_fold_policy(policy: FlapFoldPolicy): void;\n    set_fold_threshold_policy(policy: FoldThresholdPolicy): void;\n    set_locked(locked: boolean): void;\n    set_modal(modal: boolean): void;\n    set_reveal_flap(reveal_flap: boolean): void;\n    set_reveal_params(params: SpringParams): void;\n    set_separator(separator?: Gtk.Widget | null): void;\n    set_swipe_to_close(swipe_to_close: boolean): void;\n    set_swipe_to_open(swipe_to_open: boolean): void;\n    set_transition_type(transition_type: FlapTransitionType): void;\n\n    // Implemented Members\n\n    get_cancel_progress(): number;\n    get_distance(): number;\n    get_progress(): number;\n    get_snap_points(): number[];\n    get_swipe_area(navigation_direction: NavigationDirection, is_drag: boolean): Gdk.Rectangle;\n    vfunc_get_cancel_progress(): number;\n    vfunc_get_distance(): number;\n    vfunc_get_progress(): number;\n    vfunc_get_snap_points(): number[];\n    vfunc_get_swipe_area(navigation_direction: NavigationDirection, is_drag: boolean): Gdk.Rectangle;\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n    get_orientation(): Gtk.Orientation;\n    set_orientation(orientation: Gtk.Orientation): void;\n}\nexport module HeaderBar {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        centering_policy: CenteringPolicy;\n        centeringPolicy: CenteringPolicy;\n        decoration_layout: string;\n        decorationLayout: string;\n        show_end_title_buttons: boolean;\n        showEndTitleButtons: boolean;\n        show_start_title_buttons: boolean;\n        showStartTitleButtons: boolean;\n        title_widget: Gtk.Widget;\n        titleWidget: Gtk.Widget;\n    }\n}\nexport class HeaderBar extends Gtk.Widget implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<HeaderBar>;\n\n    constructor(properties?: Partial<HeaderBar.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<HeaderBar.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get centering_policy(): CenteringPolicy;\n    set centering_policy(val: CenteringPolicy);\n    get centeringPolicy(): CenteringPolicy;\n    set centeringPolicy(val: CenteringPolicy);\n    get decoration_layout(): string;\n    set decoration_layout(val: string);\n    get decorationLayout(): string;\n    set decorationLayout(val: string);\n    get show_end_title_buttons(): boolean;\n    set show_end_title_buttons(val: boolean);\n    get showEndTitleButtons(): boolean;\n    set showEndTitleButtons(val: boolean);\n    get show_start_title_buttons(): boolean;\n    set show_start_title_buttons(val: boolean);\n    get showStartTitleButtons(): boolean;\n    set showStartTitleButtons(val: boolean);\n    get title_widget(): Gtk.Widget;\n    set title_widget(val: Gtk.Widget);\n    get titleWidget(): Gtk.Widget;\n    set titleWidget(val: Gtk.Widget);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Constructors\n\n    static [\"new\"](): HeaderBar;\n\n    // Members\n\n    get_centering_policy(): CenteringPolicy;\n    get_decoration_layout(): string | null;\n    get_show_end_title_buttons(): boolean;\n    get_show_start_title_buttons(): boolean;\n    get_title_widget(): Gtk.Widget | null;\n    pack_end(child: Gtk.Widget): void;\n    pack_start(child: Gtk.Widget): void;\n    remove(child: Gtk.Widget): void;\n    set_centering_policy(centering_policy: CenteringPolicy): void;\n    set_decoration_layout(layout?: string | null): void;\n    set_show_end_title_buttons(setting: boolean): void;\n    set_show_start_title_buttons(setting: boolean): void;\n    set_title_widget(title_widget?: Gtk.Widget | null): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module Leaflet {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        can_navigate_back: boolean;\n        canNavigateBack: boolean;\n        can_navigate_forward: boolean;\n        canNavigateForward: boolean;\n        can_unfold: boolean;\n        canUnfold: boolean;\n        child_transition_params: SpringParams;\n        childTransitionParams: SpringParams;\n        child_transition_running: boolean;\n        childTransitionRunning: boolean;\n        fold_threshold_policy: FoldThresholdPolicy;\n        foldThresholdPolicy: FoldThresholdPolicy;\n        folded: boolean;\n        homogeneous: boolean;\n        mode_transition_duration: number;\n        modeTransitionDuration: number;\n        pages: Gtk.SelectionModel;\n        transition_type: LeafletTransitionType;\n        transitionType: LeafletTransitionType;\n        visible_child: Gtk.Widget;\n        visibleChild: Gtk.Widget;\n        visible_child_name: string;\n        visibleChildName: string;\n    }\n}\nexport class Leaflet\n    extends Gtk.Widget\n    implements Swipeable, Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Orientable\n{\n    static $gtype: GObject.GType<Leaflet>;\n\n    constructor(properties?: Partial<Leaflet.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Leaflet.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get can_navigate_back(): boolean;\n    set can_navigate_back(val: boolean);\n    get canNavigateBack(): boolean;\n    set canNavigateBack(val: boolean);\n    get can_navigate_forward(): boolean;\n    set can_navigate_forward(val: boolean);\n    get canNavigateForward(): boolean;\n    set canNavigateForward(val: boolean);\n    get can_unfold(): boolean;\n    set can_unfold(val: boolean);\n    get canUnfold(): boolean;\n    set canUnfold(val: boolean);\n    get child_transition_params(): SpringParams;\n    set child_transition_params(val: SpringParams);\n    get childTransitionParams(): SpringParams;\n    set childTransitionParams(val: SpringParams);\n    get child_transition_running(): boolean;\n    get childTransitionRunning(): boolean;\n    get fold_threshold_policy(): FoldThresholdPolicy;\n    set fold_threshold_policy(val: FoldThresholdPolicy);\n    get foldThresholdPolicy(): FoldThresholdPolicy;\n    set foldThresholdPolicy(val: FoldThresholdPolicy);\n    get folded(): boolean;\n    get homogeneous(): boolean;\n    set homogeneous(val: boolean);\n    get mode_transition_duration(): number;\n    set mode_transition_duration(val: number);\n    get modeTransitionDuration(): number;\n    set modeTransitionDuration(val: number);\n    get pages(): Gtk.SelectionModel;\n    get transition_type(): LeafletTransitionType;\n    set transition_type(val: LeafletTransitionType);\n    get transitionType(): LeafletTransitionType;\n    set transitionType(val: LeafletTransitionType);\n    get visible_child(): Gtk.Widget;\n    set visible_child(val: Gtk.Widget);\n    get visibleChild(): Gtk.Widget;\n    set visibleChild(val: Gtk.Widget);\n    get visible_child_name(): string;\n    set visible_child_name(val: string);\n    get visibleChildName(): string;\n    set visibleChildName(val: string);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n    get orientation(): Gtk.Orientation;\n    set orientation(val: Gtk.Orientation);\n\n    // Constructors\n\n    static [\"new\"](): Leaflet;\n\n    // Members\n\n    append(child: Gtk.Widget): LeafletPage;\n    get_adjacent_child(direction: NavigationDirection): Gtk.Widget | null;\n    get_can_navigate_back(): boolean;\n    get_can_navigate_forward(): boolean;\n    get_can_unfold(): boolean;\n    get_child_by_name(name: string): Gtk.Widget | null;\n    get_child_transition_params(): SpringParams;\n    get_child_transition_running(): boolean;\n    get_fold_threshold_policy(): FoldThresholdPolicy;\n    get_folded(): boolean;\n    get_homogeneous(): boolean;\n    get_mode_transition_duration(): number;\n    get_page(child: Gtk.Widget): LeafletPage;\n    get_pages(): Gtk.SelectionModel;\n    get_transition_type(): LeafletTransitionType;\n    get_visible_child(): Gtk.Widget | null;\n    get_visible_child_name(): string | null;\n    insert_child_after(child: Gtk.Widget, sibling?: Gtk.Widget | null): LeafletPage;\n    navigate(direction: NavigationDirection): boolean;\n    prepend(child: Gtk.Widget): LeafletPage;\n    remove(child: Gtk.Widget): void;\n    reorder_child_after(child: Gtk.Widget, sibling?: Gtk.Widget | null): void;\n    set_can_navigate_back(can_navigate_back: boolean): void;\n    set_can_navigate_forward(can_navigate_forward: boolean): void;\n    set_can_unfold(can_unfold: boolean): void;\n    set_child_transition_params(params: SpringParams): void;\n    set_fold_threshold_policy(policy: FoldThresholdPolicy): void;\n    set_homogeneous(homogeneous: boolean): void;\n    set_mode_transition_duration(duration: number): void;\n    set_transition_type(transition: LeafletTransitionType): void;\n    set_visible_child(visible_child: Gtk.Widget): void;\n    set_visible_child_name(name: string): void;\n\n    // Implemented Members\n\n    get_cancel_progress(): number;\n    get_distance(): number;\n    get_progress(): number;\n    get_snap_points(): number[];\n    get_swipe_area(navigation_direction: NavigationDirection, is_drag: boolean): Gdk.Rectangle;\n    vfunc_get_cancel_progress(): number;\n    vfunc_get_distance(): number;\n    vfunc_get_progress(): number;\n    vfunc_get_snap_points(): number[];\n    vfunc_get_swipe_area(navigation_direction: NavigationDirection, is_drag: boolean): Gdk.Rectangle;\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n    get_orientation(): Gtk.Orientation;\n    set_orientation(orientation: Gtk.Orientation): void;\n}\nexport module LeafletPage {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        child: Gtk.Widget;\n        name: string;\n        navigatable: boolean;\n    }\n}\nexport class LeafletPage extends GObject.Object {\n    static $gtype: GObject.GType<LeafletPage>;\n\n    constructor(properties?: Partial<LeafletPage.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<LeafletPage.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get child(): Gtk.Widget;\n    get name(): string;\n    set name(val: string);\n    get navigatable(): boolean;\n    set navigatable(val: boolean);\n\n    // Members\n\n    get_child(): Gtk.Widget;\n    get_name(): string | null;\n    get_navigatable(): boolean;\n    set_name(name?: string | null): void;\n    set_navigatable(navigatable: boolean): void;\n}\nexport module MessageDialog {\n    export interface ConstructorProperties extends Gtk.Window.ConstructorProperties {\n        [key: string]: any;\n        body: string;\n        body_use_markup: boolean;\n        bodyUseMarkup: boolean;\n        close_response: string;\n        closeResponse: string;\n        default_response: string;\n        defaultResponse: string;\n        extra_child: Gtk.Widget;\n        extraChild: Gtk.Widget;\n        heading: string;\n        heading_use_markup: boolean;\n        headingUseMarkup: boolean;\n    }\n}\nexport class MessageDialog\n    extends Gtk.Window\n    implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Native, Gtk.Root, Gtk.ShortcutManager\n{\n    static $gtype: GObject.GType<MessageDialog>;\n\n    constructor(properties?: Partial<MessageDialog.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<MessageDialog.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get body(): string;\n    set body(val: string);\n    get body_use_markup(): boolean;\n    set body_use_markup(val: boolean);\n    get bodyUseMarkup(): boolean;\n    set bodyUseMarkup(val: boolean);\n    get close_response(): string;\n    set close_response(val: string);\n    get closeResponse(): string;\n    set closeResponse(val: string);\n    get default_response(): string;\n    set default_response(val: string);\n    get defaultResponse(): string;\n    set defaultResponse(val: string);\n    get extra_child(): Gtk.Widget;\n    set extra_child(val: Gtk.Widget);\n    get extraChild(): Gtk.Widget;\n    set extraChild(val: Gtk.Widget);\n    get heading(): string;\n    set heading(val: string);\n    get heading_use_markup(): boolean;\n    set heading_use_markup(val: boolean);\n    get headingUseMarkup(): boolean;\n    set headingUseMarkup(val: boolean);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"response\", callback: (_source: this, response: string) => void): number;\n    connect_after(signal: \"response\", callback: (_source: this, response: string) => void): number;\n    emit(signal: \"response\", response: string): void;\n\n    // Constructors\n\n    static [\"new\"](parent?: Gtk.Window | null, heading?: string | null, body?: string | null): MessageDialog;\n    // Conflicted with Gtk.Window.new\n    static [\"new\"](...args: never[]): any;\n\n    // Members\n\n    add_response(id: string, label: string): void;\n    choose(cancellable?: Gio.Cancellable | null): void;\n    choose_finish(result: Gio.AsyncResult): string;\n    get_body(): string;\n    get_body_use_markup(): boolean;\n    get_close_response(): string;\n    get_default_response(): string | null;\n    get_extra_child(): Gtk.Widget | null;\n    get_heading(): string | null;\n    get_heading_use_markup(): boolean;\n    get_response_appearance(response: string): ResponseAppearance;\n    get_response_enabled(response: string): boolean;\n    get_response_label(response: string): string;\n    has_response(response: string): boolean;\n    response(response: string): void;\n    set_body(body: string): void;\n    set_body_use_markup(use_markup: boolean): void;\n    set_close_response(response: string): void;\n    set_default_response(response?: string | null): void;\n    set_extra_child(child?: Gtk.Widget | null): void;\n    set_heading(heading?: string | null): void;\n    set_heading_use_markup(use_markup: boolean): void;\n    set_response_appearance(response: string, appearance: ResponseAppearance): void;\n    set_response_enabled(response: string, enabled: boolean): void;\n    set_response_label(response: string, label: string): void;\n    vfunc_response(response: string): void;\n\n    // Implemented Members\n\n    get_renderer(): Gsk.Renderer;\n    get_surface(): Gdk.Surface;\n    get_surface_transform(): [number, number];\n    realize(): void;\n    unrealize(): void;\n    get_display(): Gdk.Display;\n    get_focus(): Gtk.Widget | null;\n    set_focus(focus?: Gtk.Widget | null): void;\n    vfunc_add_controller(controller: Gtk.ShortcutController): void;\n    vfunc_remove_controller(controller: Gtk.ShortcutController): void;\n}\nexport module PasswordEntryRow {\n    export interface ConstructorProperties extends EntryRow.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class PasswordEntryRow\n    extends EntryRow\n    implements Gtk.Accessible, Gtk.Actionable, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Editable\n{\n    static $gtype: GObject.GType<PasswordEntryRow>;\n\n    constructor(properties?: Partial<PasswordEntryRow.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<PasswordEntryRow.ConstructorProperties>, ...args: any[]): void;\n\n    // Implemented Properties\n\n    get cursor_position(): number;\n    get cursorPosition(): number;\n    get editable(): boolean;\n    set editable(val: boolean);\n    get enable_undo(): boolean;\n    set enable_undo(val: boolean);\n    get enableUndo(): boolean;\n    set enableUndo(val: boolean);\n    get max_width_chars(): number;\n    set max_width_chars(val: number);\n    get maxWidthChars(): number;\n    set maxWidthChars(val: number);\n    get selection_bound(): number;\n    get selectionBound(): number;\n    get text(): string;\n    set text(val: string);\n    get width_chars(): number;\n    set width_chars(val: number);\n    get widthChars(): number;\n    set widthChars(val: number);\n    get xalign(): number;\n    set xalign(val: number);\n\n    // Constructors\n\n    static [\"new\"](): PasswordEntryRow;\n\n    // Implemented Members\n\n    delegate_get_accessible_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    delete_selection(): void;\n    delete_text(start_pos: number, end_pos: number): void;\n    finish_delegate(): void;\n    get_alignment(): number;\n    get_chars(start_pos: number, end_pos: number): string;\n    get_delegate(): Gtk.Editable | null;\n    get_editable(): boolean;\n    get_enable_undo(): boolean;\n    get_max_width_chars(): number;\n    get_position(): number;\n    get_selection_bounds(): [boolean, number | null, number | null];\n    get_text(): string;\n    get_width_chars(): number;\n    init_delegate(): void;\n    insert_text(text: string, length: number, position: number): number;\n    select_region(start_pos: number, end_pos: number): void;\n    set_alignment(xalign: number): void;\n    set_editable(is_editable: boolean): void;\n    set_enable_undo(enable_undo: boolean): void;\n    set_max_width_chars(n_chars: number): void;\n    set_position(position: number): void;\n    set_text(text: string): void;\n    set_width_chars(n_chars: number): void;\n    vfunc_changed(): void;\n    vfunc_delete_text(start_pos: number, end_pos: number): void;\n    vfunc_do_delete_text(start_pos: number, end_pos: number): void;\n    vfunc_do_insert_text(text: string, length: number, position: number): number;\n    vfunc_get_delegate(): Gtk.Editable | null;\n    vfunc_get_selection_bounds(): [boolean, number | null, number | null];\n    vfunc_get_text(): string;\n    vfunc_insert_text(text: string, length: number, position: number): number;\n    vfunc_set_selection_bounds(start_pos: number, end_pos: number): void;\n}\nexport module PreferencesGroup {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        description: string;\n        header_suffix: Gtk.Widget;\n        headerSuffix: Gtk.Widget;\n        title: string;\n    }\n}\nexport class PreferencesGroup extends Gtk.Widget implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<PreferencesGroup>;\n\n    constructor(properties?: Partial<PreferencesGroup.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<PreferencesGroup.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get description(): string;\n    set description(val: string);\n    get header_suffix(): Gtk.Widget;\n    set header_suffix(val: Gtk.Widget);\n    get headerSuffix(): Gtk.Widget;\n    set headerSuffix(val: Gtk.Widget);\n    get title(): string;\n    set title(val: string);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Constructors\n\n    static [\"new\"](): PreferencesGroup;\n\n    // Members\n\n    add(child: Gtk.Widget): void;\n    get_description(): string | null;\n    get_header_suffix(): Gtk.Widget | null;\n    get_title(): string;\n    remove(child: Gtk.Widget): void;\n    set_description(description?: string | null): void;\n    set_header_suffix(suffix?: Gtk.Widget | null): void;\n    set_title(title: string): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module PreferencesPage {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        icon_name: string;\n        iconName: string;\n        name: string;\n        title: string;\n        use_underline: boolean;\n        useUnderline: boolean;\n    }\n}\nexport class PreferencesPage extends Gtk.Widget implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<PreferencesPage>;\n\n    constructor(properties?: Partial<PreferencesPage.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<PreferencesPage.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get icon_name(): string;\n    set icon_name(val: string);\n    get iconName(): string;\n    set iconName(val: string);\n    get name(): string;\n    set name(val: string);\n    get title(): string;\n    set title(val: string);\n    get use_underline(): boolean;\n    set use_underline(val: boolean);\n    get useUnderline(): boolean;\n    set useUnderline(val: boolean);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Constructors\n\n    static [\"new\"](): PreferencesPage;\n\n    // Members\n\n    add(group: PreferencesGroup): void;\n    get_icon_name(): string | null;\n    get_name(): string | null;\n    // Conflicted with Gtk.Widget.get_name\n    get_name(...args: never[]): any;\n    get_title(): string;\n    get_use_underline(): boolean;\n    remove(group: PreferencesGroup): void;\n    scroll_to_top(): void;\n    set_icon_name(icon_name?: string | null): void;\n    set_name(name?: string | null): void;\n    // Conflicted with Gtk.Widget.set_name\n    set_name(...args: never[]): any;\n    set_title(title: string): void;\n    set_use_underline(use_underline: boolean): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module PreferencesRow {\n    export interface ConstructorProperties extends Gtk.ListBoxRow.ConstructorProperties {\n        [key: string]: any;\n        title: string;\n        title_selectable: boolean;\n        titleSelectable: boolean;\n        use_markup: boolean;\n        useMarkup: boolean;\n        use_underline: boolean;\n        useUnderline: boolean;\n    }\n}\nexport class PreferencesRow\n    extends Gtk.ListBoxRow\n    implements Gtk.Accessible, Gtk.Actionable, Gtk.Buildable, Gtk.ConstraintTarget\n{\n    static $gtype: GObject.GType<PreferencesRow>;\n\n    constructor(properties?: Partial<PreferencesRow.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<PreferencesRow.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get title(): string;\n    set title(val: string);\n    get title_selectable(): boolean;\n    set title_selectable(val: boolean);\n    get titleSelectable(): boolean;\n    set titleSelectable(val: boolean);\n    get use_markup(): boolean;\n    set use_markup(val: boolean);\n    get useMarkup(): boolean;\n    set useMarkup(val: boolean);\n    get use_underline(): boolean;\n    set use_underline(val: boolean);\n    get useUnderline(): boolean;\n    set useUnderline(val: boolean);\n\n    // Implemented Properties\n\n    get action_name(): string;\n    set action_name(val: string);\n    get actionName(): string;\n    set actionName(val: string);\n    get action_target(): GLib.Variant;\n    set action_target(val: GLib.Variant);\n    get actionTarget(): GLib.Variant;\n    set actionTarget(val: GLib.Variant);\n\n    // Constructors\n\n    static [\"new\"](): PreferencesRow;\n\n    // Members\n\n    get_title(): string;\n    get_title_selectable(): boolean;\n    get_use_markup(): boolean;\n    get_use_underline(): boolean;\n    set_title(title: string): void;\n    set_title_selectable(title_selectable: boolean): void;\n    set_use_markup(use_markup: boolean): void;\n    set_use_underline(use_underline: boolean): void;\n\n    // Implemented Members\n\n    get_action_name(): string | null;\n    get_action_target_value(): GLib.Variant | null;\n    set_action_name(action_name?: string | null): void;\n    set_action_target_value(target_value?: GLib.Variant | null): void;\n    set_detailed_action_name(detailed_action_name: string): void;\n    vfunc_get_action_name(): string | null;\n    vfunc_get_action_target_value(): GLib.Variant | null;\n    vfunc_set_action_name(action_name?: string | null): void;\n    vfunc_set_action_target_value(target_value?: GLib.Variant | null): void;\n}\nexport module PreferencesWindow {\n    export interface ConstructorProperties extends Window.ConstructorProperties {\n        [key: string]: any;\n        can_navigate_back: boolean;\n        canNavigateBack: boolean;\n        search_enabled: boolean;\n        searchEnabled: boolean;\n        visible_page: Gtk.Widget;\n        visiblePage: Gtk.Widget;\n        visible_page_name: string;\n        visiblePageName: string;\n    }\n}\nexport class PreferencesWindow\n    extends Window\n    implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Native, Gtk.Root, Gtk.ShortcutManager\n{\n    static $gtype: GObject.GType<PreferencesWindow>;\n\n    constructor(properties?: Partial<PreferencesWindow.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<PreferencesWindow.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get can_navigate_back(): boolean;\n    set can_navigate_back(val: boolean);\n    get canNavigateBack(): boolean;\n    set canNavigateBack(val: boolean);\n    get search_enabled(): boolean;\n    set search_enabled(val: boolean);\n    get searchEnabled(): boolean;\n    set searchEnabled(val: boolean);\n    get visible_page(): Gtk.Widget;\n    set visible_page(val: Gtk.Widget);\n    get visiblePage(): Gtk.Widget;\n    set visiblePage(val: Gtk.Widget);\n    get visible_page_name(): string;\n    set visible_page_name(val: string);\n    get visiblePageName(): string;\n    set visiblePageName(val: string);\n\n    // Constructors\n\n    static [\"new\"](): PreferencesWindow;\n\n    // Members\n\n    add(page: PreferencesPage): void;\n    add_toast(toast: Toast): void;\n    close_subpage(): void;\n    get_can_navigate_back(): boolean;\n    get_search_enabled(): boolean;\n    get_visible_page(): PreferencesPage | null;\n    get_visible_page_name(): string | null;\n    present_subpage(subpage: Gtk.Widget): void;\n    remove(page: PreferencesPage): void;\n    set_can_navigate_back(can_navigate_back: boolean): void;\n    set_search_enabled(search_enabled: boolean): void;\n    set_visible_page(page: PreferencesPage): void;\n    set_visible_page_name(name: string): void;\n}\nexport module PropertyAnimationTarget {\n    export interface ConstructorProperties extends AnimationTarget.ConstructorProperties {\n        [key: string]: any;\n        object: GObject.Object;\n        pspec: GObject.ParamSpec;\n    }\n}\nexport class PropertyAnimationTarget extends AnimationTarget {\n    static $gtype: GObject.GType<PropertyAnimationTarget>;\n\n    constructor(properties?: Partial<PropertyAnimationTarget.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<PropertyAnimationTarget.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get object(): GObject.Object;\n    get pspec(): GObject.ParamSpec;\n\n    // Constructors\n\n    static [\"new\"](object: GObject.Object, property_name: string): PropertyAnimationTarget;\n    static new_for_pspec(object: GObject.Object, pspec: GObject.ParamSpec): PropertyAnimationTarget;\n\n    // Members\n\n    get_object<T = GObject.Object>(): T;\n    get_pspec(): GObject.ParamSpec;\n}\nexport module SplitButton {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        child: Gtk.Widget;\n        direction: Gtk.ArrowType;\n        dropdown_tooltip: string;\n        dropdownTooltip: string;\n        icon_name: string;\n        iconName: string;\n        label: string;\n        menu_model: Gio.MenuModel;\n        menuModel: Gio.MenuModel;\n        popover: Gtk.Popover;\n        use_underline: boolean;\n        useUnderline: boolean;\n    }\n}\nexport class SplitButton\n    extends Gtk.Widget\n    implements Gtk.Accessible, Gtk.Actionable, Gtk.Buildable, Gtk.ConstraintTarget\n{\n    static $gtype: GObject.GType<SplitButton>;\n\n    constructor(properties?: Partial<SplitButton.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<SplitButton.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get child(): Gtk.Widget;\n    set child(val: Gtk.Widget);\n    get direction(): Gtk.ArrowType;\n    set direction(val: Gtk.ArrowType);\n    get dropdown_tooltip(): string;\n    set dropdown_tooltip(val: string);\n    get dropdownTooltip(): string;\n    set dropdownTooltip(val: string);\n    get icon_name(): string;\n    set icon_name(val: string);\n    get iconName(): string;\n    set iconName(val: string);\n    get label(): string;\n    set label(val: string);\n    get menu_model(): Gio.MenuModel;\n    set menu_model(val: Gio.MenuModel);\n    get menuModel(): Gio.MenuModel;\n    set menuModel(val: Gio.MenuModel);\n    get popover(): Gtk.Popover;\n    set popover(val: Gtk.Popover);\n    get use_underline(): boolean;\n    set use_underline(val: boolean);\n    get useUnderline(): boolean;\n    set useUnderline(val: boolean);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"activate\", callback: (_source: this) => void): number;\n    connect_after(signal: \"activate\", callback: (_source: this) => void): number;\n    emit(signal: \"activate\"): void;\n    connect(signal: \"clicked\", callback: (_source: this) => void): number;\n    connect_after(signal: \"clicked\", callback: (_source: this) => void): number;\n    emit(signal: \"clicked\"): void;\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n    get action_name(): string;\n    set action_name(val: string);\n    get actionName(): string;\n    set actionName(val: string);\n    get action_target(): GLib.Variant;\n    set action_target(val: GLib.Variant);\n    get actionTarget(): GLib.Variant;\n    set actionTarget(val: GLib.Variant);\n\n    // Constructors\n\n    static [\"new\"](): SplitButton;\n\n    // Members\n\n    get_child(): Gtk.Widget | null;\n    get_direction(): Gtk.ArrowType;\n    // Conflicted with Gtk.Widget.get_direction\n    get_direction(...args: never[]): any;\n    get_dropdown_tooltip(): string;\n    get_icon_name(): string | null;\n    get_label(): string | null;\n    get_menu_model(): Gio.MenuModel | null;\n    get_popover(): Gtk.Popover | null;\n    get_use_underline(): boolean;\n    popdown(): void;\n    popup(): void;\n    set_child(child?: Gtk.Widget | null): void;\n    set_direction(direction: Gtk.ArrowType): void;\n    // Conflicted with Gtk.Widget.set_direction\n    set_direction(...args: never[]): any;\n    set_dropdown_tooltip(tooltip: string): void;\n    set_icon_name(icon_name: string): void;\n    set_label(label: string): void;\n    set_menu_model(menu_model?: Gio.MenuModel | null): void;\n    set_popover(popover?: Gtk.Popover | null): void;\n    set_use_underline(use_underline: boolean): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_action_name(): string | null;\n    get_action_target_value(): GLib.Variant | null;\n    set_action_name(action_name?: string | null): void;\n    set_action_target_value(target_value?: GLib.Variant | null): void;\n    set_detailed_action_name(detailed_action_name: string): void;\n    vfunc_get_action_name(): string | null;\n    vfunc_get_action_target_value(): GLib.Variant | null;\n    vfunc_set_action_name(action_name?: string | null): void;\n    vfunc_set_action_target_value(target_value?: GLib.Variant | null): void;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module SpringAnimation {\n    export interface ConstructorProperties extends Animation.ConstructorProperties {\n        [key: string]: any;\n        clamp: boolean;\n        epsilon: number;\n        estimated_duration: number;\n        estimatedDuration: number;\n        initial_velocity: number;\n        initialVelocity: number;\n        spring_params: SpringParams;\n        springParams: SpringParams;\n        value_from: number;\n        valueFrom: number;\n        value_to: number;\n        valueTo: number;\n        velocity: number;\n    }\n}\nexport class SpringAnimation extends Animation {\n    static $gtype: GObject.GType<SpringAnimation>;\n\n    constructor(properties?: Partial<SpringAnimation.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<SpringAnimation.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get clamp(): boolean;\n    set clamp(val: boolean);\n    get epsilon(): number;\n    set epsilon(val: number);\n    get estimated_duration(): number;\n    get estimatedDuration(): number;\n    get initial_velocity(): number;\n    set initial_velocity(val: number);\n    get initialVelocity(): number;\n    set initialVelocity(val: number);\n    get spring_params(): SpringParams;\n    set spring_params(val: SpringParams);\n    get springParams(): SpringParams;\n    set springParams(val: SpringParams);\n    get value_from(): number;\n    set value_from(val: number);\n    get valueFrom(): number;\n    set valueFrom(val: number);\n    get value_to(): number;\n    set value_to(val: number);\n    get valueTo(): number;\n    set valueTo(val: number);\n    get velocity(): number;\n\n    // Constructors\n\n    static [\"new\"](\n        widget: Gtk.Widget,\n        from: number,\n        to: number,\n        spring_params: SpringParams,\n        target: AnimationTarget\n    ): SpringAnimation;\n\n    // Members\n\n    calculate_value(time: number): number;\n    calculate_velocity(time: number): number;\n    get_clamp(): boolean;\n    get_epsilon(): number;\n    get_estimated_duration(): number;\n    get_initial_velocity(): number;\n    get_spring_params(): SpringParams;\n    get_value_from(): number;\n    get_value_to(): number;\n    get_velocity(): number;\n    set_clamp(clamp: boolean): void;\n    set_epsilon(epsilon: number): void;\n    set_initial_velocity(velocity: number): void;\n    set_spring_params(spring_params: SpringParams): void;\n    set_value_from(value: number): void;\n    set_value_to(value: number): void;\n}\nexport module Squeezer {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        allow_none: boolean;\n        allowNone: boolean;\n        homogeneous: boolean;\n        interpolate_size: boolean;\n        interpolateSize: boolean;\n        pages: Gtk.SelectionModel;\n        switch_threshold_policy: FoldThresholdPolicy;\n        switchThresholdPolicy: FoldThresholdPolicy;\n        transition_duration: number;\n        transitionDuration: number;\n        transition_running: boolean;\n        transitionRunning: boolean;\n        transition_type: SqueezerTransitionType;\n        transitionType: SqueezerTransitionType;\n        visible_child: Gtk.Widget;\n        visibleChild: Gtk.Widget;\n        xalign: number;\n        yalign: number;\n    }\n}\nexport class Squeezer\n    extends Gtk.Widget\n    implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Orientable\n{\n    static $gtype: GObject.GType<Squeezer>;\n\n    constructor(properties?: Partial<Squeezer.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Squeezer.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get allow_none(): boolean;\n    set allow_none(val: boolean);\n    get allowNone(): boolean;\n    set allowNone(val: boolean);\n    get homogeneous(): boolean;\n    set homogeneous(val: boolean);\n    get interpolate_size(): boolean;\n    set interpolate_size(val: boolean);\n    get interpolateSize(): boolean;\n    set interpolateSize(val: boolean);\n    get pages(): Gtk.SelectionModel;\n    get switch_threshold_policy(): FoldThresholdPolicy;\n    set switch_threshold_policy(val: FoldThresholdPolicy);\n    get switchThresholdPolicy(): FoldThresholdPolicy;\n    set switchThresholdPolicy(val: FoldThresholdPolicy);\n    get transition_duration(): number;\n    set transition_duration(val: number);\n    get transitionDuration(): number;\n    set transitionDuration(val: number);\n    get transition_running(): boolean;\n    get transitionRunning(): boolean;\n    get transition_type(): SqueezerTransitionType;\n    set transition_type(val: SqueezerTransitionType);\n    get transitionType(): SqueezerTransitionType;\n    set transitionType(val: SqueezerTransitionType);\n    get visible_child(): Gtk.Widget;\n    get visibleChild(): Gtk.Widget;\n    get xalign(): number;\n    set xalign(val: number);\n    get yalign(): number;\n    set yalign(val: number);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n    get orientation(): Gtk.Orientation;\n    set orientation(val: Gtk.Orientation);\n\n    // Constructors\n\n    static [\"new\"](): Squeezer;\n\n    // Members\n\n    add(child: Gtk.Widget): SqueezerPage;\n    get_allow_none(): boolean;\n    get_homogeneous(): boolean;\n    get_interpolate_size(): boolean;\n    get_page(child: Gtk.Widget): SqueezerPage;\n    get_pages(): Gtk.SelectionModel;\n    get_switch_threshold_policy(): FoldThresholdPolicy;\n    get_transition_duration(): number;\n    get_transition_running(): boolean;\n    get_transition_type(): SqueezerTransitionType;\n    get_visible_child(): Gtk.Widget | null;\n    get_xalign(): number;\n    get_yalign(): number;\n    remove(child: Gtk.Widget): void;\n    set_allow_none(allow_none: boolean): void;\n    set_homogeneous(homogeneous: boolean): void;\n    set_interpolate_size(interpolate_size: boolean): void;\n    set_switch_threshold_policy(policy: FoldThresholdPolicy): void;\n    set_transition_duration(duration: number): void;\n    set_transition_type(transition: SqueezerTransitionType): void;\n    set_xalign(xalign: number): void;\n    set_yalign(yalign: number): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n    get_orientation(): Gtk.Orientation;\n    set_orientation(orientation: Gtk.Orientation): void;\n}\nexport module SqueezerPage {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        child: Gtk.Widget;\n        enabled: boolean;\n    }\n}\nexport class SqueezerPage extends GObject.Object {\n    static $gtype: GObject.GType<SqueezerPage>;\n\n    constructor(properties?: Partial<SqueezerPage.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<SqueezerPage.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get child(): Gtk.Widget;\n    get enabled(): boolean;\n    set enabled(val: boolean);\n\n    // Members\n\n    get_child(): Gtk.Widget;\n    get_enabled(): boolean;\n    set_enabled(enabled: boolean): void;\n}\nexport module StatusPage {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        child: Gtk.Widget;\n        description: string;\n        icon_name: string;\n        iconName: string;\n        paintable: Gdk.Paintable;\n        title: string;\n    }\n}\nexport class StatusPage extends Gtk.Widget implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<StatusPage>;\n\n    constructor(properties?: Partial<StatusPage.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<StatusPage.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get child(): Gtk.Widget;\n    set child(val: Gtk.Widget);\n    get description(): string;\n    set description(val: string);\n    get icon_name(): string;\n    set icon_name(val: string);\n    get iconName(): string;\n    set iconName(val: string);\n    get paintable(): Gdk.Paintable;\n    set paintable(val: Gdk.Paintable);\n    get title(): string;\n    set title(val: string);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Constructors\n\n    static [\"new\"](): StatusPage;\n\n    // Members\n\n    get_child(): Gtk.Widget | null;\n    get_description(): string | null;\n    get_icon_name(): string | null;\n    get_paintable(): Gdk.Paintable | null;\n    get_title(): string;\n    set_child(child?: Gtk.Widget | null): void;\n    set_description(description?: string | null): void;\n    set_icon_name(icon_name?: string | null): void;\n    set_paintable(paintable?: Gdk.Paintable | null): void;\n    set_title(title: string): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module StyleManager {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        color_scheme: ColorScheme;\n        colorScheme: ColorScheme;\n        dark: boolean;\n        display: Gdk.Display;\n        high_contrast: boolean;\n        highContrast: boolean;\n        system_supports_color_schemes: boolean;\n        systemSupportsColorSchemes: boolean;\n    }\n}\nexport class StyleManager extends GObject.Object {\n    static $gtype: GObject.GType<StyleManager>;\n\n    constructor(properties?: Partial<StyleManager.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<StyleManager.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get color_scheme(): ColorScheme;\n    set color_scheme(val: ColorScheme);\n    get colorScheme(): ColorScheme;\n    set colorScheme(val: ColorScheme);\n    get dark(): boolean;\n    get display(): Gdk.Display;\n    get high_contrast(): boolean;\n    get highContrast(): boolean;\n    get system_supports_color_schemes(): boolean;\n    get systemSupportsColorSchemes(): boolean;\n\n    // Members\n\n    get_color_scheme(): ColorScheme;\n    get_dark(): boolean;\n    get_display(): Gdk.Display;\n    get_high_contrast(): boolean;\n    get_system_supports_color_schemes(): boolean;\n    set_color_scheme(color_scheme: ColorScheme): void;\n    static get_default(): StyleManager;\n    static get_for_display(display: Gdk.Display): StyleManager;\n}\nexport module SwipeTracker {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        allow_long_swipes: boolean;\n        allowLongSwipes: boolean;\n        allow_mouse_drag: boolean;\n        allowMouseDrag: boolean;\n        enabled: boolean;\n        reversed: boolean;\n        swipeable: Swipeable;\n    }\n}\nexport class SwipeTracker extends GObject.Object implements Gtk.Orientable {\n    static $gtype: GObject.GType<SwipeTracker>;\n\n    constructor(properties?: Partial<SwipeTracker.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<SwipeTracker.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get allow_long_swipes(): boolean;\n    set allow_long_swipes(val: boolean);\n    get allowLongSwipes(): boolean;\n    set allowLongSwipes(val: boolean);\n    get allow_mouse_drag(): boolean;\n    set allow_mouse_drag(val: boolean);\n    get allowMouseDrag(): boolean;\n    set allowMouseDrag(val: boolean);\n    get enabled(): boolean;\n    set enabled(val: boolean);\n    get reversed(): boolean;\n    set reversed(val: boolean);\n    get swipeable(): Swipeable;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"begin-swipe\", callback: (_source: this) => void): number;\n    connect_after(signal: \"begin-swipe\", callback: (_source: this) => void): number;\n    emit(signal: \"begin-swipe\"): void;\n    connect(signal: \"end-swipe\", callback: (_source: this, velocity: number, to: number) => void): number;\n    connect_after(signal: \"end-swipe\", callback: (_source: this, velocity: number, to: number) => void): number;\n    emit(signal: \"end-swipe\", velocity: number, to: number): void;\n    connect(signal: \"prepare\", callback: (_source: this, direction: NavigationDirection) => void): number;\n    connect_after(signal: \"prepare\", callback: (_source: this, direction: NavigationDirection) => void): number;\n    emit(signal: \"prepare\", direction: NavigationDirection): void;\n    connect(signal: \"update-swipe\", callback: (_source: this, progress: number) => void): number;\n    connect_after(signal: \"update-swipe\", callback: (_source: this, progress: number) => void): number;\n    emit(signal: \"update-swipe\", progress: number): void;\n\n    // Implemented Properties\n\n    get orientation(): Gtk.Orientation;\n    set orientation(val: Gtk.Orientation);\n\n    // Constructors\n\n    static [\"new\"](swipeable: Swipeable): SwipeTracker;\n\n    // Members\n\n    get_allow_long_swipes(): boolean;\n    get_allow_mouse_drag(): boolean;\n    get_enabled(): boolean;\n    get_reversed(): boolean;\n    get_swipeable(): Swipeable;\n    set_allow_long_swipes(allow_long_swipes: boolean): void;\n    set_allow_mouse_drag(allow_mouse_drag: boolean): void;\n    set_enabled(enabled: boolean): void;\n    set_reversed(reversed: boolean): void;\n    shift_position(delta: number): void;\n\n    // Implemented Members\n\n    get_orientation(): Gtk.Orientation;\n    set_orientation(orientation: Gtk.Orientation): void;\n}\nexport module TabBar {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        autohide: boolean;\n        end_action_widget: Gtk.Widget;\n        endActionWidget: Gtk.Widget;\n        expand_tabs: boolean;\n        expandTabs: boolean;\n        extra_drag_preload: boolean;\n        extraDragPreload: boolean;\n        inverted: boolean;\n        is_overflowing: boolean;\n        isOverflowing: boolean;\n        start_action_widget: Gtk.Widget;\n        startActionWidget: Gtk.Widget;\n        tabs_revealed: boolean;\n        tabsRevealed: boolean;\n        view: TabView;\n    }\n}\nexport class TabBar extends Gtk.Widget implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<TabBar>;\n\n    constructor(properties?: Partial<TabBar.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<TabBar.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get autohide(): boolean;\n    set autohide(val: boolean);\n    get end_action_widget(): Gtk.Widget;\n    set end_action_widget(val: Gtk.Widget);\n    get endActionWidget(): Gtk.Widget;\n    set endActionWidget(val: Gtk.Widget);\n    get expand_tabs(): boolean;\n    set expand_tabs(val: boolean);\n    get expandTabs(): boolean;\n    set expandTabs(val: boolean);\n    get extra_drag_preload(): boolean;\n    set extra_drag_preload(val: boolean);\n    get extraDragPreload(): boolean;\n    set extraDragPreload(val: boolean);\n    get inverted(): boolean;\n    set inverted(val: boolean);\n    get is_overflowing(): boolean;\n    get isOverflowing(): boolean;\n    get start_action_widget(): Gtk.Widget;\n    set start_action_widget(val: Gtk.Widget);\n    get startActionWidget(): Gtk.Widget;\n    set startActionWidget(val: Gtk.Widget);\n    get tabs_revealed(): boolean;\n    get tabsRevealed(): boolean;\n    get view(): TabView;\n    set view(val: TabView);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(\n        signal: \"extra-drag-drop\",\n        callback: (_source: this, page: TabPage, value: GObject.Value) => boolean\n    ): number;\n    connect_after(\n        signal: \"extra-drag-drop\",\n        callback: (_source: this, page: TabPage, value: GObject.Value) => boolean\n    ): number;\n    emit(signal: \"extra-drag-drop\", page: TabPage, value: GObject.Value | any): void;\n    connect(\n        signal: \"extra-drag-value\",\n        callback: (_source: this, page: TabPage, value: GObject.Value) => Gdk.DragAction\n    ): number;\n    connect_after(\n        signal: \"extra-drag-value\",\n        callback: (_source: this, page: TabPage, value: GObject.Value) => Gdk.DragAction\n    ): number;\n    emit(signal: \"extra-drag-value\", page: TabPage, value: GObject.Value | any): void;\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Constructors\n\n    static [\"new\"](): TabBar;\n\n    // Members\n\n    get_autohide(): boolean;\n    get_end_action_widget(): Gtk.Widget | null;\n    get_expand_tabs(): boolean;\n    get_extra_drag_preload(): boolean;\n    get_inverted(): boolean;\n    get_is_overflowing(): boolean;\n    get_start_action_widget(): Gtk.Widget | null;\n    get_tabs_revealed(): boolean;\n    get_view(): TabView | null;\n    set_autohide(autohide: boolean): void;\n    set_end_action_widget(widget?: Gtk.Widget | null): void;\n    set_expand_tabs(expand_tabs: boolean): void;\n    set_extra_drag_preload(preload: boolean): void;\n    set_inverted(inverted: boolean): void;\n    set_start_action_widget(widget?: Gtk.Widget | null): void;\n    set_view(view?: TabView | null): void;\n    setup_extra_drop_target(actions: Gdk.DragAction, types?: GObject.GType[] | null): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module TabButton {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        view: TabView;\n    }\n}\nexport class TabButton\n    extends Gtk.Widget\n    implements Gtk.Accessible, Gtk.Actionable, Gtk.Buildable, Gtk.ConstraintTarget\n{\n    static $gtype: GObject.GType<TabButton>;\n\n    constructor(properties?: Partial<TabButton.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<TabButton.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get view(): TabView;\n    set view(val: TabView);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"activate\", callback: (_source: this) => void): number;\n    connect_after(signal: \"activate\", callback: (_source: this) => void): number;\n    emit(signal: \"activate\"): void;\n    connect(signal: \"clicked\", callback: (_source: this) => void): number;\n    connect_after(signal: \"clicked\", callback: (_source: this) => void): number;\n    emit(signal: \"clicked\"): void;\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n    get action_name(): string;\n    set action_name(val: string);\n    get actionName(): string;\n    set actionName(val: string);\n    get action_target(): GLib.Variant;\n    set action_target(val: GLib.Variant);\n    get actionTarget(): GLib.Variant;\n    set actionTarget(val: GLib.Variant);\n\n    // Constructors\n\n    static [\"new\"](): TabButton;\n\n    // Members\n\n    get_view(): TabView | null;\n    set_view(view?: TabView | null): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_action_name(): string | null;\n    get_action_target_value(): GLib.Variant | null;\n    set_action_name(action_name?: string | null): void;\n    set_action_target_value(target_value?: GLib.Variant | null): void;\n    set_detailed_action_name(detailed_action_name: string): void;\n    vfunc_get_action_name(): string | null;\n    vfunc_get_action_target_value(): GLib.Variant | null;\n    vfunc_set_action_name(action_name?: string | null): void;\n    vfunc_set_action_target_value(target_value?: GLib.Variant | null): void;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module TabOverview {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        child: Gtk.Widget;\n        enable_new_tab: boolean;\n        enableNewTab: boolean;\n        enable_search: boolean;\n        enableSearch: boolean;\n        extra_drag_preload: boolean;\n        extraDragPreload: boolean;\n        inverted: boolean;\n        open: boolean;\n        search_active: boolean;\n        searchActive: boolean;\n        secondary_menu: Gio.MenuModel;\n        secondaryMenu: Gio.MenuModel;\n        show_end_title_buttons: boolean;\n        showEndTitleButtons: boolean;\n        show_start_title_buttons: boolean;\n        showStartTitleButtons: boolean;\n        view: TabView;\n    }\n}\nexport class TabOverview extends Gtk.Widget implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<TabOverview>;\n\n    constructor(properties?: Partial<TabOverview.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<TabOverview.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get child(): Gtk.Widget;\n    set child(val: Gtk.Widget);\n    get enable_new_tab(): boolean;\n    set enable_new_tab(val: boolean);\n    get enableNewTab(): boolean;\n    set enableNewTab(val: boolean);\n    get enable_search(): boolean;\n    set enable_search(val: boolean);\n    get enableSearch(): boolean;\n    set enableSearch(val: boolean);\n    get extra_drag_preload(): boolean;\n    set extra_drag_preload(val: boolean);\n    get extraDragPreload(): boolean;\n    set extraDragPreload(val: boolean);\n    get inverted(): boolean;\n    set inverted(val: boolean);\n    get open(): boolean;\n    set open(val: boolean);\n    get search_active(): boolean;\n    get searchActive(): boolean;\n    get secondary_menu(): Gio.MenuModel;\n    set secondary_menu(val: Gio.MenuModel);\n    get secondaryMenu(): Gio.MenuModel;\n    set secondaryMenu(val: Gio.MenuModel);\n    get show_end_title_buttons(): boolean;\n    set show_end_title_buttons(val: boolean);\n    get showEndTitleButtons(): boolean;\n    set showEndTitleButtons(val: boolean);\n    get show_start_title_buttons(): boolean;\n    set show_start_title_buttons(val: boolean);\n    get showStartTitleButtons(): boolean;\n    set showStartTitleButtons(val: boolean);\n    get view(): TabView;\n    set view(val: TabView);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"create-tab\", callback: (_source: this) => TabPage): number;\n    connect_after(signal: \"create-tab\", callback: (_source: this) => TabPage): number;\n    emit(signal: \"create-tab\"): void;\n    connect(\n        signal: \"extra-drag-drop\",\n        callback: (_source: this, page: TabPage, value: GObject.Value) => boolean\n    ): number;\n    connect_after(\n        signal: \"extra-drag-drop\",\n        callback: (_source: this, page: TabPage, value: GObject.Value) => boolean\n    ): number;\n    emit(signal: \"extra-drag-drop\", page: TabPage, value: GObject.Value | any): void;\n    connect(\n        signal: \"extra-drag-value\",\n        callback: (_source: this, page: TabPage, value: GObject.Value) => Gdk.DragAction\n    ): number;\n    connect_after(\n        signal: \"extra-drag-value\",\n        callback: (_source: this, page: TabPage, value: GObject.Value) => Gdk.DragAction\n    ): number;\n    emit(signal: \"extra-drag-value\", page: TabPage, value: GObject.Value | any): void;\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Constructors\n\n    static [\"new\"](): TabOverview;\n\n    // Members\n\n    get_child(): Gtk.Widget | null;\n    get_enable_new_tab(): boolean;\n    get_enable_search(): boolean;\n    get_extra_drag_preload(): boolean;\n    get_inverted(): boolean;\n    get_open(): boolean;\n    get_search_active(): boolean;\n    get_secondary_menu(): Gio.MenuModel | null;\n    get_show_end_title_buttons(): boolean;\n    get_show_start_title_buttons(): boolean;\n    get_view(): TabView | null;\n    set_child(child?: Gtk.Widget | null): void;\n    set_enable_new_tab(enable_new_tab: boolean): void;\n    set_enable_search(enable_search: boolean): void;\n    set_extra_drag_preload(preload: boolean): void;\n    set_inverted(inverted: boolean): void;\n    set_open(open: boolean): void;\n    set_secondary_menu(secondary_menu?: Gio.MenuModel | null): void;\n    set_show_end_title_buttons(show_end_title_buttons: boolean): void;\n    set_show_start_title_buttons(show_start_title_buttons: boolean): void;\n    set_view(view?: TabView | null): void;\n    setup_extra_drop_target(actions: Gdk.DragAction, types?: GObject.GType[] | null): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module TabPage {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        child: Gtk.Widget;\n        icon: Gio.Icon;\n        indicator_activatable: boolean;\n        indicatorActivatable: boolean;\n        indicator_icon: Gio.Icon;\n        indicatorIcon: Gio.Icon;\n        indicator_tooltip: string;\n        indicatorTooltip: string;\n        keyword: string;\n        live_thumbnail: boolean;\n        liveThumbnail: boolean;\n        loading: boolean;\n        needs_attention: boolean;\n        needsAttention: boolean;\n        pinned: boolean;\n        selected: boolean;\n        thumbnail_xalign: number;\n        thumbnailXalign: number;\n        thumbnail_yalign: number;\n        thumbnailYalign: number;\n        title: string;\n        tooltip: string;\n    }\n}\nexport class TabPage extends GObject.Object implements Gtk.Accessible {\n    static $gtype: GObject.GType<TabPage>;\n\n    constructor(properties?: Partial<TabPage.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<TabPage.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get child(): Gtk.Widget;\n    get icon(): Gio.Icon;\n    set icon(val: Gio.Icon);\n    get indicator_activatable(): boolean;\n    set indicator_activatable(val: boolean);\n    get indicatorActivatable(): boolean;\n    set indicatorActivatable(val: boolean);\n    get indicator_icon(): Gio.Icon;\n    set indicator_icon(val: Gio.Icon);\n    get indicatorIcon(): Gio.Icon;\n    set indicatorIcon(val: Gio.Icon);\n    get indicator_tooltip(): string;\n    set indicator_tooltip(val: string);\n    get indicatorTooltip(): string;\n    set indicatorTooltip(val: string);\n    get keyword(): string;\n    set keyword(val: string);\n    get live_thumbnail(): boolean;\n    set live_thumbnail(val: boolean);\n    get liveThumbnail(): boolean;\n    set liveThumbnail(val: boolean);\n    get loading(): boolean;\n    set loading(val: boolean);\n    get needs_attention(): boolean;\n    set needs_attention(val: boolean);\n    get needsAttention(): boolean;\n    set needsAttention(val: boolean);\n    get pinned(): boolean;\n    get selected(): boolean;\n    get thumbnail_xalign(): number;\n    set thumbnail_xalign(val: number);\n    get thumbnailXalign(): number;\n    set thumbnailXalign(val: number);\n    get thumbnail_yalign(): number;\n    set thumbnail_yalign(val: number);\n    get thumbnailYalign(): number;\n    set thumbnailYalign(val: number);\n    get title(): string;\n    set title(val: string);\n    get tooltip(): string;\n    set tooltip(val: string);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Members\n\n    get_child(): Gtk.Widget;\n    get_icon(): Gio.Icon | null;\n    get_indicator_activatable(): boolean;\n    get_indicator_icon(): Gio.Icon | null;\n    get_indicator_tooltip(): string;\n    get_keyword(): string | null;\n    get_live_thumbnail(): boolean;\n    get_loading(): boolean;\n    get_needs_attention(): boolean;\n    get_parent(): TabPage | null;\n    get_pinned(): boolean;\n    get_selected(): boolean;\n    get_thumbnail_xalign(): number;\n    get_thumbnail_yalign(): number;\n    get_title(): string;\n    get_tooltip(): string | null;\n    invalidate_thumbnail(): void;\n    set_icon(icon?: Gio.Icon | null): void;\n    set_indicator_activatable(activatable: boolean): void;\n    set_indicator_icon(indicator_icon?: Gio.Icon | null): void;\n    set_indicator_tooltip(tooltip: string): void;\n    set_keyword(keyword: string): void;\n    set_live_thumbnail(live_thumbnail: boolean): void;\n    set_loading(loading: boolean): void;\n    set_needs_attention(needs_attention: boolean): void;\n    set_thumbnail_xalign(xalign: number): void;\n    set_thumbnail_yalign(yalign: number): void;\n    set_title(title: string): void;\n    set_tooltip(tooltip: string): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n}\nexport module TabView {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        default_icon: Gio.Icon;\n        defaultIcon: Gio.Icon;\n        is_transferring_page: boolean;\n        isTransferringPage: boolean;\n        menu_model: Gio.MenuModel;\n        menuModel: Gio.MenuModel;\n        n_pages: number;\n        nPages: number;\n        n_pinned_pages: number;\n        nPinnedPages: number;\n        pages: Gtk.SelectionModel;\n        selected_page: TabPage;\n        selectedPage: TabPage;\n        shortcuts: TabViewShortcuts;\n    }\n}\nexport class TabView extends Gtk.Widget implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<TabView>;\n\n    constructor(properties?: Partial<TabView.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<TabView.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get default_icon(): Gio.Icon;\n    set default_icon(val: Gio.Icon);\n    get defaultIcon(): Gio.Icon;\n    set defaultIcon(val: Gio.Icon);\n    get is_transferring_page(): boolean;\n    get isTransferringPage(): boolean;\n    get menu_model(): Gio.MenuModel;\n    set menu_model(val: Gio.MenuModel);\n    get menuModel(): Gio.MenuModel;\n    set menuModel(val: Gio.MenuModel);\n    get n_pages(): number;\n    get nPages(): number;\n    get n_pinned_pages(): number;\n    get nPinnedPages(): number;\n    get pages(): Gtk.SelectionModel;\n    get selected_page(): TabPage;\n    set selected_page(val: TabPage);\n    get selectedPage(): TabPage;\n    set selectedPage(val: TabPage);\n    get shortcuts(): TabViewShortcuts;\n    set shortcuts(val: TabViewShortcuts);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"close-page\", callback: (_source: this, page: TabPage) => boolean): number;\n    connect_after(signal: \"close-page\", callback: (_source: this, page: TabPage) => boolean): number;\n    emit(signal: \"close-page\", page: TabPage): void;\n    connect(signal: \"create-window\", callback: (_source: this) => TabView | null): number;\n    connect_after(signal: \"create-window\", callback: (_source: this) => TabView | null): number;\n    emit(signal: \"create-window\"): void;\n    connect(signal: \"indicator-activated\", callback: (_source: this, page: TabPage) => void): number;\n    connect_after(signal: \"indicator-activated\", callback: (_source: this, page: TabPage) => void): number;\n    emit(signal: \"indicator-activated\", page: TabPage): void;\n    connect(signal: \"page-attached\", callback: (_source: this, page: TabPage, position: number) => void): number;\n    connect_after(signal: \"page-attached\", callback: (_source: this, page: TabPage, position: number) => void): number;\n    emit(signal: \"page-attached\", page: TabPage, position: number): void;\n    connect(signal: \"page-detached\", callback: (_source: this, page: TabPage, position: number) => void): number;\n    connect_after(signal: \"page-detached\", callback: (_source: this, page: TabPage, position: number) => void): number;\n    emit(signal: \"page-detached\", page: TabPage, position: number): void;\n    connect(signal: \"page-reordered\", callback: (_source: this, page: TabPage, position: number) => void): number;\n    connect_after(signal: \"page-reordered\", callback: (_source: this, page: TabPage, position: number) => void): number;\n    emit(signal: \"page-reordered\", page: TabPage, position: number): void;\n    connect(signal: \"setup-menu\", callback: (_source: this, page: TabPage | null) => void): number;\n    connect_after(signal: \"setup-menu\", callback: (_source: this, page: TabPage | null) => void): number;\n    emit(signal: \"setup-menu\", page: TabPage | null): void;\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Constructors\n\n    static [\"new\"](): TabView;\n\n    // Members\n\n    add_page(child: Gtk.Widget, parent?: TabPage | null): TabPage;\n    add_shortcuts(shortcuts: TabViewShortcuts): void;\n    append(child: Gtk.Widget): TabPage;\n    append_pinned(child: Gtk.Widget): TabPage;\n    close_other_pages(page: TabPage): void;\n    close_page(page: TabPage): void;\n    close_page_finish(page: TabPage, confirm: boolean): void;\n    close_pages_after(page: TabPage): void;\n    close_pages_before(page: TabPage): void;\n    get_default_icon(): Gio.Icon;\n    get_is_transferring_page(): boolean;\n    get_menu_model(): Gio.MenuModel | null;\n    get_n_pages(): number;\n    get_n_pinned_pages(): number;\n    get_nth_page(position: number): TabPage;\n    get_page(child: Gtk.Widget): TabPage;\n    get_page_position(page: TabPage): number;\n    get_pages(): Gtk.SelectionModel;\n    get_selected_page(): TabPage | null;\n    get_shortcuts(): TabViewShortcuts;\n    insert(child: Gtk.Widget, position: number): TabPage;\n    insert_pinned(child: Gtk.Widget, position: number): TabPage;\n    invalidate_thumbnails(): void;\n    prepend(child: Gtk.Widget): TabPage;\n    prepend_pinned(child: Gtk.Widget): TabPage;\n    remove_shortcuts(shortcuts: TabViewShortcuts): void;\n    reorder_backward(page: TabPage): boolean;\n    reorder_first(page: TabPage): boolean;\n    reorder_forward(page: TabPage): boolean;\n    reorder_last(page: TabPage): boolean;\n    reorder_page(page: TabPage, position: number): boolean;\n    select_next_page(): boolean;\n    select_previous_page(): boolean;\n    set_default_icon(default_icon: Gio.Icon): void;\n    set_menu_model(menu_model?: Gio.MenuModel | null): void;\n    set_page_pinned(page: TabPage, pinned: boolean): void;\n    set_selected_page(selected_page: TabPage): void;\n    set_shortcuts(shortcuts: TabViewShortcuts): void;\n    transfer_page(page: TabPage, other_view: TabView, position: number): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module TimedAnimation {\n    export interface ConstructorProperties extends Animation.ConstructorProperties {\n        [key: string]: any;\n        alternate: boolean;\n        duration: number;\n        easing: Easing;\n        repeat_count: number;\n        repeatCount: number;\n        reverse: boolean;\n        value_from: number;\n        valueFrom: number;\n        value_to: number;\n        valueTo: number;\n    }\n}\nexport class TimedAnimation extends Animation {\n    static $gtype: GObject.GType<TimedAnimation>;\n\n    constructor(properties?: Partial<TimedAnimation.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<TimedAnimation.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get alternate(): boolean;\n    set alternate(val: boolean);\n    get duration(): number;\n    set duration(val: number);\n    get easing(): Easing;\n    set easing(val: Easing);\n    get repeat_count(): number;\n    set repeat_count(val: number);\n    get repeatCount(): number;\n    set repeatCount(val: number);\n    get reverse(): boolean;\n    set reverse(val: boolean);\n    get value_from(): number;\n    set value_from(val: number);\n    get valueFrom(): number;\n    set valueFrom(val: number);\n    get value_to(): number;\n    set value_to(val: number);\n    get valueTo(): number;\n    set valueTo(val: number);\n\n    // Constructors\n\n    static [\"new\"](\n        widget: Gtk.Widget,\n        from: number,\n        to: number,\n        duration: number,\n        target: AnimationTarget\n    ): TimedAnimation;\n\n    // Members\n\n    get_alternate(): boolean;\n    get_duration(): number;\n    get_easing(): Easing;\n    get_repeat_count(): number;\n    get_reverse(): boolean;\n    get_value_from(): number;\n    get_value_to(): number;\n    set_alternate(alternate: boolean): void;\n    set_duration(duration: number): void;\n    set_easing(easing: Easing): void;\n    set_repeat_count(repeat_count: number): void;\n    set_reverse(reverse: boolean): void;\n    set_value_from(value: number): void;\n    set_value_to(value: number): void;\n}\nexport module Toast {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        action_name: string;\n        actionName: string;\n        action_target: GLib.Variant;\n        actionTarget: GLib.Variant;\n        button_label: string;\n        buttonLabel: string;\n        custom_title: Gtk.Widget;\n        customTitle: Gtk.Widget;\n        priority: ToastPriority;\n        timeout: number;\n        title: string;\n    }\n}\nexport class Toast extends GObject.Object {\n    static $gtype: GObject.GType<Toast>;\n\n    constructor(properties?: Partial<Toast.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Toast.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get action_name(): string;\n    set action_name(val: string);\n    get actionName(): string;\n    set actionName(val: string);\n    get action_target(): GLib.Variant;\n    set action_target(val: GLib.Variant);\n    get actionTarget(): GLib.Variant;\n    set actionTarget(val: GLib.Variant);\n    get button_label(): string;\n    set button_label(val: string);\n    get buttonLabel(): string;\n    set buttonLabel(val: string);\n    get custom_title(): Gtk.Widget;\n    set custom_title(val: Gtk.Widget);\n    get customTitle(): Gtk.Widget;\n    set customTitle(val: Gtk.Widget);\n    get priority(): ToastPriority;\n    set priority(val: ToastPriority);\n    get timeout(): number;\n    set timeout(val: number);\n    get title(): string;\n    set title(val: string);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"button-clicked\", callback: (_source: this) => void): number;\n    connect_after(signal: \"button-clicked\", callback: (_source: this) => void): number;\n    emit(signal: \"button-clicked\"): void;\n    connect(signal: \"dismissed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"dismissed\", callback: (_source: this) => void): number;\n    emit(signal: \"dismissed\"): void;\n\n    // Constructors\n\n    static [\"new\"](title: string): Toast;\n\n    // Members\n\n    dismiss(): void;\n    get_action_name(): string | null;\n    get_action_target_value(): GLib.Variant | null;\n    get_button_label(): string | null;\n    get_custom_title(): Gtk.Widget | null;\n    get_priority(): ToastPriority;\n    get_timeout(): number;\n    get_title(): string | null;\n    set_action_name(action_name?: string | null): void;\n    set_action_target_value(action_target?: GLib.Variant | null): void;\n    set_button_label(button_label?: string | null): void;\n    set_custom_title(widget?: Gtk.Widget | null): void;\n    set_detailed_action_name(detailed_action_name?: string | null): void;\n    set_priority(priority: ToastPriority): void;\n    set_timeout(timeout: number): void;\n    set_title(title: string): void;\n}\nexport module ToastOverlay {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        child: Gtk.Widget;\n    }\n}\nexport class ToastOverlay extends Gtk.Widget implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<ToastOverlay>;\n\n    constructor(properties?: Partial<ToastOverlay.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ToastOverlay.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get child(): Gtk.Widget;\n    set child(val: Gtk.Widget);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Constructors\n\n    static [\"new\"](): ToastOverlay;\n\n    // Members\n\n    add_toast(toast: Toast): void;\n    get_child(): Gtk.Widget | null;\n    set_child(child?: Gtk.Widget | null): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module ViewStack {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        hhomogeneous: boolean;\n        pages: Gtk.SelectionModel;\n        vhomogeneous: boolean;\n        visible_child: Gtk.Widget;\n        visibleChild: Gtk.Widget;\n        visible_child_name: string;\n        visibleChildName: string;\n    }\n}\nexport class ViewStack extends Gtk.Widget implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<ViewStack>;\n\n    constructor(properties?: Partial<ViewStack.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ViewStack.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get hhomogeneous(): boolean;\n    set hhomogeneous(val: boolean);\n    get pages(): Gtk.SelectionModel;\n    get vhomogeneous(): boolean;\n    set vhomogeneous(val: boolean);\n    get visible_child(): Gtk.Widget;\n    set visible_child(val: Gtk.Widget);\n    get visibleChild(): Gtk.Widget;\n    set visibleChild(val: Gtk.Widget);\n    get visible_child_name(): string;\n    set visible_child_name(val: string);\n    get visibleChildName(): string;\n    set visibleChildName(val: string);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Constructors\n\n    static [\"new\"](): ViewStack;\n\n    // Members\n\n    add(child: Gtk.Widget): ViewStackPage;\n    add_named(child: Gtk.Widget, name?: string | null): ViewStackPage;\n    add_titled(child: Gtk.Widget, name: string | null, title: string): ViewStackPage;\n    add_titled_with_icon(child: Gtk.Widget, name: string | null, title: string, icon_name: string): ViewStackPage;\n    get_child_by_name(name: string): Gtk.Widget | null;\n    get_hhomogeneous(): boolean;\n    get_page(child: Gtk.Widget): ViewStackPage;\n    get_pages(): Gtk.SelectionModel;\n    get_vhomogeneous(): boolean;\n    get_visible_child(): Gtk.Widget | null;\n    get_visible_child_name(): string | null;\n    remove(child: Gtk.Widget): void;\n    set_hhomogeneous(hhomogeneous: boolean): void;\n    set_vhomogeneous(vhomogeneous: boolean): void;\n    set_visible_child(child: Gtk.Widget): void;\n    set_visible_child_name(name: string): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module ViewStackPage {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        badge_number: number;\n        badgeNumber: number;\n        child: Gtk.Widget;\n        icon_name: string;\n        iconName: string;\n        name: string;\n        needs_attention: boolean;\n        needsAttention: boolean;\n        title: string;\n        use_underline: boolean;\n        useUnderline: boolean;\n        visible: boolean;\n    }\n}\nexport class ViewStackPage extends GObject.Object implements Gtk.Accessible {\n    static $gtype: GObject.GType<ViewStackPage>;\n\n    constructor(properties?: Partial<ViewStackPage.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ViewStackPage.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get badge_number(): number;\n    set badge_number(val: number);\n    get badgeNumber(): number;\n    set badgeNumber(val: number);\n    get child(): Gtk.Widget;\n    get icon_name(): string;\n    set icon_name(val: string);\n    get iconName(): string;\n    set iconName(val: string);\n    get name(): string;\n    set name(val: string);\n    get needs_attention(): boolean;\n    set needs_attention(val: boolean);\n    get needsAttention(): boolean;\n    set needsAttention(val: boolean);\n    get title(): string;\n    set title(val: string);\n    get use_underline(): boolean;\n    set use_underline(val: boolean);\n    get useUnderline(): boolean;\n    set useUnderline(val: boolean);\n    get visible(): boolean;\n    set visible(val: boolean);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Members\n\n    get_badge_number(): number;\n    get_child(): Gtk.Widget;\n    get_icon_name(): string | null;\n    get_name(): string | null;\n    get_needs_attention(): boolean;\n    get_title(): string | null;\n    get_use_underline(): boolean;\n    get_visible(): boolean;\n    set_badge_number(badge_number: number): void;\n    set_icon_name(icon_name?: string | null): void;\n    set_name(name?: string | null): void;\n    set_needs_attention(needs_attention: boolean): void;\n    set_title(title?: string | null): void;\n    set_use_underline(use_underline: boolean): void;\n    set_visible(visible: boolean): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n}\nexport module ViewSwitcher {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        policy: ViewSwitcherPolicy;\n        stack: ViewStack;\n    }\n}\nexport class ViewSwitcher extends Gtk.Widget implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<ViewSwitcher>;\n\n    constructor(properties?: Partial<ViewSwitcher.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ViewSwitcher.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get policy(): ViewSwitcherPolicy;\n    set policy(val: ViewSwitcherPolicy);\n    get stack(): ViewStack;\n    set stack(val: ViewStack);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Constructors\n\n    static [\"new\"](): ViewSwitcher;\n\n    // Members\n\n    get_policy(): ViewSwitcherPolicy;\n    get_stack(): ViewStack | null;\n    set_policy(policy: ViewSwitcherPolicy): void;\n    set_stack(stack?: ViewStack | null): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module ViewSwitcherBar {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        reveal: boolean;\n        stack: ViewStack;\n    }\n}\nexport class ViewSwitcherBar extends Gtk.Widget implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<ViewSwitcherBar>;\n\n    constructor(properties?: Partial<ViewSwitcherBar.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ViewSwitcherBar.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get reveal(): boolean;\n    set reveal(val: boolean);\n    get stack(): ViewStack;\n    set stack(val: ViewStack);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Constructors\n\n    static [\"new\"](): ViewSwitcherBar;\n\n    // Members\n\n    get_reveal(): boolean;\n    get_stack(): ViewStack | null;\n    set_reveal(reveal: boolean): void;\n    set_stack(stack?: ViewStack | null): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module ViewSwitcherTitle {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        stack: ViewStack;\n        subtitle: string;\n        title: string;\n        title_visible: boolean;\n        titleVisible: boolean;\n        view_switcher_enabled: boolean;\n        viewSwitcherEnabled: boolean;\n    }\n}\nexport class ViewSwitcherTitle extends Gtk.Widget implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<ViewSwitcherTitle>;\n\n    constructor(properties?: Partial<ViewSwitcherTitle.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ViewSwitcherTitle.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get stack(): ViewStack;\n    set stack(val: ViewStack);\n    get subtitle(): string;\n    set subtitle(val: string);\n    get title(): string;\n    set title(val: string);\n    get title_visible(): boolean;\n    get titleVisible(): boolean;\n    get view_switcher_enabled(): boolean;\n    set view_switcher_enabled(val: boolean);\n    get viewSwitcherEnabled(): boolean;\n    set viewSwitcherEnabled(val: boolean);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Constructors\n\n    static [\"new\"](): ViewSwitcherTitle;\n\n    // Members\n\n    get_stack(): ViewStack | null;\n    get_subtitle(): string;\n    get_title(): string;\n    get_title_visible(): boolean;\n    get_view_switcher_enabled(): boolean;\n    set_stack(stack?: ViewStack | null): void;\n    set_subtitle(subtitle: string): void;\n    set_title(title: string): void;\n    set_view_switcher_enabled(enabled: boolean): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\nexport module Window {\n    export interface ConstructorProperties extends Gtk.Window.ConstructorProperties {\n        [key: string]: any;\n        content: Gtk.Widget;\n    }\n}\nexport class Window\n    extends Gtk.Window\n    implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Native, Gtk.Root, Gtk.ShortcutManager\n{\n    static $gtype: GObject.GType<Window>;\n\n    constructor(properties?: Partial<Window.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Window.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get content(): Gtk.Widget;\n    set content(val: Gtk.Widget);\n\n    // Constructors\n\n    static [\"new\"](): Window;\n\n    // Members\n\n    get_content(): Gtk.Widget | null;\n    set_content(content?: Gtk.Widget | null): void;\n\n    // Implemented Members\n\n    get_renderer(): Gsk.Renderer;\n    get_surface(): Gdk.Surface;\n    get_surface_transform(): [number, number];\n    realize(): void;\n    unrealize(): void;\n    get_display(): Gdk.Display;\n    get_focus(): Gtk.Widget | null;\n    set_focus(focus?: Gtk.Widget | null): void;\n    vfunc_add_controller(controller: Gtk.ShortcutController): void;\n    vfunc_remove_controller(controller: Gtk.ShortcutController): void;\n}\nexport module WindowTitle {\n    export interface ConstructorProperties extends Gtk.Widget.ConstructorProperties {\n        [key: string]: any;\n        subtitle: string;\n        title: string;\n    }\n}\nexport class WindowTitle extends Gtk.Widget implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {\n    static $gtype: GObject.GType<WindowTitle>;\n\n    constructor(properties?: Partial<WindowTitle.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<WindowTitle.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get subtitle(): string;\n    set subtitle(val: string);\n    get title(): string;\n    set title(val: string);\n\n    // Implemented Properties\n\n    get accessible_role(): Gtk.AccessibleRole;\n    set accessible_role(val: Gtk.AccessibleRole);\n    get accessibleRole(): Gtk.AccessibleRole;\n    set accessibleRole(val: Gtk.AccessibleRole);\n\n    // Constructors\n\n    static [\"new\"](title: string, subtitle: string): WindowTitle;\n\n    // Members\n\n    get_subtitle(): string;\n    get_title(): string;\n    set_subtitle(subtitle: string): void;\n    set_title(title: string): void;\n\n    // Implemented Members\n\n    get_accessible_parent(): Gtk.Accessible | null;\n    get_accessible_role(): Gtk.AccessibleRole;\n    get_at_context(): Gtk.ATContext;\n    get_bounds(): [boolean, number, number, number, number];\n    get_first_accessible_child(): Gtk.Accessible | null;\n    get_next_accessible_sibling(): Gtk.Accessible | null;\n    get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    reset_property(property: Gtk.AccessibleProperty): void;\n    reset_relation(relation: Gtk.AccessibleRelation): void;\n    reset_state(state: Gtk.AccessibleState): void;\n    set_accessible_parent(parent?: Gtk.Accessible | null, next_sibling?: Gtk.Accessible | null): void;\n    update_next_accessible_sibling(new_sibling?: Gtk.Accessible | null): void;\n    update_property(properties: Gtk.AccessibleProperty[], values: GObject.Value[]): void;\n    update_relation(relations: Gtk.AccessibleRelation[], values: GObject.Value[]): void;\n    update_state(states: Gtk.AccessibleState[], values: GObject.Value[]): void;\n    vfunc_get_accessible_parent(): Gtk.Accessible | null;\n    vfunc_get_at_context(): Gtk.ATContext | null;\n    vfunc_get_bounds(): [boolean, number, number, number, number];\n    vfunc_get_first_accessible_child(): Gtk.Accessible | null;\n    vfunc_get_next_accessible_sibling(): Gtk.Accessible | null;\n    vfunc_get_platform_state(state: Gtk.AccessiblePlatformState): boolean;\n    get_buildable_id(): string | null;\n    vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type?: string | null): void;\n    vfunc_custom_finished(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_end(builder: Gtk.Builder, child: GObject.Object | null, tagname: string, data?: any | null): void;\n    vfunc_custom_tag_start(\n        builder: Gtk.Builder,\n        child: GObject.Object | null,\n        tagname: string\n    ): [boolean, Gtk.BuildableParser, any | null];\n    vfunc_get_id(): string;\n    vfunc_get_internal_child<T = GObject.Object>(builder: Gtk.Builder, childname: string): T;\n    vfunc_parser_finished(builder: Gtk.Builder): void;\n    vfunc_set_buildable_property(builder: Gtk.Builder, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id: string): void;\n}\n\nexport class SpringParams {\n    static $gtype: GObject.GType<SpringParams>;\n\n    constructor(damping_ratio: number, mass: number, stiffness: number);\n    constructor(copy: SpringParams);\n\n    // Constructors\n    static [\"new\"](damping_ratio: number, mass: number, stiffness: number): SpringParams;\n    static new_full(damping: number, mass: number, stiffness: number): SpringParams;\n\n    // Members\n    get_damping(): number;\n    get_damping_ratio(): number;\n    get_mass(): number;\n    get_stiffness(): number;\n    ref(): SpringParams;\n    unref(): void;\n}\n\nexport interface SwipeableNamespace {\n    $gtype: GObject.GType<Swipeable>;\n    prototype: SwipeablePrototype;\n}\nexport type Swipeable = SwipeablePrototype;\nexport interface SwipeablePrototype extends Gtk.Widget {\n    // Members\n\n    get_cancel_progress(): number;\n    get_distance(): number;\n    get_progress(): number;\n    get_snap_points(): number[];\n    get_swipe_area(navigation_direction: NavigationDirection, is_drag: boolean): Gdk.Rectangle;\n    vfunc_get_cancel_progress(): number;\n    vfunc_get_distance(): number;\n    vfunc_get_progress(): number;\n    vfunc_get_snap_points(): number[];\n    vfunc_get_swipe_area(navigation_direction: NavigationDirection, is_drag: boolean): Gdk.Rectangle;\n}\n\nexport const Swipeable: SwipeableNamespace;\n"
  },
  {
    "path": "@types/clutter12/doc.json",
    "content": "{\n    \"name\": \"Clutter\",\n    \"api_version\": \"12\",\n    \"package_version\": \"12.0\",\n    \"imports\": {\n        \"GObject\": \"2.0\",\n        \"cairo\": \"1.0\",\n        \"Atk\": \"1.0\",\n        \"Pango\": \"1.0\",\n        \"GLib\": \"2.0\",\n        \"Graphene\": \"1.0\",\n        \"Gio\": \"2.0\",\n        \"Json\": \"1.0\",\n        \"Cogl\": \"12\"\n    }\n}"
  },
  {
    "path": "@types/clutter12/index.d.ts",
    "content": "/**\n * Clutter 12\n *\n * Generated from 12.0\n */\n\nimport * as GObject from \"@gi-types/gobject2\";\nimport * as cairo from \"@gi-types/cairo1\";\nimport * as Atk from \"@gi-types/atk1\";\nimport * as Pango from \"@gi-types/pango1\";\nimport * as GLib from \"@gi-types/glib2\";\nimport * as Graphene from \"@gi-types/graphene1\";\nimport * as Gio from \"@gi-types/gio2\";\nimport * as Json from \"@gi-types/json1\";\nimport * as Cogl from \"@gi-types/cogl12\";\n\nexport const BUTTON_MIDDLE: number;\nexport const BUTTON_PRIMARY: number;\nexport const BUTTON_SECONDARY: number;\nexport const COORDINATE_EPSILON: number;\nexport const CURRENT_TIME: number;\nexport const EVENT_PROPAGATE: boolean;\nexport const EVENT_STOP: boolean;\nexport const KEY_0: number;\nexport const KEY_1: number;\nexport const KEY_2: number;\nexport const KEY_3: number;\nexport const KEY_3270_AltCursor: number;\nexport const KEY_3270_Attn: number;\nexport const KEY_3270_BackTab: number;\nexport const KEY_3270_ChangeScreen: number;\nexport const KEY_3270_Copy: number;\nexport const KEY_3270_CursorBlink: number;\nexport const KEY_3270_CursorSelect: number;\nexport const KEY_3270_DeleteWord: number;\nexport const KEY_3270_Duplicate: number;\nexport const KEY_3270_Enter: number;\nexport const KEY_3270_EraseEOF: number;\nexport const KEY_3270_EraseInput: number;\nexport const KEY_3270_ExSelect: number;\nexport const KEY_3270_FieldMark: number;\nexport const KEY_3270_Ident: number;\nexport const KEY_3270_Jump: number;\nexport const KEY_3270_KeyClick: number;\nexport const KEY_3270_Left2: number;\nexport const KEY_3270_PA1: number;\nexport const KEY_3270_PA2: number;\nexport const KEY_3270_PA3: number;\nexport const KEY_3270_Play: number;\nexport const KEY_3270_PrintScreen: number;\nexport const KEY_3270_Quit: number;\nexport const KEY_3270_Record: number;\nexport const KEY_3270_Reset: number;\nexport const KEY_3270_Right2: number;\nexport const KEY_3270_Rule: number;\nexport const KEY_3270_Setup: number;\nexport const KEY_3270_Test: number;\nexport const KEY_4: number;\nexport const KEY_5: number;\nexport const KEY_6: number;\nexport const KEY_7: number;\nexport const KEY_8: number;\nexport const KEY_9: number;\nexport const KEY_A: number;\nexport const KEY_AE: number;\nexport const KEY_Aacute: number;\nexport const KEY_Abelowdot: number;\nexport const KEY_Abreve: number;\nexport const KEY_Abreveacute: number;\nexport const KEY_Abrevebelowdot: number;\nexport const KEY_Abrevegrave: number;\nexport const KEY_Abrevehook: number;\nexport const KEY_Abrevetilde: number;\nexport const KEY_AccessX_Enable: number;\nexport const KEY_AccessX_Feedback_Enable: number;\nexport const KEY_Acircumflex: number;\nexport const KEY_Acircumflexacute: number;\nexport const KEY_Acircumflexbelowdot: number;\nexport const KEY_Acircumflexgrave: number;\nexport const KEY_Acircumflexhook: number;\nexport const KEY_Acircumflextilde: number;\nexport const KEY_AddFavorite: number;\nexport const KEY_Adiaeresis: number;\nexport const KEY_Agrave: number;\nexport const KEY_Ahook: number;\nexport const KEY_Alt_L: number;\nexport const KEY_Alt_R: number;\nexport const KEY_Amacron: number;\nexport const KEY_Aogonek: number;\nexport const KEY_ApplicationLeft: number;\nexport const KEY_ApplicationRight: number;\nexport const KEY_Arabic_0: number;\nexport const KEY_Arabic_1: number;\nexport const KEY_Arabic_2: number;\nexport const KEY_Arabic_3: number;\nexport const KEY_Arabic_4: number;\nexport const KEY_Arabic_5: number;\nexport const KEY_Arabic_6: number;\nexport const KEY_Arabic_7: number;\nexport const KEY_Arabic_8: number;\nexport const KEY_Arabic_9: number;\nexport const KEY_Arabic_ain: number;\nexport const KEY_Arabic_alef: number;\nexport const KEY_Arabic_alefmaksura: number;\nexport const KEY_Arabic_beh: number;\nexport const KEY_Arabic_comma: number;\nexport const KEY_Arabic_dad: number;\nexport const KEY_Arabic_dal: number;\nexport const KEY_Arabic_damma: number;\nexport const KEY_Arabic_dammatan: number;\nexport const KEY_Arabic_ddal: number;\nexport const KEY_Arabic_farsi_yeh: number;\nexport const KEY_Arabic_fatha: number;\nexport const KEY_Arabic_fathatan: number;\nexport const KEY_Arabic_feh: number;\nexport const KEY_Arabic_fullstop: number;\nexport const KEY_Arabic_gaf: number;\nexport const KEY_Arabic_ghain: number;\nexport const KEY_Arabic_ha: number;\nexport const KEY_Arabic_hah: number;\nexport const KEY_Arabic_hamza: number;\nexport const KEY_Arabic_hamza_above: number;\nexport const KEY_Arabic_hamza_below: number;\nexport const KEY_Arabic_hamzaonalef: number;\nexport const KEY_Arabic_hamzaonwaw: number;\nexport const KEY_Arabic_hamzaonyeh: number;\nexport const KEY_Arabic_hamzaunderalef: number;\nexport const KEY_Arabic_heh: number;\nexport const KEY_Arabic_heh_doachashmee: number;\nexport const KEY_Arabic_heh_goal: number;\nexport const KEY_Arabic_jeem: number;\nexport const KEY_Arabic_jeh: number;\nexport const KEY_Arabic_kaf: number;\nexport const KEY_Arabic_kasra: number;\nexport const KEY_Arabic_kasratan: number;\nexport const KEY_Arabic_keheh: number;\nexport const KEY_Arabic_khah: number;\nexport const KEY_Arabic_lam: number;\nexport const KEY_Arabic_madda_above: number;\nexport const KEY_Arabic_maddaonalef: number;\nexport const KEY_Arabic_meem: number;\nexport const KEY_Arabic_noon: number;\nexport const KEY_Arabic_noon_ghunna: number;\nexport const KEY_Arabic_peh: number;\nexport const KEY_Arabic_percent: number;\nexport const KEY_Arabic_qaf: number;\nexport const KEY_Arabic_question_mark: number;\nexport const KEY_Arabic_ra: number;\nexport const KEY_Arabic_rreh: number;\nexport const KEY_Arabic_sad: number;\nexport const KEY_Arabic_seen: number;\nexport const KEY_Arabic_semicolon: number;\nexport const KEY_Arabic_shadda: number;\nexport const KEY_Arabic_sheen: number;\nexport const KEY_Arabic_sukun: number;\nexport const KEY_Arabic_superscript_alef: number;\nexport const KEY_Arabic_switch: number;\nexport const KEY_Arabic_tah: number;\nexport const KEY_Arabic_tatweel: number;\nexport const KEY_Arabic_tcheh: number;\nexport const KEY_Arabic_teh: number;\nexport const KEY_Arabic_tehmarbuta: number;\nexport const KEY_Arabic_thal: number;\nexport const KEY_Arabic_theh: number;\nexport const KEY_Arabic_tteh: number;\nexport const KEY_Arabic_veh: number;\nexport const KEY_Arabic_waw: number;\nexport const KEY_Arabic_yeh: number;\nexport const KEY_Arabic_yeh_baree: number;\nexport const KEY_Arabic_zah: number;\nexport const KEY_Arabic_zain: number;\nexport const KEY_Aring: number;\nexport const KEY_Armenian_AT: number;\nexport const KEY_Armenian_AYB: number;\nexport const KEY_Armenian_BEN: number;\nexport const KEY_Armenian_CHA: number;\nexport const KEY_Armenian_DA: number;\nexport const KEY_Armenian_DZA: number;\nexport const KEY_Armenian_E: number;\nexport const KEY_Armenian_FE: number;\nexport const KEY_Armenian_GHAT: number;\nexport const KEY_Armenian_GIM: number;\nexport const KEY_Armenian_HI: number;\nexport const KEY_Armenian_HO: number;\nexport const KEY_Armenian_INI: number;\nexport const KEY_Armenian_JE: number;\nexport const KEY_Armenian_KE: number;\nexport const KEY_Armenian_KEN: number;\nexport const KEY_Armenian_KHE: number;\nexport const KEY_Armenian_LYUN: number;\nexport const KEY_Armenian_MEN: number;\nexport const KEY_Armenian_NU: number;\nexport const KEY_Armenian_O: number;\nexport const KEY_Armenian_PE: number;\nexport const KEY_Armenian_PYUR: number;\nexport const KEY_Armenian_RA: number;\nexport const KEY_Armenian_RE: number;\nexport const KEY_Armenian_SE: number;\nexport const KEY_Armenian_SHA: number;\nexport const KEY_Armenian_TCHE: number;\nexport const KEY_Armenian_TO: number;\nexport const KEY_Armenian_TSA: number;\nexport const KEY_Armenian_TSO: number;\nexport const KEY_Armenian_TYUN: number;\nexport const KEY_Armenian_VEV: number;\nexport const KEY_Armenian_VO: number;\nexport const KEY_Armenian_VYUN: number;\nexport const KEY_Armenian_YECH: number;\nexport const KEY_Armenian_ZA: number;\nexport const KEY_Armenian_ZHE: number;\nexport const KEY_Armenian_accent: number;\nexport const KEY_Armenian_amanak: number;\nexport const KEY_Armenian_apostrophe: number;\nexport const KEY_Armenian_at: number;\nexport const KEY_Armenian_ayb: number;\nexport const KEY_Armenian_ben: number;\nexport const KEY_Armenian_but: number;\nexport const KEY_Armenian_cha: number;\nexport const KEY_Armenian_da: number;\nexport const KEY_Armenian_dza: number;\nexport const KEY_Armenian_e: number;\nexport const KEY_Armenian_exclam: number;\nexport const KEY_Armenian_fe: number;\nexport const KEY_Armenian_full_stop: number;\nexport const KEY_Armenian_ghat: number;\nexport const KEY_Armenian_gim: number;\nexport const KEY_Armenian_hi: number;\nexport const KEY_Armenian_ho: number;\nexport const KEY_Armenian_hyphen: number;\nexport const KEY_Armenian_ini: number;\nexport const KEY_Armenian_je: number;\nexport const KEY_Armenian_ke: number;\nexport const KEY_Armenian_ken: number;\nexport const KEY_Armenian_khe: number;\nexport const KEY_Armenian_ligature_ew: number;\nexport const KEY_Armenian_lyun: number;\nexport const KEY_Armenian_men: number;\nexport const KEY_Armenian_nu: number;\nexport const KEY_Armenian_o: number;\nexport const KEY_Armenian_paruyk: number;\nexport const KEY_Armenian_pe: number;\nexport const KEY_Armenian_pyur: number;\nexport const KEY_Armenian_question: number;\nexport const KEY_Armenian_ra: number;\nexport const KEY_Armenian_re: number;\nexport const KEY_Armenian_se: number;\nexport const KEY_Armenian_separation_mark: number;\nexport const KEY_Armenian_sha: number;\nexport const KEY_Armenian_shesht: number;\nexport const KEY_Armenian_tche: number;\nexport const KEY_Armenian_to: number;\nexport const KEY_Armenian_tsa: number;\nexport const KEY_Armenian_tso: number;\nexport const KEY_Armenian_tyun: number;\nexport const KEY_Armenian_verjaket: number;\nexport const KEY_Armenian_vev: number;\nexport const KEY_Armenian_vo: number;\nexport const KEY_Armenian_vyun: number;\nexport const KEY_Armenian_yech: number;\nexport const KEY_Armenian_yentamna: number;\nexport const KEY_Armenian_za: number;\nexport const KEY_Armenian_zhe: number;\nexport const KEY_Atilde: number;\nexport const KEY_AudibleBell_Enable: number;\nexport const KEY_AudioCycleTrack: number;\nexport const KEY_AudioForward: number;\nexport const KEY_AudioLowerVolume: number;\nexport const KEY_AudioMedia: number;\nexport const KEY_AudioMicMute: number;\nexport const KEY_AudioMute: number;\nexport const KEY_AudioNext: number;\nexport const KEY_AudioPause: number;\nexport const KEY_AudioPlay: number;\nexport const KEY_AudioPrev: number;\nexport const KEY_AudioRaiseVolume: number;\nexport const KEY_AudioRandomPlay: number;\nexport const KEY_AudioRecord: number;\nexport const KEY_AudioRepeat: number;\nexport const KEY_AudioRewind: number;\nexport const KEY_AudioStop: number;\nexport const KEY_Away: number;\nexport const KEY_B: number;\nexport const KEY_Babovedot: number;\nexport const KEY_Back: number;\nexport const KEY_BackForward: number;\nexport const KEY_BackSpace: number;\nexport const KEY_Battery: number;\nexport const KEY_Begin: number;\nexport const KEY_Blue: number;\nexport const KEY_Bluetooth: number;\nexport const KEY_Book: number;\nexport const KEY_BounceKeys_Enable: number;\nexport const KEY_Break: number;\nexport const KEY_BrightnessAdjust: number;\nexport const KEY_Byelorussian_SHORTU: number;\nexport const KEY_Byelorussian_shortu: number;\nexport const KEY_C: number;\nexport const KEY_CD: number;\nexport const KEY_CH: number;\nexport const KEY_C_H: number;\nexport const KEY_C_h: number;\nexport const KEY_Cabovedot: number;\nexport const KEY_Cacute: number;\nexport const KEY_Calculator: number;\nexport const KEY_Calendar: number;\nexport const KEY_Cancel: number;\nexport const KEY_Caps_Lock: number;\nexport const KEY_Ccaron: number;\nexport const KEY_Ccedilla: number;\nexport const KEY_Ccircumflex: number;\nexport const KEY_Ch: number;\nexport const KEY_Clear: number;\nexport const KEY_ClearGrab: number;\nexport const KEY_Close: number;\nexport const KEY_Codeinput: number;\nexport const KEY_ColonSign: number;\nexport const KEY_Community: number;\nexport const KEY_ContrastAdjust: number;\nexport const KEY_Control_L: number;\nexport const KEY_Control_R: number;\nexport const KEY_Copy: number;\nexport const KEY_CruzeiroSign: number;\nexport const KEY_Cut: number;\nexport const KEY_CycleAngle: number;\nexport const KEY_Cyrillic_A: number;\nexport const KEY_Cyrillic_BE: number;\nexport const KEY_Cyrillic_CHE: number;\nexport const KEY_Cyrillic_CHE_descender: number;\nexport const KEY_Cyrillic_CHE_vertstroke: number;\nexport const KEY_Cyrillic_DE: number;\nexport const KEY_Cyrillic_DZHE: number;\nexport const KEY_Cyrillic_E: number;\nexport const KEY_Cyrillic_EF: number;\nexport const KEY_Cyrillic_EL: number;\nexport const KEY_Cyrillic_EM: number;\nexport const KEY_Cyrillic_EN: number;\nexport const KEY_Cyrillic_EN_descender: number;\nexport const KEY_Cyrillic_ER: number;\nexport const KEY_Cyrillic_ES: number;\nexport const KEY_Cyrillic_GHE: number;\nexport const KEY_Cyrillic_GHE_bar: number;\nexport const KEY_Cyrillic_HA: number;\nexport const KEY_Cyrillic_HARDSIGN: number;\nexport const KEY_Cyrillic_HA_descender: number;\nexport const KEY_Cyrillic_I: number;\nexport const KEY_Cyrillic_IE: number;\nexport const KEY_Cyrillic_IO: number;\nexport const KEY_Cyrillic_I_macron: number;\nexport const KEY_Cyrillic_JE: number;\nexport const KEY_Cyrillic_KA: number;\nexport const KEY_Cyrillic_KA_descender: number;\nexport const KEY_Cyrillic_KA_vertstroke: number;\nexport const KEY_Cyrillic_LJE: number;\nexport const KEY_Cyrillic_NJE: number;\nexport const KEY_Cyrillic_O: number;\nexport const KEY_Cyrillic_O_bar: number;\nexport const KEY_Cyrillic_PE: number;\nexport const KEY_Cyrillic_SCHWA: number;\nexport const KEY_Cyrillic_SHA: number;\nexport const KEY_Cyrillic_SHCHA: number;\nexport const KEY_Cyrillic_SHHA: number;\nexport const KEY_Cyrillic_SHORTI: number;\nexport const KEY_Cyrillic_SOFTSIGN: number;\nexport const KEY_Cyrillic_TE: number;\nexport const KEY_Cyrillic_TSE: number;\nexport const KEY_Cyrillic_U: number;\nexport const KEY_Cyrillic_U_macron: number;\nexport const KEY_Cyrillic_U_straight: number;\nexport const KEY_Cyrillic_U_straight_bar: number;\nexport const KEY_Cyrillic_VE: number;\nexport const KEY_Cyrillic_YA: number;\nexport const KEY_Cyrillic_YERU: number;\nexport const KEY_Cyrillic_YU: number;\nexport const KEY_Cyrillic_ZE: number;\nexport const KEY_Cyrillic_ZHE: number;\nexport const KEY_Cyrillic_ZHE_descender: number;\nexport const KEY_Cyrillic_a: number;\nexport const KEY_Cyrillic_be: number;\nexport const KEY_Cyrillic_che: number;\nexport const KEY_Cyrillic_che_descender: number;\nexport const KEY_Cyrillic_che_vertstroke: number;\nexport const KEY_Cyrillic_de: number;\nexport const KEY_Cyrillic_dzhe: number;\nexport const KEY_Cyrillic_e: number;\nexport const KEY_Cyrillic_ef: number;\nexport const KEY_Cyrillic_el: number;\nexport const KEY_Cyrillic_em: number;\nexport const KEY_Cyrillic_en: number;\nexport const KEY_Cyrillic_en_descender: number;\nexport const KEY_Cyrillic_er: number;\nexport const KEY_Cyrillic_es: number;\nexport const KEY_Cyrillic_ghe: number;\nexport const KEY_Cyrillic_ghe_bar: number;\nexport const KEY_Cyrillic_ha: number;\nexport const KEY_Cyrillic_ha_descender: number;\nexport const KEY_Cyrillic_hardsign: number;\nexport const KEY_Cyrillic_i: number;\nexport const KEY_Cyrillic_i_macron: number;\nexport const KEY_Cyrillic_ie: number;\nexport const KEY_Cyrillic_io: number;\nexport const KEY_Cyrillic_je: number;\nexport const KEY_Cyrillic_ka: number;\nexport const KEY_Cyrillic_ka_descender: number;\nexport const KEY_Cyrillic_ka_vertstroke: number;\nexport const KEY_Cyrillic_lje: number;\nexport const KEY_Cyrillic_nje: number;\nexport const KEY_Cyrillic_o: number;\nexport const KEY_Cyrillic_o_bar: number;\nexport const KEY_Cyrillic_pe: number;\nexport const KEY_Cyrillic_schwa: number;\nexport const KEY_Cyrillic_sha: number;\nexport const KEY_Cyrillic_shcha: number;\nexport const KEY_Cyrillic_shha: number;\nexport const KEY_Cyrillic_shorti: number;\nexport const KEY_Cyrillic_softsign: number;\nexport const KEY_Cyrillic_te: number;\nexport const KEY_Cyrillic_tse: number;\nexport const KEY_Cyrillic_u: number;\nexport const KEY_Cyrillic_u_macron: number;\nexport const KEY_Cyrillic_u_straight: number;\nexport const KEY_Cyrillic_u_straight_bar: number;\nexport const KEY_Cyrillic_ve: number;\nexport const KEY_Cyrillic_ya: number;\nexport const KEY_Cyrillic_yeru: number;\nexport const KEY_Cyrillic_yu: number;\nexport const KEY_Cyrillic_ze: number;\nexport const KEY_Cyrillic_zhe: number;\nexport const KEY_Cyrillic_zhe_descender: number;\nexport const KEY_D: number;\nexport const KEY_DOS: number;\nexport const KEY_Dabovedot: number;\nexport const KEY_Dcaron: number;\nexport const KEY_Delete: number;\nexport const KEY_Display: number;\nexport const KEY_Documents: number;\nexport const KEY_DongSign: number;\nexport const KEY_Down: number;\nexport const KEY_Dstroke: number;\nexport const KEY_E: number;\nexport const KEY_ENG: number;\nexport const KEY_ETH: number;\nexport const KEY_EZH: number;\nexport const KEY_Eabovedot: number;\nexport const KEY_Eacute: number;\nexport const KEY_Ebelowdot: number;\nexport const KEY_Ecaron: number;\nexport const KEY_Ecircumflex: number;\nexport const KEY_Ecircumflexacute: number;\nexport const KEY_Ecircumflexbelowdot: number;\nexport const KEY_Ecircumflexgrave: number;\nexport const KEY_Ecircumflexhook: number;\nexport const KEY_Ecircumflextilde: number;\nexport const KEY_EcuSign: number;\nexport const KEY_Ediaeresis: number;\nexport const KEY_Egrave: number;\nexport const KEY_Ehook: number;\nexport const KEY_Eisu_Shift: number;\nexport const KEY_Eisu_toggle: number;\nexport const KEY_Eject: number;\nexport const KEY_Emacron: number;\nexport const KEY_End: number;\nexport const KEY_Eogonek: number;\nexport const KEY_Escape: number;\nexport const KEY_Eth: number;\nexport const KEY_Etilde: number;\nexport const KEY_EuroSign: number;\nexport const KEY_Excel: number;\nexport const KEY_Execute: number;\nexport const KEY_Explorer: number;\nexport const KEY_F: number;\nexport const KEY_F1: number;\nexport const KEY_F10: number;\nexport const KEY_F11: number;\nexport const KEY_F12: number;\nexport const KEY_F13: number;\nexport const KEY_F14: number;\nexport const KEY_F15: number;\nexport const KEY_F16: number;\nexport const KEY_F17: number;\nexport const KEY_F18: number;\nexport const KEY_F19: number;\nexport const KEY_F2: number;\nexport const KEY_F20: number;\nexport const KEY_F21: number;\nexport const KEY_F22: number;\nexport const KEY_F23: number;\nexport const KEY_F24: number;\nexport const KEY_F25: number;\nexport const KEY_F26: number;\nexport const KEY_F27: number;\nexport const KEY_F28: number;\nexport const KEY_F29: number;\nexport const KEY_F3: number;\nexport const KEY_F30: number;\nexport const KEY_F31: number;\nexport const KEY_F32: number;\nexport const KEY_F33: number;\nexport const KEY_F34: number;\nexport const KEY_F35: number;\nexport const KEY_F4: number;\nexport const KEY_F5: number;\nexport const KEY_F6: number;\nexport const KEY_F7: number;\nexport const KEY_F8: number;\nexport const KEY_F9: number;\nexport const KEY_FFrancSign: number;\nexport const KEY_Fabovedot: number;\nexport const KEY_Farsi_0: number;\nexport const KEY_Farsi_1: number;\nexport const KEY_Farsi_2: number;\nexport const KEY_Farsi_3: number;\nexport const KEY_Farsi_4: number;\nexport const KEY_Farsi_5: number;\nexport const KEY_Farsi_6: number;\nexport const KEY_Farsi_7: number;\nexport const KEY_Farsi_8: number;\nexport const KEY_Farsi_9: number;\nexport const KEY_Farsi_yeh: number;\nexport const KEY_Favorites: number;\nexport const KEY_Finance: number;\nexport const KEY_Find: number;\nexport const KEY_First_Virtual_Screen: number;\nexport const KEY_Forward: number;\nexport const KEY_FrameBack: number;\nexport const KEY_FrameForward: number;\nexport const KEY_G: number;\nexport const KEY_Gabovedot: number;\nexport const KEY_Game: number;\nexport const KEY_Gbreve: number;\nexport const KEY_Gcaron: number;\nexport const KEY_Gcedilla: number;\nexport const KEY_Gcircumflex: number;\nexport const KEY_Georgian_an: number;\nexport const KEY_Georgian_ban: number;\nexport const KEY_Georgian_can: number;\nexport const KEY_Georgian_char: number;\nexport const KEY_Georgian_chin: number;\nexport const KEY_Georgian_cil: number;\nexport const KEY_Georgian_don: number;\nexport const KEY_Georgian_en: number;\nexport const KEY_Georgian_fi: number;\nexport const KEY_Georgian_gan: number;\nexport const KEY_Georgian_ghan: number;\nexport const KEY_Georgian_hae: number;\nexport const KEY_Georgian_har: number;\nexport const KEY_Georgian_he: number;\nexport const KEY_Georgian_hie: number;\nexport const KEY_Georgian_hoe: number;\nexport const KEY_Georgian_in: number;\nexport const KEY_Georgian_jhan: number;\nexport const KEY_Georgian_jil: number;\nexport const KEY_Georgian_kan: number;\nexport const KEY_Georgian_khar: number;\nexport const KEY_Georgian_las: number;\nexport const KEY_Georgian_man: number;\nexport const KEY_Georgian_nar: number;\nexport const KEY_Georgian_on: number;\nexport const KEY_Georgian_par: number;\nexport const KEY_Georgian_phar: number;\nexport const KEY_Georgian_qar: number;\nexport const KEY_Georgian_rae: number;\nexport const KEY_Georgian_san: number;\nexport const KEY_Georgian_shin: number;\nexport const KEY_Georgian_tan: number;\nexport const KEY_Georgian_tar: number;\nexport const KEY_Georgian_un: number;\nexport const KEY_Georgian_vin: number;\nexport const KEY_Georgian_we: number;\nexport const KEY_Georgian_xan: number;\nexport const KEY_Georgian_zen: number;\nexport const KEY_Georgian_zhar: number;\nexport const KEY_Go: number;\nexport const KEY_Greek_ALPHA: number;\nexport const KEY_Greek_ALPHAaccent: number;\nexport const KEY_Greek_BETA: number;\nexport const KEY_Greek_CHI: number;\nexport const KEY_Greek_DELTA: number;\nexport const KEY_Greek_EPSILON: number;\nexport const KEY_Greek_EPSILONaccent: number;\nexport const KEY_Greek_ETA: number;\nexport const KEY_Greek_ETAaccent: number;\nexport const KEY_Greek_GAMMA: number;\nexport const KEY_Greek_IOTA: number;\nexport const KEY_Greek_IOTAaccent: number;\nexport const KEY_Greek_IOTAdiaeresis: number;\nexport const KEY_Greek_IOTAdieresis: number;\nexport const KEY_Greek_KAPPA: number;\nexport const KEY_Greek_LAMBDA: number;\nexport const KEY_Greek_LAMDA: number;\nexport const KEY_Greek_MU: number;\nexport const KEY_Greek_NU: number;\nexport const KEY_Greek_OMEGA: number;\nexport const KEY_Greek_OMEGAaccent: number;\nexport const KEY_Greek_OMICRON: number;\nexport const KEY_Greek_OMICRONaccent: number;\nexport const KEY_Greek_PHI: number;\nexport const KEY_Greek_PI: number;\nexport const KEY_Greek_PSI: number;\nexport const KEY_Greek_RHO: number;\nexport const KEY_Greek_SIGMA: number;\nexport const KEY_Greek_TAU: number;\nexport const KEY_Greek_THETA: number;\nexport const KEY_Greek_UPSILON: number;\nexport const KEY_Greek_UPSILONaccent: number;\nexport const KEY_Greek_UPSILONdieresis: number;\nexport const KEY_Greek_XI: number;\nexport const KEY_Greek_ZETA: number;\nexport const KEY_Greek_accentdieresis: number;\nexport const KEY_Greek_alpha: number;\nexport const KEY_Greek_alphaaccent: number;\nexport const KEY_Greek_beta: number;\nexport const KEY_Greek_chi: number;\nexport const KEY_Greek_delta: number;\nexport const KEY_Greek_epsilon: number;\nexport const KEY_Greek_epsilonaccent: number;\nexport const KEY_Greek_eta: number;\nexport const KEY_Greek_etaaccent: number;\nexport const KEY_Greek_finalsmallsigma: number;\nexport const KEY_Greek_gamma: number;\nexport const KEY_Greek_horizbar: number;\nexport const KEY_Greek_iota: number;\nexport const KEY_Greek_iotaaccent: number;\nexport const KEY_Greek_iotaaccentdieresis: number;\nexport const KEY_Greek_iotadieresis: number;\nexport const KEY_Greek_kappa: number;\nexport const KEY_Greek_lambda: number;\nexport const KEY_Greek_lamda: number;\nexport const KEY_Greek_mu: number;\nexport const KEY_Greek_nu: number;\nexport const KEY_Greek_omega: number;\nexport const KEY_Greek_omegaaccent: number;\nexport const KEY_Greek_omicron: number;\nexport const KEY_Greek_omicronaccent: number;\nexport const KEY_Greek_phi: number;\nexport const KEY_Greek_pi: number;\nexport const KEY_Greek_psi: number;\nexport const KEY_Greek_rho: number;\nexport const KEY_Greek_sigma: number;\nexport const KEY_Greek_switch: number;\nexport const KEY_Greek_tau: number;\nexport const KEY_Greek_theta: number;\nexport const KEY_Greek_upsilon: number;\nexport const KEY_Greek_upsilonaccent: number;\nexport const KEY_Greek_upsilonaccentdieresis: number;\nexport const KEY_Greek_upsilondieresis: number;\nexport const KEY_Greek_xi: number;\nexport const KEY_Greek_zeta: number;\nexport const KEY_Green: number;\nexport const KEY_H: number;\nexport const KEY_Hangul: number;\nexport const KEY_Hangul_A: number;\nexport const KEY_Hangul_AE: number;\nexport const KEY_Hangul_AraeA: number;\nexport const KEY_Hangul_AraeAE: number;\nexport const KEY_Hangul_Banja: number;\nexport const KEY_Hangul_Cieuc: number;\nexport const KEY_Hangul_Codeinput: number;\nexport const KEY_Hangul_Dikeud: number;\nexport const KEY_Hangul_E: number;\nexport const KEY_Hangul_EO: number;\nexport const KEY_Hangul_EU: number;\nexport const KEY_Hangul_End: number;\nexport const KEY_Hangul_Hanja: number;\nexport const KEY_Hangul_Hieuh: number;\nexport const KEY_Hangul_I: number;\nexport const KEY_Hangul_Ieung: number;\nexport const KEY_Hangul_J_Cieuc: number;\nexport const KEY_Hangul_J_Dikeud: number;\nexport const KEY_Hangul_J_Hieuh: number;\nexport const KEY_Hangul_J_Ieung: number;\nexport const KEY_Hangul_J_Jieuj: number;\nexport const KEY_Hangul_J_Khieuq: number;\nexport const KEY_Hangul_J_Kiyeog: number;\nexport const KEY_Hangul_J_KiyeogSios: number;\nexport const KEY_Hangul_J_KkogjiDalrinIeung: number;\nexport const KEY_Hangul_J_Mieum: number;\nexport const KEY_Hangul_J_Nieun: number;\nexport const KEY_Hangul_J_NieunHieuh: number;\nexport const KEY_Hangul_J_NieunJieuj: number;\nexport const KEY_Hangul_J_PanSios: number;\nexport const KEY_Hangul_J_Phieuf: number;\nexport const KEY_Hangul_J_Pieub: number;\nexport const KEY_Hangul_J_PieubSios: number;\nexport const KEY_Hangul_J_Rieul: number;\nexport const KEY_Hangul_J_RieulHieuh: number;\nexport const KEY_Hangul_J_RieulKiyeog: number;\nexport const KEY_Hangul_J_RieulMieum: number;\nexport const KEY_Hangul_J_RieulPhieuf: number;\nexport const KEY_Hangul_J_RieulPieub: number;\nexport const KEY_Hangul_J_RieulSios: number;\nexport const KEY_Hangul_J_RieulTieut: number;\nexport const KEY_Hangul_J_Sios: number;\nexport const KEY_Hangul_J_SsangKiyeog: number;\nexport const KEY_Hangul_J_SsangSios: number;\nexport const KEY_Hangul_J_Tieut: number;\nexport const KEY_Hangul_J_YeorinHieuh: number;\nexport const KEY_Hangul_Jamo: number;\nexport const KEY_Hangul_Jeonja: number;\nexport const KEY_Hangul_Jieuj: number;\nexport const KEY_Hangul_Khieuq: number;\nexport const KEY_Hangul_Kiyeog: number;\nexport const KEY_Hangul_KiyeogSios: number;\nexport const KEY_Hangul_KkogjiDalrinIeung: number;\nexport const KEY_Hangul_Mieum: number;\nexport const KEY_Hangul_MultipleCandidate: number;\nexport const KEY_Hangul_Nieun: number;\nexport const KEY_Hangul_NieunHieuh: number;\nexport const KEY_Hangul_NieunJieuj: number;\nexport const KEY_Hangul_O: number;\nexport const KEY_Hangul_OE: number;\nexport const KEY_Hangul_PanSios: number;\nexport const KEY_Hangul_Phieuf: number;\nexport const KEY_Hangul_Pieub: number;\nexport const KEY_Hangul_PieubSios: number;\nexport const KEY_Hangul_PostHanja: number;\nexport const KEY_Hangul_PreHanja: number;\nexport const KEY_Hangul_PreviousCandidate: number;\nexport const KEY_Hangul_Rieul: number;\nexport const KEY_Hangul_RieulHieuh: number;\nexport const KEY_Hangul_RieulKiyeog: number;\nexport const KEY_Hangul_RieulMieum: number;\nexport const KEY_Hangul_RieulPhieuf: number;\nexport const KEY_Hangul_RieulPieub: number;\nexport const KEY_Hangul_RieulSios: number;\nexport const KEY_Hangul_RieulTieut: number;\nexport const KEY_Hangul_RieulYeorinHieuh: number;\nexport const KEY_Hangul_Romaja: number;\nexport const KEY_Hangul_SingleCandidate: number;\nexport const KEY_Hangul_Sios: number;\nexport const KEY_Hangul_Special: number;\nexport const KEY_Hangul_SsangDikeud: number;\nexport const KEY_Hangul_SsangJieuj: number;\nexport const KEY_Hangul_SsangKiyeog: number;\nexport const KEY_Hangul_SsangPieub: number;\nexport const KEY_Hangul_SsangSios: number;\nexport const KEY_Hangul_Start: number;\nexport const KEY_Hangul_SunkyeongeumMieum: number;\nexport const KEY_Hangul_SunkyeongeumPhieuf: number;\nexport const KEY_Hangul_SunkyeongeumPieub: number;\nexport const KEY_Hangul_Tieut: number;\nexport const KEY_Hangul_U: number;\nexport const KEY_Hangul_WA: number;\nexport const KEY_Hangul_WAE: number;\nexport const KEY_Hangul_WE: number;\nexport const KEY_Hangul_WEO: number;\nexport const KEY_Hangul_WI: number;\nexport const KEY_Hangul_YA: number;\nexport const KEY_Hangul_YAE: number;\nexport const KEY_Hangul_YE: number;\nexport const KEY_Hangul_YEO: number;\nexport const KEY_Hangul_YI: number;\nexport const KEY_Hangul_YO: number;\nexport const KEY_Hangul_YU: number;\nexport const KEY_Hangul_YeorinHieuh: number;\nexport const KEY_Hangul_switch: number;\nexport const KEY_Hankaku: number;\nexport const KEY_Hcircumflex: number;\nexport const KEY_Hebrew_switch: number;\nexport const KEY_Help: number;\nexport const KEY_Henkan: number;\nexport const KEY_Henkan_Mode: number;\nexport const KEY_Hibernate: number;\nexport const KEY_Hiragana: number;\nexport const KEY_Hiragana_Katakana: number;\nexport const KEY_History: number;\nexport const KEY_Home: number;\nexport const KEY_HomePage: number;\nexport const KEY_HotLinks: number;\nexport const KEY_Hstroke: number;\nexport const KEY_Hyper_L: number;\nexport const KEY_Hyper_R: number;\nexport const KEY_I: number;\nexport const KEY_ISO_Center_Object: number;\nexport const KEY_ISO_Continuous_Underline: number;\nexport const KEY_ISO_Discontinuous_Underline: number;\nexport const KEY_ISO_Emphasize: number;\nexport const KEY_ISO_Enter: number;\nexport const KEY_ISO_Fast_Cursor_Down: number;\nexport const KEY_ISO_Fast_Cursor_Left: number;\nexport const KEY_ISO_Fast_Cursor_Right: number;\nexport const KEY_ISO_Fast_Cursor_Up: number;\nexport const KEY_ISO_First_Group: number;\nexport const KEY_ISO_First_Group_Lock: number;\nexport const KEY_ISO_Group_Latch: number;\nexport const KEY_ISO_Group_Lock: number;\nexport const KEY_ISO_Group_Shift: number;\nexport const KEY_ISO_Last_Group: number;\nexport const KEY_ISO_Last_Group_Lock: number;\nexport const KEY_ISO_Left_Tab: number;\nexport const KEY_ISO_Level2_Latch: number;\nexport const KEY_ISO_Level3_Latch: number;\nexport const KEY_ISO_Level3_Lock: number;\nexport const KEY_ISO_Level3_Shift: number;\nexport const KEY_ISO_Level5_Latch: number;\nexport const KEY_ISO_Level5_Lock: number;\nexport const KEY_ISO_Level5_Shift: number;\nexport const KEY_ISO_Lock: number;\nexport const KEY_ISO_Move_Line_Down: number;\nexport const KEY_ISO_Move_Line_Up: number;\nexport const KEY_ISO_Next_Group: number;\nexport const KEY_ISO_Next_Group_Lock: number;\nexport const KEY_ISO_Partial_Line_Down: number;\nexport const KEY_ISO_Partial_Line_Up: number;\nexport const KEY_ISO_Partial_Space_Left: number;\nexport const KEY_ISO_Partial_Space_Right: number;\nexport const KEY_ISO_Prev_Group: number;\nexport const KEY_ISO_Prev_Group_Lock: number;\nexport const KEY_ISO_Release_Both_Margins: number;\nexport const KEY_ISO_Release_Margin_Left: number;\nexport const KEY_ISO_Release_Margin_Right: number;\nexport const KEY_ISO_Set_Margin_Left: number;\nexport const KEY_ISO_Set_Margin_Right: number;\nexport const KEY_Iabovedot: number;\nexport const KEY_Iacute: number;\nexport const KEY_Ibelowdot: number;\nexport const KEY_Ibreve: number;\nexport const KEY_Icircumflex: number;\nexport const KEY_Idiaeresis: number;\nexport const KEY_Igrave: number;\nexport const KEY_Ihook: number;\nexport const KEY_Imacron: number;\nexport const KEY_Insert: number;\nexport const KEY_Iogonek: number;\nexport const KEY_Itilde: number;\nexport const KEY_J: number;\nexport const KEY_Jcircumflex: number;\nexport const KEY_K: number;\nexport const KEY_KP_0: number;\nexport const KEY_KP_1: number;\nexport const KEY_KP_2: number;\nexport const KEY_KP_3: number;\nexport const KEY_KP_4: number;\nexport const KEY_KP_5: number;\nexport const KEY_KP_6: number;\nexport const KEY_KP_7: number;\nexport const KEY_KP_8: number;\nexport const KEY_KP_9: number;\nexport const KEY_KP_Add: number;\nexport const KEY_KP_Begin: number;\nexport const KEY_KP_Decimal: number;\nexport const KEY_KP_Delete: number;\nexport const KEY_KP_Divide: number;\nexport const KEY_KP_Down: number;\nexport const KEY_KP_End: number;\nexport const KEY_KP_Enter: number;\nexport const KEY_KP_Equal: number;\nexport const KEY_KP_F1: number;\nexport const KEY_KP_F2: number;\nexport const KEY_KP_F3: number;\nexport const KEY_KP_F4: number;\nexport const KEY_KP_Home: number;\nexport const KEY_KP_Insert: number;\nexport const KEY_KP_Left: number;\nexport const KEY_KP_Multiply: number;\nexport const KEY_KP_Next: number;\nexport const KEY_KP_Page_Down: number;\nexport const KEY_KP_Page_Up: number;\nexport const KEY_KP_Prior: number;\nexport const KEY_KP_Right: number;\nexport const KEY_KP_Separator: number;\nexport const KEY_KP_Space: number;\nexport const KEY_KP_Subtract: number;\nexport const KEY_KP_Tab: number;\nexport const KEY_KP_Up: number;\nexport const KEY_Kana_Lock: number;\nexport const KEY_Kana_Shift: number;\nexport const KEY_Kanji: number;\nexport const KEY_Kanji_Bangou: number;\nexport const KEY_Katakana: number;\nexport const KEY_KbdBrightnessDown: number;\nexport const KEY_KbdBrightnessUp: number;\nexport const KEY_KbdLightOnOff: number;\nexport const KEY_Kcedilla: number;\nexport const KEY_Korean_Won: number;\nexport const KEY_L: number;\nexport const KEY_L1: number;\nexport const KEY_L10: number;\nexport const KEY_L2: number;\nexport const KEY_L3: number;\nexport const KEY_L4: number;\nexport const KEY_L5: number;\nexport const KEY_L6: number;\nexport const KEY_L7: number;\nexport const KEY_L8: number;\nexport const KEY_L9: number;\nexport const KEY_Lacute: number;\nexport const KEY_Last_Virtual_Screen: number;\nexport const KEY_Launch0: number;\nexport const KEY_Launch1: number;\nexport const KEY_Launch2: number;\nexport const KEY_Launch3: number;\nexport const KEY_Launch4: number;\nexport const KEY_Launch5: number;\nexport const KEY_Launch6: number;\nexport const KEY_Launch7: number;\nexport const KEY_Launch8: number;\nexport const KEY_Launch9: number;\nexport const KEY_LaunchA: number;\nexport const KEY_LaunchB: number;\nexport const KEY_LaunchC: number;\nexport const KEY_LaunchD: number;\nexport const KEY_LaunchE: number;\nexport const KEY_LaunchF: number;\nexport const KEY_Lbelowdot: number;\nexport const KEY_Lcaron: number;\nexport const KEY_Lcedilla: number;\nexport const KEY_Left: number;\nexport const KEY_LightBulb: number;\nexport const KEY_Linefeed: number;\nexport const KEY_LiraSign: number;\nexport const KEY_LogGrabInfo: number;\nexport const KEY_LogOff: number;\nexport const KEY_LogWindowTree: number;\nexport const KEY_Lstroke: number;\nexport const KEY_M: number;\nexport const KEY_Mabovedot: number;\nexport const KEY_Macedonia_DSE: number;\nexport const KEY_Macedonia_GJE: number;\nexport const KEY_Macedonia_KJE: number;\nexport const KEY_Macedonia_dse: number;\nexport const KEY_Macedonia_gje: number;\nexport const KEY_Macedonia_kje: number;\nexport const KEY_Mae_Koho: number;\nexport const KEY_Mail: number;\nexport const KEY_MailForward: number;\nexport const KEY_Market: number;\nexport const KEY_Massyo: number;\nexport const KEY_Meeting: number;\nexport const KEY_Memo: number;\nexport const KEY_Menu: number;\nexport const KEY_MenuKB: number;\nexport const KEY_MenuPB: number;\nexport const KEY_Messenger: number;\nexport const KEY_Meta_L: number;\nexport const KEY_Meta_R: number;\nexport const KEY_MillSign: number;\nexport const KEY_ModeLock: number;\nexport const KEY_Mode_switch: number;\nexport const KEY_MonBrightnessDown: number;\nexport const KEY_MonBrightnessUp: number;\nexport const KEY_MouseKeys_Accel_Enable: number;\nexport const KEY_MouseKeys_Enable: number;\nexport const KEY_Muhenkan: number;\nexport const KEY_Multi_key: number;\nexport const KEY_MultipleCandidate: number;\nexport const KEY_Music: number;\nexport const KEY_MyComputer: number;\nexport const KEY_MySites: number;\nexport const KEY_N: number;\nexport const KEY_Nacute: number;\nexport const KEY_NairaSign: number;\nexport const KEY_Ncaron: number;\nexport const KEY_Ncedilla: number;\nexport const KEY_New: number;\nexport const KEY_NewSheqelSign: number;\nexport const KEY_News: number;\nexport const KEY_Next: number;\nexport const KEY_Next_VMode: number;\nexport const KEY_Next_Virtual_Screen: number;\nexport const KEY_Ntilde: number;\nexport const KEY_Num_Lock: number;\nexport const KEY_O: number;\nexport const KEY_OE: number;\nexport const KEY_Oacute: number;\nexport const KEY_Obarred: number;\nexport const KEY_Obelowdot: number;\nexport const KEY_Ocaron: number;\nexport const KEY_Ocircumflex: number;\nexport const KEY_Ocircumflexacute: number;\nexport const KEY_Ocircumflexbelowdot: number;\nexport const KEY_Ocircumflexgrave: number;\nexport const KEY_Ocircumflexhook: number;\nexport const KEY_Ocircumflextilde: number;\nexport const KEY_Odiaeresis: number;\nexport const KEY_Odoubleacute: number;\nexport const KEY_OfficeHome: number;\nexport const KEY_Ograve: number;\nexport const KEY_Ohook: number;\nexport const KEY_Ohorn: number;\nexport const KEY_Ohornacute: number;\nexport const KEY_Ohornbelowdot: number;\nexport const KEY_Ohorngrave: number;\nexport const KEY_Ohornhook: number;\nexport const KEY_Ohorntilde: number;\nexport const KEY_Omacron: number;\nexport const KEY_Ooblique: number;\nexport const KEY_Open: number;\nexport const KEY_OpenURL: number;\nexport const KEY_Option: number;\nexport const KEY_Oslash: number;\nexport const KEY_Otilde: number;\nexport const KEY_Overlay1_Enable: number;\nexport const KEY_Overlay2_Enable: number;\nexport const KEY_P: number;\nexport const KEY_Pabovedot: number;\nexport const KEY_Page_Down: number;\nexport const KEY_Page_Up: number;\nexport const KEY_Paste: number;\nexport const KEY_Pause: number;\nexport const KEY_PesetaSign: number;\nexport const KEY_Phone: number;\nexport const KEY_Pictures: number;\nexport const KEY_Pointer_Accelerate: number;\nexport const KEY_Pointer_Button1: number;\nexport const KEY_Pointer_Button2: number;\nexport const KEY_Pointer_Button3: number;\nexport const KEY_Pointer_Button4: number;\nexport const KEY_Pointer_Button5: number;\nexport const KEY_Pointer_Button_Dflt: number;\nexport const KEY_Pointer_DblClick1: number;\nexport const KEY_Pointer_DblClick2: number;\nexport const KEY_Pointer_DblClick3: number;\nexport const KEY_Pointer_DblClick4: number;\nexport const KEY_Pointer_DblClick5: number;\nexport const KEY_Pointer_DblClick_Dflt: number;\nexport const KEY_Pointer_DfltBtnNext: number;\nexport const KEY_Pointer_DfltBtnPrev: number;\nexport const KEY_Pointer_Down: number;\nexport const KEY_Pointer_DownLeft: number;\nexport const KEY_Pointer_DownRight: number;\nexport const KEY_Pointer_Drag1: number;\nexport const KEY_Pointer_Drag2: number;\nexport const KEY_Pointer_Drag3: number;\nexport const KEY_Pointer_Drag4: number;\nexport const KEY_Pointer_Drag5: number;\nexport const KEY_Pointer_Drag_Dflt: number;\nexport const KEY_Pointer_EnableKeys: number;\nexport const KEY_Pointer_Left: number;\nexport const KEY_Pointer_Right: number;\nexport const KEY_Pointer_Up: number;\nexport const KEY_Pointer_UpLeft: number;\nexport const KEY_Pointer_UpRight: number;\nexport const KEY_PowerDown: number;\nexport const KEY_PowerOff: number;\nexport const KEY_Prev_VMode: number;\nexport const KEY_Prev_Virtual_Screen: number;\nexport const KEY_PreviousCandidate: number;\nexport const KEY_Print: number;\nexport const KEY_Prior: number;\nexport const KEY_Q: number;\nexport const KEY_R: number;\nexport const KEY_R1: number;\nexport const KEY_R10: number;\nexport const KEY_R11: number;\nexport const KEY_R12: number;\nexport const KEY_R13: number;\nexport const KEY_R14: number;\nexport const KEY_R15: number;\nexport const KEY_R2: number;\nexport const KEY_R3: number;\nexport const KEY_R4: number;\nexport const KEY_R5: number;\nexport const KEY_R6: number;\nexport const KEY_R7: number;\nexport const KEY_R8: number;\nexport const KEY_R9: number;\nexport const KEY_Racute: number;\nexport const KEY_Rcaron: number;\nexport const KEY_Rcedilla: number;\nexport const KEY_Red: number;\nexport const KEY_Redo: number;\nexport const KEY_Refresh: number;\nexport const KEY_Reload: number;\nexport const KEY_RepeatKeys_Enable: number;\nexport const KEY_Reply: number;\nexport const KEY_Return: number;\nexport const KEY_Right: number;\nexport const KEY_RockerDown: number;\nexport const KEY_RockerEnter: number;\nexport const KEY_RockerUp: number;\nexport const KEY_Romaji: number;\nexport const KEY_RotateWindows: number;\nexport const KEY_RotationKB: number;\nexport const KEY_RotationPB: number;\nexport const KEY_RupeeSign: number;\nexport const KEY_S: number;\nexport const KEY_SCHWA: number;\nexport const KEY_Sabovedot: number;\nexport const KEY_Sacute: number;\nexport const KEY_Save: number;\nexport const KEY_Scaron: number;\nexport const KEY_Scedilla: number;\nexport const KEY_Scircumflex: number;\nexport const KEY_ScreenSaver: number;\nexport const KEY_ScrollClick: number;\nexport const KEY_ScrollDown: number;\nexport const KEY_ScrollUp: number;\nexport const KEY_Scroll_Lock: number;\nexport const KEY_Search: number;\nexport const KEY_Select: number;\nexport const KEY_SelectButton: number;\nexport const KEY_Send: number;\nexport const KEY_Serbian_DJE: number;\nexport const KEY_Serbian_DZE: number;\nexport const KEY_Serbian_JE: number;\nexport const KEY_Serbian_LJE: number;\nexport const KEY_Serbian_NJE: number;\nexport const KEY_Serbian_TSHE: number;\nexport const KEY_Serbian_dje: number;\nexport const KEY_Serbian_dze: number;\nexport const KEY_Serbian_je: number;\nexport const KEY_Serbian_lje: number;\nexport const KEY_Serbian_nje: number;\nexport const KEY_Serbian_tshe: number;\nexport const KEY_Shift_L: number;\nexport const KEY_Shift_Lock: number;\nexport const KEY_Shift_R: number;\nexport const KEY_Shop: number;\nexport const KEY_SingleCandidate: number;\nexport const KEY_Sinh_a: number;\nexport const KEY_Sinh_aa: number;\nexport const KEY_Sinh_aa2: number;\nexport const KEY_Sinh_ae: number;\nexport const KEY_Sinh_ae2: number;\nexport const KEY_Sinh_aee: number;\nexport const KEY_Sinh_aee2: number;\nexport const KEY_Sinh_ai: number;\nexport const KEY_Sinh_ai2: number;\nexport const KEY_Sinh_al: number;\nexport const KEY_Sinh_au: number;\nexport const KEY_Sinh_au2: number;\nexport const KEY_Sinh_ba: number;\nexport const KEY_Sinh_bha: number;\nexport const KEY_Sinh_ca: number;\nexport const KEY_Sinh_cha: number;\nexport const KEY_Sinh_dda: number;\nexport const KEY_Sinh_ddha: number;\nexport const KEY_Sinh_dha: number;\nexport const KEY_Sinh_dhha: number;\nexport const KEY_Sinh_e: number;\nexport const KEY_Sinh_e2: number;\nexport const KEY_Sinh_ee: number;\nexport const KEY_Sinh_ee2: number;\nexport const KEY_Sinh_fa: number;\nexport const KEY_Sinh_ga: number;\nexport const KEY_Sinh_gha: number;\nexport const KEY_Sinh_h2: number;\nexport const KEY_Sinh_ha: number;\nexport const KEY_Sinh_i: number;\nexport const KEY_Sinh_i2: number;\nexport const KEY_Sinh_ii: number;\nexport const KEY_Sinh_ii2: number;\nexport const KEY_Sinh_ja: number;\nexport const KEY_Sinh_jha: number;\nexport const KEY_Sinh_jnya: number;\nexport const KEY_Sinh_ka: number;\nexport const KEY_Sinh_kha: number;\nexport const KEY_Sinh_kunddaliya: number;\nexport const KEY_Sinh_la: number;\nexport const KEY_Sinh_lla: number;\nexport const KEY_Sinh_lu: number;\nexport const KEY_Sinh_lu2: number;\nexport const KEY_Sinh_luu: number;\nexport const KEY_Sinh_luu2: number;\nexport const KEY_Sinh_ma: number;\nexport const KEY_Sinh_mba: number;\nexport const KEY_Sinh_na: number;\nexport const KEY_Sinh_ndda: number;\nexport const KEY_Sinh_ndha: number;\nexport const KEY_Sinh_ng: number;\nexport const KEY_Sinh_ng2: number;\nexport const KEY_Sinh_nga: number;\nexport const KEY_Sinh_nja: number;\nexport const KEY_Sinh_nna: number;\nexport const KEY_Sinh_nya: number;\nexport const KEY_Sinh_o: number;\nexport const KEY_Sinh_o2: number;\nexport const KEY_Sinh_oo: number;\nexport const KEY_Sinh_oo2: number;\nexport const KEY_Sinh_pa: number;\nexport const KEY_Sinh_pha: number;\nexport const KEY_Sinh_ra: number;\nexport const KEY_Sinh_ri: number;\nexport const KEY_Sinh_rii: number;\nexport const KEY_Sinh_ru2: number;\nexport const KEY_Sinh_ruu2: number;\nexport const KEY_Sinh_sa: number;\nexport const KEY_Sinh_sha: number;\nexport const KEY_Sinh_ssha: number;\nexport const KEY_Sinh_tha: number;\nexport const KEY_Sinh_thha: number;\nexport const KEY_Sinh_tta: number;\nexport const KEY_Sinh_ttha: number;\nexport const KEY_Sinh_u: number;\nexport const KEY_Sinh_u2: number;\nexport const KEY_Sinh_uu: number;\nexport const KEY_Sinh_uu2: number;\nexport const KEY_Sinh_va: number;\nexport const KEY_Sinh_ya: number;\nexport const KEY_Sleep: number;\nexport const KEY_SlowKeys_Enable: number;\nexport const KEY_Spell: number;\nexport const KEY_SplitScreen: number;\nexport const KEY_Standby: number;\nexport const KEY_Start: number;\nexport const KEY_StickyKeys_Enable: number;\nexport const KEY_Stop: number;\nexport const KEY_Subtitle: number;\nexport const KEY_Super_L: number;\nexport const KEY_Super_R: number;\nexport const KEY_Support: number;\nexport const KEY_Suspend: number;\nexport const KEY_Switch_VT_1: number;\nexport const KEY_Switch_VT_10: number;\nexport const KEY_Switch_VT_11: number;\nexport const KEY_Switch_VT_12: number;\nexport const KEY_Switch_VT_2: number;\nexport const KEY_Switch_VT_3: number;\nexport const KEY_Switch_VT_4: number;\nexport const KEY_Switch_VT_5: number;\nexport const KEY_Switch_VT_6: number;\nexport const KEY_Switch_VT_7: number;\nexport const KEY_Switch_VT_8: number;\nexport const KEY_Switch_VT_9: number;\nexport const KEY_Sys_Req: number;\nexport const KEY_T: number;\nexport const KEY_THORN: number;\nexport const KEY_Tab: number;\nexport const KEY_Tabovedot: number;\nexport const KEY_TaskPane: number;\nexport const KEY_Tcaron: number;\nexport const KEY_Tcedilla: number;\nexport const KEY_Terminal: number;\nexport const KEY_Terminate_Server: number;\nexport const KEY_Thai_baht: number;\nexport const KEY_Thai_bobaimai: number;\nexport const KEY_Thai_chochan: number;\nexport const KEY_Thai_chochang: number;\nexport const KEY_Thai_choching: number;\nexport const KEY_Thai_chochoe: number;\nexport const KEY_Thai_dochada: number;\nexport const KEY_Thai_dodek: number;\nexport const KEY_Thai_fofa: number;\nexport const KEY_Thai_fofan: number;\nexport const KEY_Thai_hohip: number;\nexport const KEY_Thai_honokhuk: number;\nexport const KEY_Thai_khokhai: number;\nexport const KEY_Thai_khokhon: number;\nexport const KEY_Thai_khokhuat: number;\nexport const KEY_Thai_khokhwai: number;\nexport const KEY_Thai_khorakhang: number;\nexport const KEY_Thai_kokai: number;\nexport const KEY_Thai_lakkhangyao: number;\nexport const KEY_Thai_lekchet: number;\nexport const KEY_Thai_lekha: number;\nexport const KEY_Thai_lekhok: number;\nexport const KEY_Thai_lekkao: number;\nexport const KEY_Thai_leknung: number;\nexport const KEY_Thai_lekpaet: number;\nexport const KEY_Thai_leksam: number;\nexport const KEY_Thai_leksi: number;\nexport const KEY_Thai_leksong: number;\nexport const KEY_Thai_leksun: number;\nexport const KEY_Thai_lochula: number;\nexport const KEY_Thai_loling: number;\nexport const KEY_Thai_lu: number;\nexport const KEY_Thai_maichattawa: number;\nexport const KEY_Thai_maiek: number;\nexport const KEY_Thai_maihanakat: number;\nexport const KEY_Thai_maihanakat_maitho: number;\nexport const KEY_Thai_maitaikhu: number;\nexport const KEY_Thai_maitho: number;\nexport const KEY_Thai_maitri: number;\nexport const KEY_Thai_maiyamok: number;\nexport const KEY_Thai_moma: number;\nexport const KEY_Thai_ngongu: number;\nexport const KEY_Thai_nikhahit: number;\nexport const KEY_Thai_nonen: number;\nexport const KEY_Thai_nonu: number;\nexport const KEY_Thai_oang: number;\nexport const KEY_Thai_paiyannoi: number;\nexport const KEY_Thai_phinthu: number;\nexport const KEY_Thai_phophan: number;\nexport const KEY_Thai_phophung: number;\nexport const KEY_Thai_phosamphao: number;\nexport const KEY_Thai_popla: number;\nexport const KEY_Thai_rorua: number;\nexport const KEY_Thai_ru: number;\nexport const KEY_Thai_saraa: number;\nexport const KEY_Thai_saraaa: number;\nexport const KEY_Thai_saraae: number;\nexport const KEY_Thai_saraaimaimalai: number;\nexport const KEY_Thai_saraaimaimuan: number;\nexport const KEY_Thai_saraam: number;\nexport const KEY_Thai_sarae: number;\nexport const KEY_Thai_sarai: number;\nexport const KEY_Thai_saraii: number;\nexport const KEY_Thai_sarao: number;\nexport const KEY_Thai_sarau: number;\nexport const KEY_Thai_saraue: number;\nexport const KEY_Thai_sarauee: number;\nexport const KEY_Thai_sarauu: number;\nexport const KEY_Thai_sorusi: number;\nexport const KEY_Thai_sosala: number;\nexport const KEY_Thai_soso: number;\nexport const KEY_Thai_sosua: number;\nexport const KEY_Thai_thanthakhat: number;\nexport const KEY_Thai_thonangmontho: number;\nexport const KEY_Thai_thophuthao: number;\nexport const KEY_Thai_thothahan: number;\nexport const KEY_Thai_thothan: number;\nexport const KEY_Thai_thothong: number;\nexport const KEY_Thai_thothung: number;\nexport const KEY_Thai_topatak: number;\nexport const KEY_Thai_totao: number;\nexport const KEY_Thai_wowaen: number;\nexport const KEY_Thai_yoyak: number;\nexport const KEY_Thai_yoying: number;\nexport const KEY_Thorn: number;\nexport const KEY_Time: number;\nexport const KEY_ToDoList: number;\nexport const KEY_Tools: number;\nexport const KEY_TopMenu: number;\nexport const KEY_TouchpadOff: number;\nexport const KEY_TouchpadOn: number;\nexport const KEY_TouchpadToggle: number;\nexport const KEY_Touroku: number;\nexport const KEY_Travel: number;\nexport const KEY_Tslash: number;\nexport const KEY_U: number;\nexport const KEY_UWB: number;\nexport const KEY_Uacute: number;\nexport const KEY_Ubelowdot: number;\nexport const KEY_Ubreve: number;\nexport const KEY_Ucircumflex: number;\nexport const KEY_Udiaeresis: number;\nexport const KEY_Udoubleacute: number;\nexport const KEY_Ugrave: number;\nexport const KEY_Uhook: number;\nexport const KEY_Uhorn: number;\nexport const KEY_Uhornacute: number;\nexport const KEY_Uhornbelowdot: number;\nexport const KEY_Uhorngrave: number;\nexport const KEY_Uhornhook: number;\nexport const KEY_Uhorntilde: number;\nexport const KEY_Ukrainian_GHE_WITH_UPTURN: number;\nexport const KEY_Ukrainian_I: number;\nexport const KEY_Ukrainian_IE: number;\nexport const KEY_Ukrainian_YI: number;\nexport const KEY_Ukrainian_ghe_with_upturn: number;\nexport const KEY_Ukrainian_i: number;\nexport const KEY_Ukrainian_ie: number;\nexport const KEY_Ukrainian_yi: number;\nexport const KEY_Ukranian_I: number;\nexport const KEY_Ukranian_JE: number;\nexport const KEY_Ukranian_YI: number;\nexport const KEY_Ukranian_i: number;\nexport const KEY_Ukranian_je: number;\nexport const KEY_Ukranian_yi: number;\nexport const KEY_Umacron: number;\nexport const KEY_Undo: number;\nexport const KEY_Ungrab: number;\nexport const KEY_Uogonek: number;\nexport const KEY_Up: number;\nexport const KEY_Uring: number;\nexport const KEY_User1KB: number;\nexport const KEY_User2KB: number;\nexport const KEY_UserPB: number;\nexport const KEY_Utilde: number;\nexport const KEY_V: number;\nexport const KEY_VendorHome: number;\nexport const KEY_Video: number;\nexport const KEY_View: number;\nexport const KEY_VoidSymbol: number;\nexport const KEY_W: number;\nexport const KEY_WLAN: number;\nexport const KEY_WWW: number;\nexport const KEY_Wacute: number;\nexport const KEY_WakeUp: number;\nexport const KEY_Wcircumflex: number;\nexport const KEY_Wdiaeresis: number;\nexport const KEY_WebCam: number;\nexport const KEY_Wgrave: number;\nexport const KEY_WheelButton: number;\nexport const KEY_WindowClear: number;\nexport const KEY_WonSign: number;\nexport const KEY_Word: number;\nexport const KEY_X: number;\nexport const KEY_Xabovedot: number;\nexport const KEY_Xfer: number;\nexport const KEY_Y: number;\nexport const KEY_Yacute: number;\nexport const KEY_Ybelowdot: number;\nexport const KEY_Ycircumflex: number;\nexport const KEY_Ydiaeresis: number;\nexport const KEY_Yellow: number;\nexport const KEY_Ygrave: number;\nexport const KEY_Yhook: number;\nexport const KEY_Ytilde: number;\nexport const KEY_Z: number;\nexport const KEY_Zabovedot: number;\nexport const KEY_Zacute: number;\nexport const KEY_Zcaron: number;\nexport const KEY_Zen_Koho: number;\nexport const KEY_Zenkaku: number;\nexport const KEY_Zenkaku_Hankaku: number;\nexport const KEY_ZoomIn: number;\nexport const KEY_ZoomOut: number;\nexport const KEY_Zstroke: number;\nexport const KEY_a: number;\nexport const KEY_aacute: number;\nexport const KEY_abelowdot: number;\nexport const KEY_abovedot: number;\nexport const KEY_abreve: number;\nexport const KEY_abreveacute: number;\nexport const KEY_abrevebelowdot: number;\nexport const KEY_abrevegrave: number;\nexport const KEY_abrevehook: number;\nexport const KEY_abrevetilde: number;\nexport const KEY_acircumflex: number;\nexport const KEY_acircumflexacute: number;\nexport const KEY_acircumflexbelowdot: number;\nexport const KEY_acircumflexgrave: number;\nexport const KEY_acircumflexhook: number;\nexport const KEY_acircumflextilde: number;\nexport const KEY_acute: number;\nexport const KEY_adiaeresis: number;\nexport const KEY_ae: number;\nexport const KEY_agrave: number;\nexport const KEY_ahook: number;\nexport const KEY_amacron: number;\nexport const KEY_ampersand: number;\nexport const KEY_aogonek: number;\nexport const KEY_apostrophe: number;\nexport const KEY_approxeq: number;\nexport const KEY_approximate: number;\nexport const KEY_aring: number;\nexport const KEY_asciicircum: number;\nexport const KEY_asciitilde: number;\nexport const KEY_asterisk: number;\nexport const KEY_at: number;\nexport const KEY_atilde: number;\nexport const KEY_b: number;\nexport const KEY_babovedot: number;\nexport const KEY_backslash: number;\nexport const KEY_ballotcross: number;\nexport const KEY_bar: number;\nexport const KEY_because: number;\nexport const KEY_blank: number;\nexport const KEY_botintegral: number;\nexport const KEY_botleftparens: number;\nexport const KEY_botleftsqbracket: number;\nexport const KEY_botleftsummation: number;\nexport const KEY_botrightparens: number;\nexport const KEY_botrightsqbracket: number;\nexport const KEY_botrightsummation: number;\nexport const KEY_bott: number;\nexport const KEY_botvertsummationconnector: number;\nexport const KEY_braceleft: number;\nexport const KEY_braceright: number;\nexport const KEY_bracketleft: number;\nexport const KEY_bracketright: number;\nexport const KEY_braille_blank: number;\nexport const KEY_braille_dot_1: number;\nexport const KEY_braille_dot_10: number;\nexport const KEY_braille_dot_2: number;\nexport const KEY_braille_dot_3: number;\nexport const KEY_braille_dot_4: number;\nexport const KEY_braille_dot_5: number;\nexport const KEY_braille_dot_6: number;\nexport const KEY_braille_dot_7: number;\nexport const KEY_braille_dot_8: number;\nexport const KEY_braille_dot_9: number;\nexport const KEY_braille_dots_1: number;\nexport const KEY_braille_dots_12: number;\nexport const KEY_braille_dots_123: number;\nexport const KEY_braille_dots_1234: number;\nexport const KEY_braille_dots_12345: number;\nexport const KEY_braille_dots_123456: number;\nexport const KEY_braille_dots_1234567: number;\nexport const KEY_braille_dots_12345678: number;\nexport const KEY_braille_dots_1234568: number;\nexport const KEY_braille_dots_123457: number;\nexport const KEY_braille_dots_1234578: number;\nexport const KEY_braille_dots_123458: number;\nexport const KEY_braille_dots_12346: number;\nexport const KEY_braille_dots_123467: number;\nexport const KEY_braille_dots_1234678: number;\nexport const KEY_braille_dots_123468: number;\nexport const KEY_braille_dots_12347: number;\nexport const KEY_braille_dots_123478: number;\nexport const KEY_braille_dots_12348: number;\nexport const KEY_braille_dots_1235: number;\nexport const KEY_braille_dots_12356: number;\nexport const KEY_braille_dots_123567: number;\nexport const KEY_braille_dots_1235678: number;\nexport const KEY_braille_dots_123568: number;\nexport const KEY_braille_dots_12357: number;\nexport const KEY_braille_dots_123578: number;\nexport const KEY_braille_dots_12358: number;\nexport const KEY_braille_dots_1236: number;\nexport const KEY_braille_dots_12367: number;\nexport const KEY_braille_dots_123678: number;\nexport const KEY_braille_dots_12368: number;\nexport const KEY_braille_dots_1237: number;\nexport const KEY_braille_dots_12378: number;\nexport const KEY_braille_dots_1238: number;\nexport const KEY_braille_dots_124: number;\nexport const KEY_braille_dots_1245: number;\nexport const KEY_braille_dots_12456: number;\nexport const KEY_braille_dots_124567: number;\nexport const KEY_braille_dots_1245678: number;\nexport const KEY_braille_dots_124568: number;\nexport const KEY_braille_dots_12457: number;\nexport const KEY_braille_dots_124578: number;\nexport const KEY_braille_dots_12458: number;\nexport const KEY_braille_dots_1246: number;\nexport const KEY_braille_dots_12467: number;\nexport const KEY_braille_dots_124678: number;\nexport const KEY_braille_dots_12468: number;\nexport const KEY_braille_dots_1247: number;\nexport const KEY_braille_dots_12478: number;\nexport const KEY_braille_dots_1248: number;\nexport const KEY_braille_dots_125: number;\nexport const KEY_braille_dots_1256: number;\nexport const KEY_braille_dots_12567: number;\nexport const KEY_braille_dots_125678: number;\nexport const KEY_braille_dots_12568: number;\nexport const KEY_braille_dots_1257: number;\nexport const KEY_braille_dots_12578: number;\nexport const KEY_braille_dots_1258: number;\nexport const KEY_braille_dots_126: number;\nexport const KEY_braille_dots_1267: number;\nexport const KEY_braille_dots_12678: number;\nexport const KEY_braille_dots_1268: number;\nexport const KEY_braille_dots_127: number;\nexport const KEY_braille_dots_1278: number;\nexport const KEY_braille_dots_128: number;\nexport const KEY_braille_dots_13: number;\nexport const KEY_braille_dots_134: number;\nexport const KEY_braille_dots_1345: number;\nexport const KEY_braille_dots_13456: number;\nexport const KEY_braille_dots_134567: number;\nexport const KEY_braille_dots_1345678: number;\nexport const KEY_braille_dots_134568: number;\nexport const KEY_braille_dots_13457: number;\nexport const KEY_braille_dots_134578: number;\nexport const KEY_braille_dots_13458: number;\nexport const KEY_braille_dots_1346: number;\nexport const KEY_braille_dots_13467: number;\nexport const KEY_braille_dots_134678: number;\nexport const KEY_braille_dots_13468: number;\nexport const KEY_braille_dots_1347: number;\nexport const KEY_braille_dots_13478: number;\nexport const KEY_braille_dots_1348: number;\nexport const KEY_braille_dots_135: number;\nexport const KEY_braille_dots_1356: number;\nexport const KEY_braille_dots_13567: number;\nexport const KEY_braille_dots_135678: number;\nexport const KEY_braille_dots_13568: number;\nexport const KEY_braille_dots_1357: number;\nexport const KEY_braille_dots_13578: number;\nexport const KEY_braille_dots_1358: number;\nexport const KEY_braille_dots_136: number;\nexport const KEY_braille_dots_1367: number;\nexport const KEY_braille_dots_13678: number;\nexport const KEY_braille_dots_1368: number;\nexport const KEY_braille_dots_137: number;\nexport const KEY_braille_dots_1378: number;\nexport const KEY_braille_dots_138: number;\nexport const KEY_braille_dots_14: number;\nexport const KEY_braille_dots_145: number;\nexport const KEY_braille_dots_1456: number;\nexport const KEY_braille_dots_14567: number;\nexport const KEY_braille_dots_145678: number;\nexport const KEY_braille_dots_14568: number;\nexport const KEY_braille_dots_1457: number;\nexport const KEY_braille_dots_14578: number;\nexport const KEY_braille_dots_1458: number;\nexport const KEY_braille_dots_146: number;\nexport const KEY_braille_dots_1467: number;\nexport const KEY_braille_dots_14678: number;\nexport const KEY_braille_dots_1468: number;\nexport const KEY_braille_dots_147: number;\nexport const KEY_braille_dots_1478: number;\nexport const KEY_braille_dots_148: number;\nexport const KEY_braille_dots_15: number;\nexport const KEY_braille_dots_156: number;\nexport const KEY_braille_dots_1567: number;\nexport const KEY_braille_dots_15678: number;\nexport const KEY_braille_dots_1568: number;\nexport const KEY_braille_dots_157: number;\nexport const KEY_braille_dots_1578: number;\nexport const KEY_braille_dots_158: number;\nexport const KEY_braille_dots_16: number;\nexport const KEY_braille_dots_167: number;\nexport const KEY_braille_dots_1678: number;\nexport const KEY_braille_dots_168: number;\nexport const KEY_braille_dots_17: number;\nexport const KEY_braille_dots_178: number;\nexport const KEY_braille_dots_18: number;\nexport const KEY_braille_dots_2: number;\nexport const KEY_braille_dots_23: number;\nexport const KEY_braille_dots_234: number;\nexport const KEY_braille_dots_2345: number;\nexport const KEY_braille_dots_23456: number;\nexport const KEY_braille_dots_234567: number;\nexport const KEY_braille_dots_2345678: number;\nexport const KEY_braille_dots_234568: number;\nexport const KEY_braille_dots_23457: number;\nexport const KEY_braille_dots_234578: number;\nexport const KEY_braille_dots_23458: number;\nexport const KEY_braille_dots_2346: number;\nexport const KEY_braille_dots_23467: number;\nexport const KEY_braille_dots_234678: number;\nexport const KEY_braille_dots_23468: number;\nexport const KEY_braille_dots_2347: number;\nexport const KEY_braille_dots_23478: number;\nexport const KEY_braille_dots_2348: number;\nexport const KEY_braille_dots_235: number;\nexport const KEY_braille_dots_2356: number;\nexport const KEY_braille_dots_23567: number;\nexport const KEY_braille_dots_235678: number;\nexport const KEY_braille_dots_23568: number;\nexport const KEY_braille_dots_2357: number;\nexport const KEY_braille_dots_23578: number;\nexport const KEY_braille_dots_2358: number;\nexport const KEY_braille_dots_236: number;\nexport const KEY_braille_dots_2367: number;\nexport const KEY_braille_dots_23678: number;\nexport const KEY_braille_dots_2368: number;\nexport const KEY_braille_dots_237: number;\nexport const KEY_braille_dots_2378: number;\nexport const KEY_braille_dots_238: number;\nexport const KEY_braille_dots_24: number;\nexport const KEY_braille_dots_245: number;\nexport const KEY_braille_dots_2456: number;\nexport const KEY_braille_dots_24567: number;\nexport const KEY_braille_dots_245678: number;\nexport const KEY_braille_dots_24568: number;\nexport const KEY_braille_dots_2457: number;\nexport const KEY_braille_dots_24578: number;\nexport const KEY_braille_dots_2458: number;\nexport const KEY_braille_dots_246: number;\nexport const KEY_braille_dots_2467: number;\nexport const KEY_braille_dots_24678: number;\nexport const KEY_braille_dots_2468: number;\nexport const KEY_braille_dots_247: number;\nexport const KEY_braille_dots_2478: number;\nexport const KEY_braille_dots_248: number;\nexport const KEY_braille_dots_25: number;\nexport const KEY_braille_dots_256: number;\nexport const KEY_braille_dots_2567: number;\nexport const KEY_braille_dots_25678: number;\nexport const KEY_braille_dots_2568: number;\nexport const KEY_braille_dots_257: number;\nexport const KEY_braille_dots_2578: number;\nexport const KEY_braille_dots_258: number;\nexport const KEY_braille_dots_26: number;\nexport const KEY_braille_dots_267: number;\nexport const KEY_braille_dots_2678: number;\nexport const KEY_braille_dots_268: number;\nexport const KEY_braille_dots_27: number;\nexport const KEY_braille_dots_278: number;\nexport const KEY_braille_dots_28: number;\nexport const KEY_braille_dots_3: number;\nexport const KEY_braille_dots_34: number;\nexport const KEY_braille_dots_345: number;\nexport const KEY_braille_dots_3456: number;\nexport const KEY_braille_dots_34567: number;\nexport const KEY_braille_dots_345678: number;\nexport const KEY_braille_dots_34568: number;\nexport const KEY_braille_dots_3457: number;\nexport const KEY_braille_dots_34578: number;\nexport const KEY_braille_dots_3458: number;\nexport const KEY_braille_dots_346: number;\nexport const KEY_braille_dots_3467: number;\nexport const KEY_braille_dots_34678: number;\nexport const KEY_braille_dots_3468: number;\nexport const KEY_braille_dots_347: number;\nexport const KEY_braille_dots_3478: number;\nexport const KEY_braille_dots_348: number;\nexport const KEY_braille_dots_35: number;\nexport const KEY_braille_dots_356: number;\nexport const KEY_braille_dots_3567: number;\nexport const KEY_braille_dots_35678: number;\nexport const KEY_braille_dots_3568: number;\nexport const KEY_braille_dots_357: number;\nexport const KEY_braille_dots_3578: number;\nexport const KEY_braille_dots_358: number;\nexport const KEY_braille_dots_36: number;\nexport const KEY_braille_dots_367: number;\nexport const KEY_braille_dots_3678: number;\nexport const KEY_braille_dots_368: number;\nexport const KEY_braille_dots_37: number;\nexport const KEY_braille_dots_378: number;\nexport const KEY_braille_dots_38: number;\nexport const KEY_braille_dots_4: number;\nexport const KEY_braille_dots_45: number;\nexport const KEY_braille_dots_456: number;\nexport const KEY_braille_dots_4567: number;\nexport const KEY_braille_dots_45678: number;\nexport const KEY_braille_dots_4568: number;\nexport const KEY_braille_dots_457: number;\nexport const KEY_braille_dots_4578: number;\nexport const KEY_braille_dots_458: number;\nexport const KEY_braille_dots_46: number;\nexport const KEY_braille_dots_467: number;\nexport const KEY_braille_dots_4678: number;\nexport const KEY_braille_dots_468: number;\nexport const KEY_braille_dots_47: number;\nexport const KEY_braille_dots_478: number;\nexport const KEY_braille_dots_48: number;\nexport const KEY_braille_dots_5: number;\nexport const KEY_braille_dots_56: number;\nexport const KEY_braille_dots_567: number;\nexport const KEY_braille_dots_5678: number;\nexport const KEY_braille_dots_568: number;\nexport const KEY_braille_dots_57: number;\nexport const KEY_braille_dots_578: number;\nexport const KEY_braille_dots_58: number;\nexport const KEY_braille_dots_6: number;\nexport const KEY_braille_dots_67: number;\nexport const KEY_braille_dots_678: number;\nexport const KEY_braille_dots_68: number;\nexport const KEY_braille_dots_7: number;\nexport const KEY_braille_dots_78: number;\nexport const KEY_braille_dots_8: number;\nexport const KEY_breve: number;\nexport const KEY_brokenbar: number;\nexport const KEY_c: number;\nexport const KEY_c_h: number;\nexport const KEY_cabovedot: number;\nexport const KEY_cacute: number;\nexport const KEY_careof: number;\nexport const KEY_caret: number;\nexport const KEY_caron: number;\nexport const KEY_ccaron: number;\nexport const KEY_ccedilla: number;\nexport const KEY_ccircumflex: number;\nexport const KEY_cedilla: number;\nexport const KEY_cent: number;\nexport const KEY_ch: number;\nexport const KEY_checkerboard: number;\nexport const KEY_checkmark: number;\nexport const KEY_circle: number;\nexport const KEY_club: number;\nexport const KEY_colon: number;\nexport const KEY_comma: number;\nexport const KEY_containsas: number;\nexport const KEY_copyright: number;\nexport const KEY_cr: number;\nexport const KEY_crossinglines: number;\nexport const KEY_cuberoot: number;\nexport const KEY_currency: number;\nexport const KEY_cursor: number;\nexport const KEY_d: number;\nexport const KEY_dabovedot: number;\nexport const KEY_dagger: number;\nexport const KEY_dcaron: number;\nexport const KEY_dead_A: number;\nexport const KEY_dead_E: number;\nexport const KEY_dead_I: number;\nexport const KEY_dead_O: number;\nexport const KEY_dead_U: number;\nexport const KEY_dead_a: number;\nexport const KEY_dead_abovecomma: number;\nexport const KEY_dead_abovedot: number;\nexport const KEY_dead_abovereversedcomma: number;\nexport const KEY_dead_abovering: number;\nexport const KEY_dead_aboveverticalline: number;\nexport const KEY_dead_acute: number;\nexport const KEY_dead_belowbreve: number;\nexport const KEY_dead_belowcircumflex: number;\nexport const KEY_dead_belowcomma: number;\nexport const KEY_dead_belowdiaeresis: number;\nexport const KEY_dead_belowdot: number;\nexport const KEY_dead_belowmacron: number;\nexport const KEY_dead_belowring: number;\nexport const KEY_dead_belowtilde: number;\nexport const KEY_dead_belowverticalline: number;\nexport const KEY_dead_breve: number;\nexport const KEY_dead_capital_schwa: number;\nexport const KEY_dead_caron: number;\nexport const KEY_dead_cedilla: number;\nexport const KEY_dead_circumflex: number;\nexport const KEY_dead_currency: number;\nexport const KEY_dead_dasia: number;\nexport const KEY_dead_diaeresis: number;\nexport const KEY_dead_doubleacute: number;\nexport const KEY_dead_doublegrave: number;\nexport const KEY_dead_e: number;\nexport const KEY_dead_grave: number;\nexport const KEY_dead_greek: number;\nexport const KEY_dead_hook: number;\nexport const KEY_dead_horn: number;\nexport const KEY_dead_i: number;\nexport const KEY_dead_invertedbreve: number;\nexport const KEY_dead_iota: number;\nexport const KEY_dead_longsolidusoverlay: number;\nexport const KEY_dead_lowline: number;\nexport const KEY_dead_macron: number;\nexport const KEY_dead_o: number;\nexport const KEY_dead_ogonek: number;\nexport const KEY_dead_perispomeni: number;\nexport const KEY_dead_psili: number;\nexport const KEY_dead_semivoiced_sound: number;\nexport const KEY_dead_small_schwa: number;\nexport const KEY_dead_stroke: number;\nexport const KEY_dead_tilde: number;\nexport const KEY_dead_u: number;\nexport const KEY_dead_voiced_sound: number;\nexport const KEY_decimalpoint: number;\nexport const KEY_degree: number;\nexport const KEY_diaeresis: number;\nexport const KEY_diamond: number;\nexport const KEY_digitspace: number;\nexport const KEY_dintegral: number;\nexport const KEY_division: number;\nexport const KEY_dollar: number;\nexport const KEY_doubbaselinedot: number;\nexport const KEY_doubleacute: number;\nexport const KEY_doubledagger: number;\nexport const KEY_doublelowquotemark: number;\nexport const KEY_downarrow: number;\nexport const KEY_downcaret: number;\nexport const KEY_downshoe: number;\nexport const KEY_downstile: number;\nexport const KEY_downtack: number;\nexport const KEY_dstroke: number;\nexport const KEY_e: number;\nexport const KEY_eabovedot: number;\nexport const KEY_eacute: number;\nexport const KEY_ebelowdot: number;\nexport const KEY_ecaron: number;\nexport const KEY_ecircumflex: number;\nexport const KEY_ecircumflexacute: number;\nexport const KEY_ecircumflexbelowdot: number;\nexport const KEY_ecircumflexgrave: number;\nexport const KEY_ecircumflexhook: number;\nexport const KEY_ecircumflextilde: number;\nexport const KEY_ediaeresis: number;\nexport const KEY_egrave: number;\nexport const KEY_ehook: number;\nexport const KEY_eightsubscript: number;\nexport const KEY_eightsuperior: number;\nexport const KEY_elementof: number;\nexport const KEY_ellipsis: number;\nexport const KEY_em3space: number;\nexport const KEY_em4space: number;\nexport const KEY_emacron: number;\nexport const KEY_emdash: number;\nexport const KEY_emfilledcircle: number;\nexport const KEY_emfilledrect: number;\nexport const KEY_emopencircle: number;\nexport const KEY_emopenrectangle: number;\nexport const KEY_emptyset: number;\nexport const KEY_emspace: number;\nexport const KEY_endash: number;\nexport const KEY_enfilledcircbullet: number;\nexport const KEY_enfilledsqbullet: number;\nexport const KEY_eng: number;\nexport const KEY_enopencircbullet: number;\nexport const KEY_enopensquarebullet: number;\nexport const KEY_enspace: number;\nexport const KEY_eogonek: number;\nexport const KEY_equal: number;\nexport const KEY_eth: number;\nexport const KEY_etilde: number;\nexport const KEY_exclam: number;\nexport const KEY_exclamdown: number;\nexport const KEY_ezh: number;\nexport const KEY_f: number;\nexport const KEY_fabovedot: number;\nexport const KEY_femalesymbol: number;\nexport const KEY_ff: number;\nexport const KEY_figdash: number;\nexport const KEY_filledlefttribullet: number;\nexport const KEY_filledrectbullet: number;\nexport const KEY_filledrighttribullet: number;\nexport const KEY_filledtribulletdown: number;\nexport const KEY_filledtribulletup: number;\nexport const KEY_fiveeighths: number;\nexport const KEY_fivesixths: number;\nexport const KEY_fivesubscript: number;\nexport const KEY_fivesuperior: number;\nexport const KEY_fourfifths: number;\nexport const KEY_foursubscript: number;\nexport const KEY_foursuperior: number;\nexport const KEY_fourthroot: number;\nexport const KEY_function: number;\nexport const KEY_g: number;\nexport const KEY_gabovedot: number;\nexport const KEY_gbreve: number;\nexport const KEY_gcaron: number;\nexport const KEY_gcedilla: number;\nexport const KEY_gcircumflex: number;\nexport const KEY_grave: number;\nexport const KEY_greater: number;\nexport const KEY_greaterthanequal: number;\nexport const KEY_guillemotleft: number;\nexport const KEY_guillemotright: number;\nexport const KEY_h: number;\nexport const KEY_hairspace: number;\nexport const KEY_hcircumflex: number;\nexport const KEY_heart: number;\nexport const KEY_hebrew_aleph: number;\nexport const KEY_hebrew_ayin: number;\nexport const KEY_hebrew_bet: number;\nexport const KEY_hebrew_beth: number;\nexport const KEY_hebrew_chet: number;\nexport const KEY_hebrew_dalet: number;\nexport const KEY_hebrew_daleth: number;\nexport const KEY_hebrew_doublelowline: number;\nexport const KEY_hebrew_finalkaph: number;\nexport const KEY_hebrew_finalmem: number;\nexport const KEY_hebrew_finalnun: number;\nexport const KEY_hebrew_finalpe: number;\nexport const KEY_hebrew_finalzade: number;\nexport const KEY_hebrew_finalzadi: number;\nexport const KEY_hebrew_gimel: number;\nexport const KEY_hebrew_gimmel: number;\nexport const KEY_hebrew_he: number;\nexport const KEY_hebrew_het: number;\nexport const KEY_hebrew_kaph: number;\nexport const KEY_hebrew_kuf: number;\nexport const KEY_hebrew_lamed: number;\nexport const KEY_hebrew_mem: number;\nexport const KEY_hebrew_nun: number;\nexport const KEY_hebrew_pe: number;\nexport const KEY_hebrew_qoph: number;\nexport const KEY_hebrew_resh: number;\nexport const KEY_hebrew_samech: number;\nexport const KEY_hebrew_samekh: number;\nexport const KEY_hebrew_shin: number;\nexport const KEY_hebrew_taf: number;\nexport const KEY_hebrew_taw: number;\nexport const KEY_hebrew_tet: number;\nexport const KEY_hebrew_teth: number;\nexport const KEY_hebrew_waw: number;\nexport const KEY_hebrew_yod: number;\nexport const KEY_hebrew_zade: number;\nexport const KEY_hebrew_zadi: number;\nexport const KEY_hebrew_zain: number;\nexport const KEY_hebrew_zayin: number;\nexport const KEY_hexagram: number;\nexport const KEY_horizconnector: number;\nexport const KEY_horizlinescan1: number;\nexport const KEY_horizlinescan3: number;\nexport const KEY_horizlinescan5: number;\nexport const KEY_horizlinescan7: number;\nexport const KEY_horizlinescan9: number;\nexport const KEY_hstroke: number;\nexport const KEY_ht: number;\nexport const KEY_hyphen: number;\nexport const KEY_i: number;\nexport const KEY_iTouch: number;\nexport const KEY_iacute: number;\nexport const KEY_ibelowdot: number;\nexport const KEY_ibreve: number;\nexport const KEY_icircumflex: number;\nexport const KEY_identical: number;\nexport const KEY_idiaeresis: number;\nexport const KEY_idotless: number;\nexport const KEY_ifonlyif: number;\nexport const KEY_igrave: number;\nexport const KEY_ihook: number;\nexport const KEY_imacron: number;\nexport const KEY_implies: number;\nexport const KEY_includedin: number;\nexport const KEY_includes: number;\nexport const KEY_infinity: number;\nexport const KEY_integral: number;\nexport const KEY_intersection: number;\nexport const KEY_iogonek: number;\nexport const KEY_itilde: number;\nexport const KEY_j: number;\nexport const KEY_jcircumflex: number;\nexport const KEY_jot: number;\nexport const KEY_k: number;\nexport const KEY_kana_A: number;\nexport const KEY_kana_CHI: number;\nexport const KEY_kana_E: number;\nexport const KEY_kana_FU: number;\nexport const KEY_kana_HA: number;\nexport const KEY_kana_HE: number;\nexport const KEY_kana_HI: number;\nexport const KEY_kana_HO: number;\nexport const KEY_kana_HU: number;\nexport const KEY_kana_I: number;\nexport const KEY_kana_KA: number;\nexport const KEY_kana_KE: number;\nexport const KEY_kana_KI: number;\nexport const KEY_kana_KO: number;\nexport const KEY_kana_KU: number;\nexport const KEY_kana_MA: number;\nexport const KEY_kana_ME: number;\nexport const KEY_kana_MI: number;\nexport const KEY_kana_MO: number;\nexport const KEY_kana_MU: number;\nexport const KEY_kana_N: number;\nexport const KEY_kana_NA: number;\nexport const KEY_kana_NE: number;\nexport const KEY_kana_NI: number;\nexport const KEY_kana_NO: number;\nexport const KEY_kana_NU: number;\nexport const KEY_kana_O: number;\nexport const KEY_kana_RA: number;\nexport const KEY_kana_RE: number;\nexport const KEY_kana_RI: number;\nexport const KEY_kana_RO: number;\nexport const KEY_kana_RU: number;\nexport const KEY_kana_SA: number;\nexport const KEY_kana_SE: number;\nexport const KEY_kana_SHI: number;\nexport const KEY_kana_SO: number;\nexport const KEY_kana_SU: number;\nexport const KEY_kana_TA: number;\nexport const KEY_kana_TE: number;\nexport const KEY_kana_TI: number;\nexport const KEY_kana_TO: number;\nexport const KEY_kana_TSU: number;\nexport const KEY_kana_TU: number;\nexport const KEY_kana_U: number;\nexport const KEY_kana_WA: number;\nexport const KEY_kana_WO: number;\nexport const KEY_kana_YA: number;\nexport const KEY_kana_YO: number;\nexport const KEY_kana_YU: number;\nexport const KEY_kana_a: number;\nexport const KEY_kana_closingbracket: number;\nexport const KEY_kana_comma: number;\nexport const KEY_kana_conjunctive: number;\nexport const KEY_kana_e: number;\nexport const KEY_kana_fullstop: number;\nexport const KEY_kana_i: number;\nexport const KEY_kana_middledot: number;\nexport const KEY_kana_o: number;\nexport const KEY_kana_openingbracket: number;\nexport const KEY_kana_switch: number;\nexport const KEY_kana_tsu: number;\nexport const KEY_kana_tu: number;\nexport const KEY_kana_u: number;\nexport const KEY_kana_ya: number;\nexport const KEY_kana_yo: number;\nexport const KEY_kana_yu: number;\nexport const KEY_kappa: number;\nexport const KEY_kcedilla: number;\nexport const KEY_kra: number;\nexport const KEY_l: number;\nexport const KEY_lacute: number;\nexport const KEY_latincross: number;\nexport const KEY_lbelowdot: number;\nexport const KEY_lcaron: number;\nexport const KEY_lcedilla: number;\nexport const KEY_leftanglebracket: number;\nexport const KEY_leftarrow: number;\nexport const KEY_leftcaret: number;\nexport const KEY_leftdoublequotemark: number;\nexport const KEY_leftmiddlecurlybrace: number;\nexport const KEY_leftopentriangle: number;\nexport const KEY_leftpointer: number;\nexport const KEY_leftradical: number;\nexport const KEY_leftshoe: number;\nexport const KEY_leftsinglequotemark: number;\nexport const KEY_leftt: number;\nexport const KEY_lefttack: number;\nexport const KEY_less: number;\nexport const KEY_lessthanequal: number;\nexport const KEY_lf: number;\nexport const KEY_logicaland: number;\nexport const KEY_logicalor: number;\nexport const KEY_lowleftcorner: number;\nexport const KEY_lowrightcorner: number;\nexport const KEY_lstroke: number;\nexport const KEY_m: number;\nexport const KEY_mabovedot: number;\nexport const KEY_macron: number;\nexport const KEY_malesymbol: number;\nexport const KEY_maltesecross: number;\nexport const KEY_marker: number;\nexport const KEY_masculine: number;\nexport const KEY_minus: number;\nexport const KEY_minutes: number;\nexport const KEY_mu: number;\nexport const KEY_multiply: number;\nexport const KEY_musicalflat: number;\nexport const KEY_musicalsharp: number;\nexport const KEY_n: number;\nexport const KEY_nabla: number;\nexport const KEY_nacute: number;\nexport const KEY_ncaron: number;\nexport const KEY_ncedilla: number;\nexport const KEY_ninesubscript: number;\nexport const KEY_ninesuperior: number;\nexport const KEY_nl: number;\nexport const KEY_nobreakspace: number;\nexport const KEY_notapproxeq: number;\nexport const KEY_notelementof: number;\nexport const KEY_notequal: number;\nexport const KEY_notidentical: number;\nexport const KEY_notsign: number;\nexport const KEY_ntilde: number;\nexport const KEY_numbersign: number;\nexport const KEY_numerosign: number;\nexport const KEY_o: number;\nexport const KEY_oacute: number;\nexport const KEY_obarred: number;\nexport const KEY_obelowdot: number;\nexport const KEY_ocaron: number;\nexport const KEY_ocircumflex: number;\nexport const KEY_ocircumflexacute: number;\nexport const KEY_ocircumflexbelowdot: number;\nexport const KEY_ocircumflexgrave: number;\nexport const KEY_ocircumflexhook: number;\nexport const KEY_ocircumflextilde: number;\nexport const KEY_odiaeresis: number;\nexport const KEY_odoubleacute: number;\nexport const KEY_oe: number;\nexport const KEY_ogonek: number;\nexport const KEY_ograve: number;\nexport const KEY_ohook: number;\nexport const KEY_ohorn: number;\nexport const KEY_ohornacute: number;\nexport const KEY_ohornbelowdot: number;\nexport const KEY_ohorngrave: number;\nexport const KEY_ohornhook: number;\nexport const KEY_ohorntilde: number;\nexport const KEY_omacron: number;\nexport const KEY_oneeighth: number;\nexport const KEY_onefifth: number;\nexport const KEY_onehalf: number;\nexport const KEY_onequarter: number;\nexport const KEY_onesixth: number;\nexport const KEY_onesubscript: number;\nexport const KEY_onesuperior: number;\nexport const KEY_onethird: number;\nexport const KEY_ooblique: number;\nexport const KEY_openrectbullet: number;\nexport const KEY_openstar: number;\nexport const KEY_opentribulletdown: number;\nexport const KEY_opentribulletup: number;\nexport const KEY_ordfeminine: number;\nexport const KEY_oslash: number;\nexport const KEY_otilde: number;\nexport const KEY_overbar: number;\nexport const KEY_overline: number;\nexport const KEY_p: number;\nexport const KEY_pabovedot: number;\nexport const KEY_paragraph: number;\nexport const KEY_parenleft: number;\nexport const KEY_parenright: number;\nexport const KEY_partdifferential: number;\nexport const KEY_partialderivative: number;\nexport const KEY_percent: number;\nexport const KEY_period: number;\nexport const KEY_periodcentered: number;\nexport const KEY_permille: number;\nexport const KEY_phonographcopyright: number;\nexport const KEY_plus: number;\nexport const KEY_plusminus: number;\nexport const KEY_prescription: number;\nexport const KEY_prolongedsound: number;\nexport const KEY_punctspace: number;\nexport const KEY_q: number;\nexport const KEY_quad: number;\nexport const KEY_question: number;\nexport const KEY_questiondown: number;\nexport const KEY_quotedbl: number;\nexport const KEY_quoteleft: number;\nexport const KEY_quoteright: number;\nexport const KEY_r: number;\nexport const KEY_racute: number;\nexport const KEY_radical: number;\nexport const KEY_rcaron: number;\nexport const KEY_rcedilla: number;\nexport const KEY_registered: number;\nexport const KEY_rightanglebracket: number;\nexport const KEY_rightarrow: number;\nexport const KEY_rightcaret: number;\nexport const KEY_rightdoublequotemark: number;\nexport const KEY_rightmiddlecurlybrace: number;\nexport const KEY_rightmiddlesummation: number;\nexport const KEY_rightopentriangle: number;\nexport const KEY_rightpointer: number;\nexport const KEY_rightshoe: number;\nexport const KEY_rightsinglequotemark: number;\nexport const KEY_rightt: number;\nexport const KEY_righttack: number;\nexport const KEY_s: number;\nexport const KEY_sabovedot: number;\nexport const KEY_sacute: number;\nexport const KEY_scaron: number;\nexport const KEY_scedilla: number;\nexport const KEY_schwa: number;\nexport const KEY_scircumflex: number;\nexport const KEY_script_switch: number;\nexport const KEY_seconds: number;\nexport const KEY_section: number;\nexport const KEY_semicolon: number;\nexport const KEY_semivoicedsound: number;\nexport const KEY_seveneighths: number;\nexport const KEY_sevensubscript: number;\nexport const KEY_sevensuperior: number;\nexport const KEY_signaturemark: number;\nexport const KEY_signifblank: number;\nexport const KEY_similarequal: number;\nexport const KEY_singlelowquotemark: number;\nexport const KEY_sixsubscript: number;\nexport const KEY_sixsuperior: number;\nexport const KEY_slash: number;\nexport const KEY_soliddiamond: number;\nexport const KEY_space: number;\nexport const KEY_squareroot: number;\nexport const KEY_ssharp: number;\nexport const KEY_sterling: number;\nexport const KEY_stricteq: number;\nexport const KEY_t: number;\nexport const KEY_tabovedot: number;\nexport const KEY_tcaron: number;\nexport const KEY_tcedilla: number;\nexport const KEY_telephone: number;\nexport const KEY_telephonerecorder: number;\nexport const KEY_therefore: number;\nexport const KEY_thinspace: number;\nexport const KEY_thorn: number;\nexport const KEY_threeeighths: number;\nexport const KEY_threefifths: number;\nexport const KEY_threequarters: number;\nexport const KEY_threesubscript: number;\nexport const KEY_threesuperior: number;\nexport const KEY_tintegral: number;\nexport const KEY_topintegral: number;\nexport const KEY_topleftparens: number;\nexport const KEY_topleftradical: number;\nexport const KEY_topleftsqbracket: number;\nexport const KEY_topleftsummation: number;\nexport const KEY_toprightparens: number;\nexport const KEY_toprightsqbracket: number;\nexport const KEY_toprightsummation: number;\nexport const KEY_topt: number;\nexport const KEY_topvertsummationconnector: number;\nexport const KEY_trademark: number;\nexport const KEY_trademarkincircle: number;\nexport const KEY_tslash: number;\nexport const KEY_twofifths: number;\nexport const KEY_twosubscript: number;\nexport const KEY_twosuperior: number;\nexport const KEY_twothirds: number;\nexport const KEY_u: number;\nexport const KEY_uacute: number;\nexport const KEY_ubelowdot: number;\nexport const KEY_ubreve: number;\nexport const KEY_ucircumflex: number;\nexport const KEY_udiaeresis: number;\nexport const KEY_udoubleacute: number;\nexport const KEY_ugrave: number;\nexport const KEY_uhook: number;\nexport const KEY_uhorn: number;\nexport const KEY_uhornacute: number;\nexport const KEY_uhornbelowdot: number;\nexport const KEY_uhorngrave: number;\nexport const KEY_uhornhook: number;\nexport const KEY_uhorntilde: number;\nexport const KEY_umacron: number;\nexport const KEY_underbar: number;\nexport const KEY_underscore: number;\nexport const KEY_union: number;\nexport const KEY_uogonek: number;\nexport const KEY_uparrow: number;\nexport const KEY_upcaret: number;\nexport const KEY_upleftcorner: number;\nexport const KEY_uprightcorner: number;\nexport const KEY_upshoe: number;\nexport const KEY_upstile: number;\nexport const KEY_uptack: number;\nexport const KEY_uring: number;\nexport const KEY_utilde: number;\nexport const KEY_v: number;\nexport const KEY_variation: number;\nexport const KEY_vertbar: number;\nexport const KEY_vertconnector: number;\nexport const KEY_voicedsound: number;\nexport const KEY_vt: number;\nexport const KEY_w: number;\nexport const KEY_wacute: number;\nexport const KEY_wcircumflex: number;\nexport const KEY_wdiaeresis: number;\nexport const KEY_wgrave: number;\nexport const KEY_x: number;\nexport const KEY_xabovedot: number;\nexport const KEY_y: number;\nexport const KEY_yacute: number;\nexport const KEY_ybelowdot: number;\nexport const KEY_ycircumflex: number;\nexport const KEY_ydiaeresis: number;\nexport const KEY_yen: number;\nexport const KEY_ygrave: number;\nexport const KEY_yhook: number;\nexport const KEY_ytilde: number;\nexport const KEY_z: number;\nexport const KEY_zabovedot: number;\nexport const KEY_zacute: number;\nexport const KEY_zcaron: number;\nexport const KEY_zerosubscript: number;\nexport const KEY_zerosuperior: number;\nexport const KEY_zstroke: number;\nexport const PATH_RELATIVE: number;\nexport const PRIORITY_REDRAW: number;\nexport const VIRTUAL_INPUT_DEVICE_MAX_TOUCH_SLOTS: number;\nexport function actor_box_alloc(): ActorBox;\nexport function cairo_clear(cr: cairo.Context): void;\nexport function cairo_set_source_color(cr: cairo.Context, color: Color): void;\nexport function color_from_hls(hue: number, luminance: number, saturation: number): Color;\nexport function color_from_pixel(pixel: number): Color;\nexport function color_from_string(str: string): [boolean, Color];\nexport function color_get_static(color: StaticColor): Color;\nexport function container_class_find_child_property(klass: GObject.Object, property_name: string): GObject.ParamSpec;\nexport function container_class_list_child_properties(klass: GObject.Object): GObject.ParamSpec[];\nexport function debug_set_max_render_time_constant(max_render_time_constant_us: number): void;\nexport function disable_accessibility(): void;\nexport function do_event(event: Event): void;\nexport function event_add_filter(stage: Stage | null, func: EventFilterFunc): number;\nexport function event_get(): Event;\nexport function event_remove_filter(id: number): void;\nexport function events_pending(): boolean;\nexport function get_accessibility_enabled(): boolean;\nexport function get_current_event(): Event;\nexport function get_current_event_time(): number;\nexport function get_debug_flags(debug_flags: DebugFlag, draw_flags: DrawDebugFlag, pick_flags: PickDebugFlag): void;\nexport function get_default_backend(): Backend;\nexport function get_default_text_direction(): TextDirection;\nexport function get_font_map(): Pango.FontMap;\nexport function get_script_id(gobject: GObject.Object): string;\nexport function get_text_direction(): TextDirection;\nexport function keysym_to_unicode(keyval: number): number;\nexport function keyval_convert_case(symbol: number): [number, number];\nexport function keyval_name(keyval: number): string | null;\nexport function script_error_quark(): GLib.Quark;\nexport function threads_add_idle(priority: number, func: GLib.SourceFunc): number;\nexport function threads_add_repaint_func(func: GLib.SourceFunc): number;\nexport function threads_add_repaint_func_full(flags: RepaintFlags, func: GLib.SourceFunc): number;\nexport function threads_add_timeout(priority: number, interval: number, func: GLib.SourceFunc): number;\nexport function threads_remove_repaint_func(handle_id: number): void;\nexport function unicode_to_keysym(wc: number): number;\nexport function units_from_cm(cm: number): Units;\nexport function units_from_em(em: number): Units;\nexport function units_from_em_for_font(font_name: string | null, em: number): Units;\nexport function units_from_mm(mm: number): Units;\nexport function units_from_pixels(px: number): Units;\nexport function units_from_pt(pt: number): Units;\nexport function units_from_string(str: string): [boolean, Units];\nexport function value_dup_paint_node(value: GObject.Value | any): PaintNode;\nexport function value_get_color(value: GObject.Value | any): Color;\nexport function value_get_paint_node(value: GObject.Value | any): PaintNode;\nexport function value_get_shader_float(value: GObject.Value | any): number[];\nexport function value_get_shader_int(value: GObject.Value | any): number[];\nexport function value_get_shader_matrix(value: GObject.Value | any): number[];\nexport function value_get_units(value: GObject.Value | any): Units;\nexport function value_set_color(value: GObject.Value | any, color: Color): void;\nexport function value_set_paint_node(value: GObject.Value | any, node?: PaintNode | null): void;\nexport function value_set_shader_float(value: GObject.Value | any, floats: number[]): void;\nexport function value_set_shader_int(value: GObject.Value | any, ints: number[]): void;\nexport function value_set_shader_matrix(value: GObject.Value | any, matrix: number[]): void;\nexport function value_set_units(value: GObject.Value | any, units: Units): void;\nexport function value_take_paint_node(value: GObject.Value | any, node?: PaintNode | null): void;\nexport type ActorCreateChildFunc<A = GObject.Object> = (item: A) => Actor;\nexport type BindingActionFunc<A = GObject.Object> = (\n    gobject: A,\n    action_name: string,\n    key_val: number,\n    modifiers: ModifierType\n) => boolean;\nexport type Callback = (actor: Actor) => void;\nexport type EventFilterFunc = (event: Event, event_actor: Actor) => boolean;\nexport type PathCallback = (node: PathNode) => void;\nexport type ProgressFunc = (\n    a: GObject.Value | any,\n    b: GObject.Value | any,\n    progress: number,\n    retval: GObject.Value | any\n) => boolean;\nexport type ScriptConnectFunc<A = GObject.Object, B = GObject.Object> = (\n    script: Script,\n    object: A,\n    signal_name: string,\n    handler_name: string,\n    connect_object: B,\n    flags: GObject.ConnectFlags\n) => void;\nexport type TimelineProgressFunc = (timeline: Timeline, elapsed: number, total: number) => number;\n\nexport namespace ActorAlign {\n    export const $gtype: GObject.GType<ActorAlign>;\n}\n\nexport enum ActorAlign {\n    FILL = 0,\n    START = 1,\n    CENTER = 2,\n    END = 3,\n}\n\nexport namespace AlignAxis {\n    export const $gtype: GObject.GType<AlignAxis>;\n}\n\nexport enum AlignAxis {\n    X_AXIS = 0,\n    Y_AXIS = 1,\n    BOTH = 2,\n}\n\nexport namespace AnimationMode {\n    export const $gtype: GObject.GType<AnimationMode>;\n}\n\nexport enum AnimationMode {\n    CUSTOM_MODE = 0,\n    LINEAR = 1,\n    EASE_IN_QUAD = 2,\n    EASE_OUT_QUAD = 3,\n    EASE_IN_OUT_QUAD = 4,\n    EASE_IN_CUBIC = 5,\n    EASE_OUT_CUBIC = 6,\n    EASE_IN_OUT_CUBIC = 7,\n    EASE_IN_QUART = 8,\n    EASE_OUT_QUART = 9,\n    EASE_IN_OUT_QUART = 10,\n    EASE_IN_QUINT = 11,\n    EASE_OUT_QUINT = 12,\n    EASE_IN_OUT_QUINT = 13,\n    EASE_IN_SINE = 14,\n    EASE_OUT_SINE = 15,\n    EASE_IN_OUT_SINE = 16,\n    EASE_IN_EXPO = 17,\n    EASE_OUT_EXPO = 18,\n    EASE_IN_OUT_EXPO = 19,\n    EASE_IN_CIRC = 20,\n    EASE_OUT_CIRC = 21,\n    EASE_IN_OUT_CIRC = 22,\n    EASE_IN_ELASTIC = 23,\n    EASE_OUT_ELASTIC = 24,\n    EASE_IN_OUT_ELASTIC = 25,\n    EASE_IN_BACK = 26,\n    EASE_OUT_BACK = 27,\n    EASE_IN_OUT_BACK = 28,\n    EASE_IN_BOUNCE = 29,\n    EASE_OUT_BOUNCE = 30,\n    EASE_IN_OUT_BOUNCE = 31,\n    STEPS = 32,\n    STEP_START = 33,\n    STEP_END = 34,\n    CUBIC_BEZIER = 35,\n    EASE = 36,\n    EASE_IN = 37,\n    EASE_OUT = 38,\n    EASE_IN_OUT = 39,\n    ANIMATION_LAST = 40,\n}\n\nexport namespace BinAlignment {\n    export const $gtype: GObject.GType<BinAlignment>;\n}\n\nexport enum BinAlignment {\n    FIXED = 0,\n    FILL = 1,\n    START = 2,\n    END = 3,\n    CENTER = 4,\n}\n\nexport namespace BindCoordinate {\n    export const $gtype: GObject.GType<BindCoordinate>;\n}\n\nexport enum BindCoordinate {\n    X = 0,\n    Y = 1,\n    WIDTH = 2,\n    HEIGHT = 3,\n    POSITION = 4,\n    SIZE = 5,\n    ALL = 6,\n}\n\nexport namespace BoxAlignment {\n    export const $gtype: GObject.GType<BoxAlignment>;\n}\n\nexport enum BoxAlignment {\n    START = 0,\n    END = 1,\n    CENTER = 2,\n}\n\nexport namespace ButtonState {\n    export const $gtype: GObject.GType<ButtonState>;\n}\n\nexport enum ButtonState {\n    RELEASED = 0,\n    PRESSED = 1,\n}\n\nexport namespace Colorspace {\n    export const $gtype: GObject.GType<Colorspace>;\n}\n\nexport enum Colorspace {\n    UNKNOWN = 0,\n    SRGB = 1,\n    BT2020 = 2,\n}\n\nexport namespace ContentGravity {\n    export const $gtype: GObject.GType<ContentGravity>;\n}\n\nexport enum ContentGravity {\n    TOP_LEFT = 0,\n    TOP = 1,\n    TOP_RIGHT = 2,\n    LEFT = 3,\n    CENTER = 4,\n    RIGHT = 5,\n    BOTTOM_LEFT = 6,\n    BOTTOM = 7,\n    BOTTOM_RIGHT = 8,\n    RESIZE_FILL = 9,\n    RESIZE_ASPECT = 10,\n}\n\nexport namespace DragAxis {\n    export const $gtype: GObject.GType<DragAxis>;\n}\n\nexport enum DragAxis {\n    AXIS_NONE = 0,\n    X_AXIS = 1,\n    Y_AXIS = 2,\n}\n\nexport namespace EventPhase {\n    export const $gtype: GObject.GType<EventPhase>;\n}\n\nexport enum EventPhase {\n    CAPTURE = 0,\n    BUBBLE = 1,\n}\n\nexport namespace EventType {\n    export const $gtype: GObject.GType<EventType>;\n}\n\nexport enum EventType {\n    NOTHING = 0,\n    KEY_PRESS = 1,\n    KEY_RELEASE = 2,\n    MOTION = 3,\n    ENTER = 4,\n    LEAVE = 5,\n    BUTTON_PRESS = 6,\n    BUTTON_RELEASE = 7,\n    SCROLL = 8,\n    TOUCH_BEGIN = 9,\n    TOUCH_UPDATE = 10,\n    TOUCH_END = 11,\n    TOUCH_CANCEL = 12,\n    TOUCHPAD_PINCH = 13,\n    TOUCHPAD_SWIPE = 14,\n    TOUCHPAD_HOLD = 15,\n    PROXIMITY_IN = 16,\n    PROXIMITY_OUT = 17,\n    PAD_BUTTON_PRESS = 18,\n    PAD_BUTTON_RELEASE = 19,\n    PAD_STRIP = 20,\n    PAD_RING = 21,\n    DEVICE_ADDED = 22,\n    DEVICE_REMOVED = 23,\n    IM_COMMIT = 24,\n    IM_DELETE = 25,\n    IM_PREEDIT = 26,\n    EVENT_LAST = 27,\n}\n\nexport namespace FlowOrientation {\n    export const $gtype: GObject.GType<FlowOrientation>;\n}\n\nexport enum FlowOrientation {\n    HORIZONTAL = 0,\n    VERTICAL = 1,\n}\n\nexport namespace FrameResult {\n    export const $gtype: GObject.GType<FrameResult>;\n}\n\nexport enum FrameResult {\n    PENDING_PRESENTED = 0,\n    IDLE = 1,\n}\n\nexport namespace GestureTriggerEdge {\n    export const $gtype: GObject.GType<GestureTriggerEdge>;\n}\n\nexport enum GestureTriggerEdge {\n    NONE = 0,\n    AFTER = 1,\n    BEFORE = 2,\n}\n\nexport namespace Gravity {\n    export const $gtype: GObject.GType<Gravity>;\n}\n\nexport enum Gravity {\n    NONE = 0,\n    NORTH = 1,\n    NORTH_EAST = 2,\n    EAST = 3,\n    SOUTH_EAST = 4,\n    SOUTH = 5,\n    SOUTH_WEST = 6,\n    WEST = 7,\n    NORTH_WEST = 8,\n    CENTER = 9,\n}\n\nexport namespace GridPosition {\n    export const $gtype: GObject.GType<GridPosition>;\n}\n\nexport enum GridPosition {\n    LEFT = 0,\n    RIGHT = 1,\n    TOP = 2,\n    BOTTOM = 3,\n}\n\nexport namespace InputAxis {\n    export const $gtype: GObject.GType<InputAxis>;\n}\n\nexport enum InputAxis {\n    IGNORE = 0,\n    X = 1,\n    Y = 2,\n    PRESSURE = 3,\n    XTILT = 4,\n    YTILT = 5,\n    WHEEL = 6,\n    DISTANCE = 7,\n    ROTATION = 8,\n    SLIDER = 9,\n    LAST = 10,\n}\n\nexport namespace InputContentPurpose {\n    export const $gtype: GObject.GType<InputContentPurpose>;\n}\n\nexport enum InputContentPurpose {\n    NORMAL = 0,\n    ALPHA = 1,\n    DIGITS = 2,\n    NUMBER = 3,\n    PHONE = 4,\n    URL = 5,\n    EMAIL = 6,\n    NAME = 7,\n    PASSWORD = 8,\n    DATE = 9,\n    TIME = 10,\n    DATETIME = 11,\n    TERMINAL = 12,\n}\n\nexport namespace InputDevicePadFeature {\n    export const $gtype: GObject.GType<InputDevicePadFeature>;\n}\n\nexport enum InputDevicePadFeature {\n    BUTTON = 0,\n    RING = 1,\n    STRIP = 2,\n}\n\nexport namespace InputDevicePadSource {\n    export const $gtype: GObject.GType<InputDevicePadSource>;\n}\n\nexport enum InputDevicePadSource {\n    UNKNOWN = 0,\n    FINGER = 1,\n}\n\nexport namespace InputDeviceToolType {\n    export const $gtype: GObject.GType<InputDeviceToolType>;\n}\n\nexport enum InputDeviceToolType {\n    NONE = 0,\n    PEN = 1,\n    ERASER = 2,\n    BRUSH = 3,\n    PENCIL = 4,\n    AIRBRUSH = 5,\n    MOUSE = 6,\n    LENS = 7,\n}\n\nexport namespace InputDeviceType {\n    export const $gtype: GObject.GType<InputDeviceType>;\n}\n\nexport enum InputDeviceType {\n    POINTER_DEVICE = 0,\n    KEYBOARD_DEVICE = 1,\n    EXTENSION_DEVICE = 2,\n    JOYSTICK_DEVICE = 3,\n    TABLET_DEVICE = 4,\n    TOUCHPAD_DEVICE = 5,\n    TOUCHSCREEN_DEVICE = 6,\n    PEN_DEVICE = 7,\n    ERASER_DEVICE = 8,\n    CURSOR_DEVICE = 9,\n    PAD_DEVICE = 10,\n    N_DEVICE_TYPES = 11,\n}\n\nexport namespace InputMode {\n    export const $gtype: GObject.GType<InputMode>;\n}\n\nexport enum InputMode {\n    LOGICAL = 0,\n    PHYSICAL = 1,\n    FLOATING = 2,\n}\n\nexport namespace InputPanelState {\n    export const $gtype: GObject.GType<InputPanelState>;\n}\n\nexport enum InputPanelState {\n    OFF = 0,\n    ON = 1,\n    TOGGLE = 2,\n}\n\nexport namespace Interpolation {\n    export const $gtype: GObject.GType<Interpolation>;\n}\n\nexport enum Interpolation {\n    LINEAR = 0,\n    CUBIC = 1,\n}\n\nexport namespace KeyState {\n    export const $gtype: GObject.GType<KeyState>;\n}\n\nexport enum KeyState {\n    RELEASED = 0,\n    PRESSED = 1,\n}\n\nexport namespace LongPressState {\n    export const $gtype: GObject.GType<LongPressState>;\n}\n\nexport enum LongPressState {\n    QUERY = 0,\n    ACTIVATE = 1,\n    CANCEL = 2,\n}\n\nexport namespace Orientation {\n    export const $gtype: GObject.GType<Orientation>;\n}\n\nexport enum Orientation {\n    HORIZONTAL = 0,\n    VERTICAL = 1,\n}\n\nexport namespace PanAxis {\n    export const $gtype: GObject.GType<PanAxis>;\n}\n\nexport enum PanAxis {\n    AXIS_NONE = 0,\n    X_AXIS = 1,\n    Y_AXIS = 2,\n    AXIS_AUTO = 3,\n}\n\nexport namespace PathNodeType {\n    export const $gtype: GObject.GType<PathNodeType>;\n}\n\nexport enum PathNodeType {\n    MOVE_TO = 0,\n    LINE_TO = 1,\n    CURVE_TO = 2,\n    CLOSE = 3,\n    REL_MOVE_TO = 32,\n    REL_LINE_TO = 33,\n    REL_CURVE_TO = 34,\n}\n\nexport namespace PickMode {\n    export const $gtype: GObject.GType<PickMode>;\n}\n\nexport enum PickMode {\n    NONE = 0,\n    REACTIVE = 1,\n    ALL = 2,\n}\n\nexport namespace PointerA11yDwellClickType {\n    export const $gtype: GObject.GType<PointerA11yDwellClickType>;\n}\n\nexport enum PointerA11yDwellClickType {\n    NONE = 0,\n    PRIMARY = 1,\n    SECONDARY = 2,\n    MIDDLE = 3,\n    DOUBLE = 4,\n    DRAG = 5,\n}\n\nexport namespace PointerA11yDwellDirection {\n    export const $gtype: GObject.GType<PointerA11yDwellDirection>;\n}\n\nexport enum PointerA11yDwellDirection {\n    NONE = 0,\n    LEFT = 1,\n    RIGHT = 2,\n    UP = 3,\n    DOWN = 4,\n}\n\nexport namespace PointerA11yDwellMode {\n    export const $gtype: GObject.GType<PointerA11yDwellMode>;\n}\n\nexport enum PointerA11yDwellMode {\n    WINDOW = 0,\n    GESTURE = 1,\n}\n\nexport namespace PointerA11yTimeoutType {\n    export const $gtype: GObject.GType<PointerA11yTimeoutType>;\n}\n\nexport enum PointerA11yTimeoutType {\n    SECONDARY_CLICK = 0,\n    DWELL = 1,\n    GESTURE = 2,\n}\n\nexport namespace PreeditResetMode {\n    export const $gtype: GObject.GType<PreeditResetMode>;\n}\n\nexport enum PreeditResetMode {\n    CLEAR = 0,\n    COMMIT = 1,\n}\n\nexport namespace RequestMode {\n    export const $gtype: GObject.GType<RequestMode>;\n}\n\nexport enum RequestMode {\n    HEIGHT_FOR_WIDTH = 0,\n    WIDTH_FOR_HEIGHT = 1,\n    CONTENT_SIZE = 2,\n}\n\nexport namespace RotateAxis {\n    export const $gtype: GObject.GType<RotateAxis>;\n}\n\nexport enum RotateAxis {\n    X_AXIS = 0,\n    Y_AXIS = 1,\n    Z_AXIS = 2,\n}\n\nexport namespace RotateDirection {\n    export const $gtype: GObject.GType<RotateDirection>;\n}\n\nexport enum RotateDirection {\n    CW = 0,\n    CCW = 1,\n}\n\nexport namespace ScalingFilter {\n    export const $gtype: GObject.GType<ScalingFilter>;\n}\n\nexport enum ScalingFilter {\n    LINEAR = 0,\n    NEAREST = 1,\n    TRILINEAR = 2,\n}\n\nexport class ScriptError extends GLib.Error {\n    static $gtype: GObject.GType<ScriptError>;\n\n    constructor(options: { message: string; code: number });\n    constructor(copy: ScriptError);\n\n    // Fields\n    static TYPE_FUNCTION: number;\n    static PROPERTY: number;\n    static VALUE: number;\n\n    // Members\n    static quark(): GLib.Quark;\n}\n\nexport namespace ScrollDirection {\n    export const $gtype: GObject.GType<ScrollDirection>;\n}\n\nexport enum ScrollDirection {\n    UP = 0,\n    DOWN = 1,\n    LEFT = 2,\n    RIGHT = 3,\n    SMOOTH = 4,\n}\n\nexport namespace ScrollSource {\n    export const $gtype: GObject.GType<ScrollSource>;\n}\n\nexport enum ScrollSource {\n    UNKNOWN = 0,\n    WHEEL = 1,\n    FINGER = 2,\n    CONTINUOUS = 3,\n}\n\nexport namespace ShaderType {\n    export const $gtype: GObject.GType<ShaderType>;\n}\n\nexport enum ShaderType {\n    VERTEX_SHADER = 0,\n    FRAGMENT_SHADER = 1,\n}\n\nexport namespace SnapEdge {\n    export const $gtype: GObject.GType<SnapEdge>;\n}\n\nexport enum SnapEdge {\n    TOP = 0,\n    RIGHT = 1,\n    BOTTOM = 2,\n    LEFT = 3,\n}\n\nexport namespace StaticColor {\n    export const $gtype: GObject.GType<StaticColor>;\n}\n\nexport enum StaticColor {\n    WHITE = 0,\n    BLACK = 1,\n    RED = 2,\n    DARK_RED = 3,\n    GREEN = 4,\n    DARK_GREEN = 5,\n    BLUE = 6,\n    DARK_BLUE = 7,\n    CYAN = 8,\n    DARK_CYAN = 9,\n    MAGENTA = 10,\n    DARK_MAGENTA = 11,\n    YELLOW = 12,\n    DARK_YELLOW = 13,\n    GRAY = 14,\n    DARK_GRAY = 15,\n    LIGHT_GRAY = 16,\n    BUTTER = 17,\n    BUTTER_LIGHT = 18,\n    BUTTER_DARK = 19,\n    ORANGE = 20,\n    ORANGE_LIGHT = 21,\n    ORANGE_DARK = 22,\n    CHOCOLATE = 23,\n    CHOCOLATE_LIGHT = 24,\n    CHOCOLATE_DARK = 25,\n    CHAMELEON = 26,\n    CHAMELEON_LIGHT = 27,\n    CHAMELEON_DARK = 28,\n    SKY_BLUE = 29,\n    SKY_BLUE_LIGHT = 30,\n    SKY_BLUE_DARK = 31,\n    PLUM = 32,\n    PLUM_LIGHT = 33,\n    PLUM_DARK = 34,\n    SCARLET_RED = 35,\n    SCARLET_RED_LIGHT = 36,\n    SCARLET_RED_DARK = 37,\n    ALUMINIUM_1 = 38,\n    ALUMINIUM_2 = 39,\n    ALUMINIUM_3 = 40,\n    ALUMINIUM_4 = 41,\n    ALUMINIUM_5 = 42,\n    ALUMINIUM_6 = 43,\n    TRANSPARENT = 44,\n}\n\nexport namespace StepMode {\n    export const $gtype: GObject.GType<StepMode>;\n}\n\nexport enum StepMode {\n    START = 0,\n    END = 1,\n}\n\nexport namespace TextDirection {\n    export const $gtype: GObject.GType<TextDirection>;\n}\n\nexport enum TextDirection {\n    DEFAULT = 0,\n    LTR = 1,\n    RTL = 2,\n}\n\nexport namespace TextureQuality {\n    export const $gtype: GObject.GType<TextureQuality>;\n}\n\nexport enum TextureQuality {\n    LOW = 0,\n    MEDIUM = 1,\n    HIGH = 2,\n}\n\nexport namespace TimelineDirection {\n    export const $gtype: GObject.GType<TimelineDirection>;\n}\n\nexport enum TimelineDirection {\n    FORWARD = 0,\n    BACKWARD = 1,\n}\n\nexport namespace TouchpadGesturePhase {\n    export const $gtype: GObject.GType<TouchpadGesturePhase>;\n}\n\nexport enum TouchpadGesturePhase {\n    BEGIN = 0,\n    UPDATE = 1,\n    END = 2,\n    CANCEL = 3,\n}\n\nexport namespace UnitType {\n    export const $gtype: GObject.GType<UnitType>;\n}\n\nexport enum UnitType {\n    PIXEL = 0,\n    EM = 1,\n    MM = 2,\n    POINT = 3,\n    CM = 4,\n}\n\nexport namespace ActorFlags {\n    export const $gtype: GObject.GType<ActorFlags>;\n}\n\nexport enum ActorFlags {\n    MAPPED = 2,\n    REALIZED = 4,\n    REACTIVE = 8,\n    VISIBLE = 16,\n    NO_LAYOUT = 32,\n}\n\nexport namespace ContentRepeat {\n    export const $gtype: GObject.GType<ContentRepeat>;\n}\n\nexport enum ContentRepeat {\n    NONE = 0,\n    X_AXIS = 1,\n    Y_AXIS = 2,\n    BOTH = 3,\n}\n\nexport namespace DebugFlag {\n    export const $gtype: GObject.GType<DebugFlag>;\n}\n\nexport enum DebugFlag {\n    MISC = 1,\n    ACTOR = 2,\n    TEXTURE = 4,\n    EVENT = 8,\n    PAINT = 16,\n    PANGO = 32,\n    BACKEND = 64,\n    SCHEDULER = 128,\n    SCRIPT = 256,\n    SHADER = 512,\n    MULTISTAGE = 1024,\n    ANIMATION = 2048,\n    LAYOUT = 4096,\n    PICK = 8192,\n    EVENTLOOP = 16384,\n    CLIPPING = 32768,\n    OOB_TRANSFORMS = 65536,\n    FRAME_TIMINGS = 131072,\n    DETAILED_TRACE = 262144,\n    GRABS = 524288,\n    FRAME_CLOCK = 1048576,\n}\n\nexport namespace DrawDebugFlag {\n    export const $gtype: GObject.GType<DrawDebugFlag>;\n}\n\nexport enum DrawDebugFlag {\n    DISABLE_SWAP_EVENTS = 1,\n    DISABLE_CLIPPED_REDRAWS = 2,\n    REDRAWS = 4,\n    PAINT_VOLUMES = 8,\n    DISABLE_CULLING = 16,\n    DISABLE_OFFSCREEN_REDIRECT = 32,\n    CONTINUOUS_REDRAW = 64,\n    PAINT_DEFORM_TILES = 128,\n    PAINT_DAMAGE_REGION = 256,\n    DISABLE_DYNAMIC_MAX_RENDER_TIME = 512,\n    PAINT_MAX_RENDER_TIME = 1024,\n}\n\nexport namespace EffectPaintFlags {\n    export const $gtype: GObject.GType<EffectPaintFlags>;\n}\n\nexport enum EffectPaintFlags {\n    ACTOR_DIRTY = 1,\n    BYPASS_EFFECT = 2,\n}\n\nexport namespace EventFlags {\n    export const $gtype: GObject.GType<EventFlags>;\n}\n\nexport enum EventFlags {\n    NONE = 0,\n    FLAG_SYNTHETIC = 1,\n    FLAG_INPUT_METHOD = 2,\n    FLAG_REPEATED = 4,\n    FLAG_RELATIVE_MOTION = 8,\n    FLAG_GRAB_NOTIFY = 16,\n}\n\nexport namespace FrameInfoFlag {\n    export const $gtype: GObject.GType<FrameInfoFlag>;\n}\n\nexport enum FrameInfoFlag {\n    NONE = 0,\n    HW_CLOCK = 1,\n    ZERO_COPY = 2,\n    VSYNC = 4,\n}\n\nexport namespace GrabState {\n    export const $gtype: GObject.GType<GrabState>;\n}\n\nexport enum GrabState {\n    NONE = 0,\n    POINTER = 1,\n    KEYBOARD = 2,\n    ALL = 3,\n}\n\nexport namespace InputAxisFlags {\n    export const $gtype: GObject.GType<InputAxisFlags>;\n}\n\nexport enum InputAxisFlags {\n    NONE = 0,\n    X = 2,\n    Y = 4,\n    PRESSURE = 8,\n    XTILT = 16,\n    YTILT = 32,\n    WHEEL = 64,\n    DISTANCE = 128,\n    ROTATION = 256,\n    SLIDER = 512,\n}\n\nexport namespace InputCapabilities {\n    export const $gtype: GObject.GType<InputCapabilities>;\n}\n\nexport enum InputCapabilities {\n    NONE = 0,\n    POINTER = 1,\n    KEYBOARD = 2,\n    TOUCHPAD = 4,\n    TOUCH = 8,\n    TABLET_TOOL = 16,\n    TABLET_PAD = 32,\n    TRACKBALL = 64,\n    TRACKPOINT = 128,\n}\n\nexport namespace InputContentHintFlags {\n    export const $gtype: GObject.GType<InputContentHintFlags>;\n}\n\nexport enum InputContentHintFlags {\n    COMPLETION = 1,\n    SPELLCHECK = 2,\n    AUTO_CAPITALIZATION = 4,\n    LOWERCASE = 8,\n    UPPERCASE = 16,\n    TITLECASE = 32,\n    HIDDEN_TEXT = 64,\n    SENSITIVE_DATA = 128,\n    LATIN = 256,\n    MULTILINE = 512,\n}\n\nexport namespace ModifierType {\n    export const $gtype: GObject.GType<ModifierType>;\n}\n\nexport enum ModifierType {\n    SHIFT_MASK = 1,\n    LOCK_MASK = 2,\n    CONTROL_MASK = 4,\n    MOD1_MASK = 8,\n    MOD2_MASK = 16,\n    MOD3_MASK = 32,\n    MOD4_MASK = 64,\n    MOD5_MASK = 128,\n    BUTTON1_MASK = 256,\n    BUTTON2_MASK = 512,\n    BUTTON3_MASK = 1024,\n    BUTTON4_MASK = 2048,\n    BUTTON5_MASK = 4096,\n    MODIFIER_RESERVED_13_MASK = 8192,\n    MODIFIER_RESERVED_14_MASK = 16384,\n    MODIFIER_RESERVED_15_MASK = 32768,\n    MODIFIER_RESERVED_16_MASK = 65536,\n    MODIFIER_RESERVED_17_MASK = 131072,\n    MODIFIER_RESERVED_18_MASK = 262144,\n    MODIFIER_RESERVED_19_MASK = 524288,\n    MODIFIER_RESERVED_20_MASK = 1048576,\n    MODIFIER_RESERVED_21_MASK = 2097152,\n    MODIFIER_RESERVED_22_MASK = 4194304,\n    MODIFIER_RESERVED_23_MASK = 8388608,\n    MODIFIER_RESERVED_24_MASK = 16777216,\n    MODIFIER_RESERVED_25_MASK = 33554432,\n    SUPER_MASK = 67108864,\n    HYPER_MASK = 134217728,\n    META_MASK = 268435456,\n    MODIFIER_RESERVED_29_MASK = 536870912,\n    RELEASE_MASK = 1073741824,\n    MODIFIER_MASK = 1543512063,\n}\n\nexport namespace OffscreenRedirect {\n    export const $gtype: GObject.GType<OffscreenRedirect>;\n}\n\nexport enum OffscreenRedirect {\n    AUTOMATIC_FOR_OPACITY = 1,\n    ALWAYS = 2,\n    ON_IDLE = 4,\n}\n\nexport namespace PaintFlag {\n    export const $gtype: GObject.GType<PaintFlag>;\n}\n\nexport enum PaintFlag {\n    NONE = 0,\n    NO_CURSORS = 1,\n    FORCE_CURSORS = 2,\n    CLEAR = 4,\n}\n\nexport namespace PickDebugFlag {\n    export const $gtype: GObject.GType<PickDebugFlag>;\n}\n\nexport enum PickDebugFlag {\n    PICKING = 1,\n}\n\nexport namespace PointerA11yFlags {\n    export const $gtype: GObject.GType<PointerA11yFlags>;\n}\n\nexport enum PointerA11yFlags {\n    SECONDARY_CLICK_ENABLED = 1,\n    DWELL_ENABLED = 2,\n}\n\nexport namespace RepaintFlags {\n    export const $gtype: GObject.GType<RepaintFlags>;\n}\n\nexport enum RepaintFlags {\n    PRE_PAINT = 1,\n    POST_PAINT = 2,\n}\n\nexport namespace ScrollFinishFlags {\n    export const $gtype: GObject.GType<ScrollFinishFlags>;\n}\n\nexport enum ScrollFinishFlags {\n    NONE = 0,\n    HORIZONTAL = 1,\n    VERTICAL = 2,\n}\n\nexport namespace ScrollMode {\n    export const $gtype: GObject.GType<ScrollMode>;\n}\n\nexport enum ScrollMode {\n    NONE = 0,\n    HORIZONTALLY = 1,\n    VERTICALLY = 2,\n    BOTH = 3,\n}\n\nexport namespace SwipeDirection {\n    export const $gtype: GObject.GType<SwipeDirection>;\n}\n\nexport enum SwipeDirection {\n    UP = 1,\n    DOWN = 2,\n    LEFT = 4,\n    RIGHT = 8,\n}\n\nexport namespace TextureFlags {\n    export const $gtype: GObject.GType<TextureFlags>;\n}\n\nexport enum TextureFlags {\n    NONE = 0,\n    RGB_FLAG_BGR = 2,\n    RGB_FLAG_PREMULT = 4,\n    YUV_FLAG_YUV2 = 8,\n}\n\nexport namespace VirtualDeviceType {\n    export const $gtype: GObject.GType<VirtualDeviceType>;\n}\n\nexport enum VirtualDeviceType {\n    NONE = 0,\n    KEYBOARD = 1,\n    POINTER = 2,\n    TOUCHSCREEN = 4,\n}\nexport module Action {\n    export interface ConstructorProperties extends ActorMeta.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport abstract class Action extends ActorMeta {\n    static $gtype: GObject.GType<Action>;\n\n    constructor(properties?: Partial<Action.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Action.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    get_phase(): EventPhase;\n    vfunc_handle_event(event: Event): boolean;\n    vfunc_sequence_cancelled(device: InputDevice, sequence: EventSequence): void;\n}\nexport module Actor {\n    export interface ConstructorProperties extends GObject.InitiallyUnowned.ConstructorProperties {\n        [key: string]: any;\n        actions: Action;\n        allocation: ActorBox;\n        background_color: Color;\n        backgroundColor: Color;\n        background_color_set: boolean;\n        backgroundColorSet: boolean;\n        child_transform: Graphene.Matrix;\n        childTransform: Graphene.Matrix;\n        child_transform_set: boolean;\n        childTransformSet: boolean;\n        clip_rect: Graphene.Rect;\n        clipRect: Graphene.Rect;\n        clip_to_allocation: boolean;\n        clipToAllocation: boolean;\n        color_state: ColorState;\n        colorState: ColorState;\n        constraints: Constraint;\n        content: Content;\n        content_box: ActorBox;\n        contentBox: ActorBox;\n        content_gravity: ContentGravity;\n        contentGravity: ContentGravity;\n        content_repeat: ContentRepeat;\n        contentRepeat: ContentRepeat;\n        effect: Effect;\n        first_child: Actor;\n        firstChild: Actor;\n        fixed_position_set: boolean;\n        fixedPositionSet: boolean;\n        fixed_x: number;\n        fixedX: number;\n        fixed_y: number;\n        fixedY: number;\n        has_clip: boolean;\n        hasClip: boolean;\n        has_pointer: boolean;\n        hasPointer: boolean;\n        height: number;\n        last_child: Actor;\n        lastChild: Actor;\n        layout_manager: LayoutManager;\n        layoutManager: LayoutManager;\n        magnification_filter: ScalingFilter;\n        magnificationFilter: ScalingFilter;\n        mapped: boolean;\n        margin_bottom: number;\n        marginBottom: number;\n        margin_left: number;\n        marginLeft: number;\n        margin_right: number;\n        marginRight: number;\n        margin_top: number;\n        marginTop: number;\n        min_height: number;\n        minHeight: number;\n        min_height_set: boolean;\n        minHeightSet: boolean;\n        min_width: number;\n        minWidth: number;\n        min_width_set: boolean;\n        minWidthSet: boolean;\n        minification_filter: ScalingFilter;\n        minificationFilter: ScalingFilter;\n        name: string;\n        natural_height: number;\n        naturalHeight: number;\n        natural_height_set: boolean;\n        naturalHeightSet: boolean;\n        natural_width: number;\n        naturalWidth: number;\n        natural_width_set: boolean;\n        naturalWidthSet: boolean;\n        offscreen_redirect: OffscreenRedirect;\n        offscreenRedirect: OffscreenRedirect;\n        opacity: number;\n        pivot_point: Graphene.Point;\n        pivotPoint: Graphene.Point;\n        pivot_point_z: number;\n        pivotPointZ: number;\n        position: Graphene.Point;\n        reactive: boolean;\n        realized: boolean;\n        request_mode: RequestMode;\n        requestMode: RequestMode;\n        rotation_angle_x: number;\n        rotationAngleX: number;\n        rotation_angle_y: number;\n        rotationAngleY: number;\n        rotation_angle_z: number;\n        rotationAngleZ: number;\n        scale_x: number;\n        scaleX: number;\n        scale_y: number;\n        scaleY: number;\n        scale_z: number;\n        scaleZ: number;\n        show_on_set_parent: boolean;\n        showOnSetParent: boolean;\n        size: Graphene.Size;\n        text_direction: TextDirection;\n        textDirection: TextDirection;\n        transform: Graphene.Matrix;\n        transform_set: boolean;\n        transformSet: boolean;\n        translation_x: number;\n        translationX: number;\n        translation_y: number;\n        translationY: number;\n        translation_z: number;\n        translationZ: number;\n        visible: boolean;\n        width: number;\n        x: number;\n        x_align: ActorAlign;\n        xAlign: ActorAlign;\n        x_expand: boolean;\n        xExpand: boolean;\n        y: number;\n        y_align: ActorAlign;\n        yAlign: ActorAlign;\n        y_expand: boolean;\n        yExpand: boolean;\n        z_position: number;\n        zPosition: number;\n    }\n}\nexport class Actor extends GObject.InitiallyUnowned implements Atk.ImplementorIface, Animatable, Container, Scriptable {\n    static $gtype: GObject.GType<Actor>;\n\n    constructor(properties?: Partial<Actor.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Actor.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    set actions(val: Action);\n    get allocation(): ActorBox;\n    get background_color(): Color;\n    set background_color(val: Color);\n    get backgroundColor(): Color;\n    set backgroundColor(val: Color);\n    get background_color_set(): boolean;\n    get backgroundColorSet(): boolean;\n    get child_transform(): Graphene.Matrix;\n    set child_transform(val: Graphene.Matrix);\n    get childTransform(): Graphene.Matrix;\n    set childTransform(val: Graphene.Matrix);\n    get child_transform_set(): boolean;\n    get childTransformSet(): boolean;\n    get clip_rect(): Graphene.Rect;\n    set clip_rect(val: Graphene.Rect);\n    get clipRect(): Graphene.Rect;\n    set clipRect(val: Graphene.Rect);\n    get clip_to_allocation(): boolean;\n    set clip_to_allocation(val: boolean);\n    get clipToAllocation(): boolean;\n    set clipToAllocation(val: boolean);\n    get color_state(): ColorState;\n    set color_state(val: ColorState);\n    get colorState(): ColorState;\n    set colorState(val: ColorState);\n    set constraints(val: Constraint);\n    get content(): Content;\n    set content(val: Content);\n    get content_box(): ActorBox;\n    get contentBox(): ActorBox;\n    get content_gravity(): ContentGravity;\n    set content_gravity(val: ContentGravity);\n    get contentGravity(): ContentGravity;\n    set contentGravity(val: ContentGravity);\n    get content_repeat(): ContentRepeat;\n    set content_repeat(val: ContentRepeat);\n    get contentRepeat(): ContentRepeat;\n    set contentRepeat(val: ContentRepeat);\n    set effect(val: Effect);\n    get first_child(): Actor;\n    get firstChild(): Actor;\n    get fixed_position_set(): boolean;\n    set fixed_position_set(val: boolean);\n    get fixedPositionSet(): boolean;\n    set fixedPositionSet(val: boolean);\n    get fixed_x(): number;\n    set fixed_x(val: number);\n    get fixedX(): number;\n    set fixedX(val: number);\n    get fixed_y(): number;\n    set fixed_y(val: number);\n    get fixedY(): number;\n    set fixedY(val: number);\n    get has_clip(): boolean;\n    get hasClip(): boolean;\n    get has_pointer(): boolean;\n    get hasPointer(): boolean;\n    get height(): number;\n    set height(val: number);\n    get last_child(): Actor;\n    get lastChild(): Actor;\n    get layout_manager(): LayoutManager;\n    set layout_manager(val: LayoutManager);\n    get layoutManager(): LayoutManager;\n    set layoutManager(val: LayoutManager);\n    get magnification_filter(): ScalingFilter;\n    set magnification_filter(val: ScalingFilter);\n    get magnificationFilter(): ScalingFilter;\n    set magnificationFilter(val: ScalingFilter);\n    get mapped(): boolean;\n    get margin_bottom(): number;\n    set margin_bottom(val: number);\n    get marginBottom(): number;\n    set marginBottom(val: number);\n    get margin_left(): number;\n    set margin_left(val: number);\n    get marginLeft(): number;\n    set marginLeft(val: number);\n    get margin_right(): number;\n    set margin_right(val: number);\n    get marginRight(): number;\n    set marginRight(val: number);\n    get margin_top(): number;\n    set margin_top(val: number);\n    get marginTop(): number;\n    set marginTop(val: number);\n    get min_height(): number;\n    set min_height(val: number);\n    get minHeight(): number;\n    set minHeight(val: number);\n    get min_height_set(): boolean;\n    set min_height_set(val: boolean);\n    get minHeightSet(): boolean;\n    set minHeightSet(val: boolean);\n    get min_width(): number;\n    set min_width(val: number);\n    get minWidth(): number;\n    set minWidth(val: number);\n    get min_width_set(): boolean;\n    set min_width_set(val: boolean);\n    get minWidthSet(): boolean;\n    set minWidthSet(val: boolean);\n    get minification_filter(): ScalingFilter;\n    set minification_filter(val: ScalingFilter);\n    get minificationFilter(): ScalingFilter;\n    set minificationFilter(val: ScalingFilter);\n    get name(): string;\n    set name(val: string);\n    get natural_height(): number;\n    set natural_height(val: number);\n    get naturalHeight(): number;\n    set naturalHeight(val: number);\n    get natural_height_set(): boolean;\n    set natural_height_set(val: boolean);\n    get naturalHeightSet(): boolean;\n    set naturalHeightSet(val: boolean);\n    get natural_width(): number;\n    set natural_width(val: number);\n    get naturalWidth(): number;\n    set naturalWidth(val: number);\n    get natural_width_set(): boolean;\n    set natural_width_set(val: boolean);\n    get naturalWidthSet(): boolean;\n    set naturalWidthSet(val: boolean);\n    get offscreen_redirect(): OffscreenRedirect;\n    set offscreen_redirect(val: OffscreenRedirect);\n    get offscreenRedirect(): OffscreenRedirect;\n    set offscreenRedirect(val: OffscreenRedirect);\n    get opacity(): number;\n    set opacity(val: number);\n    get pivot_point(): Graphene.Point;\n    set pivot_point(val: Graphene.Point);\n    get pivotPoint(): Graphene.Point;\n    set pivotPoint(val: Graphene.Point);\n    get pivot_point_z(): number;\n    set pivot_point_z(val: number);\n    get pivotPointZ(): number;\n    set pivotPointZ(val: number);\n    get position(): Graphene.Point;\n    set position(val: Graphene.Point);\n    get reactive(): boolean;\n    set reactive(val: boolean);\n    get realized(): boolean;\n    get request_mode(): RequestMode;\n    set request_mode(val: RequestMode);\n    get requestMode(): RequestMode;\n    set requestMode(val: RequestMode);\n    get rotation_angle_x(): number;\n    set rotation_angle_x(val: number);\n    get rotationAngleX(): number;\n    set rotationAngleX(val: number);\n    get rotation_angle_y(): number;\n    set rotation_angle_y(val: number);\n    get rotationAngleY(): number;\n    set rotationAngleY(val: number);\n    get rotation_angle_z(): number;\n    set rotation_angle_z(val: number);\n    get rotationAngleZ(): number;\n    set rotationAngleZ(val: number);\n    get scale_x(): number;\n    set scale_x(val: number);\n    get scaleX(): number;\n    set scaleX(val: number);\n    get scale_y(): number;\n    set scale_y(val: number);\n    get scaleY(): number;\n    set scaleY(val: number);\n    get scale_z(): number;\n    set scale_z(val: number);\n    get scaleZ(): number;\n    set scaleZ(val: number);\n    get show_on_set_parent(): boolean;\n    set show_on_set_parent(val: boolean);\n    get showOnSetParent(): boolean;\n    set showOnSetParent(val: boolean);\n    get size(): Graphene.Size;\n    set size(val: Graphene.Size);\n    get text_direction(): TextDirection;\n    set text_direction(val: TextDirection);\n    get textDirection(): TextDirection;\n    set textDirection(val: TextDirection);\n    get transform(): Graphene.Matrix;\n    set transform(val: Graphene.Matrix);\n    get transform_set(): boolean;\n    get transformSet(): boolean;\n    get translation_x(): number;\n    set translation_x(val: number);\n    get translationX(): number;\n    set translationX(val: number);\n    get translation_y(): number;\n    set translation_y(val: number);\n    get translationY(): number;\n    set translationY(val: number);\n    get translation_z(): number;\n    set translation_z(val: number);\n    get translationZ(): number;\n    set translationZ(val: number);\n    get visible(): boolean;\n    set visible(val: boolean);\n    get width(): number;\n    set width(val: number);\n    get x(): number;\n    set x(val: number);\n    get x_align(): ActorAlign;\n    set x_align(val: ActorAlign);\n    get xAlign(): ActorAlign;\n    set xAlign(val: ActorAlign);\n    get x_expand(): boolean;\n    set x_expand(val: boolean);\n    get xExpand(): boolean;\n    set xExpand(val: boolean);\n    get y(): number;\n    set y(val: number);\n    get y_align(): ActorAlign;\n    set y_align(val: ActorAlign);\n    get yAlign(): ActorAlign;\n    set yAlign(val: ActorAlign);\n    get y_expand(): boolean;\n    set y_expand(val: boolean);\n    get yExpand(): boolean;\n    set yExpand(val: boolean);\n    get z_position(): number;\n    set z_position(val: number);\n    get zPosition(): number;\n    set zPosition(val: number);\n\n    // Fields\n    flags: number;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"button-press-event\", callback: (_source: this, event: ButtonEvent) => boolean): number;\n    connect_after(signal: \"button-press-event\", callback: (_source: this, event: ButtonEvent) => boolean): number;\n    emit(signal: \"button-press-event\", event: ButtonEvent): void;\n    connect(signal: \"button-release-event\", callback: (_source: this, event: ButtonEvent) => boolean): number;\n    connect_after(signal: \"button-release-event\", callback: (_source: this, event: ButtonEvent) => boolean): number;\n    emit(signal: \"button-release-event\", event: ButtonEvent): void;\n    connect(signal: \"captured-event\", callback: (_source: this, event: Event) => boolean): number;\n    connect_after(signal: \"captured-event\", callback: (_source: this, event: Event) => boolean): number;\n    emit(signal: \"captured-event\", event: Event): void;\n    connect(signal: \"destroy\", callback: (_source: this) => void): number;\n    connect_after(signal: \"destroy\", callback: (_source: this) => void): number;\n    emit(signal: \"destroy\"): void;\n    connect(signal: \"enter-event\", callback: (_source: this, event: CrossingEvent) => boolean): number;\n    connect_after(signal: \"enter-event\", callback: (_source: this, event: CrossingEvent) => boolean): number;\n    emit(signal: \"enter-event\", event: CrossingEvent): void;\n    connect(signal: \"event\", callback: (_source: this, event: Event) => boolean): number;\n    connect_after(signal: \"event\", callback: (_source: this, event: Event) => boolean): number;\n    emit(signal: \"event\", event: Event): void;\n    connect(signal: \"hide\", callback: (_source: this) => void): number;\n    connect_after(signal: \"hide\", callback: (_source: this) => void): number;\n    emit(signal: \"hide\"): void;\n    connect(signal: \"key-focus-in\", callback: (_source: this) => void): number;\n    connect_after(signal: \"key-focus-in\", callback: (_source: this) => void): number;\n    emit(signal: \"key-focus-in\"): void;\n    connect(signal: \"key-focus-out\", callback: (_source: this) => void): number;\n    connect_after(signal: \"key-focus-out\", callback: (_source: this) => void): number;\n    emit(signal: \"key-focus-out\"): void;\n    connect(signal: \"key-press-event\", callback: (_source: this, event: KeyEvent) => boolean): number;\n    connect_after(signal: \"key-press-event\", callback: (_source: this, event: KeyEvent) => boolean): number;\n    emit(signal: \"key-press-event\", event: KeyEvent): void;\n    connect(signal: \"key-release-event\", callback: (_source: this, event: KeyEvent) => boolean): number;\n    connect_after(signal: \"key-release-event\", callback: (_source: this, event: KeyEvent) => boolean): number;\n    emit(signal: \"key-release-event\", event: KeyEvent): void;\n    connect(signal: \"leave-event\", callback: (_source: this, event: CrossingEvent) => boolean): number;\n    connect_after(signal: \"leave-event\", callback: (_source: this, event: CrossingEvent) => boolean): number;\n    emit(signal: \"leave-event\", event: CrossingEvent): void;\n    connect(signal: \"motion-event\", callback: (_source: this, event: MotionEvent) => boolean): number;\n    connect_after(signal: \"motion-event\", callback: (_source: this, event: MotionEvent) => boolean): number;\n    emit(signal: \"motion-event\", event: MotionEvent): void;\n    connect(signal: \"parent-set\", callback: (_source: this, old_parent: Actor | null) => void): number;\n    connect_after(signal: \"parent-set\", callback: (_source: this, old_parent: Actor | null) => void): number;\n    emit(signal: \"parent-set\", old_parent: Actor | null): void;\n    connect(signal: \"pick\", callback: (_source: this, pick_context: PickContext) => void): number;\n    connect_after(signal: \"pick\", callback: (_source: this, pick_context: PickContext) => void): number;\n    emit(signal: \"pick\", pick_context: PickContext): void;\n    connect(signal: \"queue-relayout\", callback: (_source: this) => void): number;\n    connect_after(signal: \"queue-relayout\", callback: (_source: this) => void): number;\n    emit(signal: \"queue-relayout\"): void;\n    connect(signal: \"realize\", callback: (_source: this) => void): number;\n    connect_after(signal: \"realize\", callback: (_source: this) => void): number;\n    emit(signal: \"realize\"): void;\n    connect(signal: \"resource-scale-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"resource-scale-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"resource-scale-changed\"): void;\n    connect(signal: \"scroll-event\", callback: (_source: this, event: ScrollEvent) => boolean): number;\n    connect_after(signal: \"scroll-event\", callback: (_source: this, event: ScrollEvent) => boolean): number;\n    emit(signal: \"scroll-event\", event: ScrollEvent): void;\n    connect(signal: \"show\", callback: (_source: this) => void): number;\n    connect_after(signal: \"show\", callback: (_source: this) => void): number;\n    emit(signal: \"show\"): void;\n    connect(signal: \"stage-views-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"stage-views-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"stage-views-changed\"): void;\n    connect(signal: \"touch-event\", callback: (_source: this, event: Event) => boolean): number;\n    connect_after(signal: \"touch-event\", callback: (_source: this, event: Event) => boolean): number;\n    emit(signal: \"touch-event\", event: Event): void;\n    connect(\n        signal: \"transition-stopped\",\n        callback: (_source: this, name: string, is_finished: boolean) => void\n    ): number;\n    connect_after(\n        signal: \"transition-stopped\",\n        callback: (_source: this, name: string, is_finished: boolean) => void\n    ): number;\n    emit(signal: \"transition-stopped\", name: string, is_finished: boolean): void;\n    connect(signal: \"transitions-completed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"transitions-completed\", callback: (_source: this) => void): number;\n    emit(signal: \"transitions-completed\"): void;\n    connect(signal: \"unrealize\", callback: (_source: this) => void): number;\n    connect_after(signal: \"unrealize\", callback: (_source: this) => void): number;\n    emit(signal: \"unrealize\"): void;\n\n    // Constructors\n\n    static [\"new\"](): Actor;\n\n    // Members\n\n    add_action(action: Action): void;\n    add_action_full(name: string, phase: EventPhase, action: Action): void;\n    add_action_with_name(name: string, action: Action): void;\n    add_child(child: Actor): void;\n    add_constraint(constraint: Constraint): void;\n    add_constraint_with_name(name: string, constraint: Constraint): void;\n    add_effect(effect: Effect): void;\n    add_effect_with_name(name: string, effect: Effect): void;\n    add_transition(name: string, transition: Transition): void;\n    allocate(box: ActorBox): void;\n    allocate_align_fill(box: ActorBox, x_align: number, y_align: number, x_fill: boolean, y_fill: boolean): void;\n    allocate_available_size(x: number, y: number, available_width: number, available_height: number): void;\n    allocate_preferred_size(x: number, y: number): void;\n    apply_relative_transform_to_point(ancestor: Actor | null, point: Graphene.Point3D): Graphene.Point3D;\n    apply_transform_to_point(point: Graphene.Point3D): Graphene.Point3D;\n    bind_model(model: Gio.ListModel | null, create_child_func: ActorCreateChildFunc): void;\n    clear_actions(): void;\n    clear_constraints(): void;\n    clear_effects(): void;\n    contains(descendant: Actor): boolean;\n    continue_paint(paint_context: PaintContext): void;\n    continue_pick(pick_context: PickContext): void;\n    create_pango_context(): Pango.Context;\n    create_pango_layout(text?: string | null): Pango.Layout;\n    destroy(): void;\n    destroy_all_children(): void;\n    event(event: Event, capture: boolean): boolean;\n    get_abs_allocation_vertices(): Graphene.Point3D[];\n    get_accessible(): Atk.Object;\n    get_action(name: string): Action | null;\n    get_actions(): Action[];\n    get_allocation_box(): ActorBox;\n    get_background_color(): Color;\n    get_child_at_index(index_: number): Actor | null;\n    get_child_transform(): Graphene.Matrix;\n    get_children(): Actor[];\n    get_clip(): [number | null, number | null, number | null, number | null];\n    get_clip_to_allocation(): boolean;\n    get_color_state(): ColorState;\n    get_constraint(name: string): Constraint | null;\n    get_constraints(): Constraint[];\n    get_content(): Content | null;\n    get_content_box(): ActorBox;\n    get_content_gravity(): ContentGravity;\n    get_content_repeat(): ContentRepeat;\n    get_content_scaling_filters(): [ScalingFilter | null, ScalingFilter | null];\n    get_easing_delay(): number;\n    get_easing_duration(): number;\n    get_easing_mode(): AnimationMode;\n    get_effect(name: string): Effect | null;\n    get_effects(): Effect[];\n    get_first_child(): Actor | null;\n    get_fixed_position(): [boolean, number | null, number | null];\n    get_fixed_position_set(): boolean;\n    get_flags(): ActorFlags;\n    get_height(): number;\n    get_last_child(): Actor | null;\n    get_layout_manager(): LayoutManager | null;\n    get_margin(): Margin;\n    get_margin_bottom(): number;\n    get_margin_left(): number;\n    get_margin_right(): number;\n    get_margin_top(): number;\n    get_n_children(): number;\n    get_name(): string | null;\n    get_next_sibling(): Actor | null;\n    get_offscreen_redirect(): OffscreenRedirect;\n    get_opacity(): number;\n    get_opacity_override(): number;\n    get_paint_box(): [boolean, ActorBox];\n    get_paint_opacity(): number;\n    get_paint_visibility(): boolean;\n    get_paint_volume(): PaintVolume | null;\n    get_pango_context(): Pango.Context;\n    get_parent(): Actor | null;\n    get_pivot_point(): [number | null, number | null];\n    get_pivot_point_z(): number;\n    get_position(): [number | null, number | null];\n    get_preferred_height(for_width: number): [number | null, number | null];\n    get_preferred_size(): [number | null, number | null, number | null, number | null];\n    get_preferred_width(for_height: number): [number | null, number | null];\n    get_previous_sibling(): Actor | null;\n    get_reactive(): boolean;\n    get_request_mode(): RequestMode;\n    get_resource_scale(): number;\n    get_rotation_angle(axis: RotateAxis): number;\n    get_scale(): [number | null, number | null];\n    get_scale_z(): number;\n    get_size(): [number | null, number | null];\n    get_stage(): Stage;\n    get_text_direction(): TextDirection;\n    get_transform(): Graphene.Matrix;\n    get_transformed_extents(): Graphene.Rect;\n    get_transformed_paint_volume(relative_to_ancestor: Actor): PaintVolume | null;\n    get_transformed_position(): [number | null, number | null];\n    get_transformed_size(): [number | null, number | null];\n    get_transition(name: string): Transition | null;\n    get_translation(): [number | null, number | null, number | null];\n    get_width(): number;\n    get_x(): number;\n    get_x_align(): ActorAlign;\n    get_x_expand(): boolean;\n    get_y(): number;\n    get_y_align(): ActorAlign;\n    get_y_expand(): boolean;\n    get_z_position(): number;\n    grab_key_focus(): void;\n    has_accessible(): boolean;\n    has_actions(): boolean;\n    has_allocation(): boolean;\n    has_constraints(): boolean;\n    has_damage(): boolean;\n    has_effects(): boolean;\n    has_key_focus(): boolean;\n    has_mapped_clones(): boolean;\n    has_overlaps(): boolean;\n    hide(): void;\n    inhibit_culling(): void;\n    insert_child_above(child: Actor, sibling?: Actor | null): void;\n    insert_child_at_index(child: Actor, index_: number): void;\n    insert_child_below(child: Actor, sibling?: Actor | null): void;\n    invalidate_paint_volume(): void;\n    invalidate_transform(): void;\n    is_effectively_on_stage_view(view: StageView): boolean;\n    is_in_clone_paint(): boolean;\n    is_mapped(): boolean;\n    is_realized(): boolean;\n    is_rotated(): boolean;\n    is_scaled(): boolean;\n    is_visible(): boolean;\n    map(): void;\n    move_by(dx: number, dy: number): void;\n    needs_expand(orientation: Orientation): boolean;\n    paint(paint_context: PaintContext): void;\n    peek_stage_views(): StageView[];\n    pick(pick_context: PickContext): void;\n    pick_box(pick_context: PickContext, box: ActorBox): void;\n    queue_redraw(): void;\n    queue_redraw_with_clip(clip?: cairo.RectangleInt | null): void;\n    queue_relayout(): void;\n    realize(): void;\n    remove_action(action: Action): void;\n    remove_action_by_name(name: string): void;\n    remove_all_children(): void;\n    remove_all_transitions(): void;\n    remove_child(child: Actor): void;\n    remove_clip(): void;\n    remove_constraint(constraint: Constraint): void;\n    remove_constraint_by_name(name: string): void;\n    remove_effect(effect: Effect): void;\n    remove_effect_by_name(name: string): void;\n    remove_transition(name: string): void;\n    replace_child(old_child: Actor, new_child: Actor): void;\n    restore_easing_state(): void;\n    save_easing_state(): void;\n    set_allocation(box: ActorBox): void;\n    set_background_color(color?: Color | null): void;\n    set_child_above_sibling(child: Actor, sibling?: Actor | null): void;\n    set_child_at_index(child: Actor, index_: number): void;\n    set_child_below_sibling(child: Actor, sibling?: Actor | null): void;\n    set_child_transform(transform?: Graphene.Matrix | null): void;\n    set_clip(xoff: number, yoff: number, width: number, height: number): void;\n    set_clip_to_allocation(clip_set: boolean): void;\n    set_color_state(color_state: ColorState): void;\n    set_content(content?: Content | null): void;\n    set_content_gravity(gravity: ContentGravity): void;\n    set_content_repeat(repeat: ContentRepeat): void;\n    set_content_scaling_filters(min_filter: ScalingFilter, mag_filter: ScalingFilter): void;\n    set_easing_delay(msecs: number): void;\n    set_easing_duration(msecs: number): void;\n    set_easing_mode(mode: AnimationMode): void;\n    set_fixed_position_set(is_set: boolean): void;\n    set_flags(flags: ActorFlags): void;\n    set_height(height: number): void;\n    set_layout_manager(manager?: LayoutManager | null): void;\n    set_margin(margin: Margin): void;\n    set_margin_bottom(margin: number): void;\n    set_margin_left(margin: number): void;\n    set_margin_right(margin: number): void;\n    set_margin_top(margin: number): void;\n    set_name(name?: string | null): void;\n    set_offscreen_redirect(redirect: OffscreenRedirect): void;\n    set_opacity(opacity: number): void;\n    set_opacity_override(opacity: number): void;\n    set_pivot_point(pivot_x: number, pivot_y: number): void;\n    set_pivot_point_z(pivot_z: number): void;\n    set_position(x: number, y: number): void;\n    set_reactive(reactive: boolean): void;\n    set_request_mode(mode: RequestMode): void;\n    set_rotation_angle(axis: RotateAxis, angle: number): void;\n    set_scale(scale_x: number, scale_y: number): void;\n    set_scale_z(scale_z: number): void;\n    set_size(width: number, height: number): void;\n    set_text_direction(text_dir: TextDirection): void;\n    set_transform(transform?: Graphene.Matrix | null): void;\n    set_translation(translate_x: number, translate_y: number, translate_z: number): void;\n    set_width(width: number): void;\n    set_x(x: number): void;\n    set_x_align(x_align: ActorAlign): void;\n    set_x_expand(expand: boolean): void;\n    set_y(y: number): void;\n    set_y_align(y_align: ActorAlign): void;\n    set_y_expand(expand: boolean): void;\n    set_z_position(z_position: number): void;\n    should_pick(pick_context: PickContext): boolean;\n    show(): void;\n    transform_stage_point(x: number, y: number): [boolean, number | null, number | null];\n    uninhibit_culling(): void;\n    unmap(): void;\n    unrealize(): void;\n    unset_flags(flags: ActorFlags): void;\n    vfunc_allocate(box: ActorBox): void;\n    vfunc_apply_transform(matrix: Graphene.Matrix): void;\n    vfunc_button_press_event(event: ButtonEvent): boolean;\n    vfunc_button_release_event(event: ButtonEvent): boolean;\n    vfunc_calculate_resource_scale(phase: number): number;\n    vfunc_captured_event(event: Event): boolean;\n    vfunc_destroy(): void;\n    vfunc_enter_event(event: CrossingEvent): boolean;\n    vfunc_event(event: Event): boolean;\n    vfunc_get_accessible(): Atk.Object;\n    vfunc_get_paint_volume(volume: PaintVolume): boolean;\n    vfunc_get_preferred_height(for_width: number): [number | null, number | null];\n    vfunc_get_preferred_width(for_height: number): [number | null, number | null];\n    vfunc_has_accessible(): boolean;\n    vfunc_has_overlaps(): boolean;\n    vfunc_hide(): void;\n    vfunc_hide_all(): void;\n    vfunc_key_focus_in(): void;\n    vfunc_key_focus_out(): void;\n    vfunc_key_press_event(event: KeyEvent): boolean;\n    vfunc_key_release_event(event: KeyEvent): boolean;\n    vfunc_leave_event(event: CrossingEvent): boolean;\n    vfunc_map(): void;\n    vfunc_motion_event(event: MotionEvent): boolean;\n    vfunc_paint(paint_context: PaintContext): void;\n    vfunc_paint_node(root: PaintNode): void;\n    vfunc_parent_set(old_parent: Actor): void;\n    vfunc_pick(pick_context: PickContext): void;\n    vfunc_queue_relayout(): void;\n    vfunc_realize(): void;\n    vfunc_resource_scale_changed(): void;\n    vfunc_scroll_event(event: ScrollEvent): boolean;\n    vfunc_show(): void;\n    vfunc_touch_event(event: TouchEvent): boolean;\n    vfunc_unmap(): void;\n    vfunc_unrealize(): void;\n\n    // Implemented Members\n\n    find_property(property_name: string): GObject.ParamSpec;\n    get_actor(): Actor;\n    get_initial_state(property_name: string, value: GObject.Value | any): void;\n    interpolate_value(property_name: string, interval: Interval, progress: number): [boolean, unknown];\n    set_final_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_find_property(property_name: string): GObject.ParamSpec;\n    vfunc_get_actor(): Actor;\n    vfunc_get_initial_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_interpolate_value(property_name: string, interval: Interval, progress: number): [boolean, unknown];\n    vfunc_set_final_state(property_name: string, value: GObject.Value | any): void;\n    add_actor(actor: Actor): void;\n    child_get_property(child: Actor, property: string, value: GObject.Value | any): void;\n    child_notify(child: Actor, pspec: GObject.ParamSpec): void;\n    child_set_property(child: Actor, property: string, value: GObject.Value | any): void;\n    create_child_meta(actor: Actor): void;\n    destroy_child_meta(actor: Actor): void;\n    find_child_by_name(child_name: string): Actor;\n    get_child_meta(actor: Actor): ChildMeta;\n    remove_actor(actor: Actor): void;\n    vfunc_actor_added(actor: Actor): void;\n    vfunc_actor_removed(actor: Actor): void;\n    vfunc_add(actor: Actor): void;\n    vfunc_child_notify(child: Actor, pspec: GObject.ParamSpec): void;\n    vfunc_create_child_meta(actor: Actor): void;\n    vfunc_destroy_child_meta(actor: Actor): void;\n    vfunc_get_child_meta(actor: Actor): ChildMeta;\n    vfunc_remove(actor: Actor): void;\n    get_id(): string;\n    parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    set_id(id_: string): void;\n    vfunc_get_id(): string;\n    vfunc_parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    vfunc_set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id_: string): void;\n}\nexport module ActorMeta {\n    export interface ConstructorProperties extends GObject.InitiallyUnowned.ConstructorProperties {\n        [key: string]: any;\n        actor: Actor;\n        enabled: boolean;\n        name: string;\n    }\n}\nexport abstract class ActorMeta extends GObject.InitiallyUnowned {\n    static $gtype: GObject.GType<ActorMeta>;\n\n    constructor(properties?: Partial<ActorMeta.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ActorMeta.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get actor(): Actor;\n    get enabled(): boolean;\n    set enabled(val: boolean);\n    get name(): string;\n    set name(val: string);\n\n    // Members\n\n    get_actor(): Actor;\n    get_enabled(): boolean;\n    get_name(): string;\n    set_enabled(is_enabled: boolean): void;\n    set_name(name: string): void;\n    vfunc_set_actor(actor?: Actor | null): void;\n    vfunc_set_enabled(is_enabled: boolean): void;\n}\nexport module ActorNode {\n    export interface ConstructorProperties extends PaintNode.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class ActorNode extends PaintNode {\n    static $gtype: GObject.GType<ActorNode>;\n\n    constructor(properties?: Partial<ActorNode.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ActorNode.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](actor: Actor, opacity: number): ActorNode;\n}\nexport module AlignConstraint {\n    export interface ConstructorProperties extends Constraint.ConstructorProperties {\n        [key: string]: any;\n        align_axis: AlignAxis;\n        alignAxis: AlignAxis;\n        factor: number;\n        pivot_point: Graphene.Point;\n        pivotPoint: Graphene.Point;\n        source: Actor;\n    }\n}\nexport class AlignConstraint extends Constraint {\n    static $gtype: GObject.GType<AlignConstraint>;\n\n    constructor(properties?: Partial<AlignConstraint.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<AlignConstraint.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get align_axis(): AlignAxis;\n    set align_axis(val: AlignAxis);\n    get alignAxis(): AlignAxis;\n    set alignAxis(val: AlignAxis);\n    get factor(): number;\n    set factor(val: number);\n    get pivot_point(): Graphene.Point;\n    set pivot_point(val: Graphene.Point);\n    get pivotPoint(): Graphene.Point;\n    set pivotPoint(val: Graphene.Point);\n    get source(): Actor;\n    set source(val: Actor);\n\n    // Constructors\n\n    static [\"new\"](source: Actor | null, axis: AlignAxis, factor: number): AlignConstraint;\n\n    // Members\n\n    get_align_axis(): AlignAxis;\n    get_factor(): number;\n    get_pivot_point(): Graphene.Point;\n    get_source(): Actor;\n    set_align_axis(axis: AlignAxis): void;\n    set_factor(factor: number): void;\n    set_pivot_point(pivot_point: Graphene.Point): void;\n    set_source(source?: Actor | null): void;\n}\nexport module Backend {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport abstract class Backend extends GObject.Object {\n    static $gtype: GObject.GType<Backend>;\n\n    constructor(properties?: Partial<Backend.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Backend.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"font-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"font-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"font-changed\"): void;\n    connect(signal: \"resolution-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"resolution-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"resolution-changed\"): void;\n    connect(signal: \"settings-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"settings-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"settings-changed\"): void;\n\n    // Members\n\n    get_cogl_context(): Cogl.Context;\n    get_default_seat(): Seat;\n    get_font_options(): cairo.FontOptions;\n    get_input_method(): InputMethod;\n    get_resolution(): number;\n    set_font_options(options: cairo.FontOptions): void;\n    set_input_method(method: InputMethod): void;\n}\nexport module BinLayout {\n    export interface ConstructorProperties extends LayoutManager.ConstructorProperties {\n        [key: string]: any;\n        x_align: BinAlignment;\n        xAlign: BinAlignment;\n        y_align: BinAlignment;\n        yAlign: BinAlignment;\n    }\n}\nexport class BinLayout extends LayoutManager {\n    static $gtype: GObject.GType<BinLayout>;\n\n    constructor(properties?: Partial<BinLayout.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<BinLayout.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get x_align(): BinAlignment;\n    set x_align(val: BinAlignment);\n    get xAlign(): BinAlignment;\n    set xAlign(val: BinAlignment);\n    get y_align(): BinAlignment;\n    set y_align(val: BinAlignment);\n    get yAlign(): BinAlignment;\n    set yAlign(val: BinAlignment);\n\n    // Constructors\n\n    static [\"new\"](x_align: BinAlignment, y_align: BinAlignment): BinLayout;\n}\nexport module BindConstraint {\n    export interface ConstructorProperties extends Constraint.ConstructorProperties {\n        [key: string]: any;\n        coordinate: BindCoordinate;\n        offset: number;\n        source: Actor;\n    }\n}\nexport class BindConstraint extends Constraint {\n    static $gtype: GObject.GType<BindConstraint>;\n\n    constructor(properties?: Partial<BindConstraint.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<BindConstraint.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get coordinate(): BindCoordinate;\n    set coordinate(val: BindCoordinate);\n    get offset(): number;\n    set offset(val: number);\n    get source(): Actor;\n    set source(val: Actor);\n\n    // Constructors\n\n    static [\"new\"](source: Actor | null, coordinate: BindCoordinate, offset: number): BindConstraint;\n\n    // Members\n\n    get_coordinate(): BindCoordinate;\n    get_offset(): number;\n    get_source(): Actor;\n    set_coordinate(coordinate: BindCoordinate): void;\n    set_offset(offset: number): void;\n    set_source(source?: Actor | null): void;\n}\nexport module BindingPool {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        name: string;\n    }\n}\nexport class BindingPool extends GObject.Object {\n    static $gtype: GObject.GType<BindingPool>;\n\n    constructor(properties?: Partial<BindingPool.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<BindingPool.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get name(): string;\n\n    // Constructors\n\n    static [\"new\"](name: string): BindingPool;\n\n    // Members\n\n    activate(key_val: number, modifiers: ModifierType, gobject: GObject.Object): boolean;\n    block_action(action_name: string): void;\n    find_action(key_val: number, modifiers: ModifierType): string;\n    install_action(action_name: string, key_val: number, modifiers: ModifierType, callback: BindingActionFunc): void;\n    install_closure(action_name: string, key_val: number, modifiers: ModifierType, closure: GObject.Closure): void;\n    override_action(key_val: number, modifiers: ModifierType, callback: GObject.Callback): void;\n    override_closure(key_val: number, modifiers: ModifierType, closure: GObject.Closure): void;\n    remove_action(key_val: number, modifiers: ModifierType): void;\n    unblock_action(action_name: string): void;\n    static find(name: string): BindingPool;\n    static get_for_class(klass?: any | null): BindingPool;\n}\nexport module BlitNode {\n    export interface ConstructorProperties extends PaintNode.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class BlitNode extends PaintNode {\n    static $gtype: GObject.GType<BlitNode>;\n\n    constructor(properties?: Partial<BlitNode.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<BlitNode.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](src: Cogl.Framebuffer): BlitNode;\n\n    // Members\n\n    add_blit_rectangle(src_x: number, src_y: number, dst_x: number, dst_y: number, width: number, height: number): void;\n}\nexport module BlurEffect {\n    export interface ConstructorProperties extends OffscreenEffect.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class BlurEffect extends OffscreenEffect {\n    static $gtype: GObject.GType<BlurEffect>;\n\n    constructor(properties?: Partial<BlurEffect.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<BlurEffect.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](): BlurEffect;\n}\nexport module BlurNode {\n    export interface ConstructorProperties extends LayerNode.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class BlurNode extends LayerNode {\n    static $gtype: GObject.GType<BlurNode>;\n\n    constructor(properties?: Partial<BlurNode.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<BlurNode.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](width: number, height: number, sigma: number): BlurNode;\n    // Conflicted with Clutter.LayerNode.new\n    static [\"new\"](...args: never[]): any;\n}\nexport module BoxLayout {\n    export interface ConstructorProperties extends LayoutManager.ConstructorProperties {\n        [key: string]: any;\n        homogeneous: boolean;\n        orientation: Orientation;\n        pack_start: boolean;\n        packStart: boolean;\n        spacing: number;\n    }\n}\nexport class BoxLayout extends LayoutManager {\n    static $gtype: GObject.GType<BoxLayout>;\n\n    constructor(properties?: Partial<BoxLayout.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<BoxLayout.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get homogeneous(): boolean;\n    set homogeneous(val: boolean);\n    get orientation(): Orientation;\n    set orientation(val: Orientation);\n    get pack_start(): boolean;\n    set pack_start(val: boolean);\n    get packStart(): boolean;\n    set packStart(val: boolean);\n    get spacing(): number;\n    set spacing(val: number);\n\n    // Constructors\n\n    static [\"new\"](): BoxLayout;\n\n    // Members\n\n    get_homogeneous(): boolean;\n    get_orientation(): Orientation;\n    get_pack_start(): boolean;\n    get_spacing(): number;\n    set_homogeneous(homogeneous: boolean): void;\n    set_orientation(orientation: Orientation): void;\n    set_pack_start(pack_start: boolean): void;\n    set_spacing(spacing: number): void;\n}\nexport module BrightnessContrastEffect {\n    export interface ConstructorProperties extends OffscreenEffect.ConstructorProperties {\n        [key: string]: any;\n        brightness: Color;\n        contrast: Color;\n    }\n}\nexport class BrightnessContrastEffect extends OffscreenEffect {\n    static $gtype: GObject.GType<BrightnessContrastEffect>;\n\n    constructor(properties?: Partial<BrightnessContrastEffect.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<BrightnessContrastEffect.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get brightness(): Color;\n    set brightness(val: Color);\n    get contrast(): Color;\n    set contrast(val: Color);\n\n    // Constructors\n\n    static [\"new\"](): BrightnessContrastEffect;\n\n    // Members\n\n    get_brightness(): [number | null, number | null, number | null];\n    get_contrast(): [number | null, number | null, number | null];\n    set_brightness(brightness: number): void;\n    set_brightness_full(red: number, green: number, blue: number): void;\n    set_contrast(contrast: number): void;\n    set_contrast_full(red: number, green: number, blue: number): void;\n}\nexport module Canvas {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        height: number;\n        scale_factor: number;\n        scaleFactor: number;\n        width: number;\n    }\n}\nexport class Canvas extends GObject.Object implements Content {\n    static $gtype: GObject.GType<Canvas>;\n\n    constructor(properties?: Partial<Canvas.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Canvas.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get height(): number;\n    set height(val: number);\n    get scale_factor(): number;\n    set scale_factor(val: number);\n    get scaleFactor(): number;\n    set scaleFactor(val: number);\n    get width(): number;\n    set width(val: number);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(\n        signal: \"draw\",\n        callback: (_source: this, cr: cairo.Context, width: number, height: number) => boolean\n    ): number;\n    connect_after(\n        signal: \"draw\",\n        callback: (_source: this, cr: cairo.Context, width: number, height: number) => boolean\n    ): number;\n    emit(signal: \"draw\", cr: cairo.Context, width: number, height: number): void;\n\n    // Members\n\n    get_scale_factor(): number;\n    set_scale_factor(scale: number): void;\n    set_size(width: number, height: number): boolean;\n    vfunc_draw(cr: cairo.Context, width: number, height: number): boolean;\n    static new(): Content;\n\n    // Implemented Members\n\n    get_preferred_size(): [boolean, number | null, number | null];\n    invalidate(): void;\n    invalidate_size(): void;\n    vfunc_attached(actor: Actor): void;\n    vfunc_detached(actor: Actor): void;\n    vfunc_get_preferred_size(): [boolean, number | null, number | null];\n    vfunc_invalidate(): void;\n    vfunc_invalidate_size(): void;\n    vfunc_paint_content(actor: Actor, node: PaintNode, paint_context: PaintContext): void;\n}\nexport module ChildMeta {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        actor: Actor;\n        container: Container;\n    }\n}\nexport abstract class ChildMeta extends GObject.Object {\n    static $gtype: GObject.GType<ChildMeta>;\n\n    constructor(properties?: Partial<ChildMeta.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ChildMeta.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get actor(): Actor;\n    get container(): Container;\n\n    // Members\n\n    get_actor(): Actor;\n    get_container(): Container;\n}\nexport module ClickAction {\n    export interface ConstructorProperties extends Action.ConstructorProperties {\n        [key: string]: any;\n        held: boolean;\n        long_press_duration: number;\n        longPressDuration: number;\n        long_press_threshold: number;\n        longPressThreshold: number;\n        pressed: boolean;\n    }\n}\nexport class ClickAction extends Action {\n    static $gtype: GObject.GType<ClickAction>;\n\n    constructor(properties?: Partial<ClickAction.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ClickAction.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get held(): boolean;\n    get long_press_duration(): number;\n    set long_press_duration(val: number);\n    get longPressDuration(): number;\n    set longPressDuration(val: number);\n    get long_press_threshold(): number;\n    set long_press_threshold(val: number);\n    get longPressThreshold(): number;\n    set longPressThreshold(val: number);\n    get pressed(): boolean;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"clicked\", callback: (_source: this, actor: Actor) => void): number;\n    connect_after(signal: \"clicked\", callback: (_source: this, actor: Actor) => void): number;\n    emit(signal: \"clicked\", actor: Actor): void;\n    connect(signal: \"long-press\", callback: (_source: this, actor: Actor, state: LongPressState) => boolean): number;\n    connect_after(\n        signal: \"long-press\",\n        callback: (_source: this, actor: Actor, state: LongPressState) => boolean\n    ): number;\n    emit(signal: \"long-press\", actor: Actor, state: LongPressState): void;\n\n    // Constructors\n\n    static [\"new\"](): ClickAction;\n\n    // Members\n\n    get_button(): number;\n    get_coords(): [number, number];\n    get_state(): ModifierType;\n    release(): void;\n    vfunc_clicked(actor: Actor): void;\n    vfunc_long_press(actor: Actor, state: LongPressState): boolean;\n}\nexport module ClipNode {\n    export interface ConstructorProperties extends PaintNode.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class ClipNode extends PaintNode {\n    static $gtype: GObject.GType<ClipNode>;\n\n    constructor(properties?: Partial<ClipNode.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ClipNode.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](): ClipNode;\n}\nexport module Clone {\n    export interface ConstructorProperties extends Actor.ConstructorProperties {\n        [key: string]: any;\n        source: Actor;\n    }\n}\nexport class Clone extends Actor implements Atk.ImplementorIface, Animatable, Container, Scriptable {\n    static $gtype: GObject.GType<Clone>;\n\n    constructor(properties?: Partial<Clone.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Clone.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get source(): Actor;\n    set source(val: Actor);\n\n    // Constructors\n\n    static [\"new\"](source: Actor): Clone;\n    // Conflicted with Clutter.Actor.new\n    static [\"new\"](...args: never[]): any;\n\n    // Members\n\n    get_source(): Actor;\n    set_source(source?: Actor | null): void;\n\n    // Implemented Members\n\n    find_property(property_name: string): GObject.ParamSpec;\n    get_actor(): Actor;\n    get_initial_state(property_name: string, value: GObject.Value | any): void;\n    interpolate_value(property_name: string, interval: Interval, progress: number): [boolean, unknown];\n    set_final_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_find_property(property_name: string): GObject.ParamSpec;\n    vfunc_get_actor(): Actor;\n    vfunc_get_initial_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_interpolate_value(property_name: string, interval: Interval, progress: number): [boolean, unknown];\n    vfunc_set_final_state(property_name: string, value: GObject.Value | any): void;\n    add_actor(actor: Actor): void;\n    child_get_property(child: Actor, property: string, value: GObject.Value | any): void;\n    child_notify(child: Actor, pspec: GObject.ParamSpec): void;\n    child_set_property(child: Actor, property: string, value: GObject.Value | any): void;\n    create_child_meta(actor: Actor): void;\n    destroy_child_meta(actor: Actor): void;\n    find_child_by_name(child_name: string): Actor;\n    get_child_meta(actor: Actor): ChildMeta;\n    remove_actor(actor: Actor): void;\n    vfunc_actor_added(actor: Actor): void;\n    vfunc_actor_removed(actor: Actor): void;\n    vfunc_add(actor: Actor): void;\n    vfunc_child_notify(child: Actor, pspec: GObject.ParamSpec): void;\n    vfunc_create_child_meta(actor: Actor): void;\n    vfunc_destroy_child_meta(actor: Actor): void;\n    vfunc_get_child_meta(actor: Actor): ChildMeta;\n    vfunc_remove(actor: Actor): void;\n    get_id(): string;\n    parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    set_id(id_: string): void;\n    vfunc_get_id(): string;\n    vfunc_parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    vfunc_set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id_: string): void;\n}\nexport module ColorNode {\n    export interface ConstructorProperties extends PipelineNode.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class ColorNode extends PipelineNode {\n    static $gtype: GObject.GType<ColorNode>;\n\n    constructor(properties?: Partial<ColorNode.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ColorNode.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](color?: Color | null): ColorNode;\n    // Conflicted with Clutter.PipelineNode.new\n    static [\"new\"](...args: never[]): any;\n}\nexport module ColorState {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        colorspace: Colorspace;\n    }\n}\nexport class ColorState extends GObject.Object {\n    static $gtype: GObject.GType<ColorState>;\n\n    constructor(properties?: Partial<ColorState.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ColorState.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get colorspace(): Colorspace;\n\n    // Constructors\n\n    static [\"new\"](colorspace: Colorspace): ColorState;\n\n    // Members\n\n    get_colorspace(): Colorspace;\n}\nexport module ColorizeEffect {\n    export interface ConstructorProperties extends OffscreenEffect.ConstructorProperties {\n        [key: string]: any;\n        tint: Color;\n    }\n}\nexport class ColorizeEffect extends OffscreenEffect {\n    static $gtype: GObject.GType<ColorizeEffect>;\n\n    constructor(properties?: Partial<ColorizeEffect.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ColorizeEffect.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get tint(): Color;\n    set tint(val: Color);\n\n    // Constructors\n\n    static [\"new\"](tint: Color): ColorizeEffect;\n\n    // Members\n\n    get_tint(): Color;\n    set_tint(tint: Color): void;\n}\nexport module Constraint {\n    export interface ConstructorProperties extends ActorMeta.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport abstract class Constraint extends ActorMeta {\n    static $gtype: GObject.GType<Constraint>;\n\n    constructor(properties?: Partial<Constraint.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Constraint.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    update_preferred_size(\n        actor: Actor,\n        direction: Orientation,\n        for_size: number,\n        minimum_size: number,\n        natural_size: number\n    ): [number, number];\n    vfunc_update_allocation(actor: Actor, allocation: ActorBox): void;\n    vfunc_update_preferred_size(\n        actor: Actor,\n        direction: Orientation,\n        for_size: number,\n        minimum_size: number,\n        natural_size: number\n    ): [number, number];\n}\nexport module DeformEffect {\n    export interface ConstructorProperties extends OffscreenEffect.ConstructorProperties {\n        [key: string]: any;\n        x_tiles: number;\n        xTiles: number;\n        y_tiles: number;\n        yTiles: number;\n    }\n}\nexport abstract class DeformEffect extends OffscreenEffect {\n    static $gtype: GObject.GType<DeformEffect>;\n\n    constructor(properties?: Partial<DeformEffect.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<DeformEffect.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get x_tiles(): number;\n    set x_tiles(val: number);\n    get xTiles(): number;\n    set xTiles(val: number);\n    get y_tiles(): number;\n    set y_tiles(val: number);\n    get yTiles(): number;\n    set yTiles(val: number);\n\n    // Members\n\n    get_back_material(): Cogl.Handle;\n    get_n_tiles(): [number, number];\n    invalidate(): void;\n    set_back_material(material?: Cogl.Handle | null): void;\n    set_n_tiles(x_tiles: number, y_tiles: number): void;\n    vfunc_deform_vertex(width: number, height: number, vertex: Cogl.TextureVertex): void;\n}\nexport module DesaturateEffect {\n    export interface ConstructorProperties extends OffscreenEffect.ConstructorProperties {\n        [key: string]: any;\n        factor: number;\n    }\n}\nexport class DesaturateEffect extends OffscreenEffect {\n    static $gtype: GObject.GType<DesaturateEffect>;\n\n    constructor(properties?: Partial<DesaturateEffect.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<DesaturateEffect.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get factor(): number;\n    set factor(val: number);\n\n    // Constructors\n\n    static [\"new\"](factor: number): DesaturateEffect;\n\n    // Members\n\n    get_factor(): number;\n    set_factor(factor: number): void;\n}\nexport module Effect {\n    export interface ConstructorProperties extends ActorMeta.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport abstract class Effect extends ActorMeta {\n    static $gtype: GObject.GType<Effect>;\n\n    constructor(properties?: Partial<Effect.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Effect.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    queue_repaint(): void;\n    vfunc_modify_paint_volume(volume: PaintVolume): boolean;\n    vfunc_paint(node: PaintNode, paint_context: PaintContext, flags: EffectPaintFlags): void;\n    vfunc_paint_node(node: PaintNode, paint_context: PaintContext, flags: EffectPaintFlags): void;\n    vfunc_pick(pick_context: PickContext): void;\n    vfunc_post_paint(node: PaintNode, paint_context: PaintContext): void;\n    vfunc_pre_paint(node: PaintNode, paint_context: PaintContext): boolean;\n}\nexport module FixedLayout {\n    export interface ConstructorProperties extends LayoutManager.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class FixedLayout extends LayoutManager {\n    static $gtype: GObject.GType<FixedLayout>;\n\n    constructor(properties?: Partial<FixedLayout.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<FixedLayout.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](): FixedLayout;\n}\nexport module FlowLayout {\n    export interface ConstructorProperties extends LayoutManager.ConstructorProperties {\n        [key: string]: any;\n        column_spacing: number;\n        columnSpacing: number;\n        homogeneous: boolean;\n        max_column_width: number;\n        maxColumnWidth: number;\n        max_row_height: number;\n        maxRowHeight: number;\n        min_column_width: number;\n        minColumnWidth: number;\n        min_row_height: number;\n        minRowHeight: number;\n        orientation: FlowOrientation;\n        row_spacing: number;\n        rowSpacing: number;\n        snap_to_grid: boolean;\n        snapToGrid: boolean;\n    }\n}\nexport class FlowLayout extends LayoutManager {\n    static $gtype: GObject.GType<FlowLayout>;\n\n    constructor(properties?: Partial<FlowLayout.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<FlowLayout.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get column_spacing(): number;\n    set column_spacing(val: number);\n    get columnSpacing(): number;\n    set columnSpacing(val: number);\n    get homogeneous(): boolean;\n    set homogeneous(val: boolean);\n    get max_column_width(): number;\n    set max_column_width(val: number);\n    get maxColumnWidth(): number;\n    set maxColumnWidth(val: number);\n    get max_row_height(): number;\n    set max_row_height(val: number);\n    get maxRowHeight(): number;\n    set maxRowHeight(val: number);\n    get min_column_width(): number;\n    set min_column_width(val: number);\n    get minColumnWidth(): number;\n    set minColumnWidth(val: number);\n    get min_row_height(): number;\n    set min_row_height(val: number);\n    get minRowHeight(): number;\n    set minRowHeight(val: number);\n    get orientation(): FlowOrientation;\n    set orientation(val: FlowOrientation);\n    get row_spacing(): number;\n    set row_spacing(val: number);\n    get rowSpacing(): number;\n    set rowSpacing(val: number);\n    get snap_to_grid(): boolean;\n    set snap_to_grid(val: boolean);\n    get snapToGrid(): boolean;\n    set snapToGrid(val: boolean);\n\n    // Constructors\n\n    static [\"new\"](orientation: FlowOrientation): FlowLayout;\n\n    // Members\n\n    get_column_spacing(): number;\n    get_column_width(): [number, number];\n    get_homogeneous(): boolean;\n    get_orientation(): FlowOrientation;\n    get_row_height(): [number, number];\n    get_row_spacing(): number;\n    get_snap_to_grid(): boolean;\n    set_column_spacing(spacing: number): void;\n    set_column_width(min_width: number, max_width: number): void;\n    set_homogeneous(homogeneous: boolean): void;\n    set_orientation(orientation: FlowOrientation): void;\n    set_row_height(min_height: number, max_height: number): void;\n    set_row_spacing(spacing: number): void;\n    set_snap_to_grid(snap_to_grid: boolean): void;\n}\nexport module FrameClock {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class FrameClock extends GObject.Object {\n    static $gtype: GObject.GType<FrameClock>;\n\n    constructor(properties?: Partial<FrameClock.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<FrameClock.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"destroy\", callback: (_source: this) => void): number;\n    connect_after(signal: \"destroy\", callback: (_source: this) => void): number;\n    emit(signal: \"destroy\"): void;\n\n    // Members\n\n    add_timeline(timeline: Timeline): void;\n    destroy(): void;\n    get_max_render_time_debug_info(): GLib.String;\n    get_refresh_rate(): number;\n    inhibit(): void;\n    notify_ready(): void;\n    record_flip_time(flip_time_us: number): void;\n    remove_timeline(timeline: Timeline): void;\n    schedule_update(): void;\n    schedule_update_now(): void;\n    uninhibit(): void;\n}\nexport module GestureAction {\n    export interface ConstructorProperties extends Action.ConstructorProperties {\n        [key: string]: any;\n        n_touch_points: number;\n        nTouchPoints: number;\n        threshold_trigger_distance_x: number;\n        thresholdTriggerDistanceX: number;\n        threshold_trigger_distance_y: number;\n        thresholdTriggerDistanceY: number;\n        threshold_trigger_edge: GestureTriggerEdge;\n        thresholdTriggerEdge: GestureTriggerEdge;\n    }\n}\nexport class GestureAction extends Action {\n    static $gtype: GObject.GType<GestureAction>;\n\n    constructor(properties?: Partial<GestureAction.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<GestureAction.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get n_touch_points(): number;\n    set n_touch_points(val: number);\n    get nTouchPoints(): number;\n    set nTouchPoints(val: number);\n    get threshold_trigger_distance_x(): number;\n    get thresholdTriggerDistanceX(): number;\n    get threshold_trigger_distance_y(): number;\n    get thresholdTriggerDistanceY(): number;\n    get threshold_trigger_edge(): GestureTriggerEdge;\n    get thresholdTriggerEdge(): GestureTriggerEdge;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"gesture-begin\", callback: (_source: this, actor: Actor) => boolean): number;\n    connect_after(signal: \"gesture-begin\", callback: (_source: this, actor: Actor) => boolean): number;\n    emit(signal: \"gesture-begin\", actor: Actor): void;\n    connect(signal: \"gesture-cancel\", callback: (_source: this, actor: Actor) => void): number;\n    connect_after(signal: \"gesture-cancel\", callback: (_source: this, actor: Actor) => void): number;\n    emit(signal: \"gesture-cancel\", actor: Actor): void;\n    connect(signal: \"gesture-end\", callback: (_source: this, actor: Actor) => void): number;\n    connect_after(signal: \"gesture-end\", callback: (_source: this, actor: Actor) => void): number;\n    emit(signal: \"gesture-end\", actor: Actor): void;\n    connect(signal: \"gesture-progress\", callback: (_source: this, actor: Actor) => boolean): number;\n    connect_after(signal: \"gesture-progress\", callback: (_source: this, actor: Actor) => boolean): number;\n    emit(signal: \"gesture-progress\", actor: Actor): void;\n\n    // Constructors\n\n    static [\"new\"](): GestureAction;\n\n    // Members\n\n    cancel(): void;\n    get_device(point: number): InputDevice;\n    get_last_event(point: number): Event;\n    get_motion_coords(point: number): [number | null, number | null];\n    get_motion_delta(point: number): [number, number | null, number | null];\n    get_n_current_points(): number;\n    get_n_touch_points(): number;\n    get_press_coords(point: number): [number | null, number | null];\n    get_release_coords(point: number): [number | null, number | null];\n    get_sequence(point: number): EventSequence;\n    get_threshold_trigger_distance(): [number | null, number | null];\n    get_threshold_trigger_edge(): GestureTriggerEdge;\n    get_threshold_trigger_egde(): GestureTriggerEdge;\n    get_velocity(point: number): [number, number | null, number | null];\n    set_n_touch_points(nb_points: number): void;\n    set_threshold_trigger_distance(x: number, y: number): void;\n    set_threshold_trigger_edge(edge: GestureTriggerEdge): void;\n    vfunc_gesture_begin(actor: Actor): boolean;\n    vfunc_gesture_cancel(actor: Actor): void;\n    vfunc_gesture_end(actor: Actor): void;\n    vfunc_gesture_prepare(actor: Actor): boolean;\n    vfunc_gesture_progress(actor: Actor): boolean;\n}\nexport module GridLayout {\n    export interface ConstructorProperties extends LayoutManager.ConstructorProperties {\n        [key: string]: any;\n        column_homogeneous: boolean;\n        columnHomogeneous: boolean;\n        column_spacing: number;\n        columnSpacing: number;\n        orientation: Orientation;\n        row_homogeneous: boolean;\n        rowHomogeneous: boolean;\n        row_spacing: number;\n        rowSpacing: number;\n    }\n}\nexport class GridLayout extends LayoutManager {\n    static $gtype: GObject.GType<GridLayout>;\n\n    constructor(properties?: Partial<GridLayout.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<GridLayout.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get column_homogeneous(): boolean;\n    set column_homogeneous(val: boolean);\n    get columnHomogeneous(): boolean;\n    set columnHomogeneous(val: boolean);\n    get column_spacing(): number;\n    set column_spacing(val: number);\n    get columnSpacing(): number;\n    set columnSpacing(val: number);\n    get orientation(): Orientation;\n    set orientation(val: Orientation);\n    get row_homogeneous(): boolean;\n    set row_homogeneous(val: boolean);\n    get rowHomogeneous(): boolean;\n    set rowHomogeneous(val: boolean);\n    get row_spacing(): number;\n    set row_spacing(val: number);\n    get rowSpacing(): number;\n    set rowSpacing(val: number);\n\n    // Constructors\n\n    static [\"new\"](): GridLayout;\n\n    // Members\n\n    attach(child: Actor, left: number, top: number, width: number, height: number): void;\n    attach_next_to(child: Actor, sibling: Actor | null, side: GridPosition, width: number, height: number): void;\n    get_child_at(left: number, top: number): Actor;\n    get_column_homogeneous(): boolean;\n    get_column_spacing(): number;\n    get_orientation(): Orientation;\n    get_row_homogeneous(): boolean;\n    get_row_spacing(): number;\n    insert_column(position: number): void;\n    insert_next_to(sibling: Actor, side: GridPosition): void;\n    insert_row(position: number): void;\n    set_column_homogeneous(homogeneous: boolean): void;\n    set_column_spacing(spacing: number): void;\n    set_orientation(orientation: Orientation): void;\n    set_row_homogeneous(homogeneous: boolean): void;\n    set_row_spacing(spacing: number): void;\n}\nexport module Image {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class Image extends GObject.Object implements Content {\n    static $gtype: GObject.GType<Image>;\n\n    constructor(properties?: Partial<Image.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Image.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    get_texture(): Cogl.Texture;\n    set_area(\n        data: Uint8Array | string,\n        pixel_format: Cogl.PixelFormat,\n        rect: cairo.RectangleInt,\n        row_stride: number\n    ): boolean;\n    set_bytes(\n        data: GLib.Bytes | Uint8Array,\n        pixel_format: Cogl.PixelFormat,\n        width: number,\n        height: number,\n        row_stride: number\n    ): boolean;\n    set_data(\n        data: Uint8Array | string,\n        pixel_format: Cogl.PixelFormat,\n        width: number,\n        height: number,\n        row_stride: number\n    ): boolean;\n    // Conflicted with GObject.Object.set_data\n    set_data(...args: never[]): any;\n    static new(): Content;\n\n    // Implemented Members\n\n    get_preferred_size(): [boolean, number | null, number | null];\n    invalidate(): void;\n    invalidate_size(): void;\n    vfunc_attached(actor: Actor): void;\n    vfunc_detached(actor: Actor): void;\n    vfunc_get_preferred_size(): [boolean, number | null, number | null];\n    vfunc_invalidate(): void;\n    vfunc_invalidate_size(): void;\n    vfunc_paint_content(actor: Actor, node: PaintNode, paint_context: PaintContext): void;\n}\nexport module InputDevice {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        capabilities: InputCapabilities;\n        device_mode: InputMode;\n        deviceMode: InputMode;\n        device_node: string;\n        deviceNode: string;\n        device_type: InputDeviceType;\n        deviceType: InputDeviceType;\n        has_cursor: boolean;\n        hasCursor: boolean;\n        n_buttons: number;\n        nButtons: number;\n        n_mode_groups: number;\n        nModeGroups: number;\n        n_rings: number;\n        nRings: number;\n        n_strips: number;\n        nStrips: number;\n        name: string;\n        product_id: string;\n        productId: string;\n        seat: Seat;\n        vendor_id: string;\n        vendorId: string;\n    }\n}\nexport class InputDevice extends GObject.Object {\n    static $gtype: GObject.GType<InputDevice>;\n\n    constructor(properties?: Partial<InputDevice.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<InputDevice.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get capabilities(): InputCapabilities;\n    get device_mode(): InputMode;\n    get deviceMode(): InputMode;\n    get device_node(): string;\n    get deviceNode(): string;\n    get device_type(): InputDeviceType;\n    get deviceType(): InputDeviceType;\n    get has_cursor(): boolean;\n    get hasCursor(): boolean;\n    get n_buttons(): number;\n    get nButtons(): number;\n    get n_mode_groups(): number;\n    get nModeGroups(): number;\n    get n_rings(): number;\n    get nRings(): number;\n    get n_strips(): number;\n    get nStrips(): number;\n    get name(): string;\n    get product_id(): string;\n    get productId(): string;\n    get seat(): Seat;\n    get vendor_id(): string;\n    get vendorId(): string;\n\n    // Members\n\n    get_capabilities(): InputCapabilities;\n    get_device_mode(): InputMode;\n    get_device_name(): string;\n    get_device_node(): string;\n    get_device_type(): InputDeviceType;\n    get_dimensions(): [boolean, number, number];\n    get_group_n_modes(group: number): number;\n    get_has_cursor(): boolean;\n    get_mode_switch_button_group(button: number): number;\n    get_n_buttons(): number;\n    get_n_mode_groups(): number;\n    get_n_rings(): number;\n    get_n_strips(): number;\n    get_pad_feature_group(feature: InputDevicePadFeature, n_feature: number): number;\n    get_product_id(): string;\n    get_seat(): Seat;\n    get_vendor_id(): string;\n    is_grouped(other_device: InputDevice): boolean;\n    is_mode_switch_button(group: number, button: number): boolean;\n    vfunc_get_dimensions(): [boolean, number, number];\n    vfunc_get_group_n_modes(group: number): number;\n    vfunc_get_pad_feature_group(feature: InputDevicePadFeature, n_feature: number): number;\n    vfunc_is_grouped(other_device: InputDevice): boolean;\n    vfunc_is_mode_switch_button(group: number, button: number): boolean;\n}\nexport module InputDeviceTool {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        axes: InputAxisFlags;\n        id: number;\n        serial: number;\n        type: InputDeviceToolType;\n    }\n}\nexport abstract class InputDeviceTool extends GObject.Object {\n    static $gtype: GObject.GType<InputDeviceTool>;\n\n    constructor(properties?: Partial<InputDeviceTool.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<InputDeviceTool.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get axes(): InputAxisFlags;\n    get id(): number;\n    get serial(): number;\n    get type(): InputDeviceToolType;\n\n    // Members\n\n    get_axes(): InputAxisFlags;\n    get_id(): number;\n    get_serial(): number;\n    get_tool_type(): InputDeviceToolType;\n}\nexport module InputFocus {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport abstract class InputFocus extends GObject.Object {\n    static $gtype: GObject.GType<InputFocus>;\n\n    constructor(properties?: Partial<InputFocus.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<InputFocus.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    filter_event(event: Event): boolean;\n    is_focused(): boolean;\n    reset(): void;\n    set_can_show_preedit(can_show_preedit: boolean): void;\n    set_content_hints(hint: InputContentHintFlags): void;\n    set_content_purpose(purpose: InputContentPurpose): void;\n    set_cursor_location(rect: Graphene.Rect): void;\n    set_input_panel_state(state: InputPanelState): void;\n    set_surrounding(text: string, cursor: number, anchor: number): void;\n    vfunc_commit_text(text: string): void;\n    vfunc_delete_surrounding(offset: number, len: number): void;\n    vfunc_focus_in(input_method: InputMethod): void;\n    vfunc_focus_out(): void;\n    vfunc_request_surrounding(): void;\n    vfunc_set_preedit_text(preedit: string, cursor: number, anchor: number): void;\n}\nexport module InputMethod {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        can_show_preedit: boolean;\n        canShowPreedit: boolean;\n        content_hints: InputContentHintFlags;\n        contentHints: InputContentHintFlags;\n        content_purpose: InputContentPurpose;\n        contentPurpose: InputContentPurpose;\n    }\n}\nexport abstract class InputMethod extends GObject.Object {\n    static $gtype: GObject.GType<InputMethod>;\n\n    constructor(properties?: Partial<InputMethod.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<InputMethod.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get can_show_preedit(): boolean;\n    set can_show_preedit(val: boolean);\n    get canShowPreedit(): boolean;\n    set canShowPreedit(val: boolean);\n    get content_hints(): InputContentHintFlags;\n    set content_hints(val: InputContentHintFlags);\n    get contentHints(): InputContentHintFlags;\n    set contentHints(val: InputContentHintFlags);\n    get content_purpose(): InputContentPurpose;\n    set content_purpose(val: InputContentPurpose);\n    get contentPurpose(): InputContentPurpose;\n    set contentPurpose(val: InputContentPurpose);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"commit\", callback: (_source: this, object: string) => void): number;\n    connect_after(signal: \"commit\", callback: (_source: this, object: string) => void): number;\n    emit(signal: \"commit\", object: string): void;\n    connect(signal: \"cursor-location-changed\", callback: (_source: this, object: Graphene.Rect) => void): number;\n    connect_after(signal: \"cursor-location-changed\", callback: (_source: this, object: Graphene.Rect) => void): number;\n    emit(signal: \"cursor-location-changed\", object: Graphene.Rect): void;\n    connect(signal: \"delete-surrounding\", callback: (_source: this, object: number, p0: number) => void): number;\n    connect_after(signal: \"delete-surrounding\", callback: (_source: this, object: number, p0: number) => void): number;\n    emit(signal: \"delete-surrounding\", object: number, p0: number): void;\n    connect(signal: \"input-panel-state\", callback: (_source: this, object: InputPanelState) => void): number;\n    connect_after(signal: \"input-panel-state\", callback: (_source: this, object: InputPanelState) => void): number;\n    emit(signal: \"input-panel-state\", object: InputPanelState): void;\n    connect(signal: \"request-surrounding\", callback: (_source: this) => void): number;\n    connect_after(signal: \"request-surrounding\", callback: (_source: this) => void): number;\n    emit(signal: \"request-surrounding\"): void;\n\n    // Members\n\n    commit(text: string): void;\n    delete_surrounding(offset: number, len: number): void;\n    focus_in(focus: InputFocus): void;\n    focus_out(): void;\n    forward_key(keyval: number, keycode: number, state: number, time_: number, press: boolean): void;\n    notify_key_event(event: Event, filtered: boolean): void;\n    request_surrounding(): void;\n    set_input_panel_state(state: InputPanelState): void;\n    set_preedit_text(preedit: string | null, cursor: number, anchor: number, mode: PreeditResetMode): void;\n    vfunc_filter_key_event(key: Event): boolean;\n    vfunc_focus_in(actor: InputFocus): void;\n    vfunc_focus_out(): void;\n    vfunc_reset(): void;\n    vfunc_set_cursor_location(rect: Graphene.Rect): void;\n    vfunc_set_surrounding(text: string, cursor: number, anchor: number): void;\n    vfunc_update_content_hints(hint: InputContentHintFlags): void;\n    vfunc_update_content_purpose(purpose: InputContentPurpose): void;\n}\nexport module Interval {\n    export interface ConstructorProperties extends GObject.InitiallyUnowned.ConstructorProperties {\n        [key: string]: any;\n        final: GObject.Value;\n        initial: GObject.Value;\n        value_type: GObject.GType;\n        valueType: GObject.GType;\n    }\n}\nexport class Interval extends GObject.InitiallyUnowned implements Scriptable {\n    static $gtype: GObject.GType<Interval>;\n\n    constructor(properties?: Partial<Interval.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Interval.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get final(): GObject.Value;\n    set final(val: GObject.Value);\n    get initial(): GObject.Value;\n    set initial(val: GObject.Value);\n    get value_type(): GObject.GType;\n    get valueType(): GObject.GType;\n\n    // Constructors\n\n    static new_with_values(\n        gtype: GObject.GType,\n        initial?: GObject.Value | null,\n        _final?: GObject.Value | null\n    ): Interval;\n\n    // Members\n\n    clone(): Interval;\n    compute(factor: number): unknown;\n    compute_value(factor: number): [boolean, unknown];\n    get_final_value(): unknown;\n    get_initial_value(): unknown;\n    get_value_type(): GObject.GType;\n    is_valid(): boolean;\n    peek_final_value(): unknown;\n    peek_initial_value(): unknown;\n    set_final(value: GObject.Value | any): void;\n    set_initial(value: GObject.Value | any): void;\n    validate(pspec: GObject.ParamSpec): boolean;\n    vfunc_compute_value(factor: number): [boolean, unknown];\n    vfunc_validate(pspec: GObject.ParamSpec): boolean;\n\n    // Implemented Members\n\n    get_id(): string;\n    parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    set_id(id_: string): void;\n    vfunc_get_id(): string;\n    vfunc_parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    vfunc_set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id_: string): void;\n}\nexport module KeyframeTransition {\n    export interface ConstructorProperties extends PropertyTransition.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class KeyframeTransition extends PropertyTransition implements Scriptable {\n    static $gtype: GObject.GType<KeyframeTransition>;\n\n    constructor(properties?: Partial<KeyframeTransition.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<KeyframeTransition.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](property_name: string): KeyframeTransition;\n    // Conflicted with Clutter.PropertyTransition.new\n    static [\"new\"](...args: never[]): any;\n\n    // Members\n\n    clear(): void;\n    get_key_frame(index_: number): [number | null, AnimationMode | null, unknown];\n    get_n_key_frames(): number;\n    set_key_frame(index_: number, key: number, mode: AnimationMode, value: GObject.Value | any): void;\n    set_key_frames(key_frames: number[]): void;\n    set_modes(modes: AnimationMode[]): void;\n    set_values(values: GObject.Value[]): void;\n}\nexport module Keymap {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        caps_lock_state: boolean;\n        capsLockState: boolean;\n        num_lock_state: boolean;\n        numLockState: boolean;\n    }\n}\nexport abstract class Keymap extends GObject.Object {\n    static $gtype: GObject.GType<Keymap>;\n\n    constructor(properties?: Partial<Keymap.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Keymap.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get caps_lock_state(): boolean;\n    get capsLockState(): boolean;\n    get num_lock_state(): boolean;\n    get numLockState(): boolean;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"state-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"state-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"state-changed\"): void;\n\n    // Members\n\n    get_caps_lock_state(): boolean;\n    get_direction(): Pango.Direction;\n    get_num_lock_state(): boolean;\n    vfunc_get_direction(): Pango.Direction;\n}\nexport module LayerNode {\n    export interface ConstructorProperties extends PaintNode.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class LayerNode extends PaintNode {\n    static $gtype: GObject.GType<LayerNode>;\n\n    constructor(properties?: Partial<LayerNode.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<LayerNode.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](\n        projection: Graphene.Matrix,\n        viewport: cairo.Rectangle,\n        width: number,\n        height: number,\n        opacity: number\n    ): LayerNode;\n    static new_to_framebuffer(framebuffer: Cogl.Framebuffer, pipeline: Cogl.Pipeline): LayerNode;\n}\nexport module LayoutManager {\n    export interface ConstructorProperties extends GObject.InitiallyUnowned.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport abstract class LayoutManager extends GObject.InitiallyUnowned {\n    static $gtype: GObject.GType<LayoutManager>;\n\n    constructor(properties?: Partial<LayoutManager.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<LayoutManager.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"layout-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"layout-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"layout-changed\"): void;\n\n    // Members\n\n    allocate(container: Container, allocation: ActorBox): void;\n    child_get_property(container: Container, actor: Actor, property_name: string, value: GObject.Value | any): void;\n    child_set_property(container: Container, actor: Actor, property_name: string, value: GObject.Value | any): void;\n    find_child_property(name: string): GObject.ParamSpec;\n    get_child_meta(container: Container, actor: Actor): LayoutMeta;\n    get_preferred_height(container: Container, for_width: number): [number | null, number | null];\n    get_preferred_width(container: Container, for_height: number): [number | null, number | null];\n    layout_changed(): void;\n    list_child_properties(): GObject.ParamSpec[];\n    set_container(container?: Container | null): void;\n    vfunc_allocate(container: Container, allocation: ActorBox): void;\n    vfunc_get_child_meta_type(): GObject.GType;\n    vfunc_get_preferred_height(container: Container, for_width: number): [number | null, number | null];\n    vfunc_get_preferred_width(container: Container, for_height: number): [number | null, number | null];\n    vfunc_layout_changed(): void;\n    vfunc_set_container(container?: Container | null): void;\n}\nexport module LayoutMeta {\n    export interface ConstructorProperties extends ChildMeta.ConstructorProperties {\n        [key: string]: any;\n        manager: LayoutManager;\n    }\n}\nexport abstract class LayoutMeta extends ChildMeta {\n    static $gtype: GObject.GType<LayoutMeta>;\n\n    constructor(properties?: Partial<LayoutMeta.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<LayoutMeta.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get manager(): LayoutManager;\n\n    // Members\n\n    get_manager(): LayoutManager;\n}\nexport module OffscreenEffect {\n    export interface ConstructorProperties extends Effect.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport abstract class OffscreenEffect extends Effect {\n    static $gtype: GObject.GType<OffscreenEffect>;\n\n    constructor(properties?: Partial<OffscreenEffect.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<OffscreenEffect.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    create_texture(width: number, height: number): Cogl.Handle;\n    get_pipeline(): Cogl.Pipeline | null;\n    get_target_size(): [boolean, number, number];\n    get_texture(): Cogl.Handle;\n    paint_target(node: PaintNode, paint_context: PaintContext): void;\n    vfunc_create_texture(width: number, height: number): Cogl.Handle;\n    vfunc_paint_target(node: PaintNode, paint_context: PaintContext): void;\n}\nexport module PageTurnEffect {\n    export interface ConstructorProperties extends DeformEffect.ConstructorProperties {\n        [key: string]: any;\n        angle: number;\n        period: number;\n        radius: number;\n    }\n}\nexport class PageTurnEffect extends DeformEffect {\n    static $gtype: GObject.GType<PageTurnEffect>;\n\n    constructor(properties?: Partial<PageTurnEffect.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<PageTurnEffect.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get angle(): number;\n    set angle(val: number);\n    get period(): number;\n    set period(val: number);\n    get radius(): number;\n    set radius(val: number);\n\n    // Constructors\n\n    static [\"new\"](period: number, angle: number, radius: number): PageTurnEffect;\n\n    // Members\n\n    get_angle(): number;\n    get_period(): number;\n    get_radius(): number;\n    set_angle(angle: number): void;\n    set_period(period: number): void;\n    set_radius(radius: number): void;\n}\nexport module PaintNode {\n    export interface ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport abstract class PaintNode {\n    static $gtype: GObject.GType<PaintNode>;\n\n    constructor(properties?: Partial<PaintNode.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<PaintNode.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    add_child(child: PaintNode): void;\n    add_multitexture_rectangle(rect: ActorBox, text_coords: number, text_coords_len: number): void;\n    add_rectangle(rect: ActorBox): void;\n    add_rectangles(coords: number[]): void;\n    add_texture_rectangle(rect: ActorBox, x_1: number, y_1: number, x_2: number, y_2: number): void;\n    add_texture_rectangles(coords: number[]): void;\n    get_framebuffer(): Cogl.Framebuffer;\n    paint(paint_context: PaintContext): void;\n    ref(): PaintNode;\n    set_name(name: string): void;\n    unref(): void;\n}\nexport module PanAction {\n    export interface ConstructorProperties extends GestureAction.ConstructorProperties {\n        [key: string]: any;\n        acceleration_factor: number;\n        accelerationFactor: number;\n        deceleration: number;\n        interpolate: boolean;\n        pan_axis: PanAxis;\n        panAxis: PanAxis;\n    }\n}\nexport class PanAction extends GestureAction {\n    static $gtype: GObject.GType<PanAction>;\n\n    constructor(properties?: Partial<PanAction.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<PanAction.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get acceleration_factor(): number;\n    set acceleration_factor(val: number);\n    get accelerationFactor(): number;\n    set accelerationFactor(val: number);\n    get deceleration(): number;\n    set deceleration(val: number);\n    get interpolate(): boolean;\n    set interpolate(val: boolean);\n    get pan_axis(): PanAxis;\n    set pan_axis(val: PanAxis);\n    get panAxis(): PanAxis;\n    set panAxis(val: PanAxis);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"pan\", callback: (_source: this, actor: Actor, is_interpolated: boolean) => boolean): number;\n    connect_after(signal: \"pan\", callback: (_source: this, actor: Actor, is_interpolated: boolean) => boolean): number;\n    emit(signal: \"pan\", actor: Actor, is_interpolated: boolean): void;\n    connect(signal: \"pan-stopped\", callback: (_source: this, actor: Actor) => void): number;\n    connect_after(signal: \"pan-stopped\", callback: (_source: this, actor: Actor) => void): number;\n    emit(signal: \"pan-stopped\", actor: Actor): void;\n\n    // Constructors\n\n    static [\"new\"](): PanAction;\n\n    // Members\n\n    get_acceleration_factor(): number;\n    get_constrained_motion_delta(point: number): [number, number | null, number | null];\n    get_deceleration(): number;\n    get_interpolate(): boolean;\n    get_interpolated_coords(): [number | null, number | null];\n    get_interpolated_delta(): [number, number | null, number | null];\n    get_motion_coords(point: number): [number | null, number | null];\n    get_motion_delta(point: number): [number, number | null, number | null];\n    get_pan_axis(): PanAxis;\n    set_acceleration_factor(factor: number): void;\n    set_deceleration(rate: number): void;\n    set_interpolate(should_interpolate: boolean): void;\n    set_pan_axis(axis: PanAxis): void;\n    vfunc_pan_stopped(actor: Actor): void;\n}\n\nexport module Path {\n    export interface ConstructorProperties extends GObject.InitiallyUnowned.ConstructorProperties {\n        [key: string]: any;\n        description: string;\n        length: number;\n    }\n}\nexport class Path extends GObject.InitiallyUnowned {\n    static $gtype: GObject.GType<Path>;\n\n    constructor(properties?: Partial<Path.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Path.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get description(): string;\n    set description(val: string);\n    get length(): number;\n\n    // Constructors\n\n    static [\"new\"](): Path;\n    static new_with_description(desc: string): Path;\n\n    // Members\n\n    add_cairo_path(cpath: cairo.Path): void;\n    add_close(): void;\n    add_curve_to(x_1: number, y_1: number, x_2: number, y_2: number, x_3: number, y_3: number): void;\n    add_line_to(x: number, y: number): void;\n    add_move_to(x: number, y: number): void;\n    add_node(node: PathNode): void;\n    add_rel_curve_to(x_1: number, y_1: number, x_2: number, y_2: number, x_3: number, y_3: number): void;\n    add_rel_line_to(x: number, y: number): void;\n    add_rel_move_to(x: number, y: number): void;\n    add_string(str: string): boolean;\n    clear(): void;\n    foreach(callback: PathCallback): void;\n    get_description(): string;\n    get_length(): number;\n    get_n_nodes(): number;\n    get_node(index_: number): PathNode;\n    get_nodes(): PathNode[];\n    get_position(progress: number): [number, Knot];\n    insert_node(index_: number, node: PathNode): void;\n    remove_node(index_: number): void;\n    replace_node(index_: number, node: PathNode): void;\n    set_description(str: string): boolean;\n    to_cairo_path(cr: cairo.Context): void;\n}\nexport module PathConstraint {\n    export interface ConstructorProperties extends Constraint.ConstructorProperties {\n        [key: string]: any;\n        offset: number;\n        path: Path;\n    }\n}\nexport class PathConstraint extends Constraint {\n    static $gtype: GObject.GType<PathConstraint>;\n\n    constructor(properties?: Partial<PathConstraint.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<PathConstraint.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get offset(): number;\n    set offset(val: number);\n    get path(): Path;\n    set path(val: Path);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"node-reached\", callback: (_source: this, actor: Actor, index: number) => void): number;\n    connect_after(signal: \"node-reached\", callback: (_source: this, actor: Actor, index: number) => void): number;\n    emit(signal: \"node-reached\", actor: Actor, index: number): void;\n\n    // Constructors\n\n    static [\"new\"](path: Path | null, offset: number): PathConstraint;\n\n    // Members\n\n    get_offset(): number;\n    get_path(): Path;\n    set_offset(offset: number): void;\n    set_path(path?: Path | null): void;\n}\nexport module PipelineNode {\n    export interface ConstructorProperties extends PaintNode.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class PipelineNode extends PaintNode {\n    static $gtype: GObject.GType<PipelineNode>;\n\n    constructor(properties?: Partial<PipelineNode.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<PipelineNode.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](pipeline?: Cogl.Pipeline | null): PipelineNode;\n}\nexport module PropertyTransition {\n    export interface ConstructorProperties extends Transition.ConstructorProperties {\n        [key: string]: any;\n        property_name: string;\n        propertyName: string;\n    }\n}\nexport class PropertyTransition extends Transition implements Scriptable {\n    static $gtype: GObject.GType<PropertyTransition>;\n\n    constructor(properties?: Partial<PropertyTransition.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<PropertyTransition.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get property_name(): string;\n    set property_name(val: string);\n    get propertyName(): string;\n    set propertyName(val: string);\n\n    // Constructors\n\n    static [\"new\"](property_name?: string | null): PropertyTransition;\n    // Conflicted with Clutter.Timeline.new\n    static [\"new\"](...args: never[]): any;\n    static new_for_actor(actor: Actor, property_name?: string | null): PropertyTransition;\n    // Conflicted with Clutter.Timeline.new_for_actor\n    static new_for_actor(...args: never[]): any;\n\n    // Members\n\n    get_property_name(): string;\n    set_property_name(property_name?: string | null): void;\n}\nexport module RootNode {\n    export interface ConstructorProperties extends PaintNode.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class RootNode extends PaintNode {\n    static $gtype: GObject.GType<RootNode>;\n\n    constructor(properties?: Partial<RootNode.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<RootNode.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](framebuffer: Cogl.Framebuffer, clear_color: Color, clear_flags: Cogl.BufferBit): RootNode;\n}\nexport module RotateAction {\n    export interface ConstructorProperties extends GestureAction.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class RotateAction extends GestureAction {\n    static $gtype: GObject.GType<RotateAction>;\n\n    constructor(properties?: Partial<RotateAction.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<RotateAction.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"rotate\", callback: (_source: this, actor: Actor, angle: number) => boolean): number;\n    connect_after(signal: \"rotate\", callback: (_source: this, actor: Actor, angle: number) => boolean): number;\n    emit(signal: \"rotate\", actor: Actor, angle: number): void;\n\n    // Constructors\n\n    static [\"new\"](): RotateAction;\n}\nexport module Script {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        filename: string;\n        filename_set: boolean;\n        filenameSet: boolean;\n        translation_domain: string;\n        translationDomain: string;\n    }\n}\nexport class Script extends GObject.Object {\n    static $gtype: GObject.GType<Script>;\n\n    constructor(properties?: Partial<Script.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Script.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get filename(): string;\n    get filename_set(): boolean;\n    get filenameSet(): boolean;\n    get translation_domain(): string;\n    set translation_domain(val: string);\n    get translationDomain(): string;\n    set translationDomain(val: string);\n\n    // Constructors\n\n    static [\"new\"](): Script;\n\n    // Members\n\n    add_search_paths(paths: string[]): void;\n    connect_signals(user_data?: any | null): void;\n    connect_signals_full(func: ScriptConnectFunc): void;\n    ensure_objects(): void;\n    get_object<T = GObject.Object>(name: string): T;\n    get_translation_domain(): string;\n    get_type_from_name(type_name: string): GObject.GType;\n    list_objects(): GObject.Object[];\n    load_from_data(data: string, length: number): number;\n    load_from_file(filename: string): number;\n    load_from_resource(resource_path: string): number;\n    lookup_filename(filename: string): string;\n    set_translation_domain(domain?: string | null): void;\n    unmerge_objects(merge_id: number): void;\n    vfunc_get_type_from_name(type_name: string): GObject.GType;\n}\nexport module ScrollActor {\n    export interface ConstructorProperties extends Actor.ConstructorProperties {\n        [key: string]: any;\n        scroll_mode: ScrollMode;\n        scrollMode: ScrollMode;\n    }\n}\nexport class ScrollActor extends Actor implements Atk.ImplementorIface, Animatable, Container, Scriptable {\n    static $gtype: GObject.GType<ScrollActor>;\n\n    constructor(properties?: Partial<ScrollActor.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ScrollActor.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get scroll_mode(): ScrollMode;\n    set scroll_mode(val: ScrollMode);\n    get scrollMode(): ScrollMode;\n    set scrollMode(val: ScrollMode);\n\n    // Constructors\n\n    static [\"new\"](): ScrollActor;\n\n    // Members\n\n    get_scroll_mode(): ScrollMode;\n    scroll_to_point(point: Graphene.Point): void;\n    scroll_to_rect(rect: Graphene.Rect): void;\n    set_scroll_mode(mode: ScrollMode): void;\n\n    // Implemented Members\n\n    find_property(property_name: string): GObject.ParamSpec;\n    get_actor(): Actor;\n    get_initial_state(property_name: string, value: GObject.Value | any): void;\n    interpolate_value(property_name: string, interval: Interval, progress: number): [boolean, unknown];\n    set_final_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_find_property(property_name: string): GObject.ParamSpec;\n    vfunc_get_actor(): Actor;\n    vfunc_get_initial_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_interpolate_value(property_name: string, interval: Interval, progress: number): [boolean, unknown];\n    vfunc_set_final_state(property_name: string, value: GObject.Value | any): void;\n    add_actor(actor: Actor): void;\n    child_get_property(child: Actor, property: string, value: GObject.Value | any): void;\n    child_notify(child: Actor, pspec: GObject.ParamSpec): void;\n    child_set_property(child: Actor, property: string, value: GObject.Value | any): void;\n    create_child_meta(actor: Actor): void;\n    destroy_child_meta(actor: Actor): void;\n    find_child_by_name(child_name: string): Actor;\n    get_child_meta(actor: Actor): ChildMeta;\n    remove_actor(actor: Actor): void;\n    vfunc_actor_added(actor: Actor): void;\n    vfunc_actor_removed(actor: Actor): void;\n    vfunc_add(actor: Actor): void;\n    vfunc_child_notify(child: Actor, pspec: GObject.ParamSpec): void;\n    vfunc_create_child_meta(actor: Actor): void;\n    vfunc_destroy_child_meta(actor: Actor): void;\n    vfunc_get_child_meta(actor: Actor): ChildMeta;\n    vfunc_remove(actor: Actor): void;\n    get_id(): string;\n    parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    set_id(id_: string): void;\n    vfunc_get_id(): string;\n    vfunc_parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    vfunc_set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id_: string): void;\n}\nexport module Seat {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        touch_mode: boolean;\n        touchMode: boolean;\n    }\n}\nexport abstract class Seat extends GObject.Object {\n    static $gtype: GObject.GType<Seat>;\n\n    constructor(properties?: Partial<Seat.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Seat.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get touch_mode(): boolean;\n    get touchMode(): boolean;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"device-added\", callback: (_source: this, object: InputDevice) => void): number;\n    connect_after(signal: \"device-added\", callback: (_source: this, object: InputDevice) => void): number;\n    emit(signal: \"device-added\", object: InputDevice): void;\n    connect(signal: \"device-removed\", callback: (_source: this, object: InputDevice) => void): number;\n    connect_after(signal: \"device-removed\", callback: (_source: this, object: InputDevice) => void): number;\n    emit(signal: \"device-removed\", object: InputDevice): void;\n    connect(signal: \"is-unfocus-inhibited-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"is-unfocus-inhibited-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"is-unfocus-inhibited-changed\"): void;\n    connect(\n        signal: \"kbd-a11y-flags-changed\",\n        callback: (_source: this, settings_flags: number, changed_mask: number) => void\n    ): number;\n    connect_after(\n        signal: \"kbd-a11y-flags-changed\",\n        callback: (_source: this, settings_flags: number, changed_mask: number) => void\n    ): number;\n    emit(signal: \"kbd-a11y-flags-changed\", settings_flags: number, changed_mask: number): void;\n    connect(\n        signal: \"kbd-a11y-mods-state-changed\",\n        callback: (_source: this, latched_mask: number, locked_mask: number) => void\n    ): number;\n    connect_after(\n        signal: \"kbd-a11y-mods-state-changed\",\n        callback: (_source: this, latched_mask: number, locked_mask: number) => void\n    ): number;\n    emit(signal: \"kbd-a11y-mods-state-changed\", latched_mask: number, locked_mask: number): void;\n    connect(\n        signal: \"ptr-a11y-dwell-click-type-changed\",\n        callback: (_source: this, click_type: PointerA11yDwellClickType) => void\n    ): number;\n    connect_after(\n        signal: \"ptr-a11y-dwell-click-type-changed\",\n        callback: (_source: this, click_type: PointerA11yDwellClickType) => void\n    ): number;\n    emit(signal: \"ptr-a11y-dwell-click-type-changed\", click_type: PointerA11yDwellClickType): void;\n    connect(\n        signal: \"ptr-a11y-timeout-started\",\n        callback: (_source: this, device: InputDevice, timeout_type: PointerA11yTimeoutType, delay: number) => void\n    ): number;\n    connect_after(\n        signal: \"ptr-a11y-timeout-started\",\n        callback: (_source: this, device: InputDevice, timeout_type: PointerA11yTimeoutType, delay: number) => void\n    ): number;\n    emit(\n        signal: \"ptr-a11y-timeout-started\",\n        device: InputDevice,\n        timeout_type: PointerA11yTimeoutType,\n        delay: number\n    ): void;\n    connect(\n        signal: \"ptr-a11y-timeout-stopped\",\n        callback: (_source: this, device: InputDevice, timeout_type: PointerA11yTimeoutType, clicked: boolean) => void\n    ): number;\n    connect_after(\n        signal: \"ptr-a11y-timeout-stopped\",\n        callback: (_source: this, device: InputDevice, timeout_type: PointerA11yTimeoutType, clicked: boolean) => void\n    ): number;\n    emit(\n        signal: \"ptr-a11y-timeout-stopped\",\n        device: InputDevice,\n        timeout_type: PointerA11yTimeoutType,\n        clicked: boolean\n    ): void;\n\n    // Members\n\n    bell_notify(): void;\n    create_virtual_device(device_type: InputDeviceType): VirtualInputDevice;\n    ensure_a11y_state(): void;\n    get_keyboard(): InputDevice;\n    get_keymap(): Keymap;\n    get_pointer(): InputDevice;\n    get_pointer_a11y_settings(settings: PointerA11ySettings): void;\n    get_touch_mode(): boolean;\n    handle_event_post(event: Event): boolean;\n    inhibit_unfocus(): void;\n    is_unfocus_inhibited(): boolean;\n    list_devices(): InputDevice[];\n    query_state(device: InputDevice, sequence: EventSequence, coords: Graphene.Point, modifiers: ModifierType): boolean;\n    set_pointer_a11y_dwell_click_type(click_type: PointerA11yDwellClickType): void;\n    set_pointer_a11y_settings(settings: PointerA11ySettings): void;\n    uninhibit_unfocus(): void;\n    warp_pointer(x: number, y: number): void;\n    vfunc_bell_notify(): void;\n    vfunc_create_virtual_device(device_type: InputDeviceType): VirtualInputDevice;\n    vfunc_get_keyboard(): InputDevice;\n    vfunc_get_keymap(): Keymap;\n    vfunc_get_pointer(): InputDevice;\n    vfunc_grab(time: number): GrabState;\n    vfunc_handle_event_post(event: Event): boolean;\n    vfunc_query_state(\n        device: InputDevice,\n        sequence: EventSequence,\n        coords: Graphene.Point,\n        modifiers: ModifierType\n    ): boolean;\n    vfunc_ungrab(time: number): void;\n    vfunc_warp_pointer(x: number, y: number): void;\n}\nexport module Settings {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        backend: Backend;\n        dnd_drag_threshold: number;\n        dndDragThreshold: number;\n        double_click_distance: number;\n        doubleClickDistance: number;\n        double_click_time: number;\n        doubleClickTime: number;\n        font_antialias: number;\n        fontAntialias: number;\n        font_dpi: number;\n        fontDpi: number;\n        font_hint_style: string;\n        fontHintStyle: string;\n        font_hinting: number;\n        fontHinting: number;\n        font_name: string;\n        fontName: string;\n        font_subpixel_order: string;\n        fontSubpixelOrder: string;\n        fontconfig_timestamp: number;\n        fontconfigTimestamp: number;\n        long_press_duration: number;\n        longPressDuration: number;\n        password_hint_time: number;\n        passwordHintTime: number;\n        unscaled_font_dpi: number;\n        unscaledFontDpi: number;\n    }\n}\nexport class Settings extends GObject.Object {\n    static $gtype: GObject.GType<Settings>;\n\n    constructor(properties?: Partial<Settings.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Settings.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    set backend(val: Backend);\n    get dnd_drag_threshold(): number;\n    set dnd_drag_threshold(val: number);\n    get dndDragThreshold(): number;\n    set dndDragThreshold(val: number);\n    get double_click_distance(): number;\n    set double_click_distance(val: number);\n    get doubleClickDistance(): number;\n    set doubleClickDistance(val: number);\n    get double_click_time(): number;\n    set double_click_time(val: number);\n    get doubleClickTime(): number;\n    set doubleClickTime(val: number);\n    get font_antialias(): number;\n    set font_antialias(val: number);\n    get fontAntialias(): number;\n    set fontAntialias(val: number);\n    get font_dpi(): number;\n    set font_dpi(val: number);\n    get fontDpi(): number;\n    set fontDpi(val: number);\n    get font_hint_style(): string;\n    set font_hint_style(val: string);\n    get fontHintStyle(): string;\n    set fontHintStyle(val: string);\n    get font_hinting(): number;\n    set font_hinting(val: number);\n    get fontHinting(): number;\n    set fontHinting(val: number);\n    get font_name(): string;\n    set font_name(val: string);\n    get fontName(): string;\n    set fontName(val: string);\n    get font_subpixel_order(): string;\n    set font_subpixel_order(val: string);\n    get fontSubpixelOrder(): string;\n    set fontSubpixelOrder(val: string);\n    set fontconfig_timestamp(val: number);\n    set fontconfigTimestamp(val: number);\n    get long_press_duration(): number;\n    set long_press_duration(val: number);\n    get longPressDuration(): number;\n    set longPressDuration(val: number);\n    get password_hint_time(): number;\n    set password_hint_time(val: number);\n    get passwordHintTime(): number;\n    set passwordHintTime(val: number);\n    set unscaled_font_dpi(val: number);\n    set unscaledFontDpi(val: number);\n\n    // Members\n\n    static get_default(): Settings;\n}\nexport module ShaderEffect {\n    export interface ConstructorProperties extends OffscreenEffect.ConstructorProperties {\n        [key: string]: any;\n        shader_type: ShaderType;\n        shaderType: ShaderType;\n    }\n}\nexport class ShaderEffect extends OffscreenEffect {\n    static $gtype: GObject.GType<ShaderEffect>;\n\n    constructor(properties?: Partial<ShaderEffect.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ShaderEffect.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    set shader_type(val: ShaderType);\n    set shaderType(val: ShaderType);\n\n    // Constructors\n\n    static [\"new\"](shader_type: ShaderType): ShaderEffect;\n\n    // Members\n\n    get_program(): Cogl.Handle;\n    get_shader(): Cogl.Handle;\n    set_shader_source(source: string): boolean;\n    set_uniform_value(name: string, value: GObject.Value | any): void;\n    vfunc_get_static_shader_source(): string;\n}\nexport module ShaderFloat {\n    export interface ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class ShaderFloat {\n    static $gtype: GObject.GType<ShaderFloat>;\n\n    constructor(properties?: Partial<ShaderFloat.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ShaderFloat.ConstructorProperties>, ...args: any[]): void;\n}\nexport module ShaderInt {\n    export interface ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class ShaderInt {\n    static $gtype: GObject.GType<ShaderInt>;\n\n    constructor(properties?: Partial<ShaderInt.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ShaderInt.ConstructorProperties>, ...args: any[]): void;\n}\nexport module ShaderMatrix {\n    export interface ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class ShaderMatrix {\n    static $gtype: GObject.GType<ShaderMatrix>;\n\n    constructor(properties?: Partial<ShaderMatrix.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ShaderMatrix.ConstructorProperties>, ...args: any[]): void;\n}\nexport module SnapConstraint {\n    export interface ConstructorProperties extends Constraint.ConstructorProperties {\n        [key: string]: any;\n        from_edge: SnapEdge;\n        fromEdge: SnapEdge;\n        offset: number;\n        source: Actor;\n        to_edge: SnapEdge;\n        toEdge: SnapEdge;\n    }\n}\nexport class SnapConstraint extends Constraint {\n    static $gtype: GObject.GType<SnapConstraint>;\n\n    constructor(properties?: Partial<SnapConstraint.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<SnapConstraint.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get from_edge(): SnapEdge;\n    set from_edge(val: SnapEdge);\n    get fromEdge(): SnapEdge;\n    set fromEdge(val: SnapEdge);\n    get offset(): number;\n    set offset(val: number);\n    get source(): Actor;\n    set source(val: Actor);\n    get to_edge(): SnapEdge;\n    set to_edge(val: SnapEdge);\n    get toEdge(): SnapEdge;\n    set toEdge(val: SnapEdge);\n\n    // Constructors\n\n    static [\"new\"](source: Actor | null, from_edge: SnapEdge, to_edge: SnapEdge, offset: number): SnapConstraint;\n\n    // Members\n\n    get_edges(): [SnapEdge, SnapEdge];\n    get_offset(): number;\n    get_source(): Actor;\n    set_edges(from_edge: SnapEdge, to_edge: SnapEdge): void;\n    set_offset(offset: number): void;\n    set_source(source?: Actor | null): void;\n}\nexport module Stage {\n    export interface ConstructorProperties extends Actor.ConstructorProperties {\n        [key: string]: any;\n        key_focus: Actor;\n        keyFocus: Actor;\n        perspective: Perspective;\n        title: string;\n    }\n}\nexport class Stage extends Actor implements Atk.ImplementorIface, Animatable, Container, Scriptable {\n    static $gtype: GObject.GType<Stage>;\n\n    constructor(properties?: Partial<Stage.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Stage.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get key_focus(): Actor;\n    set key_focus(val: Actor);\n    get keyFocus(): Actor;\n    set keyFocus(val: Actor);\n    get perspective(): Perspective;\n    get title(): string;\n    set title(val: string);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"activate\", callback: (_source: this) => void): number;\n    connect_after(signal: \"activate\", callback: (_source: this) => void): number;\n    emit(signal: \"activate\"): void;\n    connect(signal: \"after-paint\", callback: (_source: this, view: StageView, frame: Frame) => void): number;\n    connect_after(signal: \"after-paint\", callback: (_source: this, view: StageView, frame: Frame) => void): number;\n    emit(signal: \"after-paint\", view: StageView, frame: Frame): void;\n    connect(signal: \"after-update\", callback: (_source: this, view: StageView, frame: Frame) => void): number;\n    connect_after(signal: \"after-update\", callback: (_source: this, view: StageView, frame: Frame) => void): number;\n    emit(signal: \"after-update\", view: StageView, frame: Frame): void;\n    connect(signal: \"before-paint\", callback: (_source: this, view: StageView, frame: Frame) => void): number;\n    connect_after(signal: \"before-paint\", callback: (_source: this, view: StageView, frame: Frame) => void): number;\n    emit(signal: \"before-paint\", view: StageView, frame: Frame): void;\n    connect(signal: \"before-update\", callback: (_source: this, view: StageView, frame: Frame) => void): number;\n    connect_after(signal: \"before-update\", callback: (_source: this, view: StageView, frame: Frame) => void): number;\n    emit(signal: \"before-update\", view: StageView, frame: Frame): void;\n    connect(signal: \"deactivate\", callback: (_source: this) => void): number;\n    connect_after(signal: \"deactivate\", callback: (_source: this) => void): number;\n    emit(signal: \"deactivate\"): void;\n    connect(signal: \"gl-video-memory-purged\", callback: (_source: this) => void): number;\n    connect_after(signal: \"gl-video-memory-purged\", callback: (_source: this) => void): number;\n    emit(signal: \"gl-video-memory-purged\"): void;\n    connect(\n        signal: \"paint-view\",\n        callback: (_source: this, view: StageView, redraw_clip: cairo.Region, frame: Frame) => void\n    ): number;\n    connect_after(\n        signal: \"paint-view\",\n        callback: (_source: this, view: StageView, redraw_clip: cairo.Region, frame: Frame) => void\n    ): number;\n    emit(signal: \"paint-view\", view: StageView, redraw_clip: cairo.Region, frame: Frame): void;\n    connect(signal: \"prepare-frame\", callback: (_source: this, view: StageView, frame: Frame) => void): number;\n    connect_after(signal: \"prepare-frame\", callback: (_source: this, view: StageView, frame: Frame) => void): number;\n    emit(signal: \"prepare-frame\", view: StageView, frame: Frame): void;\n    connect(signal: \"presented\", callback: (_source: this, view: StageView, frame_info: any | null) => void): number;\n    connect_after(\n        signal: \"presented\",\n        callback: (_source: this, view: StageView, frame_info: any | null) => void\n    ): number;\n    emit(signal: \"presented\", view: StageView, frame_info: any | null): void;\n\n    // Members\n\n    capture_view_into(view: StageView, rect: cairo.RectangleInt, data: number, stride: number): void;\n    clear_stage_views(): void;\n    ensure_viewport(): void;\n    get_actor_at_pos(pick_mode: PickMode, x: number, y: number): Actor;\n    get_capture_final_size(rect: cairo.RectangleInt): [boolean, number | null, number | null, number | null];\n    get_device_actor(device: InputDevice, sequence?: EventSequence | null): Actor | null;\n    get_event_actor(event: Event): Actor | null;\n    get_frame_counter(): number;\n    get_grab_actor(): Actor | null;\n    get_key_focus(): Actor;\n    get_perspective(): Perspective | null;\n    get_title(): string;\n    grab(actor: Actor): Grab;\n    paint_to_buffer(\n        rect: cairo.RectangleInt,\n        scale: number,\n        data: Uint8Array | string,\n        stride: number,\n        format: Cogl.PixelFormat,\n        paint_flags: PaintFlag\n    ): boolean;\n    paint_to_content(rect: cairo.RectangleInt, scale: number, paint_flags: PaintFlag): Content;\n    paint_to_framebuffer(\n        framebuffer: Cogl.Framebuffer,\n        rect: cairo.RectangleInt,\n        scale: number,\n        paint_flags: PaintFlag\n    ): void;\n    read_pixels(x: number, y: number, width: number, height: number): Uint8Array;\n    repick_device(device: InputDevice): void;\n    schedule_update(): void;\n    set_key_focus(actor?: Actor | null): void;\n    set_minimum_size(width: number, height: number): void;\n    set_title(title: string): void;\n    update_device(\n        device: InputDevice,\n        sequence: EventSequence,\n        source_device: InputDevice,\n        point: Graphene.Point,\n        time: number,\n        new_actor: Actor,\n        region: cairo.Region,\n        emit_crossing: boolean\n    ): void;\n    vfunc_activate(): void;\n    vfunc_before_paint(view: StageView, frame: Frame): void;\n    vfunc_deactivate(): void;\n    vfunc_paint_view(view: StageView, redraw_clip: cairo.Region, frame: Frame): void;\n\n    // Implemented Members\n\n    find_property(property_name: string): GObject.ParamSpec;\n    get_actor(): Actor;\n    get_initial_state(property_name: string, value: GObject.Value | any): void;\n    interpolate_value(property_name: string, interval: Interval, progress: number): [boolean, unknown];\n    set_final_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_find_property(property_name: string): GObject.ParamSpec;\n    vfunc_get_actor(): Actor;\n    vfunc_get_initial_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_interpolate_value(property_name: string, interval: Interval, progress: number): [boolean, unknown];\n    vfunc_set_final_state(property_name: string, value: GObject.Value | any): void;\n    add_actor(actor: Actor): void;\n    child_get_property(child: Actor, property: string, value: GObject.Value | any): void;\n    child_notify(child: Actor, pspec: GObject.ParamSpec): void;\n    child_set_property(child: Actor, property: string, value: GObject.Value | any): void;\n    create_child_meta(actor: Actor): void;\n    destroy_child_meta(actor: Actor): void;\n    find_child_by_name(child_name: string): Actor;\n    get_child_meta(actor: Actor): ChildMeta;\n    remove_actor(actor: Actor): void;\n    vfunc_actor_added(actor: Actor): void;\n    vfunc_actor_removed(actor: Actor): void;\n    vfunc_add(actor: Actor): void;\n    vfunc_child_notify(child: Actor, pspec: GObject.ParamSpec): void;\n    vfunc_create_child_meta(actor: Actor): void;\n    vfunc_destroy_child_meta(actor: Actor): void;\n    vfunc_get_child_meta(actor: Actor): ChildMeta;\n    vfunc_remove(actor: Actor): void;\n    get_id(): string;\n    parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    set_id(id_: string): void;\n    vfunc_get_id(): string;\n    vfunc_parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    vfunc_set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id_: string): void;\n}\nexport module StageManager {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        default_stage: Stage;\n        defaultStage: Stage;\n    }\n}\nexport class StageManager extends GObject.Object {\n    static $gtype: GObject.GType<StageManager>;\n\n    constructor(properties?: Partial<StageManager.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<StageManager.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get default_stage(): Stage;\n    get defaultStage(): Stage;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"stage-added\", callback: (_source: this, stage: Stage) => void): number;\n    connect_after(signal: \"stage-added\", callback: (_source: this, stage: Stage) => void): number;\n    emit(signal: \"stage-added\", stage: Stage): void;\n    connect(signal: \"stage-removed\", callback: (_source: this, stage: Stage) => void): number;\n    connect_after(signal: \"stage-removed\", callback: (_source: this, stage: Stage) => void): number;\n    emit(signal: \"stage-removed\", stage: Stage): void;\n\n    // Members\n\n    get_default_stage(): Stage;\n    list_stages(): Stage[];\n    peek_stages(): Stage[];\n    vfunc_stage_added(stage: Stage): void;\n    vfunc_stage_removed(stage: Stage): void;\n    static get_default(): StageManager;\n}\nexport module StageView {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        framebuffer: Cogl.Framebuffer;\n        layout: cairo.RectangleInt;\n        name: string;\n        offscreen: Cogl.Offscreen;\n        refresh_rate: number;\n        refreshRate: number;\n        scale: number;\n        stage: Stage;\n        use_shadowfb: boolean;\n        useShadowfb: boolean;\n        vblank_duration_us: number;\n        vblankDurationUs: number;\n    }\n}\nexport class StageView extends GObject.Object {\n    static $gtype: GObject.GType<StageView>;\n\n    constructor(properties?: Partial<StageView.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<StageView.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get framebuffer(): Cogl.Framebuffer;\n    set framebuffer(val: Cogl.Framebuffer);\n    get layout(): cairo.RectangleInt;\n    set layout(val: cairo.RectangleInt);\n    get name(): string;\n    get offscreen(): Cogl.Offscreen;\n    get refresh_rate(): number;\n    set refresh_rate(val: number);\n    get refreshRate(): number;\n    set refreshRate(val: number);\n    get scale(): number;\n    set scale(val: number);\n    get stage(): Stage;\n    get use_shadowfb(): boolean;\n    get useShadowfb(): boolean;\n    get vblank_duration_us(): number;\n    get vblankDurationUs(): number;\n\n    // Members\n\n    assign_next_scanout(scanout: Cogl.Scanout): void;\n    destroy(): void;\n    get_framebuffer(): Cogl.Framebuffer;\n    get_layout(rect: cairo.RectangleInt): void;\n    get_offscreen_transformation_matrix(matrix: Graphene.Matrix): void;\n    get_onscreen(): Cogl.Framebuffer;\n    get_refresh_rate(): number;\n    get_scale(): number;\n    has_shadowfb(): boolean;\n    invalidate_offscreen_blit_pipeline(): void;\n    schedule_update_now(): void;\n    vfunc_get_offscreen_transformation_matrix(matrix: Graphene.Matrix): void;\n    vfunc_new_frame(): Frame;\n    vfunc_setup_offscreen_blit_pipeline(pipeline: Cogl.Pipeline): void;\n    vfunc_transform_rect_to_onscreen(\n        src_rect: cairo.RectangleInt,\n        dst_width: number,\n        dst_height: number,\n        dst_rect: cairo.RectangleInt\n    ): void;\n}\nexport module SwipeAction {\n    export interface ConstructorProperties extends GestureAction.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class SwipeAction extends GestureAction {\n    static $gtype: GObject.GType<SwipeAction>;\n\n    constructor(properties?: Partial<SwipeAction.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<SwipeAction.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"swept\", callback: (_source: this, actor: Actor, direction: SwipeDirection) => void): number;\n    connect_after(signal: \"swept\", callback: (_source: this, actor: Actor, direction: SwipeDirection) => void): number;\n    emit(signal: \"swept\", actor: Actor, direction: SwipeDirection): void;\n    connect(signal: \"swipe\", callback: (_source: this, actor: Actor, direction: SwipeDirection) => boolean): number;\n    connect_after(\n        signal: \"swipe\",\n        callback: (_source: this, actor: Actor, direction: SwipeDirection) => boolean\n    ): number;\n    emit(signal: \"swipe\", actor: Actor, direction: SwipeDirection): void;\n\n    // Constructors\n\n    static [\"new\"](): SwipeAction;\n\n    // Members\n\n    vfunc_swept(actor: Actor, direction: SwipeDirection): void;\n}\nexport module TapAction {\n    export interface ConstructorProperties extends GestureAction.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class TapAction extends GestureAction {\n    static $gtype: GObject.GType<TapAction>;\n\n    constructor(properties?: Partial<TapAction.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<TapAction.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"tap\", callback: (_source: this, actor: Actor) => void): number;\n    connect_after(signal: \"tap\", callback: (_source: this, actor: Actor) => void): number;\n    emit(signal: \"tap\", actor: Actor): void;\n\n    // Constructors\n\n    static [\"new\"](): TapAction;\n\n    // Members\n\n    vfunc_tap(actor: Actor): boolean;\n}\nexport module Text {\n    export interface ConstructorProperties extends Actor.ConstructorProperties {\n        [key: string]: any;\n        activatable: boolean;\n        attributes: Pango.AttrList;\n        buffer: TextBuffer;\n        color: Color;\n        cursor_color: Color;\n        cursorColor: Color;\n        cursor_color_set: boolean;\n        cursorColorSet: boolean;\n        cursor_position: number;\n        cursorPosition: number;\n        cursor_size: number;\n        cursorSize: number;\n        cursor_visible: boolean;\n        cursorVisible: boolean;\n        editable: boolean;\n        ellipsize: Pango.EllipsizeMode;\n        font_description: Pango.FontDescription;\n        fontDescription: Pango.FontDescription;\n        font_name: string;\n        fontName: string;\n        input_hints: InputContentHintFlags;\n        inputHints: InputContentHintFlags;\n        input_purpose: InputContentPurpose;\n        inputPurpose: InputContentPurpose;\n        justify: boolean;\n        line_alignment: Pango.Alignment;\n        lineAlignment: Pango.Alignment;\n        line_wrap: boolean;\n        lineWrap: boolean;\n        line_wrap_mode: Pango.WrapMode;\n        lineWrapMode: Pango.WrapMode;\n        max_length: number;\n        maxLength: number;\n        password_char: number;\n        passwordChar: number;\n        position: number | any;\n        selectable: boolean;\n        selected_text_color: Color;\n        selectedTextColor: Color;\n        selected_text_color_set: boolean;\n        selectedTextColorSet: boolean;\n        selection_bound: number;\n        selectionBound: number;\n        selection_color: Color;\n        selectionColor: Color;\n        selection_color_set: boolean;\n        selectionColorSet: boolean;\n        single_line_mode: boolean;\n        singleLineMode: boolean;\n        text: string;\n        use_markup: boolean;\n        useMarkup: boolean;\n    }\n}\nexport class Text extends Actor implements Atk.ImplementorIface, Animatable, Container, Scriptable {\n    static $gtype: GObject.GType<Text>;\n\n    constructor(properties?: Partial<Text.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Text.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get activatable(): boolean;\n    set activatable(val: boolean);\n    get attributes(): Pango.AttrList;\n    set attributes(val: Pango.AttrList);\n    get buffer(): TextBuffer;\n    set buffer(val: TextBuffer);\n    get color(): Color;\n    set color(val: Color);\n    get cursor_color(): Color;\n    set cursor_color(val: Color);\n    get cursorColor(): Color;\n    set cursorColor(val: Color);\n    get cursor_color_set(): boolean;\n    get cursorColorSet(): boolean;\n    get cursor_position(): number;\n    set cursor_position(val: number);\n    get cursorPosition(): number;\n    set cursorPosition(val: number);\n    get cursor_size(): number;\n    set cursor_size(val: number);\n    get cursorSize(): number;\n    set cursorSize(val: number);\n    get cursor_visible(): boolean;\n    set cursor_visible(val: boolean);\n    get cursorVisible(): boolean;\n    set cursorVisible(val: boolean);\n    get editable(): boolean;\n    set editable(val: boolean);\n    get ellipsize(): Pango.EllipsizeMode;\n    set ellipsize(val: Pango.EllipsizeMode);\n    get font_description(): Pango.FontDescription;\n    set font_description(val: Pango.FontDescription);\n    get fontDescription(): Pango.FontDescription;\n    set fontDescription(val: Pango.FontDescription);\n    get font_name(): string;\n    set font_name(val: string);\n    get fontName(): string;\n    set fontName(val: string);\n    get input_hints(): InputContentHintFlags;\n    set input_hints(val: InputContentHintFlags);\n    get inputHints(): InputContentHintFlags;\n    set inputHints(val: InputContentHintFlags);\n    get input_purpose(): InputContentPurpose;\n    set input_purpose(val: InputContentPurpose);\n    get inputPurpose(): InputContentPurpose;\n    set inputPurpose(val: InputContentPurpose);\n    get justify(): boolean;\n    set justify(val: boolean);\n    get line_alignment(): Pango.Alignment;\n    set line_alignment(val: Pango.Alignment);\n    get lineAlignment(): Pango.Alignment;\n    set lineAlignment(val: Pango.Alignment);\n    get line_wrap(): boolean;\n    set line_wrap(val: boolean);\n    get lineWrap(): boolean;\n    set lineWrap(val: boolean);\n    get line_wrap_mode(): Pango.WrapMode;\n    set line_wrap_mode(val: Pango.WrapMode);\n    get lineWrapMode(): Pango.WrapMode;\n    set lineWrapMode(val: Pango.WrapMode);\n    get max_length(): number;\n    set max_length(val: number);\n    get maxLength(): number;\n    set maxLength(val: number);\n    get password_char(): number;\n    set password_char(val: number);\n    get passwordChar(): number;\n    set passwordChar(val: number);\n    // This accessor conflicts with another accessor's type in a parent class or interface.\n    // @ts-expect-error\n    get position(): number;\n    // This accessor conflicts with another accessor's type in a parent class or interface.\n    // @ts-expect-error\n    set position(val: number);\n    get selectable(): boolean;\n    set selectable(val: boolean);\n    get selected_text_color(): Color;\n    set selected_text_color(val: Color);\n    get selectedTextColor(): Color;\n    set selectedTextColor(val: Color);\n    get selected_text_color_set(): boolean;\n    get selectedTextColorSet(): boolean;\n    get selection_bound(): number;\n    set selection_bound(val: number);\n    get selectionBound(): number;\n    set selectionBound(val: number);\n    get selection_color(): Color;\n    set selection_color(val: Color);\n    get selectionColor(): Color;\n    set selectionColor(val: Color);\n    get selection_color_set(): boolean;\n    get selectionColorSet(): boolean;\n    get single_line_mode(): boolean;\n    set single_line_mode(val: boolean);\n    get singleLineMode(): boolean;\n    set singleLineMode(val: boolean);\n    get text(): string;\n    set text(val: string);\n    get use_markup(): boolean;\n    set use_markup(val: boolean);\n    get useMarkup(): boolean;\n    set useMarkup(val: boolean);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"activate\", callback: (_source: this) => void): number;\n    connect_after(signal: \"activate\", callback: (_source: this) => void): number;\n    emit(signal: \"activate\"): void;\n    connect(signal: \"cursor-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"cursor-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"cursor-changed\"): void;\n    connect(signal: \"cursor-event\", callback: (_source: this, rect: Graphene.Rect) => void): number;\n    connect_after(signal: \"cursor-event\", callback: (_source: this, rect: Graphene.Rect) => void): number;\n    emit(signal: \"cursor-event\", rect: Graphene.Rect): void;\n    connect(signal: \"delete-text\", callback: (_source: this, start_pos: number, end_pos: number) => void): number;\n    connect_after(signal: \"delete-text\", callback: (_source: this, start_pos: number, end_pos: number) => void): number;\n    emit(signal: \"delete-text\", start_pos: number, end_pos: number): void;\n    connect(\n        signal: \"insert-text\",\n        callback: (_source: this, new_text: string, new_text_length: number, position: any | null) => void\n    ): number;\n    connect_after(\n        signal: \"insert-text\",\n        callback: (_source: this, new_text: string, new_text_length: number, position: any | null) => void\n    ): number;\n    emit(signal: \"insert-text\", new_text: string, new_text_length: number, position: any | null): void;\n    connect(signal: \"text-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"text-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"text-changed\"): void;\n\n    // Constructors\n\n    static [\"new\"](): Text;\n    static new_full(font_name: string, text: string, color: Color): Text;\n    static new_with_buffer(buffer: TextBuffer): Text;\n    static new_with_text(font_name: string | null, text: string): Text;\n\n    // Members\n\n    activate(): boolean;\n    coords_to_position(x: number, y: number): number;\n    delete_chars(n_chars: number): void;\n    delete_selection(): boolean;\n    delete_text(start_pos: number, end_pos: number): void;\n    get_activatable(): boolean;\n    get_attributes(): Pango.AttrList;\n    get_buffer(): TextBuffer;\n    get_chars(start_pos: number, end_pos: number): string;\n    get_color(): Color;\n    get_cursor_color(): Color;\n    get_cursor_position(): number;\n    get_cursor_rect(): Graphene.Rect;\n    get_cursor_size(): number;\n    get_cursor_visible(): boolean;\n    get_editable(): boolean;\n    get_ellipsize(): Pango.EllipsizeMode;\n    get_font_description(): Pango.FontDescription;\n    get_font_name(): string;\n    get_input_hints(): InputContentHintFlags;\n    get_input_purpose(): InputContentPurpose;\n    get_justify(): boolean;\n    get_layout(): Pango.Layout;\n    get_layout_offsets(): [number, number];\n    get_line_alignment(): Pango.Alignment;\n    get_line_wrap(): boolean;\n    get_line_wrap_mode(): Pango.WrapMode;\n    get_max_length(): number;\n    get_password_char(): number;\n    get_selectable(): boolean;\n    get_selected_text_color(): Color;\n    get_selection(): string;\n    get_selection_bound(): number;\n    get_selection_color(): Color;\n    get_single_line_mode(): boolean;\n    get_text(): string;\n    get_use_markup(): boolean;\n    has_preedit(): boolean;\n    insert_text(text: string, position: number): void;\n    insert_unichar(wc: number): void;\n    position_to_coords(position: number): [boolean, number, number, number];\n    set_activatable(activatable: boolean): void;\n    set_attributes(attrs?: Pango.AttrList | null): void;\n    set_buffer(buffer: TextBuffer): void;\n    set_color(color: Color): void;\n    set_cursor_color(color?: Color | null): void;\n    set_cursor_position(position: number): void;\n    set_cursor_size(size: number): void;\n    set_cursor_visible(cursor_visible: boolean): void;\n    set_editable(editable: boolean): void;\n    set_ellipsize(mode: Pango.EllipsizeMode): void;\n    set_font_description(font_desc: Pango.FontDescription): void;\n    set_font_name(font_name?: string | null): void;\n    set_input_hints(hints: InputContentHintFlags): void;\n    set_input_purpose(purpose: InputContentPurpose): void;\n    set_justify(justify: boolean): void;\n    set_line_alignment(alignment: Pango.Alignment): void;\n    set_line_wrap(line_wrap: boolean): void;\n    set_line_wrap_mode(wrap_mode: Pango.WrapMode): void;\n    set_markup(markup?: string | null): void;\n    set_max_length(max: number): void;\n    set_password_char(wc: number): void;\n    set_preedit_string(preedit_str: string | null, preedit_attrs: Pango.AttrList | null, cursor_pos: number): void;\n    set_selectable(selectable: boolean): void;\n    set_selected_text_color(color?: Color | null): void;\n    set_selection(start_pos: number, end_pos: number): void;\n    set_selection_bound(selection_bound: number): void;\n    set_selection_color(color?: Color | null): void;\n    set_single_line_mode(single_line: boolean): void;\n    set_text(text?: string | null): void;\n    set_use_markup(setting: boolean): void;\n    vfunc_activate(): void;\n    vfunc_cursor_changed(): void;\n    vfunc_cursor_event(rect: Graphene.Rect): void;\n    vfunc_text_changed(): void;\n\n    // Implemented Members\n\n    find_property(property_name: string): GObject.ParamSpec;\n    get_actor(): Actor;\n    get_initial_state(property_name: string, value: GObject.Value | any): void;\n    interpolate_value(property_name: string, interval: Interval, progress: number): [boolean, unknown];\n    set_final_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_find_property(property_name: string): GObject.ParamSpec;\n    vfunc_get_actor(): Actor;\n    vfunc_get_initial_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_interpolate_value(property_name: string, interval: Interval, progress: number): [boolean, unknown];\n    vfunc_set_final_state(property_name: string, value: GObject.Value | any): void;\n    add_actor(actor: Actor): void;\n    child_get_property(child: Actor, property: string, value: GObject.Value | any): void;\n    child_notify(child: Actor, pspec: GObject.ParamSpec): void;\n    child_set_property(child: Actor, property: string, value: GObject.Value | any): void;\n    create_child_meta(actor: Actor): void;\n    destroy_child_meta(actor: Actor): void;\n    find_child_by_name(child_name: string): Actor;\n    get_child_meta(actor: Actor): ChildMeta;\n    remove_actor(actor: Actor): void;\n    vfunc_actor_added(actor: Actor): void;\n    vfunc_actor_removed(actor: Actor): void;\n    vfunc_add(actor: Actor): void;\n    vfunc_child_notify(child: Actor, pspec: GObject.ParamSpec): void;\n    vfunc_create_child_meta(actor: Actor): void;\n    vfunc_destroy_child_meta(actor: Actor): void;\n    vfunc_get_child_meta(actor: Actor): ChildMeta;\n    vfunc_remove(actor: Actor): void;\n    get_id(): string;\n    parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    set_id(id_: string): void;\n    vfunc_get_id(): string;\n    vfunc_parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    vfunc_set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id_: string): void;\n}\nexport module TextBuffer {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        length: number;\n        max_length: number;\n        maxLength: number;\n        text: string;\n    }\n}\nexport class TextBuffer extends GObject.Object {\n    static $gtype: GObject.GType<TextBuffer>;\n\n    constructor(properties?: Partial<TextBuffer.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<TextBuffer.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get length(): number;\n    get max_length(): number;\n    set max_length(val: number);\n    get maxLength(): number;\n    set maxLength(val: number);\n    get text(): string;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"deleted-text\", callback: (_source: this, position: number, n_chars: number) => void): number;\n    connect_after(signal: \"deleted-text\", callback: (_source: this, position: number, n_chars: number) => void): number;\n    emit(signal: \"deleted-text\", position: number, n_chars: number): void;\n    connect(\n        signal: \"inserted-text\",\n        callback: (_source: this, position: number, chars: string, n_chars: number) => void\n    ): number;\n    connect_after(\n        signal: \"inserted-text\",\n        callback: (_source: this, position: number, chars: string, n_chars: number) => void\n    ): number;\n    emit(signal: \"inserted-text\", position: number, chars: string, n_chars: number): void;\n\n    // Constructors\n\n    static [\"new\"](): TextBuffer;\n    static new_with_text(text: string | null, text_len: number): TextBuffer;\n\n    // Members\n\n    delete_text(position: number, n_chars: number): number;\n    emit_deleted_text(position: number, n_chars: number): void;\n    emit_inserted_text(position: number, chars: string, n_chars: number): void;\n    get_bytes(): number;\n    get_length(): number;\n    get_max_length(): number;\n    get_text(): string;\n    insert_text(position: number, chars: string, n_chars: number): number;\n    set_max_length(max_length: number): void;\n    set_text(chars: string, n_chars: number): void;\n    vfunc_delete_text(position: number, n_chars: number): number;\n    vfunc_deleted_text(position: number, n_chars: number): void;\n    vfunc_get_length(): number;\n    vfunc_get_text(n_bytes: number): string;\n    vfunc_insert_text(position: number, chars: string, n_chars: number): number;\n    vfunc_inserted_text(position: number, chars: string, n_chars: number): void;\n}\nexport module TextNode {\n    export interface ConstructorProperties extends PaintNode.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class TextNode extends PaintNode {\n    static $gtype: GObject.GType<TextNode>;\n\n    constructor(properties?: Partial<TextNode.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<TextNode.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](layout?: Pango.Layout | null, color?: Color | null): TextNode;\n}\nexport module TextureContent {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class TextureContent extends GObject.Object implements Content {\n    static $gtype: GObject.GType<TextureContent>;\n\n    constructor(properties?: Partial<TextureContent.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<TextureContent.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    get_texture(): Cogl.Texture;\n    static new_from_texture(texture: Cogl.Texture, clip?: cairo.RectangleInt | null): Content;\n\n    // Implemented Members\n\n    get_preferred_size(): [boolean, number | null, number | null];\n    invalidate(): void;\n    invalidate_size(): void;\n    vfunc_attached(actor: Actor): void;\n    vfunc_detached(actor: Actor): void;\n    vfunc_get_preferred_size(): [boolean, number | null, number | null];\n    vfunc_invalidate(): void;\n    vfunc_invalidate_size(): void;\n    vfunc_paint_content(actor: Actor, node: PaintNode, paint_context: PaintContext): void;\n}\nexport module TextureNode {\n    export interface ConstructorProperties extends PipelineNode.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class TextureNode extends PipelineNode {\n    static $gtype: GObject.GType<TextureNode>;\n\n    constructor(properties?: Partial<TextureNode.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<TextureNode.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](\n        texture: Cogl.Texture,\n        color: Color | null,\n        min_filter: ScalingFilter,\n        mag_filter: ScalingFilter\n    ): TextureNode;\n    // Conflicted with Clutter.PipelineNode.new\n    static [\"new\"](...args: never[]): any;\n}\nexport module Timeline {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        actor: Actor;\n        auto_reverse: boolean;\n        autoReverse: boolean;\n        delay: number;\n        direction: TimelineDirection;\n        duration: number;\n        frame_clock: FrameClock;\n        frameClock: FrameClock;\n        progress_mode: AnimationMode;\n        progressMode: AnimationMode;\n        repeat_count: number;\n        repeatCount: number;\n    }\n}\nexport class Timeline extends GObject.Object implements Scriptable {\n    static $gtype: GObject.GType<Timeline>;\n\n    constructor(properties?: Partial<Timeline.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Timeline.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get actor(): Actor;\n    set actor(val: Actor);\n    get auto_reverse(): boolean;\n    set auto_reverse(val: boolean);\n    get autoReverse(): boolean;\n    set autoReverse(val: boolean);\n    get delay(): number;\n    set delay(val: number);\n    get direction(): TimelineDirection;\n    set direction(val: TimelineDirection);\n    get duration(): number;\n    set duration(val: number);\n    get frame_clock(): FrameClock;\n    set frame_clock(val: FrameClock);\n    get frameClock(): FrameClock;\n    set frameClock(val: FrameClock);\n    get progress_mode(): AnimationMode;\n    set progress_mode(val: AnimationMode);\n    get progressMode(): AnimationMode;\n    set progressMode(val: AnimationMode);\n    get repeat_count(): number;\n    set repeat_count(val: number);\n    get repeatCount(): number;\n    set repeatCount(val: number);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"completed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"completed\", callback: (_source: this) => void): number;\n    emit(signal: \"completed\"): void;\n    connect(signal: \"marker-reached\", callback: (_source: this, marker_name: string, msecs: number) => void): number;\n    connect_after(\n        signal: \"marker-reached\",\n        callback: (_source: this, marker_name: string, msecs: number) => void\n    ): number;\n    emit(signal: \"marker-reached\", marker_name: string, msecs: number): void;\n    connect(signal: \"new-frame\", callback: (_source: this, msecs: number) => void): number;\n    connect_after(signal: \"new-frame\", callback: (_source: this, msecs: number) => void): number;\n    emit(signal: \"new-frame\", msecs: number): void;\n    connect(signal: \"paused\", callback: (_source: this) => void): number;\n    connect_after(signal: \"paused\", callback: (_source: this) => void): number;\n    emit(signal: \"paused\"): void;\n    connect(signal: \"started\", callback: (_source: this) => void): number;\n    connect_after(signal: \"started\", callback: (_source: this) => void): number;\n    emit(signal: \"started\"): void;\n    connect(signal: \"stopped\", callback: (_source: this, is_finished: boolean) => void): number;\n    connect_after(signal: \"stopped\", callback: (_source: this, is_finished: boolean) => void): number;\n    emit(signal: \"stopped\", is_finished: boolean): void;\n\n    // Constructors\n\n    static [\"new\"](duration_ms: number): Timeline;\n    static new_for_actor(actor: Actor, duration_ms: number): Timeline;\n    static new_for_frame_clock(frame_clock: FrameClock, duration_ms: number): Timeline;\n\n    // Members\n\n    add_marker(marker_name: string, progress: number): void;\n    add_marker_at_time(marker_name: string, msecs: number): void;\n    advance(msecs: number): void;\n    advance_to_marker(marker_name: string): void;\n    get_actor(): Actor;\n    get_auto_reverse(): boolean;\n    get_cubic_bezier_progress(): [boolean, Graphene.Point, Graphene.Point];\n    get_current_repeat(): number;\n    get_delay(): number;\n    get_delta(): number;\n    get_direction(): TimelineDirection;\n    get_duration(): number;\n    get_duration_hint(): number;\n    get_elapsed_time(): number;\n    get_progress(): number;\n    get_progress_mode(): AnimationMode;\n    get_repeat_count(): number;\n    get_step_progress(): [boolean, number, StepMode];\n    has_marker(marker_name: string): boolean;\n    is_playing(): boolean;\n    list_markers(msecs: number): string[];\n    pause(): void;\n    remove_marker(marker_name: string): void;\n    rewind(): void;\n    set_actor(actor?: Actor | null): void;\n    set_auto_reverse(reverse: boolean): void;\n    set_cubic_bezier_progress(c_1: Graphene.Point, c_2: Graphene.Point): void;\n    set_delay(msecs: number): void;\n    set_direction(direction: TimelineDirection): void;\n    set_duration(msecs: number): void;\n    set_frame_clock(frame_clock: FrameClock): void;\n    set_progress_func(func?: TimelineProgressFunc | null): void;\n    set_progress_mode(mode: AnimationMode): void;\n    set_repeat_count(count: number): void;\n    set_step_progress(n_steps: number, step_mode: StepMode): void;\n    skip(msecs: number): void;\n    start(): void;\n    stop(): void;\n    vfunc_completed(): void;\n    vfunc_marker_reached(marker_name: string, msecs: number): void;\n    vfunc_new_frame(msecs: number): void;\n    vfunc_paused(): void;\n    vfunc_started(): void;\n    vfunc_stopped(is_finished: boolean): void;\n\n    // Implemented Members\n\n    get_id(): string;\n    parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    set_id(id_: string): void;\n    vfunc_get_id(): string;\n    vfunc_parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    vfunc_set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id_: string): void;\n}\nexport module TransformNode {\n    export interface ConstructorProperties extends PaintNode.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class TransformNode extends PaintNode {\n    static $gtype: GObject.GType<TransformNode>;\n\n    constructor(properties?: Partial<TransformNode.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<TransformNode.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](projection: Graphene.Matrix): TransformNode;\n}\nexport module Transition {\n    export interface ConstructorProperties extends Timeline.ConstructorProperties {\n        [key: string]: any;\n        animatable: Animatable;\n        interval: Interval;\n        remove_on_complete: boolean;\n        removeOnComplete: boolean;\n    }\n}\nexport abstract class Transition extends Timeline implements Scriptable {\n    static $gtype: GObject.GType<Transition>;\n\n    constructor(properties?: Partial<Transition.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Transition.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get animatable(): Animatable;\n    set animatable(val: Animatable);\n    get interval(): Interval;\n    set interval(val: Interval);\n    get remove_on_complete(): boolean;\n    set remove_on_complete(val: boolean);\n    get removeOnComplete(): boolean;\n    set removeOnComplete(val: boolean);\n\n    // Members\n\n    get_animatable(): Animatable;\n    get_interval(): Interval;\n    get_remove_on_complete(): boolean;\n    set_animatable(animatable?: Animatable | null): void;\n    set_from(value: GObject.Value | any): void;\n    set_interval(interval?: Interval | null): void;\n    set_remove_on_complete(remove_complete: boolean): void;\n    set_to(value: GObject.Value | any): void;\n    vfunc_attached(animatable: Animatable): void;\n    vfunc_compute_value(animatable: Animatable, interval: Interval, progress: number): void;\n    vfunc_detached(animatable: Animatable): void;\n\n    // Implemented Members\n\n    get_id(): string;\n    parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    set_id(id_: string): void;\n    vfunc_get_id(): string;\n    vfunc_parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    vfunc_set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id_: string): void;\n}\nexport module TransitionGroup {\n    export interface ConstructorProperties extends Transition.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class TransitionGroup extends Transition implements Scriptable {\n    static $gtype: GObject.GType<TransitionGroup>;\n\n    constructor(properties?: Partial<TransitionGroup.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<TransitionGroup.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](): TransitionGroup;\n\n    // Members\n\n    add_transition(transition: Transition): void;\n    remove_all(): void;\n    remove_transition(transition: Transition): void;\n}\nexport module VirtualInputDevice {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        device_type: InputDeviceType;\n        deviceType: InputDeviceType;\n        seat: Seat;\n    }\n}\nexport class VirtualInputDevice extends GObject.Object {\n    static $gtype: GObject.GType<VirtualInputDevice>;\n\n    constructor(properties?: Partial<VirtualInputDevice.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<VirtualInputDevice.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get device_type(): InputDeviceType;\n    get deviceType(): InputDeviceType;\n    get seat(): Seat;\n\n    // Members\n\n    get_device_type(): number;\n    get_seat(): Seat;\n    notify_absolute_motion(time_us: number, x: number, y: number): void;\n    notify_button(time_us: number, button: number, button_state: ButtonState): void;\n    notify_discrete_scroll(time_us: number, direction: ScrollDirection, scroll_source: ScrollSource): void;\n    notify_key(time_us: number, key: number, key_state: KeyState): void;\n    notify_keyval(time_us: number, keyval: number, key_state: KeyState): void;\n    notify_relative_motion(time_us: number, dx: number, dy: number): void;\n    notify_scroll_continuous(\n        time_us: number,\n        dx: number,\n        dy: number,\n        scroll_source: ScrollSource,\n        finish_flags: ScrollFinishFlags\n    ): void;\n    notify_touch_down(time_us: number, slot: number, x: number, y: number): void;\n    notify_touch_motion(time_us: number, slot: number, x: number, y: number): void;\n    notify_touch_up(time_us: number, slot: number): void;\n    vfunc_notify_absolute_motion(time_us: number, x: number, y: number): void;\n    vfunc_notify_button(time_us: number, button: number, button_state: ButtonState): void;\n    vfunc_notify_discrete_scroll(time_us: number, direction: ScrollDirection, scroll_source: ScrollSource): void;\n    vfunc_notify_key(time_us: number, key: number, key_state: KeyState): void;\n    vfunc_notify_keyval(time_us: number, keyval: number, key_state: KeyState): void;\n    vfunc_notify_relative_motion(time_us: number, dx: number, dy: number): void;\n    vfunc_notify_scroll_continuous(\n        time_us: number,\n        dx: number,\n        dy: number,\n        scroll_source: ScrollSource,\n        finish_flags: ScrollFinishFlags\n    ): void;\n    vfunc_notify_touch_down(time_us: number, slot: number, x: number, y: number): void;\n    vfunc_notify_touch_motion(time_us: number, slot: number, x: number, y: number): void;\n    vfunc_notify_touch_up(time_us: number, slot: number): void;\n}\nexport module ZoomAction {\n    export interface ConstructorProperties extends GestureAction.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class ZoomAction extends GestureAction {\n    static $gtype: GObject.GType<ZoomAction>;\n\n    constructor(properties?: Partial<ZoomAction.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ZoomAction.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(\n        signal: \"zoom\",\n        callback: (_source: this, actor: Actor, focal_point: Graphene.Point, factor: number) => boolean\n    ): number;\n    connect_after(\n        signal: \"zoom\",\n        callback: (_source: this, actor: Actor, focal_point: Graphene.Point, factor: number) => boolean\n    ): number;\n    emit(signal: \"zoom\", actor: Actor, focal_point: Graphene.Point, factor: number): void;\n\n    // Constructors\n\n    static [\"new\"](): ZoomAction;\n\n    // Members\n\n    get_focal_point(): Graphene.Point;\n    get_transformed_focal_point(): Graphene.Point;\n}\n\nexport class ActorBox {\n    static $gtype: GObject.GType<ActorBox>;\n\n    constructor(x_1: number, y_1: number, x_2: number, y_2: number);\n    constructor(\n        properties?: Partial<{\n            x1?: number;\n            y1?: number;\n            x2?: number;\n            y2?: number;\n        }>\n    );\n    constructor(copy: ActorBox);\n\n    // Fields\n    x1: number;\n    y1: number;\n    x2: number;\n    y2: number;\n\n    // Constructors\n    static [\"new\"](x_1: number, y_1: number, x_2: number, y_2: number): ActorBox;\n\n    // Members\n    clamp_to_pixel(): void;\n    contains(x: number, y: number): boolean;\n    copy(): ActorBox;\n    equal(box_b: ActorBox): boolean;\n    free(): void;\n    from_vertices(verts: Graphene.Point3D[]): void;\n    get_area(): number;\n    get_height(): number;\n    get_origin(): [number | null, number | null];\n    get_size(): [number | null, number | null];\n    get_width(): number;\n    get_x(): number;\n    get_y(): number;\n    init(x_1: number, y_1: number, x_2: number, y_2: number): ActorBox;\n    init_rect(x: number, y: number, width: number, height: number): void;\n    interpolate(_final: ActorBox, progress: number): ActorBox;\n    is_initialized(): boolean;\n    scale(scale: number): void;\n    set_origin(x: number, y: number): void;\n    set_size(width: number, height: number): void;\n    union(b: ActorBox): ActorBox;\n    static alloc(): ActorBox;\n}\n\nexport class ActorIter {\n    static $gtype: GObject.GType<ActorIter>;\n\n    constructor(\n        properties?: Partial<{\n            dummy1?: any;\n            dummy2?: any;\n            dummy3?: any;\n            dummy4?: number;\n            dummy5?: any;\n        }>\n    );\n    constructor(copy: ActorIter);\n\n    // Fields\n    dummy1: any;\n    dummy2: any;\n    dummy3: any;\n    dummy4: number;\n    dummy5: any;\n\n    // Members\n    destroy(): void;\n    init(root: Actor): void;\n    is_valid(): boolean;\n    next(): [boolean, Actor | null];\n    prev(): [boolean, Actor | null];\n    remove(): void;\n}\n\nexport class ActorMetaPrivate {\n    static $gtype: GObject.GType<ActorMetaPrivate>;\n\n    constructor(copy: ActorMetaPrivate);\n}\n\nexport class ActorPrivate {\n    static $gtype: GObject.GType<ActorPrivate>;\n\n    constructor(copy: ActorPrivate);\n}\n\nexport class AnyEvent {\n    static $gtype: GObject.GType<AnyEvent>;\n\n    constructor(copy: AnyEvent);\n\n    // Fields\n    type: EventType;\n    time: number;\n    flags: EventFlags;\n}\n\nexport class BinLayoutPrivate {\n    static $gtype: GObject.GType<BinLayoutPrivate>;\n\n    constructor(copy: BinLayoutPrivate);\n}\n\nexport class BoxLayoutPrivate {\n    static $gtype: GObject.GType<BoxLayoutPrivate>;\n\n    constructor(copy: BoxLayoutPrivate);\n}\n\nexport class ButtonEvent {\n    static $gtype: GObject.GType<ButtonEvent>;\n\n    constructor(copy: ButtonEvent);\n\n    // Fields\n    type: EventType;\n    time: number;\n    flags: EventFlags;\n    x: number;\n    y: number;\n    modifier_state: ModifierType;\n    button: number;\n    axes: number;\n    evdev_code: number;\n}\n\nexport class CanvasPrivate {\n    static $gtype: GObject.GType<CanvasPrivate>;\n\n    constructor(copy: CanvasPrivate);\n}\n\nexport class Capture {\n    static $gtype: GObject.GType<Capture>;\n\n    constructor(copy: Capture);\n}\n\nexport class ClickActionPrivate {\n    static $gtype: GObject.GType<ClickActionPrivate>;\n\n    constructor(copy: ClickActionPrivate);\n}\n\nexport class ClonePrivate {\n    static $gtype: GObject.GType<ClonePrivate>;\n\n    constructor(copy: ClonePrivate);\n}\n\nexport class Color {\n    static $gtype: GObject.GType<Color>;\n\n    constructor();\n    constructor(\n        properties?: Partial<{\n            red?: number;\n            green?: number;\n            blue?: number;\n            alpha?: number;\n        }>\n    );\n    constructor(copy: Color);\n\n    // Fields\n    red: number;\n    green: number;\n    blue: number;\n    alpha: number;\n\n    // Constructors\n    static alloc(): Color;\n    static [\"new\"](red: number, green: number, blue: number, alpha: number): Color;\n\n    // Members\n    add(b: Color): Color;\n    copy(): Color;\n    darken(): Color;\n    equal(v2: Color): boolean;\n    free(): void;\n    hash(): number;\n    init(red: number, green: number, blue: number, alpha: number): Color;\n    interpolate(_final: Color, progress: number): Color;\n    lighten(): Color;\n    shade(factor: number): Color;\n    subtract(b: Color): Color;\n    to_hls(): [number, number, number];\n    to_pixel(): number;\n    to_string(): string;\n    static from_hls(hue: number, luminance: number, saturation: number): Color;\n    static from_pixel(pixel: number): Color;\n    static from_string(str: string): [boolean, Color];\n    static get_static(color: StaticColor): Color;\n}\n\nexport class Context {\n    static $gtype: GObject.GType<Context>;\n\n    constructor(copy: Context);\n\n    // Members\n    get_backend(): Backend;\n}\n\nexport class CrossingEvent {\n    static $gtype: GObject.GType<CrossingEvent>;\n\n    constructor(copy: CrossingEvent);\n\n    // Fields\n    type: EventType;\n    time: number;\n    flags: EventFlags;\n    x: number;\n    y: number;\n}\n\nexport class DeformEffectPrivate {\n    static $gtype: GObject.GType<DeformEffectPrivate>;\n\n    constructor(copy: DeformEffectPrivate);\n}\n\nexport class DeviceEvent {\n    static $gtype: GObject.GType<DeviceEvent>;\n\n    constructor(copy: DeviceEvent);\n\n    // Fields\n    type: EventType;\n    time: number;\n    flags: EventFlags;\n}\n\nexport class EventSequence {\n    static $gtype: GObject.GType<EventSequence>;\n\n    constructor(copy: EventSequence);\n\n    // Members\n    get_slot(): number;\n}\n\nexport class FlowLayoutPrivate {\n    static $gtype: GObject.GType<FlowLayoutPrivate>;\n\n    constructor(copy: FlowLayoutPrivate);\n}\n\nexport class Frame {\n    static $gtype: GObject.GType<Frame>;\n\n    constructor(copy: Frame);\n\n    // Members\n    get_count(): number;\n    get_target_presentation_time(target_presentation_time_us: number): boolean;\n    has_result(): boolean;\n    ref(): Frame;\n    set_result(result: FrameResult): void;\n    unref(): void;\n}\n\nexport class GestureActionPrivate {\n    static $gtype: GObject.GType<GestureActionPrivate>;\n\n    constructor(copy: GestureActionPrivate);\n}\n\nexport class Grab {\n    static $gtype: GObject.GType<Grab>;\n\n    constructor(copy: Grab);\n\n    // Members\n    dismiss(): void;\n    get_seat_state(): GrabState;\n    ref(): Grab;\n    unref(): void;\n}\n\nexport class GridLayoutPrivate {\n    static $gtype: GObject.GType<GridLayoutPrivate>;\n\n    constructor(copy: GridLayoutPrivate);\n}\n\nexport class IMEvent {\n    static $gtype: GObject.GType<IMEvent>;\n\n    constructor(copy: IMEvent);\n\n    // Fields\n    type: EventType;\n    time: number;\n    flags: EventFlags;\n    text: string;\n    offset: number;\n    anchor: number;\n    len: number;\n    mode: PreeditResetMode;\n}\n\nexport class IntervalPrivate {\n    static $gtype: GObject.GType<IntervalPrivate>;\n\n    constructor(copy: IntervalPrivate);\n}\n\nexport class KeyEvent {\n    static $gtype: GObject.GType<KeyEvent>;\n\n    constructor(copy: KeyEvent);\n\n    // Fields\n    type: EventType;\n    time: number;\n    flags: EventFlags;\n    modifier_state: ModifierType;\n    keyval: number;\n    hardware_keycode: number;\n    unicode_value: number;\n    evdev_code: number;\n}\n\nexport class KeyframeTransitionPrivate {\n    static $gtype: GObject.GType<KeyframeTransitionPrivate>;\n\n    constructor(copy: KeyframeTransitionPrivate);\n}\n\nexport class Knot {\n    static $gtype: GObject.GType<Knot>;\n\n    constructor(\n        properties?: Partial<{\n            x?: number;\n            y?: number;\n        }>\n    );\n    constructor(copy: Knot);\n\n    // Fields\n    x: number;\n    y: number;\n\n    // Members\n    copy(): Knot;\n    equal(knot_b: Knot): boolean;\n    free(): void;\n}\n\nexport class Margin {\n    static $gtype: GObject.GType<Margin>;\n\n    constructor();\n    constructor(\n        properties?: Partial<{\n            left?: number;\n            right?: number;\n            top?: number;\n            bottom?: number;\n        }>\n    );\n    constructor(copy: Margin);\n\n    // Fields\n    left: number;\n    right: number;\n    top: number;\n    bottom: number;\n\n    // Constructors\n    static [\"new\"](): Margin;\n\n    // Members\n    copy(): Margin;\n    free(): void;\n}\n\nexport class MotionEvent {\n    static $gtype: GObject.GType<MotionEvent>;\n\n    constructor(copy: MotionEvent);\n\n    // Fields\n    type: EventType;\n    time: number;\n    flags: EventFlags;\n    x: number;\n    y: number;\n    modifier_state: ModifierType;\n    axes: number;\n    time_us: number;\n    dx: number;\n    dy: number;\n    dx_unaccel: number;\n    dy_unaccel: number;\n}\n\nexport class OffscreenEffectPrivate {\n    static $gtype: GObject.GType<OffscreenEffectPrivate>;\n\n    constructor(copy: OffscreenEffectPrivate);\n}\n\nexport class PadButtonEvent {\n    static $gtype: GObject.GType<PadButtonEvent>;\n\n    constructor(copy: PadButtonEvent);\n\n    // Fields\n    type: EventType;\n    time: number;\n    flags: EventFlags;\n    button: number;\n    group: number;\n    mode: number;\n}\n\nexport class PadRingEvent {\n    static $gtype: GObject.GType<PadRingEvent>;\n\n    constructor(copy: PadRingEvent);\n\n    // Fields\n    type: EventType;\n    time: number;\n    flags: EventFlags;\n    ring_source: InputDevicePadSource;\n    ring_number: number;\n    group: number;\n    angle: number;\n    mode: number;\n}\n\nexport class PadStripEvent {\n    static $gtype: GObject.GType<PadStripEvent>;\n\n    constructor(copy: PadStripEvent);\n\n    // Fields\n    type: EventType;\n    time: number;\n    flags: EventFlags;\n    strip_source: InputDevicePadSource;\n    strip_number: number;\n    group: number;\n    value: number;\n    mode: number;\n}\n\nexport class PaintContext {\n    static $gtype: GObject.GType<PaintContext>;\n\n    constructor(copy: PaintContext);\n\n    // Members\n    destroy(): void;\n    get_framebuffer(): Cogl.Framebuffer;\n    get_redraw_clip(): cairo.Region;\n    pop_framebuffer(): void;\n    push_framebuffer(framebuffer: Cogl.Framebuffer): void;\n    ref(): PaintContext;\n    unref(): void;\n}\n\nexport class PaintNodePrivate {\n    static $gtype: GObject.GType<PaintNodePrivate>;\n\n    constructor(copy: PaintNodePrivate);\n}\n\nexport class PaintVolume {\n    static $gtype: GObject.GType<PaintVolume>;\n\n    constructor(copy: PaintVolume);\n\n    // Members\n    copy(): PaintVolume;\n    free(): void;\n    get_depth(): number;\n    get_height(): number;\n    get_origin(): Graphene.Point3D;\n    get_width(): number;\n    set_depth(depth: number): void;\n    set_from_allocation(actor: Actor): boolean;\n    set_height(height: number): void;\n    set_origin(origin: Graphene.Point3D): void;\n    set_width(width: number): void;\n    union(another_pv: PaintVolume): void;\n    union_box(box: ActorBox): void;\n}\n\nexport class PanActionPrivate {\n    static $gtype: GObject.GType<PanActionPrivate>;\n\n    constructor(copy: PanActionPrivate);\n}\n\nexport class PathNode {\n    static $gtype: GObject.GType<PathNode>;\n\n    constructor(copy: PathNode);\n\n    // Fields\n    type: PathNodeType;\n\n    // Members\n    copy(): PathNode;\n    equal(node_b: PathNode): boolean;\n    free(): void;\n}\n\nexport class PathPrivate {\n    static $gtype: GObject.GType<PathPrivate>;\n\n    constructor(copy: PathPrivate);\n}\n\nexport class Perspective {\n    static $gtype: GObject.GType<Perspective>;\n\n    constructor(\n        properties?: Partial<{\n            fovy?: number;\n            aspect?: number;\n            z_near?: number;\n            z_far?: number;\n        }>\n    );\n    constructor(copy: Perspective);\n\n    // Fields\n    fovy: number;\n    aspect: number;\n    z_near: number;\n    z_far: number;\n}\n\nexport class PickContext {\n    static $gtype: GObject.GType<PickContext>;\n\n    constructor(copy: PickContext);\n\n    // Members\n    destroy(): void;\n    get_transform(): Graphene.Matrix;\n    log_overlap(actor: Actor): void;\n    log_pick(box: ActorBox, actor: Actor): void;\n    pop_clip(): void;\n    pop_transform(): void;\n    push_clip(box: ActorBox): void;\n    push_transform(transform: Graphene.Matrix): void;\n    ref(): PickContext;\n    unref(): void;\n}\n\nexport class PointerA11ySettings {\n    static $gtype: GObject.GType<PointerA11ySettings>;\n\n    constructor(copy: PointerA11ySettings);\n\n    // Fields\n    controls: PointerA11yFlags;\n    dwell_click_type: PointerA11yDwellClickType;\n    dwell_mode: PointerA11yDwellMode;\n    dwell_gesture_single: PointerA11yDwellDirection;\n    dwell_gesture_double: PointerA11yDwellDirection;\n    dwell_gesture_drag: PointerA11yDwellDirection;\n    dwell_gesture_secondary: PointerA11yDwellDirection;\n    secondary_click_delay: number;\n    dwell_delay: number;\n    dwell_threshold: number;\n}\n\nexport class PropertyTransitionPrivate {\n    static $gtype: GObject.GType<PropertyTransitionPrivate>;\n\n    constructor(copy: PropertyTransitionPrivate);\n}\n\nexport class ProximityEvent {\n    static $gtype: GObject.GType<ProximityEvent>;\n\n    constructor(copy: ProximityEvent);\n\n    // Fields\n    type: EventType;\n    time: number;\n    flags: EventFlags;\n}\n\nexport class RotateActionPrivate {\n    static $gtype: GObject.GType<RotateActionPrivate>;\n\n    constructor(copy: RotateActionPrivate);\n}\n\nexport class ScriptPrivate {\n    static $gtype: GObject.GType<ScriptPrivate>;\n\n    constructor(copy: ScriptPrivate);\n}\n\nexport class ScrollActorPrivate {\n    static $gtype: GObject.GType<ScrollActorPrivate>;\n\n    constructor(copy: ScrollActorPrivate);\n}\n\nexport class ScrollEvent {\n    static $gtype: GObject.GType<ScrollEvent>;\n\n    constructor(copy: ScrollEvent);\n\n    // Fields\n    type: EventType;\n    time: number;\n    flags: EventFlags;\n    x: number;\n    y: number;\n    direction: ScrollDirection;\n    modifier_state: ModifierType;\n    axes: number;\n    scroll_source: ScrollSource;\n    finish_flags: ScrollFinishFlags;\n}\n\nexport class Shader {\n    static $gtype: GObject.GType<Shader>;\n\n    constructor(copy: Shader);\n}\n\nexport class ShaderEffectPrivate {\n    static $gtype: GObject.GType<ShaderEffectPrivate>;\n\n    constructor(copy: ShaderEffectPrivate);\n}\n\nexport class StagePrivate {\n    static $gtype: GObject.GType<StagePrivate>;\n\n    constructor(copy: StagePrivate);\n}\n\nexport class SwipeActionPrivate {\n    static $gtype: GObject.GType<SwipeActionPrivate>;\n\n    constructor(copy: SwipeActionPrivate);\n}\n\nexport class TapActionPrivate {\n    static $gtype: GObject.GType<TapActionPrivate>;\n\n    constructor(copy: TapActionPrivate);\n}\n\nexport class TextBufferPrivate {\n    static $gtype: GObject.GType<TextBufferPrivate>;\n\n    constructor(copy: TextBufferPrivate);\n}\n\nexport class TextPrivate {\n    static $gtype: GObject.GType<TextPrivate>;\n\n    constructor(copy: TextPrivate);\n}\n\nexport class TimelinePrivate {\n    static $gtype: GObject.GType<TimelinePrivate>;\n\n    constructor(copy: TimelinePrivate);\n}\n\nexport class TouchEvent {\n    static $gtype: GObject.GType<TouchEvent>;\n\n    constructor(copy: TouchEvent);\n\n    // Fields\n    type: EventType;\n    time: number;\n    flags: EventFlags;\n    x: number;\n    y: number;\n    modifier_state: ModifierType;\n    axes: number;\n}\n\nexport class TouchpadHoldEvent {\n    static $gtype: GObject.GType<TouchpadHoldEvent>;\n\n    constructor(copy: TouchpadHoldEvent);\n\n    // Fields\n    type: EventType;\n    time: number;\n    flags: EventFlags;\n    phase: TouchpadGesturePhase;\n    n_fingers: number;\n    x: number;\n    y: number;\n}\n\nexport class TouchpadPinchEvent {\n    static $gtype: GObject.GType<TouchpadPinchEvent>;\n\n    constructor(copy: TouchpadPinchEvent);\n\n    // Fields\n    type: EventType;\n    time: number;\n    flags: EventFlags;\n    phase: TouchpadGesturePhase;\n    x: number;\n    y: number;\n    dx: number;\n    dy: number;\n    dx_unaccel: number;\n    dy_unaccel: number;\n    angle_delta: number;\n    scale: number;\n    n_fingers: number;\n}\n\nexport class TouchpadSwipeEvent {\n    static $gtype: GObject.GType<TouchpadSwipeEvent>;\n\n    constructor(copy: TouchpadSwipeEvent);\n\n    // Fields\n    type: EventType;\n    time: number;\n    flags: EventFlags;\n    phase: TouchpadGesturePhase;\n    n_fingers: number;\n    x: number;\n    y: number;\n    dx: number;\n    dy: number;\n    dx_unaccel: number;\n    dy_unaccel: number;\n}\n\nexport class TransitionGroupPrivate {\n    static $gtype: GObject.GType<TransitionGroupPrivate>;\n\n    constructor(copy: TransitionGroupPrivate);\n}\n\nexport class TransitionPrivate {\n    static $gtype: GObject.GType<TransitionPrivate>;\n\n    constructor(copy: TransitionPrivate);\n}\n\nexport class Units {\n    static $gtype: GObject.GType<Units>;\n\n    constructor(copy: Units);\n\n    // Fields\n    unit_type: UnitType;\n    value: number;\n    pixels: number;\n    pixels_set: number;\n    serial: number;\n\n    // Members\n    copy(): Units;\n    free(): void;\n    get_unit_type(): UnitType;\n    get_unit_value(): number;\n    to_pixels(): number;\n    to_string(): string;\n    static from_cm(cm: number): Units;\n    static from_em(em: number): Units;\n    static from_em_for_font(font_name: string | null, em: number): Units;\n    static from_mm(mm: number): Units;\n    static from_pixels(px: number): Units;\n    static from_pt(pt: number): Units;\n    static from_string(str: string): [boolean, Units];\n}\n\nexport class ZoomActionPrivate {\n    static $gtype: GObject.GType<ZoomActionPrivate>;\n\n    constructor(copy: ZoomActionPrivate);\n}\n\nexport class Event {\n    static $gtype: GObject.GType<Event>;\n\n    constructor(type: EventType);\n    constructor(copy: Event);\n\n    // Constructors\n    static [\"new\"](type: EventType): Event;\n\n    // Members\n    copy(): Event;\n    free(): void;\n    get_angle(target: Event): number;\n    get_axes(): [number, number];\n    get_button(): number;\n    get_coords(): [number, number];\n    get_device(): InputDevice;\n    get_device_tool(): InputDeviceTool;\n    get_device_type(): InputDeviceType;\n    get_distance(target: Event): number;\n    get_event_code(): number;\n    get_event_sequence(): EventSequence;\n    get_flags(): EventFlags;\n    get_gesture_motion_delta(): [number | null, number | null];\n    get_gesture_motion_delta_unaccelerated(): [number | null, number | null];\n    get_gesture_phase(): TouchpadGesturePhase;\n    get_gesture_pinch_angle_delta(): number;\n    get_gesture_pinch_scale(): number;\n    get_key_code(): number;\n    get_key_symbol(): number;\n    get_key_unicode(): number;\n    get_mode_group(): number;\n    get_pad_event_details(): [boolean, number | null, number | null, number | null];\n    get_position(position: Graphene.Point): void;\n    get_related(): Actor;\n    get_relative_motion(dx: number, dy: number, dx_unaccel: number, dy_unaccel: number): boolean;\n    get_scroll_delta(): [number, number];\n    get_scroll_direction(): ScrollDirection;\n    get_scroll_finish_flags(): ScrollFinishFlags;\n    get_scroll_source(): ScrollSource;\n    get_source(): Actor;\n    get_source_device(): InputDevice;\n    get_stage(): Stage;\n    get_state(): ModifierType;\n    get_state_full(): [\n        ModifierType | null,\n        ModifierType | null,\n        ModifierType | null,\n        ModifierType | null,\n        ModifierType | null\n    ];\n    get_time(): number;\n    get_time_us(): number;\n    get_touchpad_gesture_finger_count(): number;\n    has_control_modifier(): boolean;\n    has_shift_modifier(): boolean;\n    is_pointer_emulated(): boolean;\n    put(): void;\n    set_button(button: number): void;\n    set_coords(x: number, y: number): void;\n    set_device(device?: InputDevice | null): void;\n    set_device_tool(tool?: InputDeviceTool | null): void;\n    set_flags(flags: EventFlags): void;\n    set_key_code(key_code: number): void;\n    set_key_symbol(key_sym: number): void;\n    set_key_unicode(key_unicode: number): void;\n    set_related(actor?: Actor | null): void;\n    set_scroll_delta(dx: number, dy: number): void;\n    set_scroll_direction(direction: ScrollDirection): void;\n    set_source(actor?: Actor | null): void;\n    set_source_device(device?: InputDevice | null): void;\n    set_stage(stage?: Stage | null): void;\n    set_state(state: ModifierType): void;\n    set_time(time_: number): void;\n    type(): EventType;\n    static add_filter(stage: Stage | null, func: EventFilterFunc): number;\n    static get(): Event;\n    static remove_filter(id: number): void;\n}\n\nexport interface AnimatableNamespace {\n    $gtype: GObject.GType<Animatable>;\n    prototype: AnimatablePrototype;\n}\nexport type Animatable = AnimatablePrototype;\nexport interface AnimatablePrototype extends GObject.Object {\n    // Members\n\n    find_property(property_name: string): GObject.ParamSpec;\n    get_actor(): Actor;\n    get_initial_state(property_name: string, value: GObject.Value | any): void;\n    interpolate_value(property_name: string, interval: Interval, progress: number): [boolean, unknown];\n    set_final_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_find_property(property_name: string): GObject.ParamSpec;\n    vfunc_get_actor(): Actor;\n    vfunc_get_initial_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_interpolate_value(property_name: string, interval: Interval, progress: number): [boolean, unknown];\n    vfunc_set_final_state(property_name: string, value: GObject.Value | any): void;\n}\n\nexport const Animatable: AnimatableNamespace;\n\nexport interface ContainerNamespace {\n    $gtype: GObject.GType<Container>;\n    prototype: ContainerPrototype;\n\n    class_find_child_property(klass: GObject.Object, property_name: string): GObject.ParamSpec;\n    class_list_child_properties(klass: GObject.Object): GObject.ParamSpec[];\n}\nexport type Container = ContainerPrototype;\nexport interface ContainerPrototype extends GObject.Object {\n    // Members\n\n    add_actor(actor: Actor): void;\n    child_get_property(child: Actor, property: string, value: GObject.Value | any): void;\n    child_notify(child: Actor, pspec: GObject.ParamSpec): void;\n    child_set_property(child: Actor, property: string, value: GObject.Value | any): void;\n    create_child_meta(actor: Actor): void;\n    destroy_child_meta(actor: Actor): void;\n    find_child_by_name(child_name: string): Actor;\n    get_child_meta(actor: Actor): ChildMeta;\n    remove_actor(actor: Actor): void;\n    vfunc_actor_added(actor: Actor): void;\n    vfunc_actor_removed(actor: Actor): void;\n    vfunc_add(actor: Actor): void;\n    vfunc_child_notify(child: Actor, pspec: GObject.ParamSpec): void;\n    vfunc_create_child_meta(actor: Actor): void;\n    vfunc_destroy_child_meta(actor: Actor): void;\n    vfunc_get_child_meta(actor: Actor): ChildMeta;\n    vfunc_remove(actor: Actor): void;\n}\n\nexport const Container: ContainerNamespace;\n\nexport interface ContentNamespace {\n    $gtype: GObject.GType<Content>;\n    prototype: ContentPrototype;\n}\nexport type Content = ContentPrototype;\nexport interface ContentPrototype extends GObject.Object {\n    // Members\n\n    get_preferred_size(): [boolean, number | null, number | null];\n    invalidate(): void;\n    invalidate_size(): void;\n    vfunc_attached(actor: Actor): void;\n    vfunc_detached(actor: Actor): void;\n    vfunc_get_preferred_size(): [boolean, number | null, number | null];\n    vfunc_invalidate(): void;\n    vfunc_invalidate_size(): void;\n    vfunc_paint_content(actor: Actor, node: PaintNode, paint_context: PaintContext): void;\n}\n\nexport const Content: ContentNamespace;\n\nexport interface ScriptableNamespace {\n    $gtype: GObject.GType<Scriptable>;\n    prototype: ScriptablePrototype;\n}\nexport type Scriptable = ScriptablePrototype;\nexport interface ScriptablePrototype extends GObject.Object {\n    // Members\n\n    get_id(): string;\n    parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    set_id(id_: string): void;\n    vfunc_get_id(): string;\n    vfunc_parse_custom_node(script: Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    vfunc_set_custom_property(script: Script, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id_: string): void;\n}\n\nexport const Scriptable: ScriptableNamespace;\n"
  },
  {
    "path": "@types/meta12/doc.json",
    "content": "{\n    \"name\": \"Meta\",\n    \"api_version\": \"12\",\n    \"package_version\": \"12.0\",\n    \"imports\": {\n        \"Gio\": \"2.0\",\n        \"Atk\": \"1.0\",\n        \"GObject\": \"2.0\",\n        \"Clutter\": \"12\",\n        \"GDesktopEnums\": \"3.0\",\n        \"Pango\": \"1.0\",\n        \"Json\": \"1.0\",\n        \"Graphene\": \"1.0\",\n        \"Cogl\": \"12\",\n        \"GLib\": \"2.0\",\n        \"xlib\": \"2.0\",\n        \"cairo\": \"1.0\",\n        \"xfixes\": \"4.0\"\n    }\n}"
  },
  {
    "path": "@types/meta12/index.d.ts",
    "content": "/**\n * Meta 12\n *\n * Generated from 12.0\n */\n\nimport * as Gio from \"@gi-types/gio2\";\nimport * as Atk from \"@gi-types/atk1\";\nimport * as GObject from \"@gi-types/gobject2\";\nimport * as Clutter from \"@gi-types/clutter12\";\nimport * as GDesktopEnums from \"@gi-types/gdesktopenums3\";\nimport * as Pango from \"@gi-types/pango1\";\nimport * as Json from \"@gi-types/json1\";\nimport * as Graphene from \"@gi-types/graphene1\";\nimport * as Cogl from \"@gi-types/cogl12\";\nimport * as GLib from \"@gi-types/glib2\";\nimport * as xlib from \"@gi-types/xlib2\";\nimport * as cairo from \"@gi-types/cairo1\";\nimport * as xfixes from \"@gi-types/xfixes4\";\n\nexport const CURRENT_TIME: number;\nexport const DEFAULT_ICON_NAME: string;\nexport const ICON_HEIGHT: number;\nexport const ICON_WIDTH: number;\nexport const MINI_ICON_HEIGHT: number;\nexport const MINI_ICON_WIDTH: number;\nexport const PRIORITY_BEFORE_REDRAW: number;\nexport const PRIORITY_PREFS_NOTIFY: number;\nexport const PRIORITY_REDRAW: number;\nexport const PRIORITY_RESIZE: number;\nexport const VIRTUAL_CORE_KEYBOARD_ID: number;\nexport const VIRTUAL_CORE_POINTER_ID: number;\nexport function accelerator_name(accelerator_mods: Clutter.ModifierType, accelerator_key: number): string;\nexport function add_clutter_debug_flags(\n    debug_flags: Clutter.DebugFlag,\n    draw_flags: Clutter.DrawDebugFlag,\n    pick_flags: Clutter.PickDebugFlag\n): void;\nexport function add_debug_paint_flag(flag: DebugPaintFlag): void;\nexport function add_verbose_topic(topic: DebugTopic): void;\nexport function clutter_init(): void;\nexport function create_context(name: string): Context;\nexport function disable_unredirect_for_display(display: Display): void;\nexport function enable_unredirect_for_display(display: Display): void;\nexport function exit(code: ExitCode): void;\nexport function external_binding_name_for_action(keybinding_action: number): string;\nexport function focus_stage_window(display: Display, timestamp: number): void;\nexport function frame_type_to_string(type: FrameType): string;\nexport function g_utf8_strndup(src: string, n: number): string;\nexport function get_clutter_debug_flags(): [\n    Clutter.DebugFlag | null,\n    Clutter.DrawDebugFlag | null,\n    Clutter.PickDebugFlag | null\n];\nexport function get_debug_paint_flags(): DebugPaintFlag;\nexport function get_feedback_group_for_display(display: Display): Clutter.Actor;\nexport function get_locale_direction(): LocaleDirection;\nexport function get_stage_for_display(display: Display): Clutter.Actor;\nexport function get_top_window_group_for_display(display: Display): Clutter.Actor;\nexport function get_window_actors(display: Display): Clutter.Actor[];\nexport function get_window_group_for_display(display: Display): Clutter.Actor;\nexport function gravity_to_string(gravity: Gravity): string;\nexport function is_restart(): boolean;\nexport function is_topic_enabled(topic: DebugTopic): boolean;\nexport function is_verbose(): boolean;\nexport function is_wayland_compositor(): boolean;\nexport function keybindings_set_custom_handler(name: string, handler?: KeyHandlerFunc | null): boolean;\nexport function pop_no_msg_prefix(): void;\nexport function preference_to_string(pref: Preference): string;\nexport function prefs_bell_is_audible(): boolean;\nexport function prefs_change_workspace_name(i: number, name: string): void;\nexport function prefs_get_action_double_click_titlebar(): GDesktopEnums.TitlebarAction;\nexport function prefs_get_action_middle_click_titlebar(): GDesktopEnums.TitlebarAction;\nexport function prefs_get_action_right_click_titlebar(): GDesktopEnums.TitlebarAction;\nexport function prefs_get_attach_modal_dialogs(): boolean;\nexport function prefs_get_auto_maximize(): boolean;\nexport function prefs_get_auto_raise(): boolean;\nexport function prefs_get_auto_raise_delay(): number;\nexport function prefs_get_button_layout(): ButtonLayout;\nexport function prefs_get_center_new_windows(): boolean;\nexport function prefs_get_check_alive_timeout(): number;\nexport function prefs_get_compositing_manager(): boolean;\nexport function prefs_get_cursor_size(): number;\nexport function prefs_get_cursor_theme(): string;\nexport function prefs_get_disable_workarounds(): boolean;\nexport function prefs_get_drag_threshold(): number;\nexport function prefs_get_draggable_border_width(): number;\nexport function prefs_get_dynamic_workspaces(): boolean;\nexport function prefs_get_edge_tiling(): boolean;\nexport function prefs_get_focus_change_on_pointer_rest(): boolean;\nexport function prefs_get_focus_mode(): GDesktopEnums.FocusMode;\nexport function prefs_get_focus_new_windows(): GDesktopEnums.FocusNewWindows;\nexport function prefs_get_force_fullscreen(): boolean;\nexport function prefs_get_gnome_accessibility(): boolean;\nexport function prefs_get_gnome_animations(): boolean;\nexport function prefs_get_keybinding_action(name: string): KeyBindingAction;\nexport function prefs_get_keybinding_label(name: string): string | null;\nexport function prefs_get_mouse_button_menu(): number;\nexport function prefs_get_mouse_button_mods(): Clutter.ModifierType;\nexport function prefs_get_mouse_button_resize(): number;\nexport function prefs_get_num_workspaces(): number;\nexport function prefs_get_raise_on_click(): boolean;\nexport function prefs_get_show_fallback_app_menu(): boolean;\nexport function prefs_get_titlebar_font(): Pango.FontDescription;\nexport function prefs_get_visual_bell(): boolean;\nexport function prefs_get_visual_bell_type(): GDesktopEnums.VisualBellType;\nexport function prefs_get_workspace_name(i: number): string;\nexport function prefs_get_workspaces_only_on_primary(): boolean;\nexport function prefs_set_force_fullscreen(whether: boolean): void;\nexport function prefs_set_num_workspaces(n_workspaces: number): void;\nexport function prefs_set_show_fallback_app_menu(whether: boolean): void;\nexport function push_no_msg_prefix(): void;\nexport function rect(x: number, y: number, width: number, height: number): Rectangle;\nexport function remove_clutter_debug_flags(\n    debug_flags: Clutter.DebugFlag,\n    draw_flags: Clutter.DrawDebugFlag,\n    pick_flags: Clutter.PickDebugFlag\n): void;\nexport function remove_debug_paint_flag(flag: DebugPaintFlag): void;\nexport function remove_verbose_topic(topic: DebugTopic): void;\nexport function restart(message: string | null, context: Context): void;\nexport function topic_to_string(topic: DebugTopic): string;\nexport function unsigned_long_equal(v1?: any | null, v2?: any | null): number;\nexport function unsigned_long_hash(v?: any | null): number;\nexport function x11_error_trap_pop(x11_display: X11Display): void;\nexport function x11_error_trap_pop_with_return(x11_display: X11Display): number;\nexport function x11_error_trap_push(x11_display: X11Display): void;\nexport type IdleMonitorWatchFunc = (monitor: IdleMonitor, watch_id: number) => void;\nexport type KeyHandlerFunc = (display: Display, window: Window, event: any | null, binding: KeyBinding) => void;\nexport type PrefsChangedFunc = (pref: Preference) => void;\nexport type WindowForeachFunc = (window: Window) => boolean;\n\nexport namespace ButtonFunction {\n    export const $gtype: GObject.GType<ButtonFunction>;\n}\n\nexport enum ButtonFunction {\n    MENU = 0,\n    MINIMIZE = 1,\n    MAXIMIZE = 2,\n    CLOSE = 3,\n    LAST = 4,\n}\n\nexport namespace CloseDialogResponse {\n    export const $gtype: GObject.GType<CloseDialogResponse>;\n}\n\nexport enum CloseDialogResponse {\n    WAIT = 0,\n    FORCE_CLOSE = 1,\n}\n\nexport namespace CompEffect {\n    export const $gtype: GObject.GType<CompEffect>;\n}\n\nexport enum CompEffect {\n    CREATE = 0,\n    UNMINIMIZE = 1,\n    DESTROY = 2,\n    MINIMIZE = 3,\n    NONE = 4,\n}\n\nexport namespace CompositorType {\n    export const $gtype: GObject.GType<CompositorType>;\n}\n\nexport enum CompositorType {\n    WAYLAND = 0,\n    X11 = 1,\n}\n\nexport namespace Cursor {\n    export const $gtype: GObject.GType<Cursor>;\n}\n\nexport enum Cursor {\n    NONE = 0,\n    DEFAULT = 1,\n    NORTH_RESIZE = 2,\n    SOUTH_RESIZE = 3,\n    WEST_RESIZE = 4,\n    EAST_RESIZE = 5,\n    SE_RESIZE = 6,\n    SW_RESIZE = 7,\n    NE_RESIZE = 8,\n    NW_RESIZE = 9,\n    MOVE_OR_RESIZE_WINDOW = 10,\n    BUSY = 11,\n    DND_IN_DRAG = 12,\n    DND_MOVE = 13,\n    DND_COPY = 14,\n    DND_UNSUPPORTED_TARGET = 15,\n    POINTING_HAND = 16,\n    CROSSHAIR = 17,\n    IBEAM = 18,\n    BLANK = 19,\n    LAST = 20,\n}\n\nexport namespace DisplayCorner {\n    export const $gtype: GObject.GType<DisplayCorner>;\n}\n\nexport enum DisplayCorner {\n    TOPLEFT = 0,\n    TOPRIGHT = 1,\n    BOTTOMLEFT = 2,\n    BOTTOMRIGHT = 3,\n}\n\nexport namespace DisplayDirection {\n    export const $gtype: GObject.GType<DisplayDirection>;\n}\n\nexport enum DisplayDirection {\n    UP = 0,\n    DOWN = 1,\n    LEFT = 2,\n    RIGHT = 3,\n}\n\nexport namespace EdgeType {\n    export const $gtype: GObject.GType<EdgeType>;\n}\n\nexport enum EdgeType {\n    WINDOW = 0,\n    MONITOR = 1,\n    SCREEN = 2,\n}\n\nexport namespace ExitCode {\n    export const $gtype: GObject.GType<ExitCode>;\n}\n\nexport enum ExitCode {\n    SUCCESS = 0,\n    ERROR = 1,\n}\n\nexport namespace FrameType {\n    export const $gtype: GObject.GType<FrameType>;\n}\n\nexport enum FrameType {\n    NORMAL = 0,\n    DIALOG = 1,\n    MODAL_DIALOG = 2,\n    UTILITY = 3,\n    MENU = 4,\n    BORDER = 5,\n    ATTACHED = 6,\n    LAST = 7,\n}\n\nexport namespace GrabOp {\n    export const $gtype: GObject.GType<GrabOp>;\n}\n\nexport enum GrabOp {\n    NONE = 0,\n    WINDOW_BASE = 1,\n    MOVING = 1,\n    MOVING_UNCONSTRAINED = 1025,\n    RESIZING_NW = 36865,\n    RESIZING_N = 32769,\n    RESIZING_NE = 40961,\n    RESIZING_E = 8193,\n    RESIZING_SW = 20481,\n    RESIZING_S = 16385,\n    RESIZING_SE = 24577,\n    RESIZING_W = 4097,\n    KEYBOARD_MOVING = 257,\n    KEYBOARD_RESIZING_UNKNOWN = 769,\n    KEYBOARD_RESIZING_NW = 37121,\n    KEYBOARD_RESIZING_N = 33025,\n    KEYBOARD_RESIZING_NE = 41217,\n    KEYBOARD_RESIZING_E = 8449,\n    KEYBOARD_RESIZING_SW = 20737,\n    KEYBOARD_RESIZING_S = 16641,\n    KEYBOARD_RESIZING_SE = 24833,\n    KEYBOARD_RESIZING_W = 4353,\n}\n\nexport namespace Gravity {\n    export const $gtype: GObject.GType<Gravity>;\n}\n\nexport enum Gravity {\n    NONE = 0,\n    NORTH_WEST = 1,\n    NORTH = 2,\n    NORTH_EAST = 3,\n    WEST = 4,\n    CENTER = 5,\n    EAST = 6,\n    SOUTH_WEST = 7,\n    SOUTH = 8,\n    SOUTH_EAST = 9,\n    STATIC = 10,\n}\n\nexport namespace InhibitShortcutsDialogResponse {\n    export const $gtype: GObject.GType<InhibitShortcutsDialogResponse>;\n}\n\nexport enum InhibitShortcutsDialogResponse {\n    ALLOW = 0,\n    DENY = 1,\n}\n\nexport namespace KeyBindingAction {\n    export const $gtype: GObject.GType<KeyBindingAction>;\n}\n\nexport enum KeyBindingAction {\n    NONE = 0,\n    WORKSPACE_1 = 1,\n    WORKSPACE_2 = 2,\n    WORKSPACE_3 = 3,\n    WORKSPACE_4 = 4,\n    WORKSPACE_5 = 5,\n    WORKSPACE_6 = 6,\n    WORKSPACE_7 = 7,\n    WORKSPACE_8 = 8,\n    WORKSPACE_9 = 9,\n    WORKSPACE_10 = 10,\n    WORKSPACE_11 = 11,\n    WORKSPACE_12 = 12,\n    WORKSPACE_LEFT = 13,\n    WORKSPACE_RIGHT = 14,\n    WORKSPACE_UP = 15,\n    WORKSPACE_DOWN = 16,\n    WORKSPACE_LAST = 17,\n    SWITCH_APPLICATIONS = 18,\n    SWITCH_APPLICATIONS_BACKWARD = 19,\n    SWITCH_GROUP = 20,\n    SWITCH_GROUP_BACKWARD = 21,\n    SWITCH_WINDOWS = 22,\n    SWITCH_WINDOWS_BACKWARD = 23,\n    SWITCH_PANELS = 24,\n    SWITCH_PANELS_BACKWARD = 25,\n    CYCLE_GROUP = 26,\n    CYCLE_GROUP_BACKWARD = 27,\n    CYCLE_WINDOWS = 28,\n    CYCLE_WINDOWS_BACKWARD = 29,\n    CYCLE_PANELS = 30,\n    CYCLE_PANELS_BACKWARD = 31,\n    SHOW_DESKTOP = 32,\n    PANEL_RUN_DIALOG = 33,\n    TOGGLE_RECORDING = 34,\n    SET_SPEW_MARK = 35,\n    ACTIVATE_WINDOW_MENU = 36,\n    TOGGLE_FULLSCREEN = 37,\n    TOGGLE_MAXIMIZED = 38,\n    TOGGLE_TILED_LEFT = 39,\n    TOGGLE_TILED_RIGHT = 40,\n    TOGGLE_ABOVE = 41,\n    MAXIMIZE = 42,\n    UNMAXIMIZE = 43,\n    TOGGLE_SHADED = 44,\n    MINIMIZE = 45,\n    CLOSE = 46,\n    BEGIN_MOVE = 47,\n    BEGIN_RESIZE = 48,\n    TOGGLE_ON_ALL_WORKSPACES = 49,\n    MOVE_TO_WORKSPACE_1 = 50,\n    MOVE_TO_WORKSPACE_2 = 51,\n    MOVE_TO_WORKSPACE_3 = 52,\n    MOVE_TO_WORKSPACE_4 = 53,\n    MOVE_TO_WORKSPACE_5 = 54,\n    MOVE_TO_WORKSPACE_6 = 55,\n    MOVE_TO_WORKSPACE_7 = 56,\n    MOVE_TO_WORKSPACE_8 = 57,\n    MOVE_TO_WORKSPACE_9 = 58,\n    MOVE_TO_WORKSPACE_10 = 59,\n    MOVE_TO_WORKSPACE_11 = 60,\n    MOVE_TO_WORKSPACE_12 = 61,\n    MOVE_TO_WORKSPACE_LEFT = 62,\n    MOVE_TO_WORKSPACE_RIGHT = 63,\n    MOVE_TO_WORKSPACE_UP = 64,\n    MOVE_TO_WORKSPACE_DOWN = 65,\n    MOVE_TO_WORKSPACE_LAST = 66,\n    MOVE_TO_MONITOR_LEFT = 67,\n    MOVE_TO_MONITOR_RIGHT = 68,\n    MOVE_TO_MONITOR_UP = 69,\n    MOVE_TO_MONITOR_DOWN = 70,\n    RAISE_OR_LOWER = 71,\n    RAISE = 72,\n    LOWER = 73,\n    MAXIMIZE_VERTICALLY = 74,\n    MAXIMIZE_HORIZONTALLY = 75,\n    MOVE_TO_CORNER_NW = 76,\n    MOVE_TO_CORNER_NE = 77,\n    MOVE_TO_CORNER_SW = 78,\n    MOVE_TO_CORNER_SE = 79,\n    MOVE_TO_SIDE_N = 80,\n    MOVE_TO_SIDE_S = 81,\n    MOVE_TO_SIDE_E = 82,\n    MOVE_TO_SIDE_W = 83,\n    MOVE_TO_CENTER = 84,\n    OVERLAY_KEY = 85,\n    LOCATE_POINTER_KEY = 86,\n    ISO_NEXT_GROUP = 87,\n    ALWAYS_ON_TOP = 88,\n    SWITCH_MONITOR = 89,\n    ROTATE_MONITOR = 90,\n    LAST = 91,\n}\n\nexport namespace LaterType {\n    export const $gtype: GObject.GType<LaterType>;\n}\n\nexport enum LaterType {\n    RESIZE = 0,\n    CALC_SHOWING = 1,\n    CHECK_FULLSCREEN = 2,\n    SYNC_STACK = 3,\n    BEFORE_REDRAW = 4,\n    IDLE = 5,\n}\n\nexport namespace LocaleDirection {\n    export const $gtype: GObject.GType<LocaleDirection>;\n}\n\nexport enum LocaleDirection {\n    LTR = 0,\n    RTL = 1,\n}\n\nexport namespace MonitorSwitchConfigType {\n    export const $gtype: GObject.GType<MonitorSwitchConfigType>;\n}\n\nexport enum MonitorSwitchConfigType {\n    ALL_MIRROR = 0,\n    ALL_LINEAR = 1,\n    EXTERNAL = 2,\n    BUILTIN = 3,\n    UNKNOWN = 4,\n}\n\nexport namespace MotionDirection {\n    export const $gtype: GObject.GType<MotionDirection>;\n}\n\nexport enum MotionDirection {\n    UP = -1,\n    DOWN = -2,\n    LEFT = -3,\n    RIGHT = -4,\n    UP_LEFT = -5,\n    UP_RIGHT = -6,\n    DOWN_LEFT = -7,\n    DOWN_RIGHT = -8,\n}\n\nexport namespace PadActionType {\n    export const $gtype: GObject.GType<PadActionType>;\n}\n\nexport enum PadActionType {\n    BUTTON = 0,\n    RING = 1,\n    STRIP = 2,\n}\n\nexport namespace Preference {\n    export const $gtype: GObject.GType<Preference>;\n}\n\nexport enum Preference {\n    MOUSE_BUTTON_MODS = 0,\n    FOCUS_MODE = 1,\n    FOCUS_NEW_WINDOWS = 2,\n    ATTACH_MODAL_DIALOGS = 3,\n    RAISE_ON_CLICK = 4,\n    ACTION_DOUBLE_CLICK_TITLEBAR = 5,\n    ACTION_MIDDLE_CLICK_TITLEBAR = 6,\n    ACTION_RIGHT_CLICK_TITLEBAR = 7,\n    AUTO_RAISE = 8,\n    AUTO_RAISE_DELAY = 9,\n    FOCUS_CHANGE_ON_POINTER_REST = 10,\n    TITLEBAR_FONT = 11,\n    NUM_WORKSPACES = 12,\n    DYNAMIC_WORKSPACES = 13,\n    KEYBINDINGS = 14,\n    DISABLE_WORKAROUNDS = 15,\n    BUTTON_LAYOUT = 16,\n    WORKSPACE_NAMES = 17,\n    VISUAL_BELL = 18,\n    AUDIBLE_BELL = 19,\n    VISUAL_BELL_TYPE = 20,\n    GNOME_ACCESSIBILITY = 21,\n    GNOME_ANIMATIONS = 22,\n    CURSOR_THEME = 23,\n    CURSOR_SIZE = 24,\n    RESIZE_WITH_RIGHT_BUTTON = 25,\n    EDGE_TILING = 26,\n    FORCE_FULLSCREEN = 27,\n    WORKSPACES_ONLY_ON_PRIMARY = 28,\n    DRAGGABLE_BORDER_WIDTH = 29,\n    AUTO_MAXIMIZE = 30,\n    CENTER_NEW_WINDOWS = 31,\n    DRAG_THRESHOLD = 32,\n    LOCATE_POINTER = 33,\n    CHECK_ALIVE_TIMEOUT = 34,\n}\n\nexport namespace SelectionType {\n    export const $gtype: GObject.GType<SelectionType>;\n}\n\nexport enum SelectionType {\n    SELECTION_PRIMARY = 0,\n    SELECTION_CLIPBOARD = 1,\n    SELECTION_DND = 2,\n    N_SELECTION_TYPES = 3,\n}\n\nexport namespace ShadowMode {\n    export const $gtype: GObject.GType<ShadowMode>;\n}\n\nexport enum ShadowMode {\n    AUTO = 0,\n    FORCED_OFF = 1,\n    FORCED_ON = 2,\n}\n\nexport namespace Side {\n    export const $gtype: GObject.GType<Side>;\n}\n\nexport enum Side {\n    LEFT = 1,\n    RIGHT = 2,\n    TOP = 4,\n    BOTTOM = 8,\n}\n\nexport namespace SizeChange {\n    export const $gtype: GObject.GType<SizeChange>;\n}\n\nexport enum SizeChange {\n    MAXIMIZE = 0,\n    UNMAXIMIZE = 1,\n    FULLSCREEN = 2,\n    UNFULLSCREEN = 3,\n    MONITOR_MOVE = 4,\n}\n\nexport namespace StackLayer {\n    export const $gtype: GObject.GType<StackLayer>;\n}\n\nexport enum StackLayer {\n    DESKTOP = 0,\n    BOTTOM = 1,\n    NORMAL = 2,\n    TOP = 4,\n    DOCK = 4,\n    OVERRIDE_REDIRECT = 7,\n    LAST = 8,\n}\n\nexport namespace TabList {\n    export const $gtype: GObject.GType<TabList>;\n}\n\nexport enum TabList {\n    NORMAL = 0,\n    DOCKS = 1,\n    GROUP = 2,\n    NORMAL_ALL = 3,\n}\n\nexport namespace TabShowType {\n    export const $gtype: GObject.GType<TabShowType>;\n}\n\nexport enum TabShowType {\n    ICON = 0,\n    INSTANTLY = 1,\n}\n\nexport namespace WindowClientType {\n    export const $gtype: GObject.GType<WindowClientType>;\n}\n\nexport enum WindowClientType {\n    WAYLAND = 0,\n    X11 = 1,\n}\n\nexport namespace WindowMenuType {\n    export const $gtype: GObject.GType<WindowMenuType>;\n}\n\nexport enum WindowMenuType {\n    WM = 0,\n    APP = 1,\n}\n\nexport namespace WindowType {\n    export const $gtype: GObject.GType<WindowType>;\n}\n\nexport enum WindowType {\n    NORMAL = 0,\n    DESKTOP = 1,\n    DOCK = 2,\n    DIALOG = 3,\n    MODAL_DIALOG = 4,\n    TOOLBAR = 5,\n    MENU = 6,\n    UTILITY = 7,\n    SPLASHSCREEN = 8,\n    DROPDOWN_MENU = 9,\n    POPUP_MENU = 10,\n    TOOLTIP = 11,\n    NOTIFICATION = 12,\n    COMBO = 13,\n    DND = 14,\n    OVERRIDE_OTHER = 15,\n}\n\nexport namespace BackendCapabilities {\n    export const $gtype: GObject.GType<BackendCapabilities>;\n}\n\nexport enum BackendCapabilities {\n    NONE = 0,\n    BARRIERS = 1,\n}\n\nexport namespace BarrierDirection {\n    export const $gtype: GObject.GType<BarrierDirection>;\n}\n\nexport enum BarrierDirection {\n    POSITIVE_X = 1,\n    POSITIVE_Y = 2,\n    NEGATIVE_X = 4,\n    NEGATIVE_Y = 8,\n}\n\nexport namespace DebugPaintFlag {\n    export const $gtype: GObject.GType<DebugPaintFlag>;\n}\n\nexport enum DebugPaintFlag {\n    NONE = 0,\n    OPAQUE_REGION = 1,\n}\n\nexport namespace DebugTopic {\n    export const $gtype: GObject.GType<DebugTopic>;\n}\n\nexport enum DebugTopic {\n    VERBOSE = -1,\n    FOCUS = 1,\n    WORKAREA = 2,\n    STACK = 4,\n    SM = 8,\n    EVENTS = 16,\n    WINDOW_STATE = 32,\n    WINDOW_OPS = 64,\n    GEOMETRY = 128,\n    PLACEMENT = 256,\n    PING = 512,\n    KEYBINDINGS = 1024,\n    SYNC = 2048,\n    STARTUP = 4096,\n    PREFS = 8192,\n    GROUPS = 16384,\n    RESIZING = 32768,\n    SHAPES = 65536,\n    EDGE_RESISTANCE = 131072,\n    DBUS = 262144,\n    INPUT = 524288,\n    WAYLAND = 1048576,\n    KMS = 2097152,\n    SCREEN_CAST = 4194304,\n    REMOTE_DESKTOP = 8388608,\n    BACKEND = 16777216,\n    RENDER = 33554432,\n    COLOR = 67108864,\n}\n\nexport namespace Direction {\n    export const $gtype: GObject.GType<Direction>;\n}\n\nexport enum Direction {\n    LEFT = 1,\n    RIGHT = 2,\n    TOP = 4,\n    BOTTOM = 8,\n    UP = 4,\n    DOWN = 8,\n    HORIZONTAL = 3,\n    VERTICAL = 12,\n}\n\nexport namespace FrameFlags {\n    export const $gtype: GObject.GType<FrameFlags>;\n}\n\nexport enum FrameFlags {\n    ALLOWS_DELETE = 1,\n    ALLOWS_MENU = 2,\n    ALLOWS_MINIMIZE = 4,\n    ALLOWS_MAXIMIZE = 8,\n    ALLOWS_VERTICAL_RESIZE = 16,\n    ALLOWS_HORIZONTAL_RESIZE = 32,\n    HAS_FOCUS = 64,\n    STUCK = 128,\n    MAXIMIZED = 256,\n    ALLOWS_MOVE = 512,\n    FULLSCREEN = 1024,\n    ABOVE = 2048,\n    TILED_LEFT = 4096,\n    TILED_RIGHT = 8192,\n}\n\nexport namespace KeyBindingFlags {\n    export const $gtype: GObject.GType<KeyBindingFlags>;\n}\n\nexport enum KeyBindingFlags {\n    NONE = 0,\n    PER_WINDOW = 1,\n    BUILTIN = 2,\n    IS_REVERSED = 4,\n    NON_MASKABLE = 8,\n    IGNORE_AUTOREPEAT = 16,\n    NO_AUTO_GRAB = 32,\n}\n\nexport namespace KeyboardA11yFlags {\n    export const $gtype: GObject.GType<KeyboardA11yFlags>;\n}\n\nexport enum KeyboardA11yFlags {\n    KEYBOARD_ENABLED = 1,\n    TIMEOUT_ENABLED = 2,\n    MOUSE_KEYS_ENABLED = 4,\n    SLOW_KEYS_ENABLED = 8,\n    SLOW_KEYS_BEEP_PRESS = 16,\n    SLOW_KEYS_BEEP_ACCEPT = 32,\n    SLOW_KEYS_BEEP_REJECT = 64,\n    BOUNCE_KEYS_ENABLED = 128,\n    BOUNCE_KEYS_BEEP_REJECT = 256,\n    TOGGLE_KEYS_ENABLED = 512,\n    STICKY_KEYS_ENABLED = 1024,\n    STICKY_KEYS_TWO_KEY_OFF = 2048,\n    STICKY_KEYS_BEEP = 4096,\n    FEATURE_STATE_CHANGE_BEEP = 8192,\n}\n\nexport namespace MaximizeFlags {\n    export const $gtype: GObject.GType<MaximizeFlags>;\n}\n\nexport enum MaximizeFlags {\n    HORIZONTAL = 1,\n    VERTICAL = 2,\n    BOTH = 3,\n}\n\nexport namespace VirtualModifier {\n    export const $gtype: GObject.GType<VirtualModifier>;\n}\n\nexport enum VirtualModifier {\n    SHIFT_MASK = 32,\n    CONTROL_MASK = 64,\n    ALT_MASK = 128,\n    META_MASK = 256,\n    SUPER_MASK = 512,\n    HYPER_MASK = 1024,\n    MOD2_MASK = 2048,\n    MOD3_MASK = 4096,\n    MOD4_MASK = 8192,\n    MOD5_MASK = 16384,\n}\nexport module Backend {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        capabilities: BackendCapabilities;\n        context: Context;\n    }\n}\nexport abstract class Backend extends GObject.Object implements Gio.Initable {\n    static $gtype: GObject.GType<Backend>;\n\n    constructor(properties?: Partial<Backend.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Backend.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get capabilities(): BackendCapabilities;\n    get context(): Context;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"gpu-added\", callback: (_source: this, gpu: unknown) => void): number;\n    connect_after(signal: \"gpu-added\", callback: (_source: this, gpu: unknown) => void): number;\n    emit(signal: \"gpu-added\", gpu: unknown): void;\n    connect(signal: \"keymap-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"keymap-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"keymap-changed\"): void;\n    connect(signal: \"keymap-layout-group-changed\", callback: (_source: this, object: number) => void): number;\n    connect_after(signal: \"keymap-layout-group-changed\", callback: (_source: this, object: number) => void): number;\n    emit(signal: \"keymap-layout-group-changed\", object: number): void;\n    connect(signal: \"last-device-changed\", callback: (_source: this, object: Clutter.InputDevice) => void): number;\n    connect_after(\n        signal: \"last-device-changed\",\n        callback: (_source: this, object: Clutter.InputDevice) => void\n    ): number;\n    emit(signal: \"last-device-changed\", object: Clutter.InputDevice): void;\n    connect(signal: \"lid-is-closed-changed\", callback: (_source: this, object: boolean) => void): number;\n    connect_after(signal: \"lid-is-closed-changed\", callback: (_source: this, object: boolean) => void): number;\n    emit(signal: \"lid-is-closed-changed\", object: boolean): void;\n    connect(signal: \"prepare-shutdown\", callback: (_source: this) => void): number;\n    connect_after(signal: \"prepare-shutdown\", callback: (_source: this) => void): number;\n    emit(signal: \"prepare-shutdown\"): void;\n\n    // Members\n\n    get_capabilities(): BackendCapabilities;\n    get_context(): Context;\n    get_core_idle_monitor(): IdleMonitor;\n    get_dnd(): Dnd;\n    get_monitor_manager(): MonitorManager;\n    get_remote_access_controller(): RemoteAccessController;\n    get_stage(): Clutter.Actor;\n    is_headless(): boolean;\n    is_rendering_hardware_accelerated(): boolean;\n    lock_layout_group(idx: number): void;\n    set_keymap(layouts: string, variants: string, options: string): void;\n\n    // Implemented Members\n\n    init(cancellable?: Gio.Cancellable | null): boolean;\n    vfunc_init(cancellable?: Gio.Cancellable | null): boolean;\n}\nexport module Background {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        meta_display: Display;\n        metaDisplay: Display;\n    }\n}\nexport class Background extends GObject.Object {\n    static $gtype: GObject.GType<Background>;\n\n    constructor(properties?: Partial<Background.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Background.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get meta_display(): Display;\n    get metaDisplay(): Display;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"changed\", callback: (_source: this) => void): number;\n    emit(signal: \"changed\"): void;\n\n    // Constructors\n\n    static [\"new\"](display: Display): Background;\n\n    // Members\n\n    set_blend(file1: Gio.File, file2: Gio.File, blend_factor: number, style: GDesktopEnums.BackgroundStyle): void;\n    set_color(color: Clutter.Color): void;\n    set_file(file: Gio.File | null, style: GDesktopEnums.BackgroundStyle): void;\n    set_gradient(\n        shading_direction: GDesktopEnums.BackgroundShading,\n        color: Clutter.Color,\n        second_color: Clutter.Color\n    ): void;\n    static refresh_all(): void;\n}\nexport module BackgroundActor {\n    export interface ConstructorProperties extends Clutter.Actor.ConstructorProperties {\n        [key: string]: any;\n        meta_display: Display;\n        metaDisplay: Display;\n        monitor: number;\n    }\n}\nexport class BackgroundActor\n    extends Clutter.Actor\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<BackgroundActor>;\n\n    constructor(properties?: Partial<BackgroundActor.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<BackgroundActor.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get meta_display(): Display;\n    get metaDisplay(): Display;\n    get monitor(): number;\n\n    // Constructors\n\n    static [\"new\"](display: Display, monitor: number): BackgroundActor;\n    // Conflicted with Clutter.Actor.new\n    static [\"new\"](...args: never[]): any;\n\n    // Implemented Members\n\n    find_property(property_name: string): GObject.ParamSpec;\n    get_actor(): Clutter.Actor;\n    get_initial_state(property_name: string, value: GObject.Value | any): void;\n    interpolate_value(property_name: string, interval: Clutter.Interval, progress: number): [boolean, unknown];\n    set_final_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_find_property(property_name: string): GObject.ParamSpec;\n    vfunc_get_actor(): Clutter.Actor;\n    vfunc_get_initial_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_interpolate_value(property_name: string, interval: Clutter.Interval, progress: number): [boolean, unknown];\n    vfunc_set_final_state(property_name: string, value: GObject.Value | any): void;\n    add_actor(actor: Clutter.Actor): void;\n    child_get_property(child: Clutter.Actor, property: string, value: GObject.Value | any): void;\n    child_notify(child: Clutter.Actor, pspec: GObject.ParamSpec): void;\n    child_set_property(child: Clutter.Actor, property: string, value: GObject.Value | any): void;\n    create_child_meta(actor: Clutter.Actor): void;\n    destroy_child_meta(actor: Clutter.Actor): void;\n    find_child_by_name(child_name: string): Clutter.Actor;\n    get_child_meta(actor: Clutter.Actor): Clutter.ChildMeta;\n    remove_actor(actor: Clutter.Actor): void;\n    vfunc_actor_added(actor: Clutter.Actor): void;\n    vfunc_actor_removed(actor: Clutter.Actor): void;\n    vfunc_add(actor: Clutter.Actor): void;\n    vfunc_child_notify(child: Clutter.Actor, pspec: GObject.ParamSpec): void;\n    vfunc_create_child_meta(actor: Clutter.Actor): void;\n    vfunc_destroy_child_meta(actor: Clutter.Actor): void;\n    vfunc_get_child_meta(actor: Clutter.Actor): Clutter.ChildMeta;\n    vfunc_remove(actor: Clutter.Actor): void;\n    get_id(): string;\n    parse_custom_node(script: Clutter.Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    set_custom_property(script: Clutter.Script, name: string, value: GObject.Value | any): void;\n    set_id(id_: string): void;\n    vfunc_get_id(): string;\n    vfunc_parse_custom_node(script: Clutter.Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    vfunc_set_custom_property(script: Clutter.Script, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id_: string): void;\n}\nexport module BackgroundContent {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        background: Background;\n        brightness: number;\n        gradient: boolean;\n        gradient_height: number;\n        gradientHeight: number;\n        gradient_max_darkness: number;\n        gradientMaxDarkness: number;\n        meta_display: Display;\n        metaDisplay: Display;\n        monitor: number;\n        rounded_clip_radius: number;\n        roundedClipRadius: number;\n        vignette: boolean;\n        vignette_sharpness: number;\n        vignetteSharpness: number;\n    }\n}\nexport class BackgroundContent extends GObject.Object implements Clutter.Content {\n    static $gtype: GObject.GType<BackgroundContent>;\n\n    constructor(properties?: Partial<BackgroundContent.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<BackgroundContent.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get background(): Background;\n    set background(val: Background);\n    get brightness(): number;\n    set brightness(val: number);\n    get gradient(): boolean;\n    set gradient(val: boolean);\n    get gradient_height(): number;\n    set gradient_height(val: number);\n    get gradientHeight(): number;\n    set gradientHeight(val: number);\n    get gradient_max_darkness(): number;\n    set gradient_max_darkness(val: number);\n    get gradientMaxDarkness(): number;\n    set gradientMaxDarkness(val: number);\n    get meta_display(): Display;\n    get metaDisplay(): Display;\n    get monitor(): number;\n    get rounded_clip_radius(): number;\n    set rounded_clip_radius(val: number);\n    get roundedClipRadius(): number;\n    set roundedClipRadius(val: number);\n    get vignette(): boolean;\n    set vignette(val: boolean);\n    get vignette_sharpness(): number;\n    set vignette_sharpness(val: number);\n    get vignetteSharpness(): number;\n    set vignetteSharpness(val: number);\n\n    // Members\n\n    set_background(background: Background): void;\n    set_gradient(enabled: boolean, height: number, tone_start: number): void;\n    set_rounded_clip_bounds(bounds?: Graphene.Rect | null): void;\n    set_rounded_clip_radius(radius: number): void;\n    set_vignette(enabled: boolean, brightness: number, sharpness: number): void;\n    static new(display: Display, monitor: number): Clutter.Content;\n\n    // Implemented Members\n\n    get_preferred_size(): [boolean, number | null, number | null];\n    invalidate(): void;\n    invalidate_size(): void;\n    vfunc_attached(actor: Clutter.Actor): void;\n    vfunc_detached(actor: Clutter.Actor): void;\n    vfunc_get_preferred_size(): [boolean, number | null, number | null];\n    vfunc_invalidate(): void;\n    vfunc_invalidate_size(): void;\n    vfunc_paint_content(actor: Clutter.Actor, node: Clutter.PaintNode, paint_context: Clutter.PaintContext): void;\n}\nexport module BackgroundGroup {\n    export interface ConstructorProperties extends Clutter.Actor.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class BackgroundGroup\n    extends Clutter.Actor\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<BackgroundGroup>;\n\n    constructor(properties?: Partial<BackgroundGroup.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<BackgroundGroup.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](): BackgroundGroup;\n\n    // Implemented Members\n\n    find_property(property_name: string): GObject.ParamSpec;\n    get_actor(): Clutter.Actor;\n    get_initial_state(property_name: string, value: GObject.Value | any): void;\n    interpolate_value(property_name: string, interval: Clutter.Interval, progress: number): [boolean, unknown];\n    set_final_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_find_property(property_name: string): GObject.ParamSpec;\n    vfunc_get_actor(): Clutter.Actor;\n    vfunc_get_initial_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_interpolate_value(property_name: string, interval: Clutter.Interval, progress: number): [boolean, unknown];\n    vfunc_set_final_state(property_name: string, value: GObject.Value | any): void;\n    add_actor(actor: Clutter.Actor): void;\n    child_get_property(child: Clutter.Actor, property: string, value: GObject.Value | any): void;\n    child_notify(child: Clutter.Actor, pspec: GObject.ParamSpec): void;\n    child_set_property(child: Clutter.Actor, property: string, value: GObject.Value | any): void;\n    create_child_meta(actor: Clutter.Actor): void;\n    destroy_child_meta(actor: Clutter.Actor): void;\n    find_child_by_name(child_name: string): Clutter.Actor;\n    get_child_meta(actor: Clutter.Actor): Clutter.ChildMeta;\n    remove_actor(actor: Clutter.Actor): void;\n    vfunc_actor_added(actor: Clutter.Actor): void;\n    vfunc_actor_removed(actor: Clutter.Actor): void;\n    vfunc_add(actor: Clutter.Actor): void;\n    vfunc_child_notify(child: Clutter.Actor, pspec: GObject.ParamSpec): void;\n    vfunc_create_child_meta(actor: Clutter.Actor): void;\n    vfunc_destroy_child_meta(actor: Clutter.Actor): void;\n    vfunc_get_child_meta(actor: Clutter.Actor): Clutter.ChildMeta;\n    vfunc_remove(actor: Clutter.Actor): void;\n    get_id(): string;\n    parse_custom_node(script: Clutter.Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    set_custom_property(script: Clutter.Script, name: string, value: GObject.Value | any): void;\n    set_id(id_: string): void;\n    vfunc_get_id(): string;\n    vfunc_parse_custom_node(script: Clutter.Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    vfunc_set_custom_property(script: Clutter.Script, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id_: string): void;\n}\nexport module BackgroundImage {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class BackgroundImage extends GObject.Object {\n    static $gtype: GObject.GType<BackgroundImage>;\n\n    constructor(properties?: Partial<BackgroundImage.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<BackgroundImage.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"loaded\", callback: (_source: this) => void): number;\n    connect_after(signal: \"loaded\", callback: (_source: this) => void): number;\n    emit(signal: \"loaded\"): void;\n\n    // Members\n\n    get_success(): boolean;\n    get_texture(): Cogl.Texture;\n    is_loaded(): boolean;\n}\nexport module BackgroundImageCache {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class BackgroundImageCache extends GObject.Object {\n    static $gtype: GObject.GType<BackgroundImageCache>;\n\n    constructor(properties?: Partial<BackgroundImageCache.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<BackgroundImageCache.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    load(file: Gio.File): BackgroundImage;\n    purge(file: Gio.File): void;\n    static get_default(): BackgroundImageCache;\n}\nexport module Barrier {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        backend: Backend;\n        directions: BarrierDirection;\n        display: Display;\n        x1: number;\n        x2: number;\n        y1: number;\n        y2: number;\n    }\n}\nexport class Barrier extends GObject.Object implements Gio.Initable {\n    static $gtype: GObject.GType<Barrier>;\n\n    constructor(properties?: Partial<Barrier.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Barrier.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get backend(): Backend;\n    get directions(): BarrierDirection;\n    get display(): Display;\n    get x1(): number;\n    get x2(): number;\n    get y1(): number;\n    get y2(): number;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"hit\", callback: (_source: this, event: BarrierEvent) => void): number;\n    connect_after(signal: \"hit\", callback: (_source: this, event: BarrierEvent) => void): number;\n    emit(signal: \"hit\", event: BarrierEvent): void;\n    connect(signal: \"left\", callback: (_source: this, event: BarrierEvent) => void): number;\n    connect_after(signal: \"left\", callback: (_source: this, event: BarrierEvent) => void): number;\n    emit(signal: \"left\", event: BarrierEvent): void;\n\n    // Constructors\n\n    static [\"new\"](\n        backend: Backend,\n        x1: number,\n        y1: number,\n        x2: number,\n        y2: number,\n        directions: BarrierDirection\n    ): Barrier;\n\n    // Members\n\n    destroy(): void;\n    is_active(): boolean;\n    release(event: BarrierEvent): void;\n\n    // Implemented Members\n\n    init(cancellable?: Gio.Cancellable | null): boolean;\n    vfunc_init(cancellable?: Gio.Cancellable | null): boolean;\n}\nexport module Compositor {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        backend: Backend;\n        display: Display;\n    }\n}\nexport abstract class Compositor extends GObject.Object {\n    static $gtype: GObject.GType<Compositor>;\n\n    constructor(properties?: Partial<Compositor.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Compositor.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get backend(): Backend;\n    get display(): Display;\n\n    // Members\n\n    get_feedback_group(): Clutter.Actor;\n    get_laters(): Laters;\n}\nexport module Context {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        name: string;\n        unsafe_mode: boolean;\n        unsafeMode: boolean;\n    }\n}\nexport class Context extends GObject.Object {\n    static $gtype: GObject.GType<Context>;\n\n    constructor(properties?: Partial<Context.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Context.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get name(): string;\n    get unsafe_mode(): boolean;\n    set unsafe_mode(val: boolean);\n    get unsafeMode(): boolean;\n    set unsafeMode(val: boolean);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"prepare-shutdown\", callback: (_source: this) => void): number;\n    connect_after(signal: \"prepare-shutdown\", callback: (_source: this) => void): number;\n    emit(signal: \"prepare-shutdown\"): void;\n    connect(signal: \"started\", callback: (_source: this) => void): number;\n    connect_after(signal: \"started\", callback: (_source: this) => void): number;\n    emit(signal: \"started\"): void;\n\n    // Members\n\n    add_option_entries(entries: GLib.OptionEntry[], translation_domain?: string | null): void;\n    add_option_group(group: GLib.OptionGroup): void;\n    configure(argv?: string[] | null): [boolean, string[] | null];\n    destroy(): void;\n    get_backend(): Backend;\n    get_compositor_type(): CompositorType;\n    get_display(): Display;\n    is_replacing(): boolean;\n    notify_ready(): void;\n    raise_rlimit_nofile(): boolean;\n    restore_rlimit_nofile(): boolean;\n    run_main_loop(): boolean;\n    set_gnome_wm_keybindings(wm_keybindings: string): void;\n    set_plugin_gtype(plugin_gtype: GObject.GType): void;\n    set_plugin_name(plugin_name: string): void;\n    setup(): boolean;\n    start(): boolean;\n    terminate(): void;\n    terminate_with_error(error: GLib.Error): void;\n}\nexport module CursorTracker {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        backend: Backend;\n    }\n}\nexport class CursorTracker extends GObject.Object {\n    static $gtype: GObject.GType<CursorTracker>;\n\n    constructor(properties?: Partial<CursorTracker.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<CursorTracker.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get backend(): Backend;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"cursor-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"cursor-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"cursor-changed\"): void;\n    connect(signal: \"position-invalidated\", callback: (_source: this) => void): number;\n    connect_after(signal: \"position-invalidated\", callback: (_source: this) => void): number;\n    emit(signal: \"position-invalidated\"): void;\n    connect(signal: \"visibility-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"visibility-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"visibility-changed\"): void;\n\n    // Members\n\n    get_hot(): [number, number];\n    get_pointer(): [Graphene.Point, Clutter.ModifierType];\n    get_pointer_visible(): boolean;\n    get_scale(): number;\n    get_sprite(): Cogl.Texture;\n    set_pointer_visible(visible: boolean): void;\n    static get_for_display(display: Display): CursorTracker;\n}\nexport module Display {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        compositor_modifiers: Clutter.ModifierType;\n        compositorModifiers: Clutter.ModifierType;\n        focus_window: Window;\n        focusWindow: Window;\n    }\n}\nexport class Display extends GObject.Object {\n    static $gtype: GObject.GType<Display>;\n\n    constructor(properties?: Partial<Display.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Display.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get compositor_modifiers(): Clutter.ModifierType;\n    get compositorModifiers(): Clutter.ModifierType;\n    get focus_window(): Window;\n    get focusWindow(): Window;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(\n        signal: \"accelerator-activated\",\n        callback: (_source: this, object: number, p0: Clutter.InputDevice, p1: number) => void\n    ): number;\n    connect_after(\n        signal: \"accelerator-activated\",\n        callback: (_source: this, object: number, p0: Clutter.InputDevice, p1: number) => void\n    ): number;\n    emit(signal: \"accelerator-activated\", object: number, p0: Clutter.InputDevice, p1: number): void;\n    connect(signal: \"closing\", callback: (_source: this) => void): number;\n    connect_after(signal: \"closing\", callback: (_source: this) => void): number;\n    emit(signal: \"closing\"): void;\n    connect(signal: \"cursor-updated\", callback: (_source: this) => void): number;\n    connect_after(signal: \"cursor-updated\", callback: (_source: this) => void): number;\n    emit(signal: \"cursor-updated\"): void;\n    connect(signal: \"gl-video-memory-purged\", callback: (_source: this) => void): number;\n    connect_after(signal: \"gl-video-memory-purged\", callback: (_source: this) => void): number;\n    emit(signal: \"gl-video-memory-purged\"): void;\n    connect(signal: \"grab-op-begin\", callback: (_source: this, object: Window, p0: GrabOp) => void): number;\n    connect_after(signal: \"grab-op-begin\", callback: (_source: this, object: Window, p0: GrabOp) => void): number;\n    emit(signal: \"grab-op-begin\", object: Window, p0: GrabOp): void;\n    connect(signal: \"grab-op-end\", callback: (_source: this, object: Window, p0: GrabOp) => void): number;\n    connect_after(signal: \"grab-op-end\", callback: (_source: this, object: Window, p0: GrabOp) => void): number;\n    emit(signal: \"grab-op-end\", object: Window, p0: GrabOp): void;\n    connect(signal: \"in-fullscreen-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"in-fullscreen-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"in-fullscreen-changed\"): void;\n    connect(signal: \"init-xserver\", callback: (_source: this, object: Gio.Task) => boolean): number;\n    connect_after(signal: \"init-xserver\", callback: (_source: this, object: Gio.Task) => boolean): number;\n    emit(signal: \"init-xserver\", object: Gio.Task): void;\n    connect(signal: \"modifiers-accelerator-activated\", callback: (_source: this) => boolean): number;\n    connect_after(signal: \"modifiers-accelerator-activated\", callback: (_source: this) => boolean): number;\n    emit(signal: \"modifiers-accelerator-activated\"): void;\n    connect(signal: \"overlay-key\", callback: (_source: this) => void): number;\n    connect_after(signal: \"overlay-key\", callback: (_source: this) => void): number;\n    emit(signal: \"overlay-key\"): void;\n    connect(\n        signal: \"pad-mode-switch\",\n        callback: (_source: this, object: Clutter.InputDevice, p0: number, p1: number) => void\n    ): number;\n    connect_after(\n        signal: \"pad-mode-switch\",\n        callback: (_source: this, object: Clutter.InputDevice, p0: number, p1: number) => void\n    ): number;\n    emit(signal: \"pad-mode-switch\", object: Clutter.InputDevice, p0: number, p1: number): void;\n    connect(signal: \"restacked\", callback: (_source: this) => void): number;\n    connect_after(signal: \"restacked\", callback: (_source: this) => void): number;\n    emit(signal: \"restacked\"): void;\n    connect(signal: \"restart\", callback: (_source: this) => boolean): number;\n    connect_after(signal: \"restart\", callback: (_source: this) => boolean): number;\n    emit(signal: \"restart\"): void;\n    connect(signal: \"show-osd\", callback: (_source: this, object: number, p0: string, p1: string) => void): number;\n    connect_after(\n        signal: \"show-osd\",\n        callback: (_source: this, object: number, p0: string, p1: string) => void\n    ): number;\n    emit(signal: \"show-osd\", object: number, p0: string, p1: string): void;\n    connect(\n        signal: \"show-pad-osd\",\n        callback: (\n            _source: this,\n            pad: Clutter.InputDevice,\n            settings: Gio.Settings,\n            layout_path: string,\n            edition_mode: boolean,\n            monitor_idx: number\n        ) => Clutter.Actor | null\n    ): number;\n    connect_after(\n        signal: \"show-pad-osd\",\n        callback: (\n            _source: this,\n            pad: Clutter.InputDevice,\n            settings: Gio.Settings,\n            layout_path: string,\n            edition_mode: boolean,\n            monitor_idx: number\n        ) => Clutter.Actor | null\n    ): number;\n    emit(\n        signal: \"show-pad-osd\",\n        pad: Clutter.InputDevice,\n        settings: Gio.Settings,\n        layout_path: string,\n        edition_mode: boolean,\n        monitor_idx: number\n    ): void;\n    connect(\n        signal: \"show-resize-popup\",\n        callback: (_source: this, object: boolean, p0: Rectangle, p1: number, p2: number) => boolean\n    ): number;\n    connect_after(\n        signal: \"show-resize-popup\",\n        callback: (_source: this, object: boolean, p0: Rectangle, p1: number, p2: number) => boolean\n    ): number;\n    emit(signal: \"show-resize-popup\", object: boolean, p0: Rectangle, p1: number, p2: number): void;\n    connect(signal: \"show-restart-message\", callback: (_source: this, message: string | null) => boolean): number;\n    connect_after(signal: \"show-restart-message\", callback: (_source: this, message: string | null) => boolean): number;\n    emit(signal: \"show-restart-message\", message: string | null): void;\n    connect(signal: \"showing-desktop-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"showing-desktop-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"showing-desktop-changed\"): void;\n    connect(signal: \"window-created\", callback: (_source: this, object: Window) => void): number;\n    connect_after(signal: \"window-created\", callback: (_source: this, object: Window) => void): number;\n    emit(signal: \"window-created\", object: Window): void;\n    connect(signal: \"window-demands-attention\", callback: (_source: this, object: Window) => void): number;\n    connect_after(signal: \"window-demands-attention\", callback: (_source: this, object: Window) => void): number;\n    emit(signal: \"window-demands-attention\", object: Window): void;\n    connect(signal: \"window-entered-monitor\", callback: (_source: this, object: number, p0: Window) => void): number;\n    connect_after(\n        signal: \"window-entered-monitor\",\n        callback: (_source: this, object: number, p0: Window) => void\n    ): number;\n    emit(signal: \"window-entered-monitor\", object: number, p0: Window): void;\n    connect(signal: \"window-left-monitor\", callback: (_source: this, object: number, p0: Window) => void): number;\n    connect_after(signal: \"window-left-monitor\", callback: (_source: this, object: number, p0: Window) => void): number;\n    emit(signal: \"window-left-monitor\", object: number, p0: Window): void;\n    connect(signal: \"window-marked-urgent\", callback: (_source: this, object: Window) => void): number;\n    connect_after(signal: \"window-marked-urgent\", callback: (_source: this, object: Window) => void): number;\n    emit(signal: \"window-marked-urgent\", object: Window): void;\n    connect(\n        signal: \"window-visibility-updated\",\n        callback: (_source: this, object: any | null, p0: any | null, p1: any | null) => void\n    ): number;\n    connect_after(\n        signal: \"window-visibility-updated\",\n        callback: (_source: this, object: any | null, p0: any | null, p1: any | null) => void\n    ): number;\n    emit(signal: \"window-visibility-updated\", object: any | null, p0: any | null, p1: any | null): void;\n    connect(signal: \"workareas-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"workareas-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"workareas-changed\"): void;\n    connect(signal: \"x11-display-closing\", callback: (_source: this) => void): number;\n    connect_after(signal: \"x11-display-closing\", callback: (_source: this) => void): number;\n    emit(signal: \"x11-display-closing\"): void;\n    connect(signal: \"x11-display-opened\", callback: (_source: this) => void): number;\n    connect_after(signal: \"x11-display-opened\", callback: (_source: this) => void): number;\n    emit(signal: \"x11-display-opened\"): void;\n    connect(signal: \"x11-display-setup\", callback: (_source: this) => void): number;\n    connect_after(signal: \"x11-display-setup\", callback: (_source: this) => void): number;\n    emit(signal: \"x11-display-setup\"): void;\n\n    // Members\n\n    add_keybinding(name: string, settings: Gio.Settings, flags: KeyBindingFlags, handler: KeyHandlerFunc): number;\n    clear_mouse_mode(): void;\n    close(timestamp: number): void;\n    focus_default_window(timestamp: number): void;\n    freeze_keyboard(timestamp: number): void;\n    get_compositor(): Compositor;\n    get_compositor_modifiers(): Clutter.ModifierType;\n    get_context(): Context;\n    get_current_monitor(): number;\n    get_current_time(): number;\n    get_current_time_roundtrip(): number;\n    get_focus_window(): Window;\n    get_keybinding_action(keycode: number, mask: number): number;\n    get_last_user_time(): number;\n    get_monitor_geometry(monitor: number): Rectangle;\n    get_monitor_in_fullscreen(monitor: number): boolean;\n    get_monitor_index_for_rect(rect: Rectangle): number;\n    get_monitor_neighbor_index(which_monitor: number, dir: DisplayDirection): number;\n    get_monitor_scale(monitor: number): number;\n    get_n_monitors(): number;\n    get_pad_action_label(pad: Clutter.InputDevice, action_type: PadActionType, action_number: number): string;\n    get_primary_monitor(): number;\n    get_selection(): Selection;\n    get_size(): [number, number];\n    get_sound_player(): SoundPlayer;\n    get_tab_current(type: TabList, workspace: Workspace): Window;\n    get_tab_list(type: TabList, workspace?: Workspace | null): Window[];\n    get_tab_next(type: TabList, workspace: Workspace, window: Window | null, backward: boolean): Window;\n    get_workspace_manager(): WorkspaceManager;\n    grab_accelerator(accelerator: string, flags: KeyBindingFlags): number;\n    is_grabbed(): boolean;\n    is_pointer_emulating_sequence(sequence?: Clutter.EventSequence | null): boolean;\n    list_all_windows(): Window[];\n    remove_keybinding(name: string): boolean;\n    request_pad_osd(pad: Clutter.InputDevice, edition_mode: boolean): void;\n    set_cursor(cursor: Cursor): void;\n    set_input_focus(window: Window, focus_frame: boolean, timestamp: number): void;\n    sort_windows_by_stacking(windows: Window[]): Window[];\n    supports_extended_barriers(): boolean;\n    unfreeze_keyboard(timestamp: number): void;\n    ungrab_accelerator(action_id: number): boolean;\n    ungrab_keyboard(timestamp: number): void;\n    unset_input_focus(timestamp: number): void;\n    xserver_time_is_before(time1: number, time2: number): boolean;\n}\nexport module Dnd {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class Dnd extends GObject.Object {\n    static $gtype: GObject.GType<Dnd>;\n\n    constructor(properties?: Partial<Dnd.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Dnd.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"dnd-enter\", callback: (_source: this) => void): number;\n    connect_after(signal: \"dnd-enter\", callback: (_source: this) => void): number;\n    emit(signal: \"dnd-enter\"): void;\n    connect(signal: \"dnd-leave\", callback: (_source: this) => void): number;\n    connect_after(signal: \"dnd-leave\", callback: (_source: this) => void): number;\n    emit(signal: \"dnd-leave\"): void;\n    connect(signal: \"dnd-position-change\", callback: (_source: this, object: number, p0: number) => void): number;\n    connect_after(signal: \"dnd-position-change\", callback: (_source: this, object: number, p0: number) => void): number;\n    emit(signal: \"dnd-position-change\", object: number, p0: number): void;\n}\nexport module IdleMonitor {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        device: Clutter.InputDevice;\n    }\n}\nexport class IdleMonitor extends GObject.Object {\n    static $gtype: GObject.GType<IdleMonitor>;\n\n    constructor(properties?: Partial<IdleMonitor.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<IdleMonitor.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get device(): Clutter.InputDevice;\n\n    // Members\n\n    add_idle_watch(interval_msec: number, callback?: IdleMonitorWatchFunc | null): number;\n    add_user_active_watch(callback?: IdleMonitorWatchFunc | null): number;\n    get_idletime(): number;\n    remove_watch(id: number): void;\n}\nexport module Laters {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class Laters extends GObject.Object {\n    static $gtype: GObject.GType<Laters>;\n\n    constructor(properties?: Partial<Laters.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Laters.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    add(when: LaterType, func: GLib.SourceFunc): number;\n    remove(later_id: number): void;\n}\nexport module LaunchContext {\n    export interface ConstructorProperties extends Gio.AppLaunchContext.ConstructorProperties {\n        [key: string]: any;\n        display: Display;\n        timestamp: number;\n        workspace: Workspace;\n    }\n}\nexport class LaunchContext extends Gio.AppLaunchContext {\n    static $gtype: GObject.GType<LaunchContext>;\n\n    constructor(properties?: Partial<LaunchContext.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<LaunchContext.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get display(): Display;\n    get timestamp(): number;\n    set timestamp(val: number);\n    get workspace(): Workspace;\n    set workspace(val: Workspace);\n\n    // Members\n\n    set_timestamp(timestamp: number): void;\n    set_workspace(workspace: Workspace): void;\n}\nexport module MonitorManager {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        backend: Backend;\n        experimental_hdr: string;\n        experimentalHdr: string;\n        has_builtin_panel: boolean;\n        hasBuiltinPanel: boolean;\n        night_light_supported: boolean;\n        nightLightSupported: boolean;\n        panel_orientation_managed: boolean;\n        panelOrientationManaged: boolean;\n    }\n}\nexport class MonitorManager extends GObject.Object {\n    static $gtype: GObject.GType<MonitorManager>;\n\n    constructor(properties?: Partial<MonitorManager.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<MonitorManager.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get backend(): Backend;\n    get experimental_hdr(): string;\n    set experimental_hdr(val: string);\n    get experimentalHdr(): string;\n    set experimentalHdr(val: string);\n    get has_builtin_panel(): boolean;\n    get hasBuiltinPanel(): boolean;\n    get night_light_supported(): boolean;\n    get nightLightSupported(): boolean;\n    get panel_orientation_managed(): boolean;\n    get panelOrientationManaged(): boolean;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"confirm-display-change\", callback: (_source: this) => void): number;\n    connect_after(signal: \"confirm-display-change\", callback: (_source: this) => void): number;\n    emit(signal: \"confirm-display-change\"): void;\n    connect(\n        signal: \"monitor-privacy-screen-changed\",\n        callback: (_source: this, logical_monitor: unknown, enabled: boolean) => void\n    ): number;\n    connect_after(\n        signal: \"monitor-privacy-screen-changed\",\n        callback: (_source: this, logical_monitor: unknown, enabled: boolean) => void\n    ): number;\n    emit(signal: \"monitor-privacy-screen-changed\", logical_monitor: unknown, enabled: boolean): void;\n    connect(signal: \"monitors-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"monitors-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"monitors-changed\"): void;\n    connect(signal: \"monitors-changed-internal\", callback: (_source: this) => void): number;\n    connect_after(signal: \"monitors-changed-internal\", callback: (_source: this) => void): number;\n    emit(signal: \"monitors-changed-internal\"): void;\n    connect(signal: \"power-save-mode-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"power-save-mode-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"power-save-mode-changed\"): void;\n\n    // Members\n\n    can_switch_config(): boolean;\n    get_display_configuration_timeout(): number;\n    get_is_builtin_display_on(): boolean;\n    get_monitor_for_connector(connector: string): number;\n    get_panel_orientation_managed(): boolean;\n    get_switch_config(): MonitorSwitchConfigType;\n    switch_config(config_type: MonitorSwitchConfigType): void;\n}\nexport module Plugin {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport abstract class Plugin extends GObject.Object {\n    static $gtype: GObject.GType<Plugin>;\n\n    constructor(properties?: Partial<Plugin.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Plugin.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    complete_display_change(ok: boolean): void;\n    destroy_completed(actor: WindowActor): void;\n    get_display(): Display;\n    get_info(): PluginInfo;\n    map_completed(actor: WindowActor): void;\n    minimize_completed(actor: WindowActor): void;\n    size_change_completed(actor: WindowActor): void;\n    switch_workspace_completed(): void;\n    unminimize_completed(actor: WindowActor): void;\n    vfunc_confirm_display_change(): void;\n    vfunc_destroy(actor: WindowActor): void;\n    vfunc_hide_tile_preview(): void;\n    vfunc_keybinding_filter(binding: KeyBinding): boolean;\n    vfunc_kill_switch_workspace(): void;\n    vfunc_kill_window_effects(actor: WindowActor): void;\n    vfunc_locate_pointer(): void;\n    vfunc_map(actor: WindowActor): void;\n    vfunc_minimize(actor: WindowActor): void;\n    vfunc_plugin_info(): PluginInfo;\n    vfunc_show_tile_preview(window: Window, tile_rect: Rectangle, tile_monitor_number: number): void;\n    vfunc_show_window_menu(window: Window, menu: WindowMenuType, x: number, y: number): void;\n    vfunc_show_window_menu_for_rect(window: Window, menu: WindowMenuType, rect: Rectangle): void;\n    vfunc_size_change(\n        actor: WindowActor,\n        which_change: SizeChange,\n        old_frame_rect: Rectangle,\n        old_buffer_rect: Rectangle\n    ): void;\n    vfunc_size_changed(actor: WindowActor): void;\n    vfunc_start(): void;\n    vfunc_switch_workspace(from: number, to: number, direction: MotionDirection): void;\n    vfunc_unminimize(actor: WindowActor): void;\n    vfunc_xevent_filter(event: xlib.XEvent): boolean;\n    static manager_set_plugin_type(gtype: GObject.GType): void;\n}\nexport module RemoteAccessController {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class RemoteAccessController extends GObject.Object {\n    static $gtype: GObject.GType<RemoteAccessController>;\n\n    constructor(properties?: Partial<RemoteAccessController.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<RemoteAccessController.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"new-handle\", callback: (_source: this, object: RemoteAccessHandle) => void): number;\n    connect_after(signal: \"new-handle\", callback: (_source: this, object: RemoteAccessHandle) => void): number;\n    emit(signal: \"new-handle\", object: RemoteAccessHandle): void;\n\n    // Members\n\n    inhibit_remote_access(): void;\n    uninhibit_remote_access(): void;\n}\nexport module RemoteAccessHandle {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        is_recording: boolean;\n        isRecording: boolean;\n    }\n}\nexport class RemoteAccessHandle extends GObject.Object {\n    static $gtype: GObject.GType<RemoteAccessHandle>;\n\n    constructor(properties?: Partial<RemoteAccessHandle.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<RemoteAccessHandle.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get is_recording(): boolean;\n    get isRecording(): boolean;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"stopped\", callback: (_source: this) => void): number;\n    connect_after(signal: \"stopped\", callback: (_source: this) => void): number;\n    emit(signal: \"stopped\"): void;\n\n    // Members\n\n    get_disable_animations(): boolean;\n    stop(): void;\n    vfunc_stop(): void;\n}\nexport module Selection {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class Selection extends GObject.Object {\n    static $gtype: GObject.GType<Selection>;\n\n    constructor(properties?: Partial<Selection.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Selection.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"owner-changed\", callback: (_source: this, object: number, p0: SelectionSource) => void): number;\n    connect_after(\n        signal: \"owner-changed\",\n        callback: (_source: this, object: number, p0: SelectionSource) => void\n    ): number;\n    emit(signal: \"owner-changed\", object: number, p0: SelectionSource): void;\n\n    // Constructors\n\n    static [\"new\"](display: Display): Selection;\n\n    // Members\n\n    get_mimetypes(selection_type: SelectionType): string[];\n    set_owner(selection_type: SelectionType, owner: SelectionSource): void;\n    transfer_async(\n        selection_type: SelectionType,\n        mimetype: string,\n        size: number,\n        output: Gio.OutputStream,\n        cancellable?: Gio.Cancellable | null,\n        callback?: Gio.AsyncReadyCallback<this> | null\n    ): void;\n    transfer_finish(result: Gio.AsyncResult): boolean;\n    unset_owner(selection_type: SelectionType, owner: SelectionSource): void;\n}\nexport module SelectionSource {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class SelectionSource extends GObject.Object {\n    static $gtype: GObject.GType<SelectionSource>;\n\n    constructor(properties?: Partial<SelectionSource.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<SelectionSource.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"activated\", callback: (_source: this) => void): number;\n    connect_after(signal: \"activated\", callback: (_source: this) => void): number;\n    emit(signal: \"activated\"): void;\n    connect(signal: \"deactivated\", callback: (_source: this) => void): number;\n    connect_after(signal: \"deactivated\", callback: (_source: this) => void): number;\n    emit(signal: \"deactivated\"): void;\n\n    // Members\n\n    get_mimetypes(): string[];\n    is_active(): boolean;\n    read_async(\n        mimetype: string,\n        cancellable?: Gio.Cancellable | null,\n        callback?: Gio.AsyncReadyCallback<this> | null\n    ): void;\n    read_finish(result: Gio.AsyncResult): Gio.InputStream;\n    vfunc_activated(): void;\n    vfunc_deactivated(): void;\n    vfunc_get_mimetypes(): string[];\n    vfunc_read_async(\n        mimetype: string,\n        cancellable?: Gio.Cancellable | null,\n        callback?: Gio.AsyncReadyCallback<this> | null\n    ): void;\n    vfunc_read_finish(result: Gio.AsyncResult): Gio.InputStream;\n}\nexport module SelectionSourceMemory {\n    export interface ConstructorProperties extends SelectionSource.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class SelectionSourceMemory extends SelectionSource {\n    static $gtype: GObject.GType<SelectionSourceMemory>;\n\n    constructor(properties?: Partial<SelectionSourceMemory.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<SelectionSourceMemory.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](mimetype: string, content: GLib.Bytes | Uint8Array): SelectionSourceMemory;\n}\nexport module ShadowFactory {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class ShadowFactory extends GObject.Object {\n    static $gtype: GObject.GType<ShadowFactory>;\n\n    constructor(properties?: Partial<ShadowFactory.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ShadowFactory.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"changed\", callback: (_source: this) => void): number;\n    emit(signal: \"changed\"): void;\n\n    // Constructors\n\n    static [\"new\"](): ShadowFactory;\n\n    // Members\n\n    get_params(class_name: string, focused: boolean): ShadowParams;\n    get_shadow(shape: WindowShape, width: number, height: number, class_name: string, focused: boolean): Shadow;\n    set_params(class_name: string, focused: boolean, params: ShadowParams): void;\n    static get_default(): ShadowFactory;\n}\nexport module ShapedTexture {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class ShapedTexture extends GObject.Object implements Clutter.Content {\n    static $gtype: GObject.GType<ShapedTexture>;\n\n    constructor(properties?: Partial<ShapedTexture.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ShapedTexture.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"size-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"size-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"size-changed\"): void;\n\n    // Members\n\n    get_image(clip?: cairo.RectangleInt | null): cairo.Surface | null;\n    get_texture(): Cogl.Texture;\n    set_create_mipmaps(create_mipmaps: boolean): void;\n    set_mask_texture(mask_texture: Cogl.Texture): void;\n\n    // Implemented Members\n\n    get_preferred_size(): [boolean, number | null, number | null];\n    invalidate(): void;\n    invalidate_size(): void;\n    vfunc_attached(actor: Clutter.Actor): void;\n    vfunc_detached(actor: Clutter.Actor): void;\n    vfunc_get_preferred_size(): [boolean, number | null, number | null];\n    vfunc_invalidate(): void;\n    vfunc_invalidate_size(): void;\n    vfunc_paint_content(actor: Clutter.Actor, node: Clutter.PaintNode, paint_context: Clutter.PaintContext): void;\n}\nexport module SoundPlayer {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class SoundPlayer extends GObject.Object {\n    static $gtype: GObject.GType<SoundPlayer>;\n\n    constructor(properties?: Partial<SoundPlayer.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<SoundPlayer.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    play_from_file(file: Gio.File, description: string, cancellable?: Gio.Cancellable | null): void;\n    play_from_theme(name: string, description: string, cancellable?: Gio.Cancellable | null): void;\n}\nexport module Stage {\n    export interface ConstructorProperties extends Clutter.Stage.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class Stage\n    extends Clutter.Stage\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<Stage>;\n\n    constructor(properties?: Partial<Stage.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Stage.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"actors-painted\", callback: (_source: this) => void): number;\n    connect_after(signal: \"actors-painted\", callback: (_source: this) => void): number;\n    emit(signal: \"actors-painted\"): void;\n\n    // Members\n\n    static is_focused(display: Display): boolean;\n}\nexport module StartupNotification {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        display: Display;\n    }\n}\nexport class StartupNotification extends GObject.Object {\n    static $gtype: GObject.GType<StartupNotification>;\n\n    constructor(properties?: Partial<StartupNotification.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<StartupNotification.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get display(): Display;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"changed\", callback: (_source: this, object: StartupSequence) => void): number;\n    connect_after(signal: \"changed\", callback: (_source: this, object: StartupSequence) => void): number;\n    emit(signal: \"changed\", object: StartupSequence): void;\n\n    // Members\n\n    create_launcher(): LaunchContext;\n    get_sequences(): StartupSequence[];\n}\nexport module StartupSequence {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        application_id: string;\n        applicationId: string;\n        display: Display;\n        icon_name: string;\n        iconName: string;\n        id: string;\n        name: string;\n        timestamp: number;\n        wmclass: string;\n        workspace: number;\n    }\n}\nexport class StartupSequence extends GObject.Object {\n    static $gtype: GObject.GType<StartupSequence>;\n\n    constructor(properties?: Partial<StartupSequence.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<StartupSequence.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get application_id(): string;\n    get applicationId(): string;\n    get display(): Display;\n    get icon_name(): string;\n    get iconName(): string;\n    get id(): string;\n    get name(): string;\n    get timestamp(): number;\n    get wmclass(): string;\n    get workspace(): number;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"complete\", callback: (_source: this) => void): number;\n    connect_after(signal: \"complete\", callback: (_source: this) => void): number;\n    emit(signal: \"complete\"): void;\n    connect(signal: \"timeout\", callback: (_source: this) => void): number;\n    connect_after(signal: \"timeout\", callback: (_source: this) => void): number;\n    emit(signal: \"timeout\"): void;\n\n    // Members\n\n    complete(): void;\n    get_application_id(): string | null;\n    get_completed(): boolean;\n    get_icon_name(): string | null;\n    get_id(): string;\n    get_name(): string;\n    get_timestamp(): number;\n    get_wmclass(): string | null;\n    get_workspace(): number;\n}\nexport module WaylandClient {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class WaylandClient extends GObject.Object {\n    static $gtype: GObject.GType<WaylandClient>;\n\n    constructor(properties?: Partial<WaylandClient.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<WaylandClient.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"client-destroyed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"client-destroyed\", callback: (_source: this) => void): number;\n    emit(signal: \"client-destroyed\"): void;\n\n    // Constructors\n\n    static [\"new\"](context: Context, launcher: Gio.SubprocessLauncher): WaylandClient;\n\n    // Members\n\n    hide_from_window_list(window: Window): void;\n    owns_window(window: Window): boolean;\n    show_in_window_list(window: Window): void;\n    spawnv(display: Display, argv: string[]): Gio.Subprocess;\n}\nexport module Window {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        above: boolean;\n        appears_focused: boolean;\n        appearsFocused: boolean;\n        decorated: boolean;\n        demands_attention: boolean;\n        demandsAttention: boolean;\n        display: Display;\n        effect: number;\n        fullscreen: boolean;\n        gtk_app_menu_object_path: string;\n        gtkAppMenuObjectPath: string;\n        gtk_application_id: string;\n        gtkApplicationId: string;\n        gtk_application_object_path: string;\n        gtkApplicationObjectPath: string;\n        gtk_menubar_object_path: string;\n        gtkMenubarObjectPath: string;\n        gtk_unique_bus_name: string;\n        gtkUniqueBusName: string;\n        gtk_window_object_path: string;\n        gtkWindowObjectPath: string;\n        icon: any;\n        is_alive: boolean;\n        isAlive: boolean;\n        maximized_horizontally: boolean;\n        maximizedHorizontally: boolean;\n        maximized_vertically: boolean;\n        maximizedVertically: boolean;\n        mini_icon: any;\n        miniIcon: any;\n        minimized: boolean;\n        mutter_hints: string;\n        mutterHints: string;\n        on_all_workspaces: boolean;\n        onAllWorkspaces: boolean;\n        resizeable: boolean;\n        skip_taskbar: boolean;\n        skipTaskbar: boolean;\n        title: string;\n        urgent: boolean;\n        user_time: number;\n        userTime: number;\n        window_type: WindowType;\n        windowType: WindowType;\n        wm_class: string;\n        wmClass: string;\n        xwindow: number;\n    }\n}\nexport abstract class Window extends GObject.Object implements Gio.Initable {\n    static $gtype: GObject.GType<Window>;\n\n    constructor(properties?: Partial<Window.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Window.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get above(): boolean;\n    get appears_focused(): boolean;\n    get appearsFocused(): boolean;\n    get decorated(): boolean;\n    get demands_attention(): boolean;\n    get demandsAttention(): boolean;\n    get display(): Display;\n    get effect(): number;\n    get fullscreen(): boolean;\n    get gtk_app_menu_object_path(): string;\n    get gtkAppMenuObjectPath(): string;\n    get gtk_application_id(): string;\n    get gtkApplicationId(): string;\n    get gtk_application_object_path(): string;\n    get gtkApplicationObjectPath(): string;\n    get gtk_menubar_object_path(): string;\n    get gtkMenubarObjectPath(): string;\n    get gtk_unique_bus_name(): string;\n    get gtkUniqueBusName(): string;\n    get gtk_window_object_path(): string;\n    get gtkWindowObjectPath(): string;\n    get icon(): any;\n    get is_alive(): boolean;\n    get isAlive(): boolean;\n    get maximized_horizontally(): boolean;\n    get maximizedHorizontally(): boolean;\n    get maximized_vertically(): boolean;\n    get maximizedVertically(): boolean;\n    get mini_icon(): any;\n    get miniIcon(): any;\n    get minimized(): boolean;\n    get mutter_hints(): string;\n    get mutterHints(): string;\n    get on_all_workspaces(): boolean;\n    get onAllWorkspaces(): boolean;\n    get resizeable(): boolean;\n    get skip_taskbar(): boolean;\n    get skipTaskbar(): boolean;\n    get title(): string;\n    get urgent(): boolean;\n    get user_time(): number;\n    get userTime(): number;\n    get window_type(): WindowType;\n    get windowType(): WindowType;\n    get wm_class(): string;\n    get wmClass(): string;\n    get xwindow(): number;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"focus\", callback: (_source: this) => void): number;\n    connect_after(signal: \"focus\", callback: (_source: this) => void): number;\n    emit(signal: \"focus\"): void;\n    connect(signal: \"position-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"position-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"position-changed\"): void;\n    connect(signal: \"raised\", callback: (_source: this) => void): number;\n    connect_after(signal: \"raised\", callback: (_source: this) => void): number;\n    emit(signal: \"raised\"): void;\n    connect(signal: \"shown\", callback: (_source: this) => void): number;\n    connect_after(signal: \"shown\", callback: (_source: this) => void): number;\n    emit(signal: \"shown\"): void;\n    connect(signal: \"size-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"size-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"size-changed\"): void;\n    connect(signal: \"unmanaged\", callback: (_source: this) => void): number;\n    connect_after(signal: \"unmanaged\", callback: (_source: this) => void): number;\n    emit(signal: \"unmanaged\"): void;\n    connect(signal: \"unmanaging\", callback: (_source: this) => void): number;\n    connect_after(signal: \"unmanaging\", callback: (_source: this) => void): number;\n    emit(signal: \"unmanaging\"): void;\n    connect(signal: \"workspace-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"workspace-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"workspace-changed\"): void;\n\n    // Members\n\n    activate(current_time: number): void;\n    activate_with_workspace(current_time: number, workspace: Workspace): void;\n    allows_move(): boolean;\n    allows_resize(): boolean;\n    begin_grab_op(\n        op: GrabOp,\n        device: Clutter.InputDevice | null,\n        sequence: Clutter.EventSequence | null,\n        timestamp: number\n    ): boolean;\n    can_close(): boolean;\n    can_maximize(): boolean;\n    can_minimize(): boolean;\n    change_workspace(workspace: Workspace): void;\n    change_workspace_by_index(space_index: number, append: boolean): void;\n    check_alive(timestamp: number): void;\n    client_rect_to_frame_rect(client_rect: Rectangle): Rectangle;\n    compute_group(): void;\n    [\"delete\"](timestamp: number): void;\n    find_root_ancestor(): Window;\n    focus(timestamp: number): void;\n    foreach_ancestor(func: WindowForeachFunc): void;\n    foreach_transient(func: WindowForeachFunc): void;\n    frame_rect_to_client_rect(frame_rect: Rectangle): Rectangle;\n    get_buffer_rect(): Rectangle;\n    get_client_machine(): string | null;\n    get_client_type(): WindowClientType;\n    get_compositor_private<T = GObject.Object>(): T;\n    get_description(): string;\n    get_display(): Display;\n    get_frame_bounds(): cairo.Region | null;\n    get_frame_rect(): Rectangle;\n    get_frame_type(): FrameType;\n    get_gtk_app_menu_object_path(): string | null;\n    get_gtk_application_id(): string | null;\n    get_gtk_application_object_path(): string | null;\n    get_gtk_menubar_object_path(): string | null;\n    get_gtk_theme_variant(): string | null;\n    get_gtk_unique_bus_name(): string | null;\n    get_gtk_window_object_path(): string | null;\n    get_icon_geometry(): [boolean, Rectangle];\n    get_id(): number;\n    get_layer(): StackLayer;\n    get_maximized(): MaximizeFlags;\n    get_monitor(): number;\n    get_mutter_hints(): string | null;\n    get_pid(): number;\n    get_role(): string;\n    get_sandboxed_app_id(): string | null;\n    get_stable_sequence(): number;\n    get_startup_id(): string | null;\n    get_tile_match(): Window | null;\n    get_title(): string;\n    get_transient_for(): Window | null;\n    get_user_time(): number;\n    get_window_type(): WindowType;\n    get_wm_class(): string | null;\n    get_wm_class_instance(): string | null;\n    get_work_area_all_monitors(): Rectangle;\n    get_work_area_current_monitor(): Rectangle;\n    get_work_area_for_monitor(which_monitor: number): Rectangle;\n    get_workspace(): Workspace;\n    group_leader_changed(): void;\n    has_attached_dialogs(): boolean;\n    has_focus(): boolean;\n    is_above(): boolean;\n    is_always_on_all_workspaces(): boolean;\n    is_ancestor_of_transient(_transient: Window): boolean;\n    is_attached_dialog(): boolean;\n    is_client_decorated(): boolean;\n    is_fullscreen(): boolean;\n    is_hidden(): boolean;\n    is_monitor_sized(): boolean;\n    is_on_all_workspaces(): boolean;\n    is_on_primary_monitor(): boolean;\n    is_override_redirect(): boolean;\n    is_remote(): boolean;\n    is_screen_sized(): boolean;\n    is_skip_taskbar(): boolean;\n    kill(): void;\n    located_on_workspace(workspace: Workspace): boolean;\n    lower(): void;\n    lower_with_transients(timestamp: number): void;\n    make_above(): void;\n    make_fullscreen(): void;\n    maximize(directions: MaximizeFlags): void;\n    minimize(): void;\n    move_frame(user_op: boolean, root_x_nw: number, root_y_nw: number): void;\n    move_resize_frame(user_op: boolean, root_x_nw: number, root_y_nw: number, w: number, h: number): void;\n    move_to_monitor(monitor: number): void;\n    raise(): void;\n    raise_and_make_recent(): void;\n    set_compositor_private(priv: GObject.Object): void;\n    set_demands_attention(): void;\n    set_icon_geometry(rect?: Rectangle | null): void;\n    shove_titlebar_onscreen(): void;\n    showing_on_its_workspace(): boolean;\n    shutdown_group(): void;\n    stick(): void;\n    titlebar_is_onscreen(): boolean;\n    unmake_above(): void;\n    unmake_fullscreen(): void;\n    unmaximize(directions: MaximizeFlags): void;\n    unminimize(): void;\n    unset_demands_attention(): void;\n    unstick(): void;\n\n    // Implemented Members\n\n    init(cancellable?: Gio.Cancellable | null): boolean;\n    vfunc_init(cancellable?: Gio.Cancellable | null): boolean;\n}\nexport module WindowActor {\n    export interface ConstructorProperties extends Clutter.Actor.ConstructorProperties {\n        [key: string]: any;\n        meta_window: Window;\n        metaWindow: Window;\n    }\n}\nexport abstract class WindowActor\n    extends Clutter.Actor\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<WindowActor>;\n\n    constructor(properties?: Partial<WindowActor.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<WindowActor.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get meta_window(): Window;\n    get metaWindow(): Window;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"damaged\", callback: (_source: this) => void): number;\n    connect_after(signal: \"damaged\", callback: (_source: this) => void): number;\n    emit(signal: \"damaged\"): void;\n    connect(signal: \"effects-completed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"effects-completed\", callback: (_source: this) => void): number;\n    emit(signal: \"effects-completed\"): void;\n    connect(signal: \"first-frame\", callback: (_source: this) => void): number;\n    connect_after(signal: \"first-frame\", callback: (_source: this) => void): number;\n    emit(signal: \"first-frame\"): void;\n    connect(signal: \"thawed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"thawed\", callback: (_source: this) => void): number;\n    emit(signal: \"thawed\"): void;\n\n    // Members\n\n    freeze(): void;\n    get_image(clip?: cairo.RectangleInt | null): cairo.Surface | null;\n    get_meta_window(): Window | null;\n    get_texture(): ShapedTexture | null;\n    is_destroyed(): boolean;\n    paint_to_content(clip?: Rectangle | null): Clutter.Content | null;\n    sync_visibility(): void;\n    thaw(): void;\n\n    // Implemented Members\n\n    find_property(property_name: string): GObject.ParamSpec;\n    get_actor(): Clutter.Actor;\n    get_initial_state(property_name: string, value: GObject.Value | any): void;\n    interpolate_value(property_name: string, interval: Clutter.Interval, progress: number): [boolean, unknown];\n    set_final_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_find_property(property_name: string): GObject.ParamSpec;\n    vfunc_get_actor(): Clutter.Actor;\n    vfunc_get_initial_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_interpolate_value(property_name: string, interval: Clutter.Interval, progress: number): [boolean, unknown];\n    vfunc_set_final_state(property_name: string, value: GObject.Value | any): void;\n    add_actor(actor: Clutter.Actor): void;\n    child_get_property(child: Clutter.Actor, property: string, value: GObject.Value | any): void;\n    child_notify(child: Clutter.Actor, pspec: GObject.ParamSpec): void;\n    child_set_property(child: Clutter.Actor, property: string, value: GObject.Value | any): void;\n    create_child_meta(actor: Clutter.Actor): void;\n    destroy_child_meta(actor: Clutter.Actor): void;\n    find_child_by_name(child_name: string): Clutter.Actor;\n    get_child_meta(actor: Clutter.Actor): Clutter.ChildMeta;\n    remove_actor(actor: Clutter.Actor): void;\n    vfunc_actor_added(actor: Clutter.Actor): void;\n    vfunc_actor_removed(actor: Clutter.Actor): void;\n    vfunc_add(actor: Clutter.Actor): void;\n    vfunc_child_notify(child: Clutter.Actor, pspec: GObject.ParamSpec): void;\n    vfunc_create_child_meta(actor: Clutter.Actor): void;\n    vfunc_destroy_child_meta(actor: Clutter.Actor): void;\n    vfunc_get_child_meta(actor: Clutter.Actor): Clutter.ChildMeta;\n    vfunc_remove(actor: Clutter.Actor): void;\n    get_id(): string;\n    parse_custom_node(script: Clutter.Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    set_custom_property(script: Clutter.Script, name: string, value: GObject.Value | any): void;\n    set_id(id_: string): void;\n    vfunc_get_id(): string;\n    vfunc_parse_custom_node(script: Clutter.Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    vfunc_set_custom_property(script: Clutter.Script, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id_: string): void;\n}\nexport module WindowGroup {\n    export interface ConstructorProperties extends Clutter.Actor.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class WindowGroup\n    extends Clutter.Actor\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<WindowGroup>;\n\n    constructor(properties?: Partial<WindowGroup.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<WindowGroup.ConstructorProperties>, ...args: any[]): void;\n\n    // Implemented Members\n\n    find_property(property_name: string): GObject.ParamSpec;\n    get_actor(): Clutter.Actor;\n    get_initial_state(property_name: string, value: GObject.Value | any): void;\n    interpolate_value(property_name: string, interval: Clutter.Interval, progress: number): [boolean, unknown];\n    set_final_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_find_property(property_name: string): GObject.ParamSpec;\n    vfunc_get_actor(): Clutter.Actor;\n    vfunc_get_initial_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_interpolate_value(property_name: string, interval: Clutter.Interval, progress: number): [boolean, unknown];\n    vfunc_set_final_state(property_name: string, value: GObject.Value | any): void;\n    add_actor(actor: Clutter.Actor): void;\n    child_get_property(child: Clutter.Actor, property: string, value: GObject.Value | any): void;\n    child_notify(child: Clutter.Actor, pspec: GObject.ParamSpec): void;\n    child_set_property(child: Clutter.Actor, property: string, value: GObject.Value | any): void;\n    create_child_meta(actor: Clutter.Actor): void;\n    destroy_child_meta(actor: Clutter.Actor): void;\n    find_child_by_name(child_name: string): Clutter.Actor;\n    get_child_meta(actor: Clutter.Actor): Clutter.ChildMeta;\n    remove_actor(actor: Clutter.Actor): void;\n    vfunc_actor_added(actor: Clutter.Actor): void;\n    vfunc_actor_removed(actor: Clutter.Actor): void;\n    vfunc_add(actor: Clutter.Actor): void;\n    vfunc_child_notify(child: Clutter.Actor, pspec: GObject.ParamSpec): void;\n    vfunc_create_child_meta(actor: Clutter.Actor): void;\n    vfunc_destroy_child_meta(actor: Clutter.Actor): void;\n    vfunc_get_child_meta(actor: Clutter.Actor): Clutter.ChildMeta;\n    vfunc_remove(actor: Clutter.Actor): void;\n    get_id(): string;\n    parse_custom_node(script: Clutter.Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    set_custom_property(script: Clutter.Script, name: string, value: GObject.Value | any): void;\n    set_id(id_: string): void;\n    vfunc_get_id(): string;\n    vfunc_parse_custom_node(script: Clutter.Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    vfunc_set_custom_property(script: Clutter.Script, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id_: string): void;\n}\nexport module Workspace {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        active: boolean;\n        n_windows: number;\n        nWindows: number;\n        workspace_index: number;\n        workspaceIndex: number;\n    }\n}\nexport class Workspace extends GObject.Object {\n    static $gtype: GObject.GType<Workspace>;\n\n    constructor(properties?: Partial<Workspace.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Workspace.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get active(): boolean;\n    get n_windows(): number;\n    get nWindows(): number;\n    get workspace_index(): number;\n    get workspaceIndex(): number;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"window-added\", callback: (_source: this, object: Window) => void): number;\n    connect_after(signal: \"window-added\", callback: (_source: this, object: Window) => void): number;\n    emit(signal: \"window-added\", object: Window): void;\n    connect(signal: \"window-removed\", callback: (_source: this, object: Window) => void): number;\n    connect_after(signal: \"window-removed\", callback: (_source: this, object: Window) => void): number;\n    emit(signal: \"window-removed\", object: Window): void;\n\n    // Members\n\n    activate(timestamp: number): void;\n    activate_with_focus(focus_this: Window, timestamp: number): void;\n    get_display(): Display;\n    get_neighbor(direction: MotionDirection): Workspace;\n    get_work_area_all_monitors(): Rectangle;\n    get_work_area_for_monitor(which_monitor: number): Rectangle;\n    index(): number;\n    list_windows(): Window[];\n    set_builtin_struts(struts: Strut[]): void;\n}\nexport module WorkspaceManager {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        layout_columns: number;\n        layoutColumns: number;\n        layout_rows: number;\n        layoutRows: number;\n        n_workspaces: number;\n        nWorkspaces: number;\n    }\n}\nexport class WorkspaceManager extends GObject.Object {\n    static $gtype: GObject.GType<WorkspaceManager>;\n\n    constructor(properties?: Partial<WorkspaceManager.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<WorkspaceManager.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get layout_columns(): number;\n    get layoutColumns(): number;\n    get layout_rows(): number;\n    get layoutRows(): number;\n    get n_workspaces(): number;\n    get nWorkspaces(): number;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"active-workspace-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"active-workspace-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"active-workspace-changed\"): void;\n    connect(signal: \"showing-desktop-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"showing-desktop-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"showing-desktop-changed\"): void;\n    connect(signal: \"workspace-added\", callback: (_source: this, object: number) => void): number;\n    connect_after(signal: \"workspace-added\", callback: (_source: this, object: number) => void): number;\n    emit(signal: \"workspace-added\", object: number): void;\n    connect(signal: \"workspace-removed\", callback: (_source: this, object: number) => void): number;\n    connect_after(signal: \"workspace-removed\", callback: (_source: this, object: number) => void): number;\n    emit(signal: \"workspace-removed\", object: number): void;\n    connect(\n        signal: \"workspace-switched\",\n        callback: (_source: this, object: number, p0: number, p1: MotionDirection) => void\n    ): number;\n    connect_after(\n        signal: \"workspace-switched\",\n        callback: (_source: this, object: number, p0: number, p1: MotionDirection) => void\n    ): number;\n    emit(signal: \"workspace-switched\", object: number, p0: number, p1: MotionDirection): void;\n    connect(signal: \"workspaces-reordered\", callback: (_source: this) => void): number;\n    connect_after(signal: \"workspaces-reordered\", callback: (_source: this) => void): number;\n    emit(signal: \"workspaces-reordered\"): void;\n\n    // Members\n\n    append_new_workspace(activate: boolean, timestamp: number): Workspace;\n    get_active_workspace(): Workspace;\n    get_active_workspace_index(): number;\n    get_n_workspaces(): number;\n    get_workspace_by_index(index: number): Workspace | null;\n    override_workspace_layout(\n        starting_corner: DisplayCorner,\n        vertical_layout: boolean,\n        n_rows: number,\n        n_columns: number\n    ): void;\n    remove_workspace(workspace: Workspace, timestamp: number): void;\n    reorder_workspace(workspace: Workspace, new_index: number): void;\n}\nexport module X11Display {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class X11Display extends GObject.Object {\n    static $gtype: GObject.GType<X11Display>;\n\n    constructor(properties?: Partial<X11Display.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<X11Display.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    set_stage_input_region(region: xfixes.XserverRegion): void;\n}\n\nexport class BarrierEvent {\n    static $gtype: GObject.GType<BarrierEvent>;\n\n    constructor(\n        properties?: Partial<{\n            ref_count?: number;\n            event_id?: number;\n            dt?: number;\n            time?: number;\n            x?: number;\n            y?: number;\n            dx?: number;\n            dy?: number;\n            released?: boolean;\n            grabbed?: boolean;\n        }>\n    );\n    constructor(copy: BarrierEvent);\n\n    // Fields\n    ref_count: number;\n    event_id: number;\n    dt: number;\n    time: number;\n    x: number;\n    y: number;\n    dx: number;\n    dy: number;\n    released: boolean;\n    grabbed: boolean;\n}\n\nexport class ButtonLayout {\n    static $gtype: GObject.GType<ButtonLayout>;\n\n    constructor(copy: ButtonLayout);\n}\n\nexport class Edge {\n    static $gtype: GObject.GType<Edge>;\n\n    constructor(copy: Edge);\n\n    // Fields\n    side_type: Side;\n    edge_type: EdgeType;\n}\n\nexport class Frame {\n    static $gtype: GObject.GType<Frame>;\n\n    constructor(copy: Frame);\n}\n\nexport class FrameBorder {\n    static $gtype: GObject.GType<FrameBorder>;\n\n    constructor(\n        properties?: Partial<{\n            left?: number;\n            right?: number;\n            top?: number;\n            bottom?: number;\n        }>\n    );\n    constructor(copy: FrameBorder);\n\n    // Fields\n    left: number;\n    right: number;\n    top: number;\n    bottom: number;\n}\n\nexport class FrameBorders {\n    static $gtype: GObject.GType<FrameBorders>;\n\n    constructor(copy: FrameBorders);\n\n    // Members\n    clear(): void;\n}\n\nexport class KeyBinding {\n    static $gtype: GObject.GType<KeyBinding>;\n\n    constructor(copy: KeyBinding);\n\n    // Members\n    get_mask(): number;\n    get_modifiers(): Clutter.ModifierType;\n    get_name(): string;\n    is_builtin(): boolean;\n    is_reversed(): boolean;\n}\n\nexport class PluginInfo {\n    static $gtype: GObject.GType<PluginInfo>;\n\n    constructor(\n        properties?: Partial<{\n            name?: string;\n            version?: string;\n            author?: string;\n            license?: string;\n            description?: string;\n        }>\n    );\n    constructor(copy: PluginInfo);\n\n    // Fields\n    name: string;\n    version: string;\n    author: string;\n    license: string;\n    description: string;\n}\n\nexport class Rectangle {\n    static $gtype: GObject.GType<Rectangle>;\n\n    constructor(\n        properties?: Partial<{\n            x?: number;\n            y?: number;\n            width?: number;\n            height?: number;\n        }>\n    );\n    constructor(copy: Rectangle);\n\n    // Fields\n    x: number;\n    y: number;\n    width: number;\n    height: number;\n\n    // Members\n    area(): number;\n    contains_rect(inner_rect: Rectangle): boolean;\n    copy(): Rectangle;\n    could_fit_rect(inner_rect: Rectangle): boolean;\n    equal(src2: Rectangle): boolean;\n    free(): void;\n    horiz_overlap(rect2: Rectangle): boolean;\n    intersect(src2: Rectangle): [boolean, Rectangle];\n    overlap(rect2: Rectangle): boolean;\n    union(rect2: Rectangle): Rectangle;\n    vert_overlap(rect2: Rectangle): boolean;\n}\n\nexport class Settings {\n    static $gtype: GObject.GType<Settings>;\n\n    constructor(copy: Settings);\n\n    // Members\n    get_font_dpi(): number;\n    get_ui_scaling_factor(): number;\n}\n\nexport class Shadow {\n    static $gtype: GObject.GType<Shadow>;\n\n    constructor(copy: Shadow);\n\n    // Members\n    get_bounds(\n        window_x: number,\n        window_y: number,\n        window_width: number,\n        window_height: number,\n        bounds: cairo.RectangleInt\n    ): void;\n    paint(\n        framebuffer: Cogl.Framebuffer,\n        window_x: number,\n        window_y: number,\n        window_width: number,\n        window_height: number,\n        opacity: number,\n        clip: cairo.Region | null,\n        clip_strictly: boolean\n    ): void;\n    ref(): Shadow;\n    unref(): void;\n}\n\nexport class ShadowParams {\n    static $gtype: GObject.GType<ShadowParams>;\n\n    constructor(\n        properties?: Partial<{\n            radius?: number;\n            top_fade?: number;\n            x_offset?: number;\n            y_offset?: number;\n            opacity?: number;\n        }>\n    );\n    constructor(copy: ShadowParams);\n\n    // Fields\n    radius: number;\n    top_fade: number;\n    x_offset: number;\n    y_offset: number;\n    opacity: number;\n}\n\nexport class Strut {\n    static $gtype: GObject.GType<Strut>;\n\n    constructor(copy: Strut);\n\n    // Fields\n    side: Side;\n}\n\nexport class WindowShape {\n    static $gtype: GObject.GType<WindowShape>;\n\n    constructor(region: cairo.Region);\n    constructor(copy: WindowShape);\n\n    // Constructors\n    static [\"new\"](region: cairo.Region): WindowShape;\n\n    // Members\n    equal(shape_b: WindowShape): boolean;\n    get_borders(border_top: number, border_right: number, border_bottom: number, border_left: number): void;\n    hash(): number;\n    ref(): WindowShape;\n    to_region(center_width: number, center_height: number): cairo.Region;\n    unref(): void;\n}\n\nexport interface CloseDialogNamespace {\n    $gtype: GObject.GType<CloseDialog>;\n    prototype: CloseDialogPrototype;\n}\nexport type CloseDialog = CloseDialogPrototype;\nexport interface CloseDialogPrototype extends GObject.Object {\n    // Properties\n    readonly window: Window;\n\n    // Members\n\n    focus(): void;\n    hide(): void;\n    is_visible(): boolean;\n    response(response: CloseDialogResponse): void;\n    show(): void;\n    vfunc_focus(): void;\n    vfunc_hide(): void;\n    vfunc_show(): void;\n}\n\nexport const CloseDialog: CloseDialogNamespace;\n\nexport interface InhibitShortcutsDialogNamespace {\n    $gtype: GObject.GType<InhibitShortcutsDialog>;\n    prototype: InhibitShortcutsDialogPrototype;\n}\nexport type InhibitShortcutsDialog = InhibitShortcutsDialogPrototype;\nexport interface InhibitShortcutsDialogPrototype extends GObject.Object {\n    // Properties\n    readonly window: Window;\n\n    // Members\n\n    hide(): void;\n    response(response: InhibitShortcutsDialogResponse): void;\n    show(): void;\n    vfunc_hide(): void;\n    vfunc_show(): void;\n}\n\nexport const InhibitShortcutsDialog: InhibitShortcutsDialogNamespace;\n"
  },
  {
    "path": "@types/shell12/doc.json",
    "content": "{\n    \"name\": \"Shell\",\n    \"api_version\": \"12\",\n    \"package_version\": \"12.0\",\n    \"imports\": {\n        \"Gio\": \"2.0\",\n        \"Atk\": \"1.0\",\n        \"GObject\": \"2.0\",\n        \"Clutter\": \"12\",\n        \"Cogl\": \"12\",\n        \"NM\": \"1.0\",\n        \"PolkitAgent\": \"1.0\",\n        \"St\": \"12\",\n        \"Gcr\": \"4\",\n        \"cairo\": \"1.0\",\n        \"GdkPixbuf\": \"2.0\",\n        \"Meta\": \"12\",\n        \"GLib\": \"2.0\",\n        \"Graphene\": \"1.0\"\n    }\n}"
  },
  {
    "path": "@types/shell12/index.d.ts",
    "content": "/**\n * Shell 12\n *\n * Generated from 12.0\n */\n\nimport * as Gio from \"@gi-types/gio2\";\nimport * as Atk from \"@gi-types/atk1\";\nimport * as GObject from \"@gi-types/gobject2\";\nimport * as Clutter from \"@gi-types/clutter12\";\nimport * as Cogl from \"@gi-types/cogl12\";\nimport * as NM from \"@gi-types/nm1\";\nimport * as PolkitAgent from \"@gi-types/polkitagent1\";\nimport * as St from \"@gi-types/st12\";\nimport * as Gcr from \"@gi-types/gcr4\";\nimport * as cairo from \"@gi-types/cairo1\";\nimport * as GdkPixbuf from \"@gi-types/gdkpixbuf2\";\nimport * as Meta from \"@gi-types/meta12\";\nimport * as GLib from \"@gi-types/glib2\";\nimport * as Graphene from \"@gi-types/graphene1\";\n\nexport const KEYRING_SK_TAG: string;\nexport const KEYRING_SN_TAG: string;\nexport const KEYRING_UUID_TAG: string;\nexport function get_file_contents_utf8_sync(path: string): string;\nexport function util_check_cloexec_fds(): void;\nexport function util_composite_capture_images(\n    captures: Clutter.Capture,\n    n_captures: number,\n    x: number,\n    y: number,\n    target_width: number,\n    target_height: number,\n    target_scale: number\n): cairo.Surface;\nexport function util_create_pixbuf_from_data(\n    data: Uint8Array | string,\n    colorspace: GdkPixbuf.Colorspace,\n    has_alpha: boolean,\n    bits_per_sample: number,\n    width: number,\n    height: number,\n    rowstride: number\n): GdkPixbuf.Pixbuf;\nexport function util_get_translated_folder_name(name: string): string | null;\nexport function util_get_uid(): number;\nexport function util_get_week_start(): number;\nexport function util_has_x11_display_extension(display: Meta.Display, extension: string): boolean;\nexport function util_regex_escape(str: string): string;\nexport function util_sd_notify(): void;\nexport function util_set_hidden_from_pick(actor: Clutter.Actor, hidden: boolean): void;\nexport function util_start_systemd_unit(\n    unit: string,\n    mode: string,\n    cancellable?: Gio.Cancellable | null,\n    callback?: Gio.AsyncReadyCallback<string> | null\n): void;\nexport function util_start_systemd_unit_finish(res: Gio.AsyncResult): boolean;\nexport function util_stop_systemd_unit(\n    unit: string,\n    mode: string,\n    cancellable?: Gio.Cancellable | null,\n    callback?: Gio.AsyncReadyCallback<string> | null\n): void;\nexport function util_stop_systemd_unit_finish(res: Gio.AsyncResult): boolean;\nexport function util_systemd_unit_exists(\n    unit: string,\n    cancellable?: Gio.Cancellable | null,\n    callback?: Gio.AsyncReadyCallback<string> | null\n): void;\nexport function util_systemd_unit_exists_finish(res: Gio.AsyncResult): boolean;\nexport function util_touch_file_async(file: Gio.File, callback?: Gio.AsyncReadyCallback<Gio.File> | null): void;\nexport function util_touch_file_finish(file: Gio.File, res: Gio.AsyncResult): boolean;\nexport function util_translate_time_string(str: string): string;\nexport function util_wifexited(status: number): [boolean, number];\nexport function write_string_to_stream(stream: Gio.OutputStream, str: string): boolean;\nexport type LeisureFunction = (data?: any | null) => void;\nexport type PerfReplayFunction = (time: number, name: string, signature: string, arg: GObject.Value | any) => void;\nexport type PerfStatisticsCallback = (perf_log: PerfLog, data?: any | null) => void;\n\nexport namespace AppLaunchGpu {\n    export const $gtype: GObject.GType<AppLaunchGpu>;\n}\n\nexport enum AppLaunchGpu {\n    APP_PREF = 0,\n    DISCRETE = 1,\n    DEFAULT = 2,\n}\n\nexport namespace AppState {\n    export const $gtype: GObject.GType<AppState>;\n}\n\nexport enum AppState {\n    STOPPED = 0,\n    STARTING = 1,\n    RUNNING = 2,\n}\n\nexport namespace BlurMode {\n    export const $gtype: GObject.GType<BlurMode>;\n}\n\nexport enum BlurMode {\n    ACTOR = 0,\n    BACKGROUND = 1,\n}\n\nexport namespace NetworkAgentResponse {\n    export const $gtype: GObject.GType<NetworkAgentResponse>;\n}\n\nexport enum NetworkAgentResponse {\n    CONFIRMED = 0,\n    USER_CANCELED = 1,\n    INTERNAL_ERROR = 2,\n}\n\nexport namespace SnippetHook {\n    export const $gtype: GObject.GType<SnippetHook>;\n}\n\nexport enum SnippetHook {\n    VERTEX = 0,\n    VERTEX_TRANSFORM = 1,\n    FRAGMENT = 2048,\n    TEXTURE_COORD_TRANSFORM = 4096,\n    LAYER_FRAGMENT = 6144,\n    TEXTURE_LOOKUP = 6145,\n}\n\nexport namespace ActionMode {\n    export const $gtype: GObject.GType<ActionMode>;\n}\n\nexport enum ActionMode {\n    NONE = 0,\n    NORMAL = 1,\n    OVERVIEW = 2,\n    LOCK_SCREEN = 4,\n    UNLOCK_SCREEN = 8,\n    LOGIN_SCREEN = 16,\n    SYSTEM_MODAL = 32,\n    LOOKING_GLASS = 64,\n    POPUP = 128,\n    ALL = -1,\n}\nexport module App {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        action_group: Gio.ActionGroup;\n        actionGroup: Gio.ActionGroup;\n        app_info: Gio.DesktopAppInfo;\n        appInfo: Gio.DesktopAppInfo;\n        busy: boolean;\n        icon: Gio.Icon;\n        id: string;\n        state: AppState;\n    }\n}\nexport class App extends GObject.Object {\n    static $gtype: GObject.GType<App>;\n\n    constructor(properties?: Partial<App.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<App.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get action_group(): Gio.ActionGroup;\n    get actionGroup(): Gio.ActionGroup;\n    get app_info(): Gio.DesktopAppInfo;\n    get appInfo(): Gio.DesktopAppInfo;\n    get busy(): boolean;\n    get icon(): Gio.Icon;\n    get id(): string;\n    get state(): AppState;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"windows-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"windows-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"windows-changed\"): void;\n\n    // Members\n\n    activate(): void;\n    activate_full(workspace: number, timestamp: number): void;\n    activate_window(window: Meta.Window | null, timestamp: number): void;\n    can_open_new_window(): boolean;\n    compare(other: App): number;\n    compare_by_name(other: App): number;\n    create_icon_texture(size: number): Clutter.Actor;\n    get_app_info(): Gio.DesktopAppInfo;\n    get_busy(): boolean;\n    get_description(): string;\n    get_icon(): Gio.Icon;\n    get_id(): string;\n    get_n_windows(): number;\n    get_name(): string;\n    get_pids(): number[];\n    get_state(): AppState;\n    get_windows(): Meta.Window[];\n    is_on_workspace(workspace: Meta.Workspace): boolean;\n    is_window_backed(): boolean;\n    launch(timestamp: number, workspace: number, gpu_pref: AppLaunchGpu): boolean;\n    launch_action(action_name: string, timestamp: number, workspace: number): void;\n    open_new_window(workspace: number): void;\n    request_quit(): boolean;\n    update_app_actions(window: Meta.Window): void;\n    update_window_actions(window: Meta.Window): void;\n}\nexport module AppSystem {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class AppSystem extends GObject.Object {\n    static $gtype: GObject.GType<AppSystem>;\n\n    constructor(properties?: Partial<AppSystem.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<AppSystem.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"app-state-changed\", callback: (_source: this, object: App) => void): number;\n    connect_after(signal: \"app-state-changed\", callback: (_source: this, object: App) => void): number;\n    emit(signal: \"app-state-changed\", object: App): void;\n    connect(signal: \"installed-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"installed-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"installed-changed\"): void;\n\n    // Members\n\n    get_installed(): Gio.AppInfo[];\n    get_running(): App[];\n    lookup_app(id: string): App;\n    lookup_desktop_wmclass(wmclass?: string | null): App;\n    lookup_heuristic_basename(id: string): App;\n    lookup_startup_wmclass(wmclass?: string | null): App;\n    static get_default(): AppSystem;\n    static search(search_string: string): string[][];\n}\nexport module AppUsage {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class AppUsage extends GObject.Object {\n    static $gtype: GObject.GType<AppUsage>;\n\n    constructor(properties?: Partial<AppUsage.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<AppUsage.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    compare(id_a: string, id_b: string): number;\n    get_most_used(): App[];\n    static get_default(): AppUsage;\n}\nexport module BlurEffect {\n    export interface ConstructorProperties extends Clutter.Effect.ConstructorProperties {\n        [key: string]: any;\n        brightness: number;\n        mode: BlurMode;\n        sigma: number;\n    }\n}\nexport class BlurEffect extends Clutter.Effect {\n    static $gtype: GObject.GType<BlurEffect>;\n\n    constructor(properties?: Partial<BlurEffect.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<BlurEffect.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get brightness(): number;\n    set brightness(val: number);\n    get mode(): BlurMode;\n    set mode(val: BlurMode);\n    get sigma(): number;\n    set sigma(val: number);\n\n    // Constructors\n\n    static [\"new\"](): BlurEffect;\n\n    // Members\n\n    get_brightness(): number;\n    get_mode(): BlurMode;\n    get_sigma(): number;\n    set_brightness(brightness: number): void;\n    set_mode(mode: BlurMode): void;\n    set_sigma(sigma: number): void;\n}\nexport module GLSLEffect {\n    export interface ConstructorProperties extends Clutter.OffscreenEffect.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class GLSLEffect extends Clutter.OffscreenEffect {\n    static $gtype: GObject.GType<GLSLEffect>;\n\n    constructor(properties?: Partial<GLSLEffect.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<GLSLEffect.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    add_glsl_snippet(hook: SnippetHook, declarations: string, code: string, is_replace: boolean): void;\n    get_uniform_location(name: string): number;\n    set_uniform_float(uniform: number, n_components: number, value: number[]): void;\n    set_uniform_matrix(uniform: number, transpose: boolean, dimensions: number, value: number[]): void;\n    vfunc_build_pipeline(): void;\n}\nexport module Global {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        backend: Meta.Backend;\n        compositor: Meta.Compositor;\n        context: Meta.Context;\n        datadir: string;\n        display: Meta.Display;\n        focus_manager: St.FocusManager;\n        focusManager: St.FocusManager;\n        force_animations: boolean;\n        forceAnimations: boolean;\n        frame_finish_timestamp: boolean;\n        frameFinishTimestamp: boolean;\n        frame_timestamps: boolean;\n        frameTimestamps: boolean;\n        imagedir: string;\n        screen_height: number;\n        screenHeight: number;\n        screen_width: number;\n        screenWidth: number;\n        session_mode: string;\n        sessionMode: string;\n        settings: Gio.Settings;\n        stage: Clutter.Actor;\n        switcheroo_control: Gio.DBusProxy;\n        switcherooControl: Gio.DBusProxy;\n        top_window_group: Clutter.Actor;\n        topWindowGroup: Clutter.Actor;\n        userdatadir: string;\n        window_group: Clutter.Actor;\n        windowGroup: Clutter.Actor;\n        window_manager: WM;\n        windowManager: WM;\n        workspace_manager: Meta.WorkspaceManager;\n        workspaceManager: Meta.WorkspaceManager;\n    }\n}\nexport class Global extends GObject.Object {\n    static $gtype: GObject.GType<Global>;\n\n    constructor(properties?: Partial<Global.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Global.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get backend(): Meta.Backend;\n    get compositor(): Meta.Compositor;\n    get context(): Meta.Context;\n    get datadir(): string;\n    get display(): Meta.Display;\n    get focus_manager(): St.FocusManager;\n    get focusManager(): St.FocusManager;\n    get force_animations(): boolean;\n    set force_animations(val: boolean);\n    get forceAnimations(): boolean;\n    set forceAnimations(val: boolean);\n    get frame_finish_timestamp(): boolean;\n    set frame_finish_timestamp(val: boolean);\n    get frameFinishTimestamp(): boolean;\n    set frameFinishTimestamp(val: boolean);\n    get frame_timestamps(): boolean;\n    set frame_timestamps(val: boolean);\n    get frameTimestamps(): boolean;\n    set frameTimestamps(val: boolean);\n    get imagedir(): string;\n    get screen_height(): number;\n    get screenHeight(): number;\n    get screen_width(): number;\n    get screenWidth(): number;\n    get session_mode(): string;\n    get sessionMode(): string;\n    get settings(): Gio.Settings;\n    get stage(): Clutter.Actor;\n    get switcheroo_control(): Gio.DBusProxy;\n    get switcherooControl(): Gio.DBusProxy;\n    get top_window_group(): Clutter.Actor;\n    get topWindowGroup(): Clutter.Actor;\n    get userdatadir(): string;\n    get window_group(): Clutter.Actor;\n    get windowGroup(): Clutter.Actor;\n    get window_manager(): WM;\n    get windowManager(): WM;\n    get workspace_manager(): Meta.WorkspaceManager;\n    get workspaceManager(): Meta.WorkspaceManager;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"locate-pointer\", callback: (_source: this) => void): number;\n    connect_after(signal: \"locate-pointer\", callback: (_source: this) => void): number;\n    emit(signal: \"locate-pointer\"): void;\n    connect(signal: \"notify-error\", callback: (_source: this, object: string, p0: string) => void): number;\n    connect_after(signal: \"notify-error\", callback: (_source: this, object: string, p0: string) => void): number;\n    emit(signal: \"notify-error\", object: string, p0: string): void;\n    connect(signal: \"shutdown\", callback: (_source: this) => void): number;\n    connect_after(signal: \"shutdown\", callback: (_source: this) => void): number;\n    emit(signal: \"shutdown\"): void;\n\n    // Members\n\n    begin_work(): void;\n    create_app_launch_context(timestamp: number, workspace: number): Gio.AppLaunchContext;\n    end_work(): void;\n    get_context(): Meta.Context;\n    get_current_time(): number;\n    get_display(): Meta.Display;\n    get_persistent_state(property_type: string, property_name: string): GLib.Variant;\n    get_pointer(): [number, number, Clutter.ModifierType];\n    get_runtime_state(property_type: string, property_name: string): GLib.Variant;\n    get_session_mode(): string;\n    get_settings(): Gio.Settings;\n    get_stage(): Clutter.Stage;\n    get_switcheroo_control(): Gio.DBusProxy;\n    get_window_actors(): Meta.WindowActor[];\n    get_workspace_manager(): Meta.WorkspaceManager;\n    notify_error(msg: string, details: string): void;\n    reexec_self(): void;\n    run_at_leisure(func: LeisureFunction): void;\n    set_persistent_state(property_name: string, variant?: GLib.Variant | null): void;\n    set_runtime_state(property_name: string, variant?: GLib.Variant | null): void;\n    set_stage_input_region(rectangles: Meta.Rectangle[]): void;\n    static get(): Global;\n}\nexport module InvertLightnessEffect {\n    export interface ConstructorProperties extends Clutter.OffscreenEffect.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class InvertLightnessEffect extends Clutter.OffscreenEffect {\n    static $gtype: GObject.GType<InvertLightnessEffect>;\n\n    constructor(properties?: Partial<InvertLightnessEffect.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<InvertLightnessEffect.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](): InvertLightnessEffect;\n}\nexport module KeyringPrompt {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        choice_visible: boolean;\n        choiceVisible: boolean;\n        confirm_actor: Clutter.Text;\n        confirmActor: Clutter.Text;\n        confirm_visible: boolean;\n        confirmVisible: boolean;\n        password_actor: Clutter.Text;\n        passwordActor: Clutter.Text;\n        password_visible: boolean;\n        passwordVisible: boolean;\n        warning_visible: boolean;\n        warningVisible: boolean;\n    }\n}\nexport class KeyringPrompt extends GObject.Object implements Gcr.Prompt {\n    static $gtype: GObject.GType<KeyringPrompt>;\n\n    constructor(properties?: Partial<KeyringPrompt.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<KeyringPrompt.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get choice_visible(): boolean;\n    get choiceVisible(): boolean;\n    get confirm_actor(): Clutter.Text;\n    set confirm_actor(val: Clutter.Text);\n    get confirmActor(): Clutter.Text;\n    set confirmActor(val: Clutter.Text);\n    get confirm_visible(): boolean;\n    get confirmVisible(): boolean;\n    get password_actor(): Clutter.Text;\n    set password_actor(val: Clutter.Text);\n    get passwordActor(): Clutter.Text;\n    set passwordActor(val: Clutter.Text);\n    get password_visible(): boolean;\n    get passwordVisible(): boolean;\n    get warning_visible(): boolean;\n    get warningVisible(): boolean;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"show-confirm\", callback: (_source: this) => void): number;\n    connect_after(signal: \"show-confirm\", callback: (_source: this) => void): number;\n    emit(signal: \"show-confirm\"): void;\n    connect(signal: \"show-password\", callback: (_source: this) => void): number;\n    connect_after(signal: \"show-password\", callback: (_source: this) => void): number;\n    emit(signal: \"show-password\"): void;\n\n    // Implemented Properties\n\n    get caller_window(): string;\n    set caller_window(val: string);\n    get callerWindow(): string;\n    set callerWindow(val: string);\n    get cancel_label(): string;\n    set cancel_label(val: string);\n    get cancelLabel(): string;\n    set cancelLabel(val: string);\n    get choice_chosen(): boolean;\n    set choice_chosen(val: boolean);\n    get choiceChosen(): boolean;\n    set choiceChosen(val: boolean);\n    get choice_label(): string;\n    set choice_label(val: string);\n    get choiceLabel(): string;\n    set choiceLabel(val: string);\n    get continue_label(): string;\n    set continue_label(val: string);\n    get continueLabel(): string;\n    set continueLabel(val: string);\n    get description(): string;\n    set description(val: string);\n    get message(): string;\n    set message(val: string);\n    get password_new(): boolean;\n    set password_new(val: boolean);\n    get passwordNew(): boolean;\n    set passwordNew(val: boolean);\n    get password_strength(): number;\n    get passwordStrength(): number;\n    get title(): string;\n    set title(val: string);\n    get warning(): string;\n    set warning(val: string);\n\n    // Constructors\n\n    static [\"new\"](): KeyringPrompt;\n\n    // Members\n\n    cancel(): void;\n    complete(): boolean;\n    get_confirm_actor(): Clutter.Text | null;\n    get_password_actor(): Clutter.Text | null;\n    set_confirm_actor(confirm_actor?: Clutter.Text | null): void;\n    set_password_actor(password_actor?: Clutter.Text | null): void;\n\n    // Implemented Members\n\n    close(): void;\n    confirm(cancellable?: Gio.Cancellable | null): Gcr.PromptReply;\n    confirm_async(cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback<this> | null): void;\n    confirm_finish(result: Gio.AsyncResult): Gcr.PromptReply;\n    confirm_run(cancellable?: Gio.Cancellable | null): Gcr.PromptReply;\n    get_caller_window(): string;\n    get_cancel_label(): string;\n    get_choice_chosen(): boolean;\n    get_choice_label(): string;\n    get_continue_label(): string;\n    get_description(): string;\n    get_message(): string;\n    get_password_new(): boolean;\n    get_password_strength(): number;\n    get_title(): string;\n    get_warning(): string;\n    password(cancellable?: Gio.Cancellable | null): string;\n    password_async(cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback<this> | null): void;\n    password_finish(result: Gio.AsyncResult): string;\n    password_run(cancellable?: Gio.Cancellable | null): string;\n    reset(): void;\n    set_caller_window(window_id: string): void;\n    set_cancel_label(cancel_label: string): void;\n    set_choice_chosen(chosen: boolean): void;\n    set_choice_label(choice_label?: string | null): void;\n    set_continue_label(continue_label: string): void;\n    set_description(description: string): void;\n    set_message(message: string): void;\n    set_password_new(new_password: boolean): void;\n    set_title(title: string): void;\n    set_warning(warning?: string | null): void;\n    vfunc_prompt_close(): void;\n    vfunc_prompt_confirm_async(\n        cancellable?: Gio.Cancellable | null,\n        callback?: Gio.AsyncReadyCallback<this> | null\n    ): void;\n    vfunc_prompt_confirm_finish(result: Gio.AsyncResult): Gcr.PromptReply;\n    vfunc_prompt_password_async(\n        cancellable?: Gio.Cancellable | null,\n        callback?: Gio.AsyncReadyCallback<this> | null\n    ): void;\n    vfunc_prompt_password_finish(result: Gio.AsyncResult): string;\n}\nexport module MountOperation {\n    export interface ConstructorProperties extends Gio.MountOperation.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class MountOperation extends Gio.MountOperation {\n    static $gtype: GObject.GType<MountOperation>;\n\n    constructor(properties?: Partial<MountOperation.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<MountOperation.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"show-processes-2\", callback: (_source: this) => void): number;\n    connect_after(signal: \"show-processes-2\", callback: (_source: this) => void): number;\n    emit(signal: \"show-processes-2\"): void;\n\n    // Constructors\n\n    static [\"new\"](): MountOperation;\n\n    // Members\n\n    get_show_processes_choices(): string[];\n    get_show_processes_message(): string;\n    get_show_processes_pids(): GLib.Pid[];\n}\nexport module NetworkAgent {\n    export interface ConstructorProperties extends NM.SecretAgentOld.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class NetworkAgent extends NM.SecretAgentOld implements Gio.AsyncInitable<NetworkAgent>, Gio.Initable {\n    static $gtype: GObject.GType<NetworkAgent>;\n\n    constructor(properties?: Partial<NetworkAgent.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<NetworkAgent.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"cancel-request\", callback: (_source: this, object: string) => void): number;\n    connect_after(signal: \"cancel-request\", callback: (_source: this, object: string) => void): number;\n    emit(signal: \"cancel-request\", object: string): void;\n    connect(\n        signal: \"new-request\",\n        callback: (_source: this, object: string, p0: NM.Connection, p1: string, p2: string[], p3: number) => void\n    ): number;\n    connect_after(\n        signal: \"new-request\",\n        callback: (_source: this, object: string, p0: NM.Connection, p1: string, p2: string[], p3: number) => void\n    ): number;\n    emit(signal: \"new-request\", object: string, p0: NM.Connection, p1: string, p2: string[], p3: number): void;\n\n    // Members\n\n    add_vpn_secret(request_id: string, setting_key: string, setting_value: string): void;\n    respond(request_id: string, response: NetworkAgentResponse): void;\n    search_vpn_plugin(service: string, callback?: Gio.AsyncReadyCallback<this> | null): void;\n    search_vpn_plugin_finish(result: Gio.AsyncResult): NM.VpnPluginInfo | null;\n    set_password(request_id: string, setting_key: string, setting_value: string): void;\n\n    // Implemented Members\n\n    init_async(\n        io_priority: number,\n        cancellable?: Gio.Cancellable | null,\n        callback?: Gio.AsyncReadyCallback<this> | null\n    ): void;\n    init_finish(res: Gio.AsyncResult): boolean;\n    new_finish(res: Gio.AsyncResult): NetworkAgent;\n    vfunc_init_async(\n        io_priority: number,\n        cancellable?: Gio.Cancellable | null,\n        callback?: Gio.AsyncReadyCallback<this> | null\n    ): void;\n    vfunc_init_finish(res: Gio.AsyncResult): boolean;\n    init(cancellable?: Gio.Cancellable | null): boolean;\n    vfunc_init(cancellable?: Gio.Cancellable | null): boolean;\n}\nexport module PerfLog {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class PerfLog extends GObject.Object {\n    static $gtype: GObject.GType<PerfLog>;\n\n    constructor(properties?: Partial<PerfLog.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<PerfLog.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    add_statistics_callback(callback: PerfStatisticsCallback): void;\n    collect_statistics(): void;\n    define_event(name: string, description: string, signature: string): void;\n    define_statistic(name: string, description: string, signature: string): void;\n    dump_events(out: Gio.OutputStream): boolean;\n    dump_log(out: Gio.OutputStream): boolean;\n    event(name: string): void;\n    event_i(name: string, arg: number): void;\n    event_s(name: string, arg: string): void;\n    event_x(name: string, arg: number): void;\n    replay(replay_function: PerfReplayFunction): void;\n    set_enabled(enabled: boolean): void;\n    update_statistic_i(name: string, value: number): void;\n    update_statistic_x(name: string, value: number): void;\n    static get_default(): PerfLog;\n}\nexport module PolkitAuthenticationAgent {\n    export interface ConstructorProperties extends PolkitAgent.Listener.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class PolkitAuthenticationAgent extends PolkitAgent.Listener {\n    static $gtype: GObject.GType<PolkitAuthenticationAgent>;\n\n    constructor(properties?: Partial<PolkitAuthenticationAgent.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<PolkitAuthenticationAgent.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"cancel\", callback: (_source: this) => void): number;\n    connect_after(signal: \"cancel\", callback: (_source: this) => void): number;\n    emit(signal: \"cancel\"): void;\n    connect(\n        signal: \"initiate\",\n        callback: (_source: this, object: string, p0: string, p1: string, p2: string, p3: string[]) => void\n    ): number;\n    connect_after(\n        signal: \"initiate\",\n        callback: (_source: this, object: string, p0: string, p1: string, p2: string, p3: string[]) => void\n    ): number;\n    emit(signal: \"initiate\", object: string, p0: string, p1: string, p2: string, p3: string[]): void;\n\n    // Constructors\n\n    static [\"new\"](): PolkitAuthenticationAgent;\n\n    // Members\n\n    complete(dismissed: boolean): void;\n    register(): void;\n    // Conflicted with PolkitAgent.Listener.register\n    register(...args: never[]): any;\n    unregister(): void;\n}\nexport module Screenshot {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class Screenshot extends GObject.Object {\n    static $gtype: GObject.GType<Screenshot>;\n\n    constructor(properties?: Partial<Screenshot.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Screenshot.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"screenshot-taken\", callback: (_source: this, object: Meta.Rectangle) => void): number;\n    connect_after(signal: \"screenshot-taken\", callback: (_source: this, object: Meta.Rectangle) => void): number;\n    emit(signal: \"screenshot-taken\", object: Meta.Rectangle): void;\n\n    // Constructors\n\n    static [\"new\"](): Screenshot;\n\n    // Members\n\n    pick_color(x: number, y: number, callback?: Gio.AsyncReadyCallback<this> | null): void;\n    pick_color_finish(result: Gio.AsyncResult): [boolean, Clutter.Color];\n    screenshot(include_cursor: boolean, stream: Gio.OutputStream, callback?: Gio.AsyncReadyCallback<this> | null): void;\n    screenshot_area(\n        x: number,\n        y: number,\n        width: number,\n        height: number,\n        stream: Gio.OutputStream,\n        callback?: Gio.AsyncReadyCallback<this> | null\n    ): void;\n    screenshot_area_finish(result: Gio.AsyncResult): [boolean, cairo.RectangleInt];\n    screenshot_finish(result: Gio.AsyncResult): [boolean, cairo.RectangleInt];\n    screenshot_stage_to_content(callback?: Gio.AsyncReadyCallback<this> | null): void;\n    screenshot_stage_to_content_finish(\n        result: Gio.AsyncResult\n    ): [Clutter.Content, number | null, Clutter.Content | null, Graphene.Point | null, number | null];\n    screenshot_window(\n        include_frame: boolean,\n        include_cursor: boolean,\n        stream: Gio.OutputStream,\n        callback?: Gio.AsyncReadyCallback<this> | null\n    ): void;\n    screenshot_window_finish(result: Gio.AsyncResult): [boolean, cairo.RectangleInt];\n    static composite_to_stream(\n        texture: Cogl.Texture,\n        x: number,\n        y: number,\n        width: number,\n        height: number,\n        scale: number,\n        cursor: Cogl.Texture | null,\n        cursor_x: number,\n        cursor_y: number,\n        cursor_scale: number,\n        stream: Gio.OutputStream,\n        callback?: Gio.AsyncReadyCallback<Screenshot> | null\n    ): void;\n    static composite_to_stream_finish(result: Gio.AsyncResult): GdkPixbuf.Pixbuf | null;\n}\nexport module SecureTextBuffer {\n    export interface ConstructorProperties extends Clutter.TextBuffer.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class SecureTextBuffer extends Clutter.TextBuffer {\n    static $gtype: GObject.GType<SecureTextBuffer>;\n\n    constructor(properties?: Partial<SecureTextBuffer.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<SecureTextBuffer.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](): SecureTextBuffer;\n}\nexport module SquareBin {\n    export interface ConstructorProperties extends St.Bin.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class SquareBin\n    extends St.Bin\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<SquareBin>;\n\n    constructor(properties?: Partial<SquareBin.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<SquareBin.ConstructorProperties>, ...args: any[]): void;\n}\nexport module Stack {\n    export interface ConstructorProperties extends St.Widget.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class Stack\n    extends St.Widget\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<Stack>;\n\n    constructor(properties?: Partial<Stack.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Stack.ConstructorProperties>, ...args: any[]): void;\n}\nexport module TrayIcon {\n    export interface ConstructorProperties extends Clutter.Clone.ConstructorProperties {\n        [key: string]: any;\n        pid: number;\n        title: string;\n        wm_class: string;\n        wmClass: string;\n    }\n}\nexport class TrayIcon\n    extends Clutter.Clone\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<TrayIcon>;\n\n    constructor(properties?: Partial<TrayIcon.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<TrayIcon.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get pid(): number;\n    get title(): string;\n    get wm_class(): string;\n    get wmClass(): string;\n\n    // Members\n\n    click(event: Clutter.Event): void;\n}\nexport module TrayManager {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        bg_color: Clutter.Color;\n        bgColor: Clutter.Color;\n    }\n}\nexport class TrayManager extends GObject.Object {\n    static $gtype: GObject.GType<TrayManager>;\n\n    constructor(properties?: Partial<TrayManager.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<TrayManager.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get bg_color(): Clutter.Color;\n    get bgColor(): Clutter.Color;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"tray-icon-added\", callback: (_source: this, object: Clutter.Actor) => void): number;\n    connect_after(signal: \"tray-icon-added\", callback: (_source: this, object: Clutter.Actor) => void): number;\n    emit(signal: \"tray-icon-added\", object: Clutter.Actor): void;\n    connect(signal: \"tray-icon-removed\", callback: (_source: this, object: Clutter.Actor) => void): number;\n    connect_after(signal: \"tray-icon-removed\", callback: (_source: this, object: Clutter.Actor) => void): number;\n    emit(signal: \"tray-icon-removed\", object: Clutter.Actor): void;\n\n    // Constructors\n\n    static [\"new\"](): TrayManager;\n\n    // Members\n\n    manage_screen(theme_widget: St.Widget): void;\n    unmanage_screen(): void;\n}\nexport module WM {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class WM extends GObject.Object {\n    static $gtype: GObject.GType<WM>;\n\n    constructor(properties?: Partial<WM.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<WM.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"confirm-display-change\", callback: (_source: this) => void): number;\n    connect_after(signal: \"confirm-display-change\", callback: (_source: this) => void): number;\n    emit(signal: \"confirm-display-change\"): void;\n    connect(signal: \"create-close-dialog\", callback: (_source: this, window: Meta.Window) => Meta.CloseDialog): number;\n    connect_after(\n        signal: \"create-close-dialog\",\n        callback: (_source: this, window: Meta.Window) => Meta.CloseDialog\n    ): number;\n    emit(signal: \"create-close-dialog\", window: Meta.Window): void;\n    connect(\n        signal: \"create-inhibit-shortcuts-dialog\",\n        callback: (_source: this, window: Meta.Window) => Meta.InhibitShortcutsDialog\n    ): number;\n    connect_after(\n        signal: \"create-inhibit-shortcuts-dialog\",\n        callback: (_source: this, window: Meta.Window) => Meta.InhibitShortcutsDialog\n    ): number;\n    emit(signal: \"create-inhibit-shortcuts-dialog\", window: Meta.Window): void;\n    connect(signal: \"destroy\", callback: (_source: this, object: Meta.WindowActor) => void): number;\n    connect_after(signal: \"destroy\", callback: (_source: this, object: Meta.WindowActor) => void): number;\n    emit(signal: \"destroy\", object: Meta.WindowActor): void;\n    connect(signal: \"filter-keybinding\", callback: (_source: this, object: Meta.KeyBinding) => boolean): number;\n    connect_after(signal: \"filter-keybinding\", callback: (_source: this, object: Meta.KeyBinding) => boolean): number;\n    emit(signal: \"filter-keybinding\", object: Meta.KeyBinding): void;\n    connect(signal: \"hide-tile-preview\", callback: (_source: this) => void): number;\n    connect_after(signal: \"hide-tile-preview\", callback: (_source: this) => void): number;\n    emit(signal: \"hide-tile-preview\"): void;\n    connect(signal: \"kill-switch-workspace\", callback: (_source: this) => void): number;\n    connect_after(signal: \"kill-switch-workspace\", callback: (_source: this) => void): number;\n    emit(signal: \"kill-switch-workspace\"): void;\n    connect(signal: \"kill-window-effects\", callback: (_source: this, object: Meta.WindowActor) => void): number;\n    connect_after(signal: \"kill-window-effects\", callback: (_source: this, object: Meta.WindowActor) => void): number;\n    emit(signal: \"kill-window-effects\", object: Meta.WindowActor): void;\n    connect(signal: \"map\", callback: (_source: this, object: Meta.WindowActor) => void): number;\n    connect_after(signal: \"map\", callback: (_source: this, object: Meta.WindowActor) => void): number;\n    emit(signal: \"map\", object: Meta.WindowActor): void;\n    connect(signal: \"minimize\", callback: (_source: this, object: Meta.WindowActor) => void): number;\n    connect_after(signal: \"minimize\", callback: (_source: this, object: Meta.WindowActor) => void): number;\n    emit(signal: \"minimize\", object: Meta.WindowActor): void;\n    connect(\n        signal: \"show-tile-preview\",\n        callback: (_source: this, object: Meta.Window, p0: Meta.Rectangle, p1: number) => void\n    ): number;\n    connect_after(\n        signal: \"show-tile-preview\",\n        callback: (_source: this, object: Meta.Window, p0: Meta.Rectangle, p1: number) => void\n    ): number;\n    emit(signal: \"show-tile-preview\", object: Meta.Window, p0: Meta.Rectangle, p1: number): void;\n    connect(\n        signal: \"show-window-menu\",\n        callback: (_source: this, object: Meta.Window, p0: number, p1: Meta.Rectangle) => void\n    ): number;\n    connect_after(\n        signal: \"show-window-menu\",\n        callback: (_source: this, object: Meta.Window, p0: number, p1: Meta.Rectangle) => void\n    ): number;\n    emit(signal: \"show-window-menu\", object: Meta.Window, p0: number, p1: Meta.Rectangle): void;\n    connect(\n        signal: \"size-change\",\n        callback: (\n            _source: this,\n            object: Meta.WindowActor,\n            p0: Meta.SizeChange,\n            p1: Meta.Rectangle,\n            p2: Meta.Rectangle\n        ) => void\n    ): number;\n    connect_after(\n        signal: \"size-change\",\n        callback: (\n            _source: this,\n            object: Meta.WindowActor,\n            p0: Meta.SizeChange,\n            p1: Meta.Rectangle,\n            p2: Meta.Rectangle\n        ) => void\n    ): number;\n    emit(\n        signal: \"size-change\",\n        object: Meta.WindowActor,\n        p0: Meta.SizeChange,\n        p1: Meta.Rectangle,\n        p2: Meta.Rectangle\n    ): void;\n    connect(signal: \"size-changed\", callback: (_source: this, object: Meta.WindowActor) => void): number;\n    connect_after(signal: \"size-changed\", callback: (_source: this, object: Meta.WindowActor) => void): number;\n    emit(signal: \"size-changed\", object: Meta.WindowActor): void;\n    connect(\n        signal: \"switch-workspace\",\n        callback: (_source: this, object: number, p0: number, p1: number) => void\n    ): number;\n    connect_after(\n        signal: \"switch-workspace\",\n        callback: (_source: this, object: number, p0: number, p1: number) => void\n    ): number;\n    emit(signal: \"switch-workspace\", object: number, p0: number, p1: number): void;\n    connect(signal: \"unminimize\", callback: (_source: this, object: Meta.WindowActor) => void): number;\n    connect_after(signal: \"unminimize\", callback: (_source: this, object: Meta.WindowActor) => void): number;\n    emit(signal: \"unminimize\", object: Meta.WindowActor): void;\n\n    // Constructors\n\n    static [\"new\"](plugin: Meta.Plugin): WM;\n\n    // Members\n\n    complete_display_change(ok: boolean): void;\n    completed_destroy(actor: Meta.WindowActor): void;\n    completed_map(actor: Meta.WindowActor): void;\n    completed_minimize(actor: Meta.WindowActor): void;\n    completed_size_change(actor: Meta.WindowActor): void;\n    completed_switch_workspace(): void;\n    completed_unminimize(actor: Meta.WindowActor): void;\n}\nexport module WindowPreview {\n    export interface ConstructorProperties extends St.Widget.ConstructorProperties {\n        [key: string]: any;\n        window_container: Clutter.Actor;\n        windowContainer: Clutter.Actor;\n    }\n}\nexport class WindowPreview\n    extends St.Widget\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<WindowPreview>;\n\n    constructor(properties?: Partial<WindowPreview.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<WindowPreview.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get window_container(): Clutter.Actor;\n    set window_container(val: Clutter.Actor);\n    get windowContainer(): Clutter.Actor;\n    set windowContainer(val: Clutter.Actor);\n}\nexport module WindowPreviewLayout {\n    export interface ConstructorProperties extends Clutter.LayoutManager.ConstructorProperties {\n        [key: string]: any;\n        bounding_box: Clutter.ActorBox;\n        boundingBox: Clutter.ActorBox;\n    }\n}\nexport class WindowPreviewLayout extends Clutter.LayoutManager {\n    static $gtype: GObject.GType<WindowPreviewLayout>;\n\n    constructor(properties?: Partial<WindowPreviewLayout.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<WindowPreviewLayout.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get bounding_box(): Clutter.ActorBox;\n    get boundingBox(): Clutter.ActorBox;\n\n    // Members\n\n    add_window(window: Meta.Window): Clutter.Actor | null;\n    get_windows(): Meta.Window[];\n    remove_window(window: Meta.Window): void;\n}\nexport module WindowTracker {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        focus_app: App;\n        focusApp: App;\n    }\n}\nexport class WindowTracker extends GObject.Object {\n    static $gtype: GObject.GType<WindowTracker>;\n\n    constructor(properties?: Partial<WindowTracker.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<WindowTracker.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get focus_app(): App;\n    get focusApp(): App;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(\n        signal: \"startup-sequence-changed\",\n        callback: (_source: this, object: Meta.StartupSequence) => void\n    ): number;\n    connect_after(\n        signal: \"startup-sequence-changed\",\n        callback: (_source: this, object: Meta.StartupSequence) => void\n    ): number;\n    emit(signal: \"startup-sequence-changed\", object: Meta.StartupSequence): void;\n    connect(signal: \"tracked-windows-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"tracked-windows-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"tracked-windows-changed\"): void;\n\n    // Members\n\n    get_app_from_pid(pid: number): App;\n    get_startup_sequences(): Meta.StartupSequence[];\n    get_window_app(metawin: Meta.Window): App;\n    static get_default(): WindowTracker;\n}\nexport module WorkspaceBackground {\n    export interface ConstructorProperties extends St.Widget.ConstructorProperties {\n        [key: string]: any;\n        monitor_index: number;\n        monitorIndex: number;\n        state_adjustment_value: number;\n        stateAdjustmentValue: number;\n    }\n}\nexport class WorkspaceBackground\n    extends St.Widget\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<WorkspaceBackground>;\n\n    constructor(properties?: Partial<WorkspaceBackground.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<WorkspaceBackground.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get monitor_index(): number;\n    get monitorIndex(): number;\n    get state_adjustment_value(): number;\n    set state_adjustment_value(val: number);\n    get stateAdjustmentValue(): number;\n    set stateAdjustmentValue(val: number);\n}\n\nexport class MemoryInfo {\n    static $gtype: GObject.GType<MemoryInfo>;\n\n    constructor(\n        properties?: Partial<{\n            glibc_uordblks?: number;\n            js_bytes?: number;\n            gjs_boxed?: number;\n            gjs_gobject?: number;\n            gjs_function?: number;\n            gjs_closure?: number;\n            last_gc_seconds_ago?: number;\n        }>\n    );\n    constructor(copy: MemoryInfo);\n\n    // Fields\n    glibc_uordblks: number;\n    js_bytes: number;\n    gjs_boxed: number;\n    gjs_gobject: number;\n    gjs_function: number;\n    gjs_closure: number;\n    last_gc_seconds_ago: number;\n}\n\nexport class NetworkAgentPrivate {\n    static $gtype: GObject.GType<NetworkAgentPrivate>;\n\n    constructor(copy: NetworkAgentPrivate);\n}\n\nexport class WindowPreviewLayoutPrivate {\n    static $gtype: GObject.GType<WindowPreviewLayoutPrivate>;\n\n    constructor(copy: WindowPreviewLayoutPrivate);\n}\n"
  },
  {
    "path": "@types/st12/doc.json",
    "content": "{\n    \"name\": \"St\",\n    \"api_version\": \"12\",\n    \"package_version\": \"12.0\",\n    \"imports\": {\n        \"Atk\": \"1.0\",\n        \"Gio\": \"2.0\",\n        \"GObject\": \"2.0\",\n        \"Clutter\": \"12\",\n        \"Cogl\": \"12\",\n        \"Cally\": \"12\",\n        \"GLib\": \"2.0\",\n        \"cairo\": \"1.0\",\n        \"GdkPixbuf\": \"2.0\",\n        \"Pango\": \"1.0\",\n        \"Json\": \"1.0\"\n    }\n}"
  },
  {
    "path": "@types/st12/index.d.ts",
    "content": "/**\n * St 12\n *\n * Generated from 12.0\n */\n\nimport * as Atk from \"@gi-types/atk1\";\nimport * as Gio from \"@gi-types/gio2\";\nimport * as GObject from \"@gi-types/gobject2\";\nimport * as Clutter from \"@gi-types/clutter12\";\nimport * as Cogl from \"@gi-types/cogl12\";\nimport * as Cally from \"@gi-types/cally12\";\nimport * as GLib from \"@gi-types/glib2\";\nimport * as cairo from \"@gi-types/cairo1\";\nimport * as GdkPixbuf from \"@gi-types/gdkpixbuf2\";\nimport * as Pango from \"@gi-types/pango1\";\nimport * as Json from \"@gi-types/json1\";\n\nexport function describe_actor(actor: Clutter.Actor): string;\nexport function icon_theme_error_quark(): GLib.Quark;\nexport type ClipboardCallbackFunc = (clipboard: Clipboard, text: string) => void;\nexport type ClipboardContentCallbackFunc = (clipboard: Clipboard, bytes: GLib.Bytes | Uint8Array) => void;\nexport type EntryCursorFunc = (entry: Entry, use_ibeam: boolean, data?: any | null) => void;\n\nexport namespace Align {\n    export const $gtype: GObject.GType<Align>;\n}\n\nexport enum Align {\n    START = 0,\n    MIDDLE = 1,\n    END = 2,\n}\n\nexport namespace BackgroundSize {\n    export const $gtype: GObject.GType<BackgroundSize>;\n}\n\nexport enum BackgroundSize {\n    AUTO = 0,\n    CONTAIN = 1,\n    COVER = 2,\n    FIXED = 3,\n}\n\nexport namespace ClipboardType {\n    export const $gtype: GObject.GType<ClipboardType>;\n}\n\nexport enum ClipboardType {\n    PRIMARY = 0,\n    CLIPBOARD = 1,\n}\n\nexport namespace Corner {\n    export const $gtype: GObject.GType<Corner>;\n}\n\nexport enum Corner {\n    TOPLEFT = 0,\n    TOPRIGHT = 1,\n    BOTTOMRIGHT = 2,\n    BOTTOMLEFT = 3,\n}\n\nexport namespace DirectionType {\n    export const $gtype: GObject.GType<DirectionType>;\n}\n\nexport enum DirectionType {\n    TAB_FORWARD = 0,\n    TAB_BACKWARD = 1,\n    UP = 2,\n    DOWN = 3,\n    LEFT = 4,\n    RIGHT = 5,\n}\n\nexport namespace GradientType {\n    export const $gtype: GObject.GType<GradientType>;\n}\n\nexport enum GradientType {\n    NONE = 0,\n    VERTICAL = 1,\n    HORIZONTAL = 2,\n    RADIAL = 3,\n}\n\nexport namespace IconStyle {\n    export const $gtype: GObject.GType<IconStyle>;\n}\n\nexport enum IconStyle {\n    REQUESTED = 0,\n    REGULAR = 1,\n    SYMBOLIC = 2,\n}\n\nexport class IconThemeError extends GLib.Error {\n    static $gtype: GObject.GType<IconThemeError>;\n\n    constructor(options: { message: string; code: number });\n    constructor(copy: IconThemeError);\n\n    // Fields\n    static NOT_FOUND: number;\n    static FAILED: number;\n\n    // Members\n    static quark(): GLib.Quark;\n}\n\nexport namespace PolicyType {\n    export const $gtype: GObject.GType<PolicyType>;\n}\n\nexport enum PolicyType {\n    ALWAYS = 0,\n    AUTOMATIC = 1,\n    NEVER = 2,\n    EXTERNAL = 3,\n}\n\nexport namespace Side {\n    export const $gtype: GObject.GType<Side>;\n}\n\nexport enum Side {\n    TOP = 0,\n    RIGHT = 1,\n    BOTTOM = 2,\n    LEFT = 3,\n}\n\nexport namespace TextAlign {\n    export const $gtype: GObject.GType<TextAlign>;\n}\n\nexport enum TextAlign {\n    LEFT = 0,\n    CENTER = 1,\n    RIGHT = 2,\n    JUSTIFY = 3,\n}\n\nexport namespace TextureCachePolicy {\n    export const $gtype: GObject.GType<TextureCachePolicy>;\n}\n\nexport enum TextureCachePolicy {\n    NONE = 0,\n    FOREVER = 1,\n}\n\nexport namespace ButtonMask {\n    export const $gtype: GObject.GType<ButtonMask>;\n}\n\nexport enum ButtonMask {\n    ONE = 1,\n    TWO = 2,\n    THREE = 4,\n}\n\nexport namespace IconLookupFlags {\n    export const $gtype: GObject.GType<IconLookupFlags>;\n}\n\nexport enum IconLookupFlags {\n    NO_SVG = 1,\n    FORCE_SVG = 2,\n    GENERIC_FALLBACK = 4,\n    FORCE_SIZE = 8,\n    FORCE_REGULAR = 16,\n    FORCE_SYMBOLIC = 32,\n    DIR_LTR = 64,\n    DIR_RTL = 128,\n}\n\nexport namespace TextDecoration {\n    export const $gtype: GObject.GType<TextDecoration>;\n}\n\nexport enum TextDecoration {\n    UNDERLINE = 1,\n    OVERLINE = 2,\n    LINE_THROUGH = 4,\n    BLINK = 8,\n}\nexport module Adjustment {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        actor: Clutter.Actor;\n        lower: number;\n        page_increment: number;\n        pageIncrement: number;\n        page_size: number;\n        pageSize: number;\n        step_increment: number;\n        stepIncrement: number;\n        upper: number;\n        value: number;\n    }\n}\nexport class Adjustment extends GObject.Object implements Clutter.Animatable {\n    static $gtype: GObject.GType<Adjustment>;\n\n    constructor(properties?: Partial<Adjustment.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Adjustment.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get actor(): Clutter.Actor;\n    set actor(val: Clutter.Actor);\n    get lower(): number;\n    set lower(val: number);\n    get page_increment(): number;\n    set page_increment(val: number);\n    get pageIncrement(): number;\n    set pageIncrement(val: number);\n    get page_size(): number;\n    set page_size(val: number);\n    get pageSize(): number;\n    set pageSize(val: number);\n    get step_increment(): number;\n    set step_increment(val: number);\n    get stepIncrement(): number;\n    set stepIncrement(val: number);\n    get upper(): number;\n    set upper(val: number);\n    get value(): number;\n    set value(val: number);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"changed\", callback: (_source: this) => void): number;\n    emit(signal: \"changed\"): void;\n\n    // Constructors\n\n    static [\"new\"](\n        actor: Clutter.Actor | null,\n        value: number,\n        lower: number,\n        upper: number,\n        step_increment: number,\n        page_increment: number,\n        page_size: number\n    ): Adjustment;\n\n    // Members\n\n    add_transition(name: string, transition: Clutter.Transition): void;\n    adjust_for_scroll_event(delta: number): void;\n    clamp_page(lower: number, upper: number): void;\n    get_transition(name: string): Clutter.Transition | null;\n    get_value(): number;\n    get_values(): [number | null, number | null, number | null, number | null, number | null, number | null];\n    remove_transition(name: string): void;\n    set_value(value: number): void;\n    set_values(\n        value: number,\n        lower: number,\n        upper: number,\n        step_increment: number,\n        page_increment: number,\n        page_size: number\n    ): void;\n    vfunc_changed(): void;\n\n    // Implemented Members\n\n    find_property(property_name: string): GObject.ParamSpec;\n    get_actor(): Clutter.Actor;\n    get_initial_state(property_name: string, value: GObject.Value | any): void;\n    interpolate_value(property_name: string, interval: Clutter.Interval, progress: number): [boolean, unknown];\n    set_final_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_find_property(property_name: string): GObject.ParamSpec;\n    vfunc_get_actor(): Clutter.Actor;\n    vfunc_get_initial_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_interpolate_value(property_name: string, interval: Clutter.Interval, progress: number): [boolean, unknown];\n    vfunc_set_final_state(property_name: string, value: GObject.Value | any): void;\n}\nexport module Bin {\n    export interface ConstructorProperties extends Widget.ConstructorProperties {\n        [key: string]: any;\n        child: Clutter.Actor;\n    }\n}\nexport class Bin\n    extends Widget\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<Bin>;\n\n    constructor(properties?: Partial<Bin.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Bin.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get child(): Clutter.Actor;\n    set child(val: Clutter.Actor);\n\n    // Constructors\n\n    static [\"new\"](): Bin;\n\n    // Members\n\n    get_child(): Clutter.Actor | null;\n    set_child(child?: Clutter.Actor | null): void;\n}\nexport module BorderImage {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class BorderImage extends GObject.Object {\n    static $gtype: GObject.GType<BorderImage>;\n\n    constructor(properties?: Partial<BorderImage.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<BorderImage.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](\n        file: Gio.File,\n        border_top: number,\n        border_right: number,\n        border_bottom: number,\n        border_left: number,\n        scale_factor: number\n    ): BorderImage;\n\n    // Members\n\n    equal(other: BorderImage): boolean;\n    get_borders(border_top: number, border_right: number, border_bottom: number, border_left: number): void;\n    get_file(): Gio.File;\n}\nexport module BoxLayout {\n    export interface ConstructorProperties extends Viewport.ConstructorProperties {\n        [key: string]: any;\n        pack_start: boolean;\n        packStart: boolean;\n        vertical: boolean;\n    }\n}\nexport class BoxLayout\n    extends Viewport\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable, Scrollable\n{\n    static $gtype: GObject.GType<BoxLayout>;\n\n    constructor(properties?: Partial<BoxLayout.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<BoxLayout.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get pack_start(): boolean;\n    set pack_start(val: boolean);\n    get packStart(): boolean;\n    set packStart(val: boolean);\n    get vertical(): boolean;\n    set vertical(val: boolean);\n\n    // Implemented Properties\n\n    get hadjustment(): Adjustment;\n    set hadjustment(val: Adjustment);\n    get vadjustment(): Adjustment;\n    set vadjustment(val: Adjustment);\n\n    // Constructors\n\n    static [\"new\"](): BoxLayout;\n\n    // Members\n\n    get_pack_start(): boolean;\n    get_vertical(): boolean;\n    set_pack_start(pack_start: boolean): void;\n    set_vertical(vertical: boolean): void;\n\n    // Implemented Members\n\n    get_adjustments(hadjustment: Adjustment, vadjustment: Adjustment): void;\n    set_adjustments(hadjustment: Adjustment, vadjustment: Adjustment): void;\n    vfunc_get_adjustments(hadjustment: Adjustment, vadjustment: Adjustment): void;\n    vfunc_set_adjustments(hadjustment: Adjustment, vadjustment: Adjustment): void;\n}\nexport module Button {\n    export interface ConstructorProperties extends Bin.ConstructorProperties {\n        [key: string]: any;\n        button_mask: ButtonMask;\n        buttonMask: ButtonMask;\n        checked: boolean;\n        icon_name: string;\n        iconName: string;\n        label: string;\n        pressed: boolean;\n        toggle_mode: boolean;\n        toggleMode: boolean;\n    }\n}\nexport class Button\n    extends Bin\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<Button>;\n\n    constructor(properties?: Partial<Button.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Button.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get button_mask(): ButtonMask;\n    set button_mask(val: ButtonMask);\n    get buttonMask(): ButtonMask;\n    set buttonMask(val: ButtonMask);\n    get checked(): boolean;\n    set checked(val: boolean);\n    get icon_name(): string;\n    set icon_name(val: string);\n    get iconName(): string;\n    set iconName(val: string);\n    get label(): string;\n    set label(val: string);\n    get pressed(): boolean;\n    get toggle_mode(): boolean;\n    set toggle_mode(val: boolean);\n    get toggleMode(): boolean;\n    set toggleMode(val: boolean);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"clicked\", callback: (_source: this, clicked_button: number) => void): number;\n    connect_after(signal: \"clicked\", callback: (_source: this, clicked_button: number) => void): number;\n    emit(signal: \"clicked\", clicked_button: number): void;\n\n    // Constructors\n\n    static [\"new\"](): Button;\n    static new_with_label(text: string): Button;\n\n    // Members\n\n    fake_release(): void;\n    get_button_mask(): ButtonMask;\n    get_checked(): boolean;\n    get_icon_name(): string | null;\n    get_label(): string;\n    get_toggle_mode(): boolean;\n    set_button_mask(mask: ButtonMask): void;\n    set_checked(checked: boolean): void;\n    set_icon_name(icon_name: string): void;\n    set_label(text?: string | null): void;\n    set_toggle_mode(toggle: boolean): void;\n    vfunc_clicked(clicked_button: number): void;\n    vfunc_transition(): void;\n}\nexport module Clipboard {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class Clipboard extends GObject.Object {\n    static $gtype: GObject.GType<Clipboard>;\n\n    constructor(properties?: Partial<Clipboard.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Clipboard.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    get_content(type: ClipboardType, mimetype: string, callback: ClipboardContentCallbackFunc): void;\n    get_mimetypes(type: ClipboardType): string[];\n    get_text(type: ClipboardType, callback: ClipboardCallbackFunc): void;\n    set_content(type: ClipboardType, mimetype: string, bytes: GLib.Bytes | Uint8Array): void;\n    set_text(type: ClipboardType, text: string): void;\n    static get_default(): Clipboard;\n}\nexport module DrawingArea {\n    export interface ConstructorProperties extends Widget.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class DrawingArea\n    extends Widget\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<DrawingArea>;\n\n    constructor(properties?: Partial<DrawingArea.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<DrawingArea.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"repaint\", callback: (_source: this) => void): number;\n    connect_after(signal: \"repaint\", callback: (_source: this) => void): number;\n    emit(signal: \"repaint\"): void;\n\n    // Members\n\n    get_context(): cairo.Context;\n    get_surface_size(): [number | null, number | null];\n    queue_repaint(): void;\n    vfunc_repaint(): void;\n}\nexport module Entry {\n    export interface ConstructorProperties extends Widget.ConstructorProperties {\n        [key: string]: any;\n        clutter_text: Clutter.Text;\n        clutterText: Clutter.Text;\n        hint_actor: Clutter.Actor;\n        hintActor: Clutter.Actor;\n        hint_text: string;\n        hintText: string;\n        input_hints: Clutter.InputContentHintFlags;\n        inputHints: Clutter.InputContentHintFlags;\n        input_purpose: Clutter.InputContentPurpose;\n        inputPurpose: Clutter.InputContentPurpose;\n        primary_icon: Clutter.Actor;\n        primaryIcon: Clutter.Actor;\n        secondary_icon: Clutter.Actor;\n        secondaryIcon: Clutter.Actor;\n        text: string;\n    }\n}\nexport class Entry\n    extends Widget\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<Entry>;\n\n    constructor(properties?: Partial<Entry.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Entry.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get clutter_text(): Clutter.Text;\n    get clutterText(): Clutter.Text;\n    get hint_actor(): Clutter.Actor;\n    set hint_actor(val: Clutter.Actor);\n    get hintActor(): Clutter.Actor;\n    set hintActor(val: Clutter.Actor);\n    get hint_text(): string;\n    set hint_text(val: string);\n    get hintText(): string;\n    set hintText(val: string);\n    get input_hints(): Clutter.InputContentHintFlags;\n    set input_hints(val: Clutter.InputContentHintFlags);\n    get inputHints(): Clutter.InputContentHintFlags;\n    set inputHints(val: Clutter.InputContentHintFlags);\n    get input_purpose(): Clutter.InputContentPurpose;\n    set input_purpose(val: Clutter.InputContentPurpose);\n    get inputPurpose(): Clutter.InputContentPurpose;\n    set inputPurpose(val: Clutter.InputContentPurpose);\n    get primary_icon(): Clutter.Actor;\n    set primary_icon(val: Clutter.Actor);\n    get primaryIcon(): Clutter.Actor;\n    set primaryIcon(val: Clutter.Actor);\n    get secondary_icon(): Clutter.Actor;\n    set secondary_icon(val: Clutter.Actor);\n    get secondaryIcon(): Clutter.Actor;\n    set secondaryIcon(val: Clutter.Actor);\n    get text(): string;\n    set text(val: string);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"primary-icon-clicked\", callback: (_source: this) => void): number;\n    connect_after(signal: \"primary-icon-clicked\", callback: (_source: this) => void): number;\n    emit(signal: \"primary-icon-clicked\"): void;\n    connect(signal: \"secondary-icon-clicked\", callback: (_source: this) => void): number;\n    connect_after(signal: \"secondary-icon-clicked\", callback: (_source: this) => void): number;\n    emit(signal: \"secondary-icon-clicked\"): void;\n\n    // Constructors\n\n    static [\"new\"](text?: string | null): Entry;\n    // Conflicted with Clutter.Actor.new\n    static [\"new\"](...args: never[]): any;\n\n    // Members\n\n    get_clutter_text(): Clutter.Actor;\n    get_hint_actor(): Clutter.Actor | null;\n    get_hint_text(): string | null;\n    get_input_hints(): Clutter.InputContentHintFlags;\n    get_input_purpose(): Clutter.InputContentPurpose;\n    get_primary_icon(): Clutter.Actor | null;\n    get_secondary_icon(): Clutter.Actor | null;\n    get_text(): string;\n    set_hint_actor(hint_actor?: Clutter.Actor | null): void;\n    set_hint_text(text?: string | null): void;\n    set_input_hints(hints: Clutter.InputContentHintFlags): void;\n    set_input_purpose(purpose: Clutter.InputContentPurpose): void;\n    set_primary_icon(icon?: Clutter.Actor | null): void;\n    set_secondary_icon(icon?: Clutter.Actor | null): void;\n    set_text(text?: string | null): void;\n    vfunc_primary_icon_clicked(): void;\n    vfunc_secondary_icon_clicked(): void;\n}\nexport module FocusManager {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class FocusManager extends GObject.Object {\n    static $gtype: GObject.GType<FocusManager>;\n\n    constructor(properties?: Partial<FocusManager.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<FocusManager.ConstructorProperties>, ...args: any[]): void;\n\n    // Members\n\n    add_group(root: Widget): void;\n    get_group(widget: Widget): Widget;\n    navigate_from_event(event: Clutter.Event): boolean;\n    remove_group(root: Widget): void;\n    static get_for_stage(stage: Clutter.Stage): FocusManager;\n}\nexport module GenericAccessible {\n    export interface ConstructorProperties extends WidgetAccessible.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class GenericAccessible extends WidgetAccessible implements Atk.Action, Atk.Component, Atk.Value {\n    static $gtype: GObject.GType<GenericAccessible>;\n\n    constructor(properties?: Partial<GenericAccessible.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<GenericAccessible.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"get-current-value\", callback: (_source: this) => number): number;\n    connect_after(signal: \"get-current-value\", callback: (_source: this) => number): number;\n    emit(signal: \"get-current-value\"): void;\n    connect(signal: \"get-maximum-value\", callback: (_source: this) => number): number;\n    connect_after(signal: \"get-maximum-value\", callback: (_source: this) => number): number;\n    emit(signal: \"get-maximum-value\"): void;\n    connect(signal: \"get-minimum-increment\", callback: (_source: this) => number): number;\n    connect_after(signal: \"get-minimum-increment\", callback: (_source: this) => number): number;\n    emit(signal: \"get-minimum-increment\"): void;\n    connect(signal: \"get-minimum-value\", callback: (_source: this) => number): number;\n    connect_after(signal: \"get-minimum-value\", callback: (_source: this) => number): number;\n    emit(signal: \"get-minimum-value\"): void;\n    connect(signal: \"set-current-value\", callback: (_source: this, new_value: number) => void): number;\n    connect_after(signal: \"set-current-value\", callback: (_source: this, new_value: number) => void): number;\n    emit(signal: \"set-current-value\", new_value: number): void;\n\n    // Constructors\n\n    static new_for_actor(actor: Clutter.Actor): GenericAccessible;\n\n    // Implemented Members\n\n    get_current_value(): unknown;\n    get_increment(): number;\n    get_maximum_value(): unknown;\n    get_minimum_increment(): unknown;\n    get_minimum_value(): unknown;\n    get_range(): Atk.Range | null;\n    get_sub_ranges(): Atk.Range[];\n    get_value_and_text(): [number, string | null];\n    set_current_value(value: GObject.Value | any): boolean;\n    set_value(new_value: number): void;\n    vfunc_get_current_value(): unknown;\n    vfunc_get_increment(): number;\n    vfunc_get_maximum_value(): unknown;\n    vfunc_get_minimum_increment(): unknown;\n    vfunc_get_minimum_value(): unknown;\n    vfunc_get_range(): Atk.Range | null;\n    vfunc_get_sub_ranges(): Atk.Range[];\n    vfunc_get_value_and_text(): [number, string | null];\n    vfunc_set_current_value(value: GObject.Value | any): boolean;\n    vfunc_set_value(new_value: number): void;\n}\nexport module Icon {\n    export interface ConstructorProperties extends Widget.ConstructorProperties {\n        [key: string]: any;\n        fallback_gicon: Gio.Icon;\n        fallbackGicon: Gio.Icon;\n        fallback_icon_name: string;\n        fallbackIconName: string;\n        gicon: Gio.Icon;\n        icon_name: string;\n        iconName: string;\n        icon_size: number;\n        iconSize: number;\n    }\n}\nexport class Icon\n    extends Widget\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<Icon>;\n\n    constructor(properties?: Partial<Icon.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Icon.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get fallback_gicon(): Gio.Icon;\n    set fallback_gicon(val: Gio.Icon);\n    get fallbackGicon(): Gio.Icon;\n    set fallbackGicon(val: Gio.Icon);\n    get fallback_icon_name(): string;\n    set fallback_icon_name(val: string);\n    get fallbackIconName(): string;\n    set fallbackIconName(val: string);\n    get gicon(): Gio.Icon;\n    set gicon(val: Gio.Icon);\n    get icon_name(): string;\n    set icon_name(val: string);\n    get iconName(): string;\n    set iconName(val: string);\n    get icon_size(): number;\n    set icon_size(val: number);\n    get iconSize(): number;\n    set iconSize(val: number);\n\n    // Constructors\n\n    static [\"new\"](): Icon;\n\n    // Members\n\n    get_fallback_gicon(): Gio.Icon;\n    get_fallback_icon_name(): string;\n    get_gicon(): Gio.Icon | null;\n    get_icon_name(): string | null;\n    get_icon_size(): number;\n    set_fallback_gicon(fallback_gicon?: Gio.Icon | null): void;\n    set_fallback_icon_name(fallback_icon_name?: string | null): void;\n    set_gicon(gicon?: Gio.Icon | null): void;\n    set_icon_name(icon_name?: string | null): void;\n    set_icon_size(size: number): void;\n}\nexport module IconInfo {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class IconInfo extends GObject.Object {\n    static $gtype: GObject.GType<IconInfo>;\n\n    constructor(properties?: Partial<IconInfo.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<IconInfo.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static new_for_pixbuf(icon_theme: IconTheme, pixbuf: GdkPixbuf.Pixbuf): IconInfo;\n\n    // Members\n\n    get_base_scale(): number;\n    get_base_size(): number;\n    get_filename(): string | null;\n    is_symbolic(): boolean;\n    load_icon(): GdkPixbuf.Pixbuf;\n    load_icon_async(cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback<this> | null): void;\n    load_icon_finish(res: Gio.AsyncResult): GdkPixbuf.Pixbuf;\n    load_symbolic(colors: IconColors): [GdkPixbuf.Pixbuf, boolean | null];\n    load_symbolic_async(\n        colors: IconColors,\n        cancellable?: Gio.Cancellable | null,\n        callback?: Gio.AsyncReadyCallback<this> | null\n    ): void;\n    load_symbolic_finish(res: Gio.AsyncResult): [GdkPixbuf.Pixbuf, boolean | null];\n}\nexport module IconTheme {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class IconTheme extends GObject.Object {\n    static $gtype: GObject.GType<IconTheme>;\n\n    constructor(properties?: Partial<IconTheme.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<IconTheme.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"changed\", callback: (_source: this) => void): number;\n    emit(signal: \"changed\"): void;\n\n    // Constructors\n\n    static [\"new\"](): IconTheme;\n\n    // Members\n\n    add_resource_path(path: string): void;\n    append_search_path(path: string): void;\n    choose_icon(icon_names: string[], size: number, flags: IconLookupFlags): IconInfo | null;\n    choose_icon_for_scale(icon_names: string[], size: number, scale: number, flags: IconLookupFlags): IconInfo | null;\n    get_icon_sizes(icon_name: string): number[];\n    get_search_path(): string[] | null;\n    has_icon(icon_name: string): boolean;\n    list_contexts(): string[];\n    list_icons(context?: string | null): string[];\n    load_icon(icon_name: string, size: number, flags: IconLookupFlags): GdkPixbuf.Pixbuf | null;\n    load_icon_for_scale(\n        icon_name: string,\n        size: number,\n        scale: number,\n        flags: IconLookupFlags\n    ): GdkPixbuf.Pixbuf | null;\n    lookup_by_gicon(icon: Gio.Icon, size: number, flags: IconLookupFlags): IconInfo | null;\n    lookup_by_gicon_for_scale(icon: Gio.Icon, size: number, scale: number, flags: IconLookupFlags): IconInfo | null;\n    lookup_icon(icon_name: string, size: number, flags: IconLookupFlags): IconInfo | null;\n    lookup_icon_for_scale(icon_name: string, size: number, scale: number, flags: IconLookupFlags): IconInfo | null;\n    prepend_search_path(path: string): void;\n    rescan_if_needed(): boolean;\n    set_search_path(path: string[]): void;\n}\nexport module ImageContent {\n    export interface ConstructorProperties extends Clutter.Image.ConstructorProperties {\n        [key: string]: any;\n        preferred_height: number;\n        preferredHeight: number;\n        preferred_width: number;\n        preferredWidth: number;\n    }\n}\nexport class ImageContent extends Clutter.Image implements Clutter.Content, Gio.Icon, Gio.LoadableIcon {\n    static $gtype: GObject.GType<ImageContent>;\n\n    constructor(properties?: Partial<ImageContent.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ImageContent.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get preferred_height(): number;\n    get preferredHeight(): number;\n    get preferred_width(): number;\n    get preferredWidth(): number;\n\n    // Members\n\n    static new_with_preferred_size(width: number, height: number): Clutter.Content;\n\n    // Implemented Members\n\n    get_preferred_size(): [boolean, number | null, number | null];\n    invalidate(): void;\n    invalidate_size(): void;\n    vfunc_attached(actor: Clutter.Actor): void;\n    vfunc_detached(actor: Clutter.Actor): void;\n    vfunc_get_preferred_size(): [boolean, number | null, number | null];\n    vfunc_invalidate(): void;\n    vfunc_invalidate_size(): void;\n    vfunc_paint_content(actor: Clutter.Actor, node: Clutter.PaintNode, paint_context: Clutter.PaintContext): void;\n    equal(icon2?: Gio.Icon | null): boolean;\n    hash(): number;\n    serialize(): GLib.Variant | null;\n    to_string(): string | null;\n    vfunc_equal(icon2?: Gio.Icon | null): boolean;\n    vfunc_hash(): number;\n    vfunc_serialize(): GLib.Variant | null;\n    vfunc_to_tokens(): [boolean, string[], number];\n    load(size: number, cancellable?: Gio.Cancellable | null): [Gio.InputStream, string | null];\n    load_async(\n        size: number,\n        cancellable?: Gio.Cancellable | null,\n        callback?: Gio.AsyncReadyCallback<this> | null\n    ): void;\n    load_finish(res: Gio.AsyncResult): [Gio.InputStream, string | null];\n    vfunc_load(size: number, cancellable?: Gio.Cancellable | null): [Gio.InputStream, string | null];\n    vfunc_load_async(\n        size: number,\n        cancellable?: Gio.Cancellable | null,\n        callback?: Gio.AsyncReadyCallback<this> | null\n    ): void;\n    vfunc_load_finish(res: Gio.AsyncResult): [Gio.InputStream, string | null];\n}\nexport module Label {\n    export interface ConstructorProperties extends Widget.ConstructorProperties {\n        [key: string]: any;\n        clutter_text: Clutter.Text;\n        clutterText: Clutter.Text;\n        text: string;\n    }\n}\nexport class Label\n    extends Widget\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<Label>;\n\n    constructor(properties?: Partial<Label.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Label.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get clutter_text(): Clutter.Text;\n    get clutterText(): Clutter.Text;\n    get text(): string;\n    set text(val: string);\n\n    // Constructors\n\n    static [\"new\"](text?: string | null): Label;\n    // Conflicted with Clutter.Actor.new\n    static [\"new\"](...args: never[]): any;\n\n    // Members\n\n    get_clutter_text(): Clutter.Actor;\n    get_text(): string;\n    set_text(text?: string | null): void;\n}\nexport module PasswordEntry {\n    export interface ConstructorProperties extends Entry.ConstructorProperties {\n        [key: string]: any;\n        password_visible: boolean;\n        passwordVisible: boolean;\n        show_peek_icon: boolean;\n        showPeekIcon: boolean;\n    }\n}\nexport class PasswordEntry\n    extends Entry\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<PasswordEntry>;\n\n    constructor(properties?: Partial<PasswordEntry.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<PasswordEntry.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get password_visible(): boolean;\n    set password_visible(val: boolean);\n    get passwordVisible(): boolean;\n    set passwordVisible(val: boolean);\n    get show_peek_icon(): boolean;\n    set show_peek_icon(val: boolean);\n    get showPeekIcon(): boolean;\n    set showPeekIcon(val: boolean);\n\n    // Constructors\n\n    static [\"new\"](): PasswordEntry;\n\n    // Members\n\n    get_password_visible(): boolean;\n    get_show_peek_icon(): boolean;\n    set_password_visible(value: boolean): void;\n    set_show_peek_icon(value: boolean): void;\n}\nexport module ScrollBar {\n    export interface ConstructorProperties extends Widget.ConstructorProperties {\n        [key: string]: any;\n        adjustment: Adjustment;\n        vertical: boolean;\n    }\n}\nexport class ScrollBar\n    extends Widget\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<ScrollBar>;\n\n    constructor(properties?: Partial<ScrollBar.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ScrollBar.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get adjustment(): Adjustment;\n    set adjustment(val: Adjustment);\n    get vertical(): boolean;\n    set vertical(val: boolean);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"scroll-start\", callback: (_source: this) => void): number;\n    connect_after(signal: \"scroll-start\", callback: (_source: this) => void): number;\n    emit(signal: \"scroll-start\"): void;\n    connect(signal: \"scroll-stop\", callback: (_source: this) => void): number;\n    connect_after(signal: \"scroll-stop\", callback: (_source: this) => void): number;\n    emit(signal: \"scroll-stop\"): void;\n\n    // Constructors\n\n    static [\"new\"](adjustment: Adjustment): ScrollBar;\n    // Conflicted with Clutter.Actor.new\n    static [\"new\"](...args: never[]): any;\n\n    // Members\n\n    get_adjustment(): Adjustment;\n    set_adjustment(adjustment: Adjustment): void;\n    vfunc_scroll_start(): void;\n    vfunc_scroll_stop(): void;\n}\nexport module ScrollView {\n    export interface ConstructorProperties extends Bin.ConstructorProperties {\n        [key: string]: any;\n        enable_mouse_scrolling: boolean;\n        enableMouseScrolling: boolean;\n        hscroll: ScrollBar;\n        hscrollbar_policy: PolicyType;\n        hscrollbarPolicy: PolicyType;\n        hscrollbar_visible: boolean;\n        hscrollbarVisible: boolean;\n        overlay_scrollbars: boolean;\n        overlayScrollbars: boolean;\n        vscroll: ScrollBar;\n        vscrollbar_policy: PolicyType;\n        vscrollbarPolicy: PolicyType;\n        vscrollbar_visible: boolean;\n        vscrollbarVisible: boolean;\n    }\n}\nexport class ScrollView\n    extends Bin\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<ScrollView>;\n\n    constructor(properties?: Partial<ScrollView.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ScrollView.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get enable_mouse_scrolling(): boolean;\n    set enable_mouse_scrolling(val: boolean);\n    get enableMouseScrolling(): boolean;\n    set enableMouseScrolling(val: boolean);\n    get hscroll(): ScrollBar;\n    get hscrollbar_policy(): PolicyType;\n    set hscrollbar_policy(val: PolicyType);\n    get hscrollbarPolicy(): PolicyType;\n    set hscrollbarPolicy(val: PolicyType);\n    get hscrollbar_visible(): boolean;\n    get hscrollbarVisible(): boolean;\n    get overlay_scrollbars(): boolean;\n    set overlay_scrollbars(val: boolean);\n    get overlayScrollbars(): boolean;\n    set overlayScrollbars(val: boolean);\n    get vscroll(): ScrollBar;\n    get vscrollbar_policy(): PolicyType;\n    set vscrollbar_policy(val: PolicyType);\n    get vscrollbarPolicy(): PolicyType;\n    set vscrollbarPolicy(val: PolicyType);\n    get vscrollbar_visible(): boolean;\n    get vscrollbarVisible(): boolean;\n\n    // Constructors\n\n    static [\"new\"](): ScrollView;\n\n    // Members\n\n    get_column_size(): number;\n    get_hscroll_bar(): Clutter.Actor;\n    get_mouse_scrolling(): boolean;\n    get_overlay_scrollbars(): boolean;\n    get_row_size(): number;\n    get_vscroll_bar(): Clutter.Actor;\n    set_column_size(column_size: number): void;\n    set_mouse_scrolling(enabled: boolean): void;\n    set_overlay_scrollbars(enabled: boolean): void;\n    set_policy(hscroll: PolicyType, vscroll: PolicyType): void;\n    set_row_size(row_size: number): void;\n    update_fade_effect(fade_margins: Clutter.Margin): void;\n}\nexport module ScrollViewFade {\n    export interface ConstructorProperties extends Clutter.ShaderEffect.ConstructorProperties {\n        [key: string]: any;\n        extend_fade_area: boolean;\n        extendFadeArea: boolean;\n        fade_edges: boolean;\n        fadeEdges: boolean;\n        fade_margins: Clutter.Margin;\n        fadeMargins: Clutter.Margin;\n    }\n}\nexport class ScrollViewFade extends Clutter.ShaderEffect {\n    static $gtype: GObject.GType<ScrollViewFade>;\n\n    constructor(properties?: Partial<ScrollViewFade.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ScrollViewFade.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get extend_fade_area(): boolean;\n    set extend_fade_area(val: boolean);\n    get extendFadeArea(): boolean;\n    set extendFadeArea(val: boolean);\n    get fade_edges(): boolean;\n    set fade_edges(val: boolean);\n    get fadeEdges(): boolean;\n    set fadeEdges(val: boolean);\n    get fade_margins(): Clutter.Margin;\n    set fade_margins(val: Clutter.Margin);\n    get fadeMargins(): Clutter.Margin;\n    set fadeMargins(val: Clutter.Margin);\n\n    // Constructors\n\n    static [\"new\"](): ScrollViewFade;\n}\nexport module Settings {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        disable_show_password: boolean;\n        disableShowPassword: boolean;\n        drag_threshold: number;\n        dragThreshold: number;\n        enable_animations: boolean;\n        enableAnimations: boolean;\n        font_name: string;\n        fontName: string;\n        gtk_icon_theme: string;\n        gtkIconTheme: string;\n        high_contrast: boolean;\n        highContrast: boolean;\n        magnifier_active: boolean;\n        magnifierActive: boolean;\n        primary_paste: boolean;\n        primaryPaste: boolean;\n        slow_down_factor: number;\n        slowDownFactor: number;\n    }\n}\nexport class Settings extends GObject.Object {\n    static $gtype: GObject.GType<Settings>;\n\n    constructor(properties?: Partial<Settings.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Settings.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get disable_show_password(): boolean;\n    get disableShowPassword(): boolean;\n    get drag_threshold(): number;\n    get dragThreshold(): number;\n    get enable_animations(): boolean;\n    get enableAnimations(): boolean;\n    get font_name(): string;\n    get fontName(): string;\n    get gtk_icon_theme(): string;\n    get gtkIconTheme(): string;\n    get high_contrast(): boolean;\n    get highContrast(): boolean;\n    get magnifier_active(): boolean;\n    get magnifierActive(): boolean;\n    get primary_paste(): boolean;\n    get primaryPaste(): boolean;\n    get slow_down_factor(): number;\n    set slow_down_factor(val: number);\n    get slowDownFactor(): number;\n    set slowDownFactor(val: number);\n\n    // Members\n\n    inhibit_animations(): void;\n    uninhibit_animations(): void;\n    static get(): Settings;\n}\nexport module TextureCache {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class TextureCache extends GObject.Object {\n    static $gtype: GObject.GType<TextureCache>;\n\n    constructor(properties?: Partial<TextureCache.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<TextureCache.ConstructorProperties>, ...args: any[]): void;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"icon-theme-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"icon-theme-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"icon-theme-changed\"): void;\n    connect(signal: \"texture-file-changed\", callback: (_source: this, file: Gio.File) => void): number;\n    connect_after(signal: \"texture-file-changed\", callback: (_source: this, file: Gio.File) => void): number;\n    emit(signal: \"texture-file-changed\", file: Gio.File): void;\n\n    // Members\n\n    bind_cairo_surface_property(object: GObject.Object, property_name: string): Gio.Icon;\n    load_cairo_surface_to_gicon(surface: cairo.Surface): Gio.Icon;\n    load_file_async(\n        file: Gio.File,\n        available_width: number,\n        available_height: number,\n        paint_scale: number,\n        resource_scale: number\n    ): Clutter.Actor;\n    load_file_to_cairo_surface(file: Gio.File, paint_scale: number, resource_scale: number): cairo.Surface;\n    load_gicon(\n        theme_node: ThemeNode | null,\n        icon: Gio.Icon,\n        size: number,\n        paint_scale: number,\n        resource_scale: number\n    ): Clutter.Actor | null;\n    load_sliced_image(\n        file: Gio.File,\n        grid_width: number,\n        grid_height: number,\n        paint_scale: number,\n        resource_scale: number,\n        load_callback?: GLib.Func | null\n    ): Clutter.Actor;\n    rescan_icon_theme(): boolean;\n    static get_default(): TextureCache;\n}\nexport module Theme {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        application_stylesheet: Gio.File;\n        applicationStylesheet: Gio.File;\n        default_stylesheet: Gio.File;\n        defaultStylesheet: Gio.File;\n        theme_stylesheet: Gio.File;\n        themeStylesheet: Gio.File;\n    }\n}\nexport class Theme extends GObject.Object {\n    static $gtype: GObject.GType<Theme>;\n\n    constructor(properties?: Partial<Theme.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Theme.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get application_stylesheet(): Gio.File;\n    get applicationStylesheet(): Gio.File;\n    get default_stylesheet(): Gio.File;\n    get defaultStylesheet(): Gio.File;\n    get theme_stylesheet(): Gio.File;\n    get themeStylesheet(): Gio.File;\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"custom-stylesheets-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"custom-stylesheets-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"custom-stylesheets-changed\"): void;\n\n    // Constructors\n\n    static [\"new\"](application_stylesheet: Gio.File, theme_stylesheet: Gio.File, default_stylesheet: Gio.File): Theme;\n\n    // Members\n\n    get_custom_stylesheets(): Gio.File[];\n    load_stylesheet(file: Gio.File): boolean;\n    unload_stylesheet(file: Gio.File): void;\n}\nexport module ThemeContext {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n        scale_factor: number;\n        scaleFactor: number;\n    }\n}\nexport class ThemeContext extends GObject.Object {\n    static $gtype: GObject.GType<ThemeContext>;\n\n    constructor(properties?: Partial<ThemeContext.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ThemeContext.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get scale_factor(): number;\n    set scale_factor(val: number);\n    get scaleFactor(): number;\n    set scaleFactor(val: number);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"changed\", callback: (_source: this) => void): number;\n    emit(signal: \"changed\"): void;\n\n    // Constructors\n\n    static [\"new\"](): ThemeContext;\n\n    // Members\n\n    get_font(): Pango.FontDescription;\n    get_root_node(): ThemeNode;\n    get_scale_factor(): number;\n    get_theme(): Theme;\n    intern_node(node: ThemeNode): ThemeNode;\n    set_font(font: Pango.FontDescription): void;\n    set_theme(theme: Theme): void;\n    static get_for_stage(stage: Clutter.Stage): ThemeContext;\n}\nexport module ThemeNode {\n    export interface ConstructorProperties extends GObject.Object.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class ThemeNode extends GObject.Object {\n    static $gtype: GObject.GType<ThemeNode>;\n\n    constructor(properties?: Partial<ThemeNode.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<ThemeNode.ConstructorProperties>, ...args: any[]): void;\n\n    // Constructors\n\n    static [\"new\"](\n        context: ThemeContext,\n        parent_node: ThemeNode | null,\n        theme: Theme | null,\n        element_type: GObject.GType,\n        element_id: string | null,\n        element_class: string | null,\n        pseudo_class: string | null,\n        inline_style: string\n    ): ThemeNode;\n\n    // Members\n\n    adjust_for_height(for_height: number): number;\n    adjust_for_width(for_width: number): number;\n    adjust_preferred_height(min_height_p: number | null, natural_height_p: number): [number | null, number];\n    adjust_preferred_width(min_width_p: number | null, natural_width_p: number): [number | null, number];\n    equal(node_b: ThemeNode): boolean;\n    geometry_equal(other: ThemeNode): boolean;\n    get_background_color(): Clutter.Color;\n    get_background_gradient(): [GradientType, Clutter.Color, Clutter.Color];\n    get_background_image(): Gio.File;\n    get_background_image_shadow(): Shadow | null;\n    get_background_paint_box(allocation: Clutter.ActorBox): Clutter.ActorBox;\n    get_border_color(side: Side): Clutter.Color;\n    get_border_image(): BorderImage;\n    get_border_radius(corner: Corner): number;\n    get_border_width(side: Side): number;\n    get_box_shadow(): Shadow | null;\n    get_color(property_name: string): Clutter.Color;\n    get_content_box(allocation: Clutter.ActorBox): Clutter.ActorBox;\n    get_double(property_name: string): number;\n    get_element_classes(): string[];\n    get_element_id(): string;\n    get_element_type(): GObject.GType;\n    get_font(): Pango.FontDescription;\n    get_font_features(): string;\n    get_foreground_color(): Clutter.Color;\n    get_height(): number;\n    get_horizontal_padding(): number;\n    get_icon_colors(): IconColors;\n    get_icon_style(): IconStyle;\n    get_length(property_name: string): number;\n    get_letter_spacing(): number;\n    get_margin(side: Side): number;\n    get_max_height(): number;\n    get_max_width(): number;\n    get_min_height(): number;\n    get_min_width(): number;\n    get_outline_color(): Clutter.Color;\n    get_outline_width(): number;\n    get_padding(side: Side): number;\n    get_paint_box(allocation: Clutter.ActorBox): Clutter.ActorBox;\n    get_parent(): ThemeNode | null;\n    get_pseudo_classes(): string[];\n    get_shadow(property_name: string): Shadow | null;\n    get_text_align(): TextAlign;\n    get_text_decoration(): TextDecoration;\n    get_text_shadow(): Shadow | null;\n    get_theme(): Theme;\n    get_transition_duration(): number;\n    get_url(property_name: string): Gio.File | null;\n    get_vertical_padding(): number;\n    get_width(): number;\n    hash(): number;\n    invalidate_background_image(): void;\n    invalidate_border_image(): void;\n    lookup_color(property_name: string, inherit: boolean): [boolean, Clutter.Color];\n    lookup_double(property_name: string, inherit: boolean): [boolean, number];\n    lookup_length(property_name: string, inherit: boolean): [boolean, number];\n    lookup_shadow(property_name: string, inherit: boolean): [boolean, Shadow];\n    lookup_time(property_name: string, inherit: boolean): [boolean, number];\n    lookup_url(property_name: string, inherit: boolean): [boolean, Gio.File];\n    paint_equal(other?: ThemeNode | null): boolean;\n    to_string(): string;\n}\nexport module Viewport {\n    export interface ConstructorProperties extends Widget.ConstructorProperties {\n        [key: string]: any;\n        clip_to_view: boolean;\n        clipToView: boolean;\n    }\n}\nexport class Viewport\n    extends Widget\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable, Scrollable\n{\n    static $gtype: GObject.GType<Viewport>;\n\n    constructor(properties?: Partial<Viewport.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Viewport.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get clip_to_view(): boolean;\n    set clip_to_view(val: boolean);\n    get clipToView(): boolean;\n    set clipToView(val: boolean);\n\n    // Implemented Properties\n\n    get hadjustment(): Adjustment;\n    set hadjustment(val: Adjustment);\n    get vadjustment(): Adjustment;\n    set vadjustment(val: Adjustment);\n\n    // Implemented Members\n\n    get_adjustments(hadjustment: Adjustment, vadjustment: Adjustment): void;\n    set_adjustments(hadjustment: Adjustment, vadjustment: Adjustment): void;\n    vfunc_get_adjustments(hadjustment: Adjustment, vadjustment: Adjustment): void;\n    vfunc_set_adjustments(hadjustment: Adjustment, vadjustment: Adjustment): void;\n}\nexport module Widget {\n    export interface ConstructorProperties extends Clutter.Actor.ConstructorProperties {\n        [key: string]: any;\n        accessible_name: string;\n        accessibleName: string;\n        accessible_role: Atk.Role;\n        accessibleRole: Atk.Role;\n        can_focus: boolean;\n        canFocus: boolean;\n        hover: boolean;\n        label_actor: Clutter.Actor;\n        labelActor: Clutter.Actor;\n        pseudo_class: string;\n        pseudoClass: string;\n        style: string;\n        style_class: string;\n        styleClass: string;\n        track_hover: boolean;\n        trackHover: boolean;\n    }\n}\nexport class Widget\n    extends Clutter.Actor\n    implements Atk.ImplementorIface, Clutter.Animatable, Clutter.Container, Clutter.Scriptable\n{\n    static $gtype: GObject.GType<Widget>;\n\n    constructor(properties?: Partial<Widget.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<Widget.ConstructorProperties>, ...args: any[]): void;\n\n    // Properties\n    get accessible_name(): string;\n    set accessible_name(val: string);\n    get accessibleName(): string;\n    set accessibleName(val: string);\n    get accessible_role(): Atk.Role;\n    set accessible_role(val: Atk.Role);\n    get accessibleRole(): Atk.Role;\n    set accessibleRole(val: Atk.Role);\n    get can_focus(): boolean;\n    set can_focus(val: boolean);\n    get canFocus(): boolean;\n    set canFocus(val: boolean);\n    get hover(): boolean;\n    set hover(val: boolean);\n    get label_actor(): Clutter.Actor;\n    set label_actor(val: Clutter.Actor);\n    get labelActor(): Clutter.Actor;\n    set labelActor(val: Clutter.Actor);\n    get pseudo_class(): string;\n    set pseudo_class(val: string);\n    get pseudoClass(): string;\n    set pseudoClass(val: string);\n    get style(): string;\n    set style(val: string);\n    get style_class(): string;\n    set style_class(val: string);\n    get styleClass(): string;\n    set styleClass(val: string);\n    get track_hover(): boolean;\n    set track_hover(val: boolean);\n    get trackHover(): boolean;\n    set trackHover(val: boolean);\n\n    // Signals\n\n    connect(id: string, callback: (...args: any[]) => any): number;\n    connect_after(id: string, callback: (...args: any[]) => any): number;\n    emit(id: string, ...args: any[]): void;\n    connect(signal: \"popup-menu\", callback: (_source: this) => void): number;\n    connect_after(signal: \"popup-menu\", callback: (_source: this) => void): number;\n    emit(signal: \"popup-menu\"): void;\n    connect(signal: \"style-changed\", callback: (_source: this) => void): number;\n    connect_after(signal: \"style-changed\", callback: (_source: this) => void): number;\n    emit(signal: \"style-changed\"): void;\n\n    // Members\n\n    add_accessible_state(state: Atk.StateType): void;\n    add_style_class_name(style_class: string): void;\n    add_style_pseudo_class(pseudo_class: string): void;\n    ensure_style(): void;\n    get_accessible_name(): string;\n    get_accessible_role(): Atk.Role;\n    get_can_focus(): boolean;\n    get_focus_chain(): Clutter.Actor[];\n    get_hover(): boolean;\n    get_label_actor(): Clutter.Actor;\n    get_style(): string | null;\n    get_style_class_name(): string;\n    get_style_pseudo_class(): string;\n    get_theme_node(): ThemeNode;\n    get_track_hover(): boolean;\n    has_style_class_name(style_class: string): boolean;\n    has_style_pseudo_class(pseudo_class: string): boolean;\n    navigate_focus(from: Clutter.Actor | null, direction: DirectionType, wrap_around: boolean): boolean;\n    paint_background(paint_context: Clutter.PaintContext): void;\n    peek_theme_node(): ThemeNode;\n    popup_menu(): void;\n    remove_accessible_state(state: Atk.StateType): void;\n    remove_style_class_name(style_class: string): void;\n    remove_style_pseudo_class(pseudo_class: string): void;\n    set_accessible(accessible: Atk.Object): void;\n    set_accessible_name(name?: string | null): void;\n    set_accessible_role(role: Atk.Role): void;\n    set_can_focus(can_focus: boolean): void;\n    set_hover(hover: boolean): void;\n    set_label_actor(label: Clutter.Actor): void;\n    set_style(style?: string | null): void;\n    set_style_class_name(style_class_list?: string | null): void;\n    set_style_pseudo_class(pseudo_class_list?: string | null): void;\n    set_track_hover(track_hover: boolean): void;\n    style_changed(): void;\n    sync_hover(): void;\n    vfunc_get_focus_chain(): Clutter.Actor[];\n    vfunc_navigate_focus(from: Clutter.Actor | null, direction: DirectionType): boolean;\n    vfunc_popup_menu(): void;\n    vfunc_style_changed(): void;\n\n    // Implemented Members\n\n    find_property(property_name: string): GObject.ParamSpec;\n    get_actor(): Clutter.Actor;\n    get_initial_state(property_name: string, value: GObject.Value | any): void;\n    interpolate_value(property_name: string, interval: Clutter.Interval, progress: number): [boolean, unknown];\n    set_final_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_find_property(property_name: string): GObject.ParamSpec;\n    vfunc_get_actor(): Clutter.Actor;\n    vfunc_get_initial_state(property_name: string, value: GObject.Value | any): void;\n    vfunc_interpolate_value(property_name: string, interval: Clutter.Interval, progress: number): [boolean, unknown];\n    vfunc_set_final_state(property_name: string, value: GObject.Value | any): void;\n    add_actor(actor: Clutter.Actor): void;\n    child_get_property(child: Clutter.Actor, property: string, value: GObject.Value | any): void;\n    child_notify(child: Clutter.Actor, pspec: GObject.ParamSpec): void;\n    child_set_property(child: Clutter.Actor, property: string, value: GObject.Value | any): void;\n    create_child_meta(actor: Clutter.Actor): void;\n    destroy_child_meta(actor: Clutter.Actor): void;\n    find_child_by_name(child_name: string): Clutter.Actor;\n    get_child_meta(actor: Clutter.Actor): Clutter.ChildMeta;\n    remove_actor(actor: Clutter.Actor): void;\n    vfunc_actor_added(actor: Clutter.Actor): void;\n    vfunc_actor_removed(actor: Clutter.Actor): void;\n    vfunc_add(actor: Clutter.Actor): void;\n    vfunc_child_notify(child: Clutter.Actor, pspec: GObject.ParamSpec): void;\n    vfunc_create_child_meta(actor: Clutter.Actor): void;\n    vfunc_destroy_child_meta(actor: Clutter.Actor): void;\n    vfunc_get_child_meta(actor: Clutter.Actor): Clutter.ChildMeta;\n    vfunc_remove(actor: Clutter.Actor): void;\n    get_id(): string;\n    parse_custom_node(script: Clutter.Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    set_custom_property(script: Clutter.Script, name: string, value: GObject.Value | any): void;\n    set_id(id_: string): void;\n    vfunc_get_id(): string;\n    vfunc_parse_custom_node(script: Clutter.Script, value: GObject.Value | any, name: string, node: Json.Node): boolean;\n    vfunc_set_custom_property(script: Clutter.Script, name: string, value: GObject.Value | any): void;\n    vfunc_set_id(id_: string): void;\n}\nexport module WidgetAccessible {\n    export interface ConstructorProperties extends Cally.Actor.ConstructorProperties {\n        [key: string]: any;\n    }\n}\nexport class WidgetAccessible extends Cally.Actor implements Atk.Action, Atk.Component {\n    static $gtype: GObject.GType<WidgetAccessible>;\n\n    constructor(properties?: Partial<WidgetAccessible.ConstructorProperties>, ...args: any[]);\n    _init(properties?: Partial<WidgetAccessible.ConstructorProperties>, ...args: any[]): void;\n\n    // Implemented Members\n\n    do_action(i: number): boolean;\n    get_description(i: number): string | null;\n    // Conflicted with Atk.Object.get_description\n    get_description(...args: never[]): any;\n    get_keybinding(i: number): string | null;\n    get_localized_name(i: number): string | null;\n    get_n_actions(): number;\n    get_name(i: number): string | null;\n    // Conflicted with Atk.Object.get_name\n    get_name(...args: never[]): any;\n    set_description(i: number, desc: string): boolean;\n    // Conflicted with Atk.Object.set_description\n    set_description(...args: never[]): any;\n    vfunc_do_action(i: number): boolean;\n    vfunc_get_description(i: number): string | null;\n    // Conflicted with Atk.Object.vfunc_get_description\n    vfunc_get_description(...args: never[]): any;\n    vfunc_get_keybinding(i: number): string | null;\n    vfunc_get_localized_name(i: number): string | null;\n    vfunc_get_n_actions(): number;\n    vfunc_get_name(i: number): string | null;\n    // Conflicted with Atk.Object.vfunc_get_name\n    vfunc_get_name(...args: never[]): any;\n    vfunc_set_description(i: number, desc: string): boolean;\n    // Conflicted with Atk.Object.vfunc_set_description\n    vfunc_set_description(...args: never[]): any;\n    contains(x: number, y: number, coord_type: Atk.CoordType): boolean;\n    get_alpha(): number;\n    get_extents(coord_type: Atk.CoordType): [number | null, number | null, number | null, number | null];\n    get_layer(): Atk.Layer;\n    get_mdi_zorder(): number;\n    get_position(coord_type: Atk.CoordType): [number | null, number | null];\n    get_size(): [number | null, number | null];\n    grab_focus(): boolean;\n    ref_accessible_at_point(x: number, y: number, coord_type: Atk.CoordType): Atk.Object | null;\n    remove_focus_handler(handler_id: number): void;\n    scroll_to(type: Atk.ScrollType): boolean;\n    scroll_to_point(coords: Atk.CoordType, x: number, y: number): boolean;\n    set_extents(x: number, y: number, width: number, height: number, coord_type: Atk.CoordType): boolean;\n    set_position(x: number, y: number, coord_type: Atk.CoordType): boolean;\n    set_size(width: number, height: number): boolean;\n    vfunc_bounds_changed(bounds: Atk.Rectangle): void;\n    vfunc_contains(x: number, y: number, coord_type: Atk.CoordType): boolean;\n    vfunc_get_alpha(): number;\n    vfunc_get_extents(coord_type: Atk.CoordType): [number | null, number | null, number | null, number | null];\n    vfunc_get_layer(): Atk.Layer;\n    vfunc_get_mdi_zorder(): number;\n    vfunc_get_position(coord_type: Atk.CoordType): [number | null, number | null];\n    vfunc_get_size(): [number | null, number | null];\n    vfunc_grab_focus(): boolean;\n    vfunc_ref_accessible_at_point(x: number, y: number, coord_type: Atk.CoordType): Atk.Object | null;\n    vfunc_remove_focus_handler(handler_id: number): void;\n    vfunc_scroll_to(type: Atk.ScrollType): boolean;\n    vfunc_scroll_to_point(coords: Atk.CoordType, x: number, y: number): boolean;\n    vfunc_set_extents(x: number, y: number, width: number, height: number, coord_type: Atk.CoordType): boolean;\n    vfunc_set_position(x: number, y: number, coord_type: Atk.CoordType): boolean;\n    vfunc_set_size(width: number, height: number): boolean;\n}\n\nexport class BoxLayoutPrivate {\n    static $gtype: GObject.GType<BoxLayoutPrivate>;\n\n    constructor(copy: BoxLayoutPrivate);\n}\n\nexport class FocusManagerPrivate {\n    static $gtype: GObject.GType<FocusManagerPrivate>;\n\n    constructor(copy: FocusManagerPrivate);\n}\n\nexport class GenericAccessiblePrivate {\n    static $gtype: GObject.GType<GenericAccessiblePrivate>;\n\n    constructor(copy: GenericAccessiblePrivate);\n}\n\nexport class IconColors {\n    static $gtype: GObject.GType<IconColors>;\n\n    constructor();\n    constructor(\n        properties?: Partial<{\n            ref_count?: number;\n        }>\n    );\n    constructor(copy: IconColors);\n\n    // Fields\n    ref_count: number;\n\n    // Constructors\n    static [\"new\"](): IconColors;\n\n    // Members\n    copy(): IconColors;\n    equal(other: IconColors): boolean;\n    ref(): IconColors;\n    unref(): void;\n}\n\nexport class IconPrivate {\n    static $gtype: GObject.GType<IconPrivate>;\n\n    constructor(copy: IconPrivate);\n}\n\nexport class LabelPrivate {\n    static $gtype: GObject.GType<LabelPrivate>;\n\n    constructor(copy: LabelPrivate);\n}\n\nexport class ScrollViewPrivate {\n    static $gtype: GObject.GType<ScrollViewPrivate>;\n\n    constructor(copy: ScrollViewPrivate);\n}\n\nexport class Shadow {\n    static $gtype: GObject.GType<Shadow>;\n\n    constructor(color: Clutter.Color, xoffset: number, yoffset: number, blur: number, spread: number, inset: boolean);\n    constructor(\n        properties?: Partial<{\n            xoffset?: number;\n            yoffset?: number;\n            blur?: number;\n            spread?: number;\n            inset?: boolean;\n            ref_count?: number;\n        }>\n    );\n    constructor(copy: Shadow);\n\n    // Fields\n    xoffset: number;\n    yoffset: number;\n    blur: number;\n    spread: number;\n    inset: boolean;\n    ref_count: number;\n\n    // Constructors\n    static [\"new\"](\n        color: Clutter.Color,\n        xoffset: number,\n        yoffset: number,\n        blur: number,\n        spread: number,\n        inset: boolean\n    ): Shadow;\n\n    // Members\n    equal(other: Shadow): boolean;\n    get_box(actor_box: Clutter.ActorBox, shadow_box: Clutter.ActorBox): void;\n    ref(): Shadow;\n    unref(): void;\n}\n\nexport class ShadowHelper {\n    static $gtype: GObject.GType<ShadowHelper>;\n\n    constructor(shadow: Shadow);\n    constructor(copy: ShadowHelper);\n\n    // Constructors\n    static [\"new\"](shadow: Shadow): ShadowHelper;\n\n    // Members\n    copy(): ShadowHelper;\n    free(): void;\n    paint(framebuffer: Cogl.Framebuffer, actor_box: Clutter.ActorBox, paint_opacity: number): void;\n    update(source: Clutter.Actor): void;\n}\n\nexport class TextureCachePrivate {\n    static $gtype: GObject.GType<TextureCachePrivate>;\n\n    constructor(copy: TextureCachePrivate);\n}\n\nexport class ThemeNodePaintState {\n    static $gtype: GObject.GType<ThemeNodePaintState>;\n\n    constructor(\n        properties?: Partial<{\n            alloc_width?: number;\n            alloc_height?: number;\n            box_shadow_width?: number;\n            box_shadow_height?: number;\n            resource_scale?: number;\n        }>\n    );\n    constructor(copy: ThemeNodePaintState);\n\n    // Fields\n    alloc_width: number;\n    alloc_height: number;\n    box_shadow_width: number;\n    box_shadow_height: number;\n    resource_scale: number;\n\n    // Members\n    copy(other: ThemeNodePaintState): void;\n    free(): void;\n    init(): void;\n    invalidate(): void;\n    invalidate_for_file(file: Gio.File): boolean;\n    set_node(node: ThemeNode): void;\n}\n\nexport class WidgetAccessiblePrivate {\n    static $gtype: GObject.GType<WidgetAccessiblePrivate>;\n\n    constructor(copy: WidgetAccessiblePrivate);\n}\n\nexport interface ScrollableNamespace {\n    $gtype: GObject.GType<Scrollable>;\n    prototype: ScrollablePrototype;\n}\nexport type Scrollable = ScrollablePrototype;\nexport interface ScrollablePrototype extends GObject.Object {\n    // Properties\n    hadjustment: Adjustment;\n    vadjustment: Adjustment;\n\n    // Members\n\n    get_adjustments(hadjustment: Adjustment, vadjustment: Adjustment): void;\n    set_adjustments(hadjustment: Adjustment, vadjustment: Adjustment): void;\n    vfunc_get_adjustments(hadjustment: Adjustment, vadjustment: Adjustment): void;\n    vfunc_set_adjustments(hadjustment: Adjustment, vadjustment: Adjustment): void;\n}\n\nexport const Scrollable: ScrollableNamespace;\n"
  },
  {
    "path": "LICENSE",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.  We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors.  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights.  Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received.  You must make sure that they, too, receive\nor can get the source code.  And you must show them these terms so they\nknow their rights.\n\n  Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n  For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software.  For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n  Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so.  This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software.  The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable.  Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts.  If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n  Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary.  To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Use with the GNU Affero General Public License.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <https://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n    <program>  Copyright (C) <year>  <name of author>\n    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n<https://www.gnu.org/licenses/>.\n\n  The GNU General Public License does not permit incorporating your program\ninto proprietary programs.  If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.  But first, please read\n<https://www.gnu.org/licenses/why-not-lgpl.html>.\n"
  },
  {
    "path": "Makefile",
    "content": "\nUUID=gestureImprovements@gestures\nEXTENSIONDIR=build/extension\nBUILDIR=build\nZIPPATH=${PWD}/${BUILDIR}/${UUID}.shell-extension.zip\nDESTDIR=${HOME}/.local/share/gnome-shell/extensions/${UUID}\nUPDATE_CMD = gnome-extensions install -f ${ZIPPATH}\nifdef FLATPAK_ID\n\tUPDATE_CMD = flatpak-spawn --host gnome-extensions install -f ${ZIPPATH}\nendif\n\npack:\n\tnode ${BUILDIR}/scripts/updateMetadata.js \\\n\t\t--descriptionREADMEFile=extension_page.md \\\n\t\t--inFile=metadata.json --outFile=${EXTENSIONDIR}/metadata.json\n\tcp -r extension/assets/ extension/stylesheet.css extension/ui extension/schemas $(EXTENSIONDIR)\n\tglib-compile-schemas --strict ${EXTENSIONDIR}/schemas\n\trm -f ${ZIPPATH}\n\tcd ${EXTENSIONDIR} && zip -r ${ZIPPATH} .\n\nupdate:\n\t${UPDATE_CMD}\n\nbuild-tests: build/tests/prefs.js\n\tnode ${BUILDIR}/scripts/transpile.js --dir ${BUILDIR}/tests --type app\n\t@npx eslint build/tests --fix\n\ntest-ui: build-tests\n\tgjs -m build/tests/prefs.js\n"
  },
  {
    "path": "README.md",
    "content": "# Touchpad Gesture Improvements\n\nThis extension modifies and extends existing touchpad gestures on GNOME.\n\n## Installation\n### From GNOME Extensions Website\n<a href=\"https://extensions.gnome.org/extension/4245/gesture-improvements/\">\n<img src=\"https://github.com/andyholmes/gnome-shell-extensions-badge/raw/master/get-it-on-ego.svg\" alt=\"Get it on EGO\" width=\"200\" />\n</a>\n\n### Manually\n1. Install extension\n```\ngit clone https://github.com/harshadgavali/gnome-gesture-improvements.git/\ncd gnome-gesture-improvements\nnpm install\nnpm run update\n```\n2. Log out and log in **or** just restart session (X11)\n3. Enable extension via extensions app or via command line\n```\ngnome-extensions enable gestureImprovements@gestures\n```\n\n### Additional app X11\nOn X11, you also need to install [gnome-x11-gesture-daemon](https://github.com/harshadgavali/gnome-x11-gesture-daemon)\n\n## Gestures (including built-in ones)\n| Swipe Gesture                           | Modes    | Fingers | Direction       |\n| :-------------------------------------- | :------- | :------ | :-------------- |\n| Switch windows                          | Desktop  | 3       | Horizontal      |\n| Switch workspaces                       | Overview | 2/3     | Horizontal      |\n| Switch app pages                        | AppGrid  | 2/3     | Horizontal      |\n| Switch workspaces                       | *        | 4       | Horizontal      |\n| Desktop/Overview/AppGrid navigation     | *        | 4       | Vertical        |\n| Unmaximize/maximize/fullscreen a window | Desktop  | 3       | Vertical        |\n| Minimize a window                       | Desktop  | 3       | Vertical        |\n| Snap/half-tile a window                 | Desktop  | 3       | Explained below |\n\n| Pinch Gesture | Modes   | Fingers |\n| :------------ | :------ | :------ |\n| Show Desktop  | Desktop | 3/4     |\n\n| Application Gestures (Configurable) |\n| :--- |\n| Go back or forward in browser tab |\n| Switch to next or previous image in image viewer |\n| Switch to next or previous audio |\n| Change tabs |\n\n#### For activating tiling gesture (inverted T gesture)\n1. Do a 3-finger vertical downward gesture on a unmaximized window\n2. Wait a few milliseconds\n3. Do a 3-finger horizontal gesture to tile a window to either side\n\n#### Notes\n* Minimize gesture is available if you have dash-to-dock/panel or similar extension enabled.\n* To activate application gesture, hold for few moments(configurable) before swiping\n* Tiling gesture can't be activated if you enable minimize gesture\n\n\n## Customization\n* To switch to windows from *all* workspaces using 3-fingers swipes, run \n```\ngsettings set org.gnome.shell.window-switcher current-workspace-only false\n```\n\n* Add delay to alt-tab gesture, to ensure second windows gets selected when a fast swipe is done\n* Change sensitivity of swipe (touchpad swipe speed)\n* Option to follow natural scrolling (seperate from option in GNOME settings)\n* Revert to 3-finger swipes to switch workspace on desktop (4-fingers to switch windows)\n* Revert to 3-finger swipes for overview navigation (4-fingers to maximize/unmaximize/tile)\n\n# Contributors\n[@jacksongoode](https://github.com/jacksongoode)\n[@kyteinsky](https://github.com/kyteinsky)\n\n# Thanks\n[@ewlsh](https://gitlab.gnome.org/ewlsh) for [Typescript definitions](https://www.npmjs.com/package/@gi-types/glib) for GLib, GObject, ...\n"
  },
  {
    "path": "extension/common/appGestures.ts",
    "content": "import Gtk from '@gi-types/gtk4';\nimport Gio from '@gi-types/gio2';\nimport GLib from '@gi-types/glib2';\nimport GObject from '@gi-types/gobject2';\nimport Adw from '@gi-types/adw1';\nimport { ForwardBackKeyBinds, GioSettings } from './settings';\nimport { registerClass } from './utils/gobject';\nimport { printStack } from './utils/logging';\n\n/** return icon image for give app */\nfunction getAppIconImage(app: Gio.AppInfoPrototype) {\n\tconst iconName =  app.get_icon()?.to_string() ?? 'icon-missing';\n\treturn new Gtk.Image({\n\t\tgicon: Gio.icon_new_for_string(iconName),\n\t\ticonSize: Gtk.IconSize.LARGE,\n\t});\n}\n\n/** Returns marked escaped text or empty string if text is nullable */\nfunction markup_escape_text(text?: string | null) {\n\ttext = text ?? '';\n\ttry {\n\t\treturn GLib.markup_escape_text(text, -1);\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t} catch (e: any) {\n\t\t// TODO: see what exactly is error and fix it\n\t\t// probably errors in different language or app name\n\t\tprintStack(`Error: '${e?.message ?? e}' while escaping app name for app(${text}))`);\n\t\treturn text;\n\t}\n}\n\n/** Dialog window used for selecting application from given list of apps\n *  Emits `app-selected` signal with application id\n */\nconst AppChooserDialog = registerClass(\n\t{\n\t\tProperties: {},\n\t\tSignals: { 'app-selected': { param_types: [GObject.TYPE_STRING] } },\n\t},\n\tclass GIE_AppChooserDialog extends Adw.PreferencesWindow {\n\t\tprivate _group: Adw.PreferencesGroup;\n\n\t\t/**\n\t\t * @param apps list of apps to display in dialog\n\t\t * @param parent parent window, dialog will be transient for parent\n\t\t */\n\t\tconstructor(apps: Gio.AppInfoPrototype[], parent: Adw.Window) {\n\t\t\tsuper({\n\t\t\t\tmodal: true,\n\t\t\t\ttransientFor: parent,\n\t\t\t\tdestroyWithParent: false,\n\t\t\t\ttitle: 'Select application',\n\t\t\t});\n\n\t\t\tthis.set_default_size(\n\t\t\t\t0.7 * parent.defaultWidth,\n\t\t\t\t0.7 * parent.defaultHeight,\n\t\t\t);\n\n\t\t\tthis._group = new Adw.PreferencesGroup();\n\t\t\tconst page = new Adw.PreferencesPage();\n\t\t\tpage.add(this._group);\n\t\t\tthis.add(page);\n\n\t\t\tapps.forEach(app => this._addAppRow(app));\n\t\t}\n\n\t\t/** for given app add row to selectable list */\n\t\tprivate _addAppRow(app: Gio.AppInfoPrototype) {\n\t\t\tconst row = new Adw.ActionRow({\n\t\t\t\ttitle: markup_escape_text(app.get_display_name()),\n\t\t\t\tsubtitle: markup_escape_text(app.get_description()),\n\t\t\t\tactivatable: true,\n\t\t\t});\n\t\t\trow.add_prefix(getAppIconImage(app));\n\t\t\tthis._group.add(row);\n\n\t\t\trow.connect('activated', () => {\n\t\t\t\tthis.emit('app-selected', app.get_id());\n\t\t\t\tthis.close();\n\t\t\t});\n\t\t}\n\t},\n);\n\n/** type definition for gesture setting(keybind and reverse flag) for app */\ndeclare type AppGestureSettings = [ForwardBackKeyBinds, boolean];\n\n/**\n * Class to create row for application in list to display gesture settings of app\n * Emits 'value-updated' when any of settings changes\n * Emits 'remove-request' when remove button is clicked\n */\nconst AppGestureSettingsRow = registerClass(\n\t{\n\t\tProperties: {},\n\t\tSignals: {\n\t\t\t'value-updated': { param_types: [GObject.TYPE_UINT, GObject.TYPE_BOOLEAN] },\n\t\t\t'remove-request': {},\n\t\t},\n\t},\n\tclass GIE_AppGestureSettingsRow extends Adw.ExpanderRow {\n\t\tprivate _keyBindCombo: Adw.ComboRow;\n\t\tprivate _reverseButton: Gtk.Switch;\n\n\t\t/**\n\t\t * @param appGestureSettings value of current settings for app\n\t\t * @param model list of choices of keybings for setting\n\t\t */\n\t\tconstructor(app: Gio.AppInfoPrototype, appGestureSettings: AppGestureSettings, model: Gio.ListModel) {\n\t\t\tsuper({ title: markup_escape_text(app.get_display_name())});\n\t\t\tthis.add_prefix(getAppIconImage(app));\n\n\t\t\tconst [keyBind, reverse] = appGestureSettings;\n\n\t\t\t// keybinding combo row\n\t\t\tthis._keyBindCombo = new Adw.ComboRow({\n\t\t\t\ttitle: 'Keybinding',\n\t\t\t\tsubtitle: 'Keyboard shortcut to emit after gesture is completed',\n\t\t\t\tmodel,\n\t\t\t});\n\t\t\tthis._keyBindCombo.set_selected(keyBind);\n\t\t\tthis.add_row(this._keyBindCombo);\n\n\t\t\t// reverse switch row\n\t\t\tthis._reverseButton = new Gtk.Switch({\n\t\t\t\tactive: reverse,\n\t\t\t\tvalign: Gtk.Align.CENTER,\n\t\t\t});\n\t\t\tlet actionRow = new Adw.ActionRow({ title: 'Reverse gesture direction' });\n\t\t\tactionRow.add_suffix(this._reverseButton);\n\t\t\tthis.add_row(actionRow);\n\n\t\t\t// remove setting row\n\t\t\tconst removeButton = new Gtk.Button({\n\t\t\t\tlabel: 'Remove...',\n\t\t\t\tvalign: Gtk.Align.CENTER,\n\t\t\t\thalign: Gtk.Align.END,\n\t\t\t\tcssClasses: ['raised'],\n\t\t\t});\n\t\t\tactionRow = new Adw.ActionRow();\n\t\t\tactionRow.add_suffix(removeButton);\n\t\t\tthis.add_row(actionRow);\n\n\t\t\t// remove request signal emitted when remove button is clicked\n\t\t\tremoveButton.connect('clicked', () => this.emit('remove-request'));\n\t\t\tthis._keyBindCombo.connect('notify::selected', this._onValueUpdated.bind(this));\n\t\t\tthis._reverseButton.connect('notify::active', this._onValueUpdated.bind(this));\n\n\t\t}\n\n\t\t/** function called internally whenever some setting is changed, emits external signal */\n\t\tprivate _onValueUpdated() {\n\t\t\tthis.emit('value-updated', this._keyBindCombo.selected, this._reverseButton.active);\n\t\t}\n\t},\n);\n\n/**\n * Class to display list of applications and their gesture settings\n */\nconst AppKeybindingGesturePrefsGroup = registerClass(\n\tclass GIE_AppKeybindingGesturePrefsGroup extends Adw.PreferencesGroup {\n\t\tprivate _settings: GioSettings;\n\t\tprivate _prefsWindow: Adw.PreferencesWindow;\n\t\tprivate _appRows: Map<string, typeof AppGestureSettingsRow.prototype>;\n\t\tprivate _cachedSettings: Record<string, AppGestureSettings>;\n\t\tprivate _addAppButtonRow: Adw.PreferencesRow;\n\t\tprivate _appGestureModel: Gtk.StringList<GObject.Object>;\n\n\t\t/**\n\t\t * @param prefsWindow parent preferences window\n\t\t * @param settings extension settings object\n\t\t */\n\t\tconstructor(prefsWindow: Adw.PreferencesWindow, settings: GioSettings) {\n\t\t\tsuper({\n\t\t\t\ttitle: 'Enable application specific gestures',\n\t\t\t\tdescription: 'Hold and then swipe to activate the gesture',\n\t\t\t});\n\n\t\t\tthis._prefsWindow = prefsWindow;\n\t\t\tthis._settings = settings;\n\t\t\tthis._appRows = new Map();\n\n\t\t\tthis._cachedSettings = this._settings.get_value('forward-back-application-keyboard-shortcuts').deepUnpack();\n\t\t\tthis._appGestureModel = this._getAppGestureModelForComboBox();\n\n\t\t\t// build ui widgets\n\t\t\tthis.add(\n\t\t\t\tnew Adw.PreferencesRow({\n\t\t\t\t\tchild: new Gtk.Label({\n\t\t\t\t\t\tlabel: 'Applications not listed here will have default settings',\n\t\t\t\t\t\thalign: Gtk.Align.CENTER,\n\t\t\t\t\t\thexpand: true,\n\t\t\t\t\t}),\n\t\t\t\t\tcssClasses: ['custom-information-label-row', 'custom-smaller-card'],\n\t\t\t\t}),\n\t\t\t);\n\n\t\t\tthis._addAppButtonRow = this._buildAddAppButtonRow();\n\t\t\tthis.add(this._addAppButtonRow);\n\n\t\t\tObject.keys(this._cachedSettings).sort().reverse().forEach(appId => this._addAppGestureRow(appId));\n\n\t\t\t// bind switch to setting value\n\t\t\tconst toggleSwitch = new Gtk.Switch({ valign: Gtk.Align.CENTER });\n\t\t\tthis._settings.bind('enable-forward-back-gesture', toggleSwitch, 'active', Gio.SettingsBindFlags.DEFAULT);\n\t\t\tthis.set_header_suffix(toggleSwitch);\n\t\t}\n\n\t\t/**\n\t\t * Handler function, called when add button is clicked\n\t\t * Displays dialog to select application to add\n\t\t */\n\t\tprivate _onAddAppButtonClicked() {\n\t\t\t// find list of new apps that can be selected\n\t\t\tconst allApps = Gio.app_info_get_all();\n\t\t\tconst selectableApps = allApps\n\t\t\t\t.filter(app => {\n\t\t\t\t\tconst appId = app.get_id();\n\t\t\t\t\treturn app.should_show() && appId && !this._appRows.has(appId);\n\t\t\t\t})\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t.sort((a, b) => a.get_id()!.localeCompare(b.get_id()!));\n\n\t\t\tconst appChooserDialog = new AppChooserDialog(selectableApps, this._prefsWindow);\n\t\t\tappChooserDialog.connect('app-selected', (_source, appId) => this._addAppGestureRow(appId));\n\t\t\tappChooserDialog.present();\n\t\t}\n\n\t\t/**\n\t\t * @returns row for add app button\n\t\t */\n\t\tprivate _buildAddAppButtonRow() {\n\t\t\tconst addButton = new Gtk.Button({\n\t\t\t\ticonName: 'list-add-symbolic',\n\t\t\t\tcssName: 'card',\n\t\t\t\tcssClasses: ['custom-smaller-card'],\n\t\t\t});\n\n\t\t\tconst addButtonRow = new Adw.PreferencesRow({ child: addButton });\n\t\t\taddButton.connect('clicked', this._onAddAppButtonClicked.bind(this));\n\n\t\t\treturn addButtonRow;\n\t\t}\n\n\t\t/**\n\t\t * Adds application specific gesture settings row for given app id\n\t\t * Does nothing if app doesn't exist\n\t\t */\n\t\tprivate _addAppGestureRow(appId: string) {\n\t\t\tconst app = Gio.DesktopAppInfo.new(appId);\n\t\t\tif (!app) return;\n\n\t\t\tconst appRow = new AppGestureSettingsRow(\n\t\t\t\tapp,\n\t\t\t\tthis._getAppGestureSetting(appId),\t// this function updates extension settings\n\t\t\t\tthis._appGestureModel,\n\t\t\t);\n\t\t\tthis._appRows.set(appId, appRow);\n\t\t\tthis.add(appRow);\n\n\t\t\t// callbacks for setting updates and remove request\n\t\t\tappRow.connect('remove-request', () => this._requestRemoveAppGestureRow(appId));\n\t\t\tappRow.connect('value-updated', (_source, keyBind, reverse) => {\n\t\t\t\tthis._setAppGestureSetting(appId, [keyBind, reverse]);\n\t\t\t});\n\n\t\t\t// re-add add-appbutton at the end\n\t\t\tthis.remove(this._addAppButtonRow);\n\t\t\tthis.add(this._addAppButtonRow);\n\t\t}\n\n\t\t/**\n\t\t * Removes application specific gesture settings row for given app\n\t\t * Does nothing if row for app was not added\n\t\t * Updates extension settings\n\t\t */\n\t\tprivate _removeAppGestureRow(appId: string) {\n\t\t\tconst appRow = this._appRows.get(appId);\n\t\t\tif (!appRow) return;\n\n\t\t\tthis.remove(appRow);\n\t\t\tthis._appRows.delete(appId);\n\t\t\tdelete this._cachedSettings[appId];\n\t\t\tthis._updateExtensionSettings();\n\t\t}\n\n\t\t/**\n\t\t * Signal handler called when removal of app gesture settings is requested\n\t\t * Displays confirmation dialog and removes app row if confirmed\n\t\t */\n\t\tprivate _requestRemoveAppGestureRow(appId: string) {\n\t\t\tconst app = Gio.DesktopAppInfo.new(appId);\n\n\t\t\tconst dialog = new Gtk.MessageDialog({\n\t\t\t\ttransient_for: this._prefsWindow,\n\t\t\t\tmodal: true,\n\t\t\t\ttext: `Remove gesture setting for ${app.get_display_name()}?`,\n\t\t\t});\n\n\t\t\tdialog.add_button('Cancel', Gtk.ResponseType.CANCEL);\n\t\t\tdialog\n\t\t\t\t.add_button('Remove', Gtk.ResponseType.ACCEPT)\n\t\t\t\t.get_style_context()\n\t\t\t\t.add_class('destructive-action');\n\n\t\t\tdialog.connect('response', (_dlg, response) => {\n\t\t\t\tif (response === Gtk.ResponseType.ACCEPT) {\n\t\t\t\t\tthis._removeAppGestureRow(appId);\n\t\t\t\t}\n\t\t\t\tdialog.destroy();\n\t\t\t});\n\n\t\t\tdialog.present();\n\t\t}\n\n\t\t/**\n\t\t * Returns application specific gesture setting\n\t\t * if setting is not set, returns default value and saves extension settings\n\t\t*/\n\t\tprivate _getAppGestureSetting(appId: string): AppGestureSettings {\n\t\t\tlet val = this._cachedSettings[appId];\n\n\t\t\tif (!val) {\n\t\t\t\t// this is case when new app was selected for gesture\n\t\t\t\tval = [ForwardBackKeyBinds.Default, false];\n\t\t\t\tthis._setAppGestureSetting(appId, val);\n\t\t\t}\n\n\t\t\treturn val;\n\t\t}\n\n\t\t/** Saves application specific gesture setting into extension settings */\n\t\tprivate _setAppGestureSetting(appId: string, appGestureSettings: AppGestureSettings) {\n\t\t\tthis._cachedSettings[appId] = appGestureSettings;\n\t\t\tthis._updateExtensionSettings();\n\t\t}\n\n\t\t/** Updates extension settings */\n\t\tprivate _updateExtensionSettings() {\n\t\t\tconst glibVariant = new GLib.Variant('a{s(ib)}', this._cachedSettings);\n\t\t\tthis._settings.set_value('forward-back-application-keyboard-shortcuts', glibVariant);\n\t\t}\n\n\t\t/** Returns model which contains all possible choices for keybinding setting for app-gesture */\n\t\tprivate _getAppGestureModelForComboBox() {\n\t\t\tconst appGestureModel = new Gtk.StringList();\n\t\t\tObject.values(ForwardBackKeyBinds).forEach(val => {\n\t\t\t\tif (typeof val !== 'number') return;\n\t\t\t\tappGestureModel.append(ForwardBackKeyBinds[val]);\n\t\t\t});\n\n\t\t\treturn appGestureModel;\n\t\t}\n\t},\n);\n\n/**\n * @returns preference page for application gestures\n */\nexport function getAppKeybindingGesturePrefsPage(prefsWindow: Adw.PreferencesWindow, settings: GioSettings) {\n\tconst page = new Adw.PreferencesPage({\n\t\ttitle: 'App Gestures',\n\t\ticonName: 'org.gnome.Settings-applications-symbolic',\n\t});\n\n\tpage.add(new AppKeybindingGesturePrefsGroup(prefsWindow, settings));\n\treturn page;\n}"
  },
  {
    "path": "extension/common/prefs.ts",
    "content": "import Gio from '@gi-types/gio2';\nimport GObject from '@gi-types/gobject2';\nimport Gtk from '@gi-types/gtk4';\nimport Gdk from '@gi-types/gdk4';\nimport Adw from '@gi-types/adw1';\nimport { AllUIObjectKeys, BooleanSettingsKeys, DoubleSettingsKeys, EnumSettingsKeys, GioSettings, IntegerSettingsKeys } from './settings';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { getAppKeybindingGesturePrefsPage } from './appGestures';\n\ntype GtkBuilder = Omit<Gtk.Builder, 'get_object'> & {\n\tget_object<T = GObject.Object>(name: AllUIObjectKeys): T;\n}\n\n/**\n * Bind value of setting to {@link Gtk.SpinButton}\n * @param key key of setting and id of {@link Gtk.SpinButton} object in builder\n */\nfunction bind_int_value(key: IntegerSettingsKeys, settings: GioSettings, builder: GtkBuilder) {\n\tconst button = builder.get_object<Gtk.SpinButton>(key);\n\tsettings.bind(key, button, 'value', Gio.SettingsBindFlags.DEFAULT);\n}\n\n/**\n * Bind value of setting to {@link Gtk.Swich}\n * @param key key of setting and id of {@link Gtk.Switch} object in builder\n * @param flags flag used when binding setting's key to switch's {@link Gtk.Switch.active} status\n */\nfunction bind_boolean_value(key: BooleanSettingsKeys, settings: GioSettings, builder: GtkBuilder, flags?: Gio.SettingsBindFlags) {\n\tconst button = builder.get_object<Gtk.Switch>(key);\n\tsettings.bind(key, button, 'active', flags ?? Gio.SettingsBindFlags.DEFAULT);\n}\n\n/**\n * Bind value of setting to {@link Adw.ComboRow}\n * @param key key of settings and id of {@link Adw.ComboRow} object in builder\n */\nfunction bind_combo_box(key: EnumSettingsKeys, settings: GioSettings, builder: GtkBuilder) {\n\tconst comboRow = builder.get_object<Adw.ComboRow>(key);\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tconst enum_key = key as any;\n\tcomboRow.set_selected(settings.get_enum(enum_key));\n\tcomboRow.connect('notify::selected', () => {\n\t\tsettings.set_enum(enum_key, comboRow.selected);\n\t});\n}\n\n/**\n * Display value of `key` in log scale.\n * @param key key of setting and id of {@link Gtk.Scale} object in builder\n */\nfunction display_in_log_scale(key: DoubleSettingsKeys, label_key: AllUIObjectKeys, settings: GioSettings, builder: GtkBuilder) {\n\tconst scale = builder.get_object<Gtk.Scale>(key);\n\tconst label = builder.get_object<Gtk.Label>(label_key);\n\n\t// display value in log scale\n\tscale.connect('value-changed', () => {\n\t\tconst labelValue = Math.exp(scale.adjustment.value / Math.LOG2E).toFixed(2);\n\t\tlabel.set_text(labelValue);\n\t\tsettings.set_double(key, parseFloat(labelValue));\n\t});\n\n\tconst initialValue = Math.log2(settings.get_double(key));\n\tscale.set_value(initialValue);\n}\n\n/**\n * Binds preference widgets and settings keys\n * @param builder builder object for preference widgets\n * @param settings setting object of extension\n */\nfunction bindPrefsSettings(builder: GtkBuilder, settings: Gio.Settings) {\n\n\tdisplay_in_log_scale('touchpad-speed-scale', 'touchpad-speed-scale_display-value', settings, builder);\n\tdisplay_in_log_scale('touchpad-pinch-speed', 'touchpad-pinch-speed_display-value', settings, builder);\n\n\tbind_int_value('alttab-delay', settings, builder);\n\tbind_int_value('hold-swipe-delay-duration', settings, builder);\n\n\tbind_boolean_value('default-session-workspace', settings, builder, Gio.SettingsBindFlags.INVERT_BOOLEAN);\n\tbind_boolean_value('default-overview', settings, builder, Gio.SettingsBindFlags.INVERT_BOOLEAN);\n\tbind_boolean_value('follow-natural-scroll', settings, builder);\n\tbind_boolean_value('default-overview-gesture-direction', settings, builder, Gio.SettingsBindFlags.INVERT_BOOLEAN);\n\n\tbind_boolean_value('enable-alttab-gesture', settings, builder);\n\tbind_boolean_value('enable-window-manipulation-gesture', settings, builder);\n\tbind_boolean_value('allow-minimize-window', settings, builder);\n\n\tbind_combo_box('pinch-3-finger-gesture', settings, builder);\n\tbind_combo_box('pinch-4-finger-gesture', settings, builder);\n\tbind_combo_box('overview-navifation-states', settings, builder);\n}\n\nfunction loadCssProvider(styleManager: Adw.StyleManager,uiDir: string) {\n\tconst cssProvider = new Gtk.CssProvider();\n\tcssProvider.load_from_path(`${uiDir}/${styleManager.dark ? 'style-dark' : 'style'}.css`);\n\tconst gtkDefaultDisplay = Gdk.Display.get_default();\n\tif (gtkDefaultDisplay) {\n\t\tGtk.StyleContext.add_provider_for_display(\n\t\t\tgtkDefaultDisplay,\n\t\t\tcssProvider,\n\t\t\tGtk.STYLE_PROVIDER_PRIORITY_APPLICATION,\n\t\t);\n\t}\n}\n\nexport function buildPrefsWidget(\n\tprefsWindow: Adw.PreferencesWindow,\n\tsettings: Gio.Settings,\n\tuiDir: string,\n) {\n\tprefsWindow.set_search_enabled(true);\n\n\tconst styleManager = Adw.StyleManager.get_default();\n\tstyleManager.connect('notify::dark', () => loadCssProvider(styleManager, uiDir));\n\tloadCssProvider(styleManager ,uiDir);\n\n\tconst builder = new Gtk.Builder() as GtkBuilder;\n\tbuilder.add_from_file(`${uiDir}/gestures.ui`);\n\tbuilder.add_from_file(`${uiDir}/customizations.ui`);\n\n\t// bind to settings\n\tbindPrefsSettings(builder, settings);\n\n\t// pinch gesture page\n\tprefsWindow.add(builder.get_object<Adw.PreferencesPage>('gestures_page'));\n\n\t// application specific gestures\n\tconst app_gesture_page = getAppKeybindingGesturePrefsPage(prefsWindow, settings);\n\tprefsWindow.add(app_gesture_page);\n\n\t// customize page\n\tprefsWindow.add(builder.get_object<Adw.PreferencesPage>('customizations_page'));\n}"
  },
  {
    "path": "extension/common/settings.ts",
    "content": "import Gio from '@gi-types/gio2';\nimport GLib from '@gi-types/glib2';\n\n// define enum\nexport enum PinchGestureType {\n    NONE = 0,\n    SHOW_DESKTOP = 1,\n    CLOSE_WINDOW = 2,\n    CLOSE_DOCUMENT = 3,\n}\n\n// define enum\nexport enum OverviewNavigationState {\n    CYCLIC = 0,\n    GNOME = 1,\n    WINDOW_PICKER_ONLY = 2,\n}\n\nexport enum ForwardBackKeyBinds {\n    Default = 0,\n    'Forward/Backward' = 1,\n    'Page Up/Down' = 2,\n    'Right/Left' = 3,\n    'Audio Next/Prev' = 4,\n    'Tab Next/Prev' = 5,\n}\n\nexport type BooleanSettingsKeys =\n    'default-session-workspace' |\n    'default-overview' |\n    'allow-minimize-window' |\n    'follow-natural-scroll' |\n    'enable-alttab-gesture' |\n    'enable-forward-back-gesture' |\n    'enable-window-manipulation-gesture' |\n    'default-overview-gesture-direction'\n    ;\n\nexport type IntegerSettingsKeys =\n    'alttab-delay' |\n    'hold-swipe-delay-duration'\n    ;\nexport type DoubleSettingsKeys =\n    'touchpad-speed-scale' |\n    'touchpad-pinch-speed'\n    ;\n\nexport type EnumSettingsKeys =\n    'pinch-3-finger-gesture' |\n    'pinch-4-finger-gesture' |\n    'overview-navifation-states'\n    ;\n\nexport type MiscSettingsKeys = \n    'forward-back-application-keyboard-shortcuts'\n    ;\n\nexport type AllSettingsKeys =\n    BooleanSettingsKeys |\n    IntegerSettingsKeys |\n    DoubleSettingsKeys |\n    EnumSettingsKeys |\n    MiscSettingsKeys\n    ;\n\nexport type UIPageObjectIds = \n    'gestures_page' |\n    'customizations_page'\n    ;\n\nexport type AllUIObjectKeys =\n    UIPageObjectIds |\n    AllSettingsKeys |\n    'touchpad-speed-scale_display-value' |\n    'touchpad-pinch-speed_display-value'\n    ;\n\ntype Enum_Functions<K extends EnumSettingsKeys, T> = {\n    get_enum(key: K): T;\n    set_enum(key: K, value: T): void;\n}\n\ntype SettingsEnumFunctions =\n    Enum_Functions<'pinch-3-finger-gesture' | 'pinch-4-finger-gesture', PinchGestureType> &\n    Enum_Functions<'overview-navifation-states', OverviewNavigationState>\n    ;\n\ntype Misc_Functions<K extends MiscSettingsKeys, T extends string> = {\n    get_value(key: K): GLib.Variant<T>;\n    set_value(key: K, value: GLib.Variant<T>): void;\n}\n\ntype SettingsMiscFunctions = \n    Misc_Functions<'forward-back-application-keyboard-shortcuts', 'a{s(ib)}'>\n    ;\n\nexport type GioSettings =\n    Omit<Gio.Settings, KeysThatStartsWith<keyof Gio.Settings, 'get_' | 'set_'>> &\n    {\n        get_boolean(key: BooleanSettingsKeys): boolean;\n        get_int(key: IntegerSettingsKeys): number;\n        get_double(key: DoubleSettingsKeys): number;\n        set_double(key: DoubleSettingsKeys, value: number): void;\n    } &\n    SettingsEnumFunctions &\n    SettingsMiscFunctions\n    ;"
  },
  {
    "path": "extension/common/utils/gobject.ts",
    "content": "/**\n * @file This file provides {@link registerClass} function similar to {@link GObject.registerClass}\n * Modification provided by {@link registerClass}\n *  - Add `connect(signal_name, ....)` function to prototype returned\n *  - Use parameters of constructor of class , instead of `_init` function of class for new method of prototype returned\n *  - Make `Properties` parameter mandatory @{link https://gitlab.gnome.org/ewlsh/gi.ts/-/issues/6}\n */\n\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport GObject from '@gi-types/gobject2';\nconst OGRegisterClass = GObject.registerClass;\n\ntype ConstructorType = new (...args: any[]) => any;\n\ntype IFaces<Interfaces extends { $gtype: GObject.GType<any> }[]> = {\n\t[key in keyof Interfaces]: Interfaces[key] extends { $gtype: GObject.GType<infer I> } ? I : never;\n};\n\ntype _TupleOf<T, N extends number, R extends T[]> = R['length'] extends N ? R : _TupleOf<T, N, [T, ...R]>;\n/** Tuple of Type T, and of length N */\ntype Tuple<T, N extends number> = _TupleOf<T, N, []>;\n\ntype GObjectSignalDefinition<N extends number = 32> = {\n\tparam_types?: Partial<Tuple<GObject.GType, N>>;\n\t[key: string]: any;\n};\n\n/** Get typescript type for {@link GObjectSignalDefinition.param_types} */\ntype CallBackTypeTuple<T> = T extends any[] ? { [P in keyof T]: T[P] extends GObject.GType<infer R> ? R : never } : [];\n\nexport type RegisteredPrototype<\n\tP extends {},\n\tProps extends { [key: string]: GObject.ParamSpec },\n\tInterfaces extends any[],\n\tSigs extends { [key: string]: GObjectSignalDefinition }\n> = {\n\t/// This is one of modification done by this file\n\tconnect<K extends keyof Sigs>(\n\t\tkey: K,\n\t\tcallback: (\n\t\t\t_source: RegisteredPrototype<P, Props, Interfaces, Sigs>,\n\t\t\t...args: CallBackTypeTuple<Sigs[K]['param_types']>\n\t\t) => void,\n\t): number,\n} & GObject.RegisteredPrototype<P, Props, Interfaces>;\n\nexport type RegisteredClass<\n\tT extends ConstructorType,\n\tProps extends { [key: string]: GObject.ParamSpec },\n\tInterfaces extends { $gtype: GObject.GType<any> }[],\n\tSigs extends { [key: string]: GObjectSignalDefinition }\n> = T extends { prototype: infer P }\n\t?\n\t\tP extends {}\n\t\t?\n\t\t{\n\t\t\t$gtype: GObject.GType<RegisteredClass<T, Props, IFaces<Interfaces>, Sigs>>;\n\t\t\tprototype: RegisteredPrototype<P, Props, IFaces<Interfaces>, Sigs>;\n\t\t\t/// use constructor parameter instead of '_init' parameters\n\t\t\tnew(...args: ConstructorParameters<T>): RegisteredPrototype<P, Props, IFaces<Interfaces>, Sigs>;\n\t\t}\n\t\t: never\n\t: never\n\t;\n\nexport function registerClass<T extends ConstructorType>(klass: T): RegisteredClass<T, {}, [], {}>;\nexport function registerClass<\n\tT extends ConstructorType,\n\tProps extends { [key: string]: GObject.ParamSpec },\n\tInterfaces extends { $gtype: GObject.GType }[],\n\tSigs extends { [key: string]: GObjectSignalDefinition }\n>(\n\toptions: {\n\t\tGTypeName?: string;\n\t\tGTypeFlags?: GObject.TypeFlags;\n\t\t/// Make properties mandatory\n\t\tProperties: Props;\n\t\tSignals?: Sigs;\n\t\tImplements?: Interfaces;\n\t\tCssName?: string;\n\t\tTemplate?: string;\n\t\tChildren?: string[];\n\t\tInternalChildren?: string[];\n\t},\n\tklass: T\n): RegisteredClass<T, Props, Interfaces, Sigs>;\n\nexport function registerClass(...args: any[]): any {\n\tif (args.length === 2)\n\t\treturn OGRegisterClass(args[0], args[1]);\n\treturn OGRegisterClass(args[0]);\n}"
  },
  {
    "path": "extension/common/utils/logging.ts",
    "content": "export function printStack(message?: unknown) {\n\tconst stack = new Error().stack;\n\tlet prefix = '';\n\tif (stack) {\n\t\tconst lines = stack.split('\\n')[1].split('@');\n\t\tlog(`[DEBUG]:: in function ${lines[0]} at ${lines[2]}`);\n\t\tprefix = '\\t';\n\t}\n\tif (message !== undefined)\n\t\tlog(`${prefix}${JSON.stringify(message)}`);\n}\n"
  },
  {
    "path": "extension/constants.ts",
    "content": "// FIXME: ideally these values matches physical touchpad size. We can get the\n// correct values for gnome-shell specifically, since mutter uses libinput\n// directly, but GTK apps cannot get it, so use an arbitrary value so that\n// it's consistent with apps.\nexport const TouchpadConstants = {\n\tDEFAULT_SWIPE_MULTIPLIER: 1,\n\tSWIPE_MULTIPLIER: 1,\n\tDEFAULT_PINCH_MULTIPLIER: 1,\n\tPINCH_MULTIPLIER: 1,\n\tDRAG_THRESHOLD_DISTANCE: 16,\n\tTOUCHPAD_BASE_HEIGHT: 300,\n\tTOUCHPAD_BASE_WIDTH: 400,\n\tHOLD_SWIPE_DELAY_DURATION: 100,\n};\n\nexport const AltTabConstants = {\n\tDEFAULT_DELAY_DURATION: 100,\n\tDELAY_DURATION: 100,\n\tPOPUP_SCROLL_TIME: 100,\n\tDUMMY_WIN_COUNT: 1, // so swiping to the end of touchpad is not needed for last window\n\tMIN_WIN_COUNT: 8,\n};\n\nexport const OverviewControlsState = {\n\tAPP_GRID_P: -1,\n\tHIDDEN: 0,\n\tWINDOW_PICKER: 1,\n\tAPP_GRID: 2,\n\tHIDDEN_N: 3,\n};\n\nexport const ExtSettings = {\n\tDEFAULT_SESSION_WORKSPACE_GESTURE: false,\n\tDEFAULT_OVERVIEW_GESTURE: false,\n\tALLOW_MINIMIZE_WINDOW: false,\n\tFOLLOW_NATURAL_SCROLL: true,\n\tAPP_GESTURES: false,\n\tDEFAULT_OVERVIEW_GESTURE_DIRECTION: true,\n};\n\nexport const RELOAD_DELAY = 150; // reload extension delay in ms\nexport const WIGET_SHOWING_DURATION = 100; // animation duration for showing widget"
  },
  {
    "path": "extension/extension.ts",
    "content": "import GLib from '@gi-types/glib2';\nimport { imports } from 'gnome-shell';\nimport { AllSettingsKeys, GioSettings, PinchGestureType } from './common/settings';\nimport * as Constants from './constants';\nimport { AltTabConstants, ExtSettings, TouchpadConstants } from './constants';\nimport { AltTabGestureExtension } from './src/altTab';\nimport { ForwardBackGestureExtension } from './src/forwardBack';\nimport { GestureExtension } from './src/gestures';\nimport { OverviewRoundTripGestureExtension } from './src/overviewRoundTrip';\nimport { CloseWindowExtension } from './src/pinchGestures/closeWindow';\nimport { ShowDesktopExtension } from './src/pinchGestures/showDesktop';\nimport { SnapWindowExtension } from './src/snapWindow';\nimport * as DBusUtils from './src/utils/dbus';\nimport * as VKeyboard from './src/utils/keyboard';\n\nconst ExtensionUtils = imports.misc.extensionUtils;\n\nclass Extension {\n\tprivate _extensions: ISubExtension[];\n\tsettings?: GioSettings;\n\tprivate _settingChangedId = 0;\n\tprivate _reloadWaitId = 0;\n\tprivate _addReloadDelayFor: AllSettingsKeys[];\n\n\tconstructor() {\n\t\tthis._extensions = [];\n\t\tthis._addReloadDelayFor = [\n\t\t\t'touchpad-speed-scale',\n\t\t\t'alttab-delay',\n\t\t\t'touchpad-pinch-speed',\n\t\t];\n\t}\n\n\tenable() {\n\t\tthis.settings = ExtensionUtils.getSettings();\n\t\tthis._settingChangedId = this.settings.connect('changed', this.reload.bind(this));\n\t\tthis._enable();\n\t}\n\n\tdisable() {\n\t\tif (this.settings) {\n\t\t\tthis.settings.disconnect(this._settingChangedId);\n\t\t}\n\n\t\tif (this._reloadWaitId !== 0) {\n\t\t\tGLib.source_remove(this._reloadWaitId);\n\t\t\tthis._reloadWaitId = 0;\n\t\t}\n\n\t\tthis._disable();\n\t\tDBusUtils.drop_proxy();\n\t}\n\n\treload(_settings: never, key: AllSettingsKeys) {\n\t\tif (this._reloadWaitId !== 0) {\n\t\t\tGLib.source_remove(this._reloadWaitId);\n\t\t\tthis._reloadWaitId = 0;\n\t\t}\n\n\t\tthis._reloadWaitId = GLib.timeout_add(\n\t\t\tGLib.PRIORITY_DEFAULT,\n\t\t\t(this._addReloadDelayFor.includes(key) ? Constants.RELOAD_DELAY : 0),\n\t\t\t() => {\n\t\t\t\tthis._disable();\n\t\t\t\tthis._enable();\n\t\t\t\tthis._reloadWaitId = 0;\n\t\t\t\treturn GLib.SOURCE_REMOVE;\n\t\t\t},\n\t\t);\n\t}\n\n\t_enable() {\n\t\tthis._initializeSettings();\n\t\tthis._extensions = [];\n\t\tif (this.settings === undefined)\n\t\t\treturn;\n\n\t\tif (this.settings.get_boolean('enable-alttab-gesture'))\n\t\t\tthis._extensions.push(new AltTabGestureExtension());\n\t\t\n\t\tif (this.settings.get_boolean('enable-forward-back-gesture')) {\n\t\t\tconst appForwardBackKeyBinds = this.settings.get_value('forward-back-application-keyboard-shortcuts').deepUnpack();\n\t\t\tthis._extensions.push(new ForwardBackGestureExtension(appForwardBackKeyBinds));\n\t\t}\n\n\t\tthis._extensions.push(\n\t\t\tnew OverviewRoundTripGestureExtension(this.settings.get_enum('overview-navifation-states')),\n\t\t\tnew GestureExtension(),\n\t\t);\n\n\t\tif (this.settings.get_boolean('enable-window-manipulation-gesture'))\n\t\t\tthis._extensions.push(new SnapWindowExtension());\n\n\t\t// pinch to show desktop\n\t\tconst pinchToFingersMap = this._getPinchGestureTypeAndFingers();\n\t\tconst showDesktopFingers = pinchToFingersMap.get(PinchGestureType.SHOW_DESKTOP);\n\t\tif (showDesktopFingers?.length)\n\t\t\tthis._extensions.push(new ShowDesktopExtension(showDesktopFingers));\n\n\t\t// pinch to close window\n\t\tconst closeWindowFingers = pinchToFingersMap.get(PinchGestureType.CLOSE_WINDOW);\n\t\tif (closeWindowFingers?.length)\n\t\t\tthis._extensions.push(new CloseWindowExtension(closeWindowFingers, PinchGestureType.CLOSE_WINDOW));\n\n\t\t// pinch to close document\n\t\tconst closeDocumentFingers = pinchToFingersMap.get(PinchGestureType.CLOSE_DOCUMENT);\n\t\tif (closeDocumentFingers?.length)\n\t\t\tthis._extensions.push(new CloseWindowExtension(closeDocumentFingers, PinchGestureType.CLOSE_DOCUMENT));\n\n\t\tthis._extensions.forEach(extension => extension.apply?.());\n\t}\n\n\t_disable() {\n\t\tVKeyboard.extensionCleanup();\n\t\tDBusUtils.unsubscribeAll();\n\t\tthis._extensions.reverse().forEach(extension => extension.destroy());\n\t\tthis._extensions = [];\n\t}\n\n\t_initializeSettings() {\n\t\tif (this.settings) {\n\t\t\tExtSettings.DEFAULT_SESSION_WORKSPACE_GESTURE = this.settings.get_boolean('default-session-workspace');\n\t\t\tExtSettings.DEFAULT_OVERVIEW_GESTURE = this.settings.get_boolean('default-overview');\n\t\t\tExtSettings.ALLOW_MINIMIZE_WINDOW = this.settings.get_boolean('allow-minimize-window');\n\t\t\tExtSettings.FOLLOW_NATURAL_SCROLL = this.settings.get_boolean('follow-natural-scroll');\n\t\t\tExtSettings.DEFAULT_OVERVIEW_GESTURE_DIRECTION = this.settings.get_boolean('default-overview-gesture-direction');\n\t\t\tExtSettings.APP_GESTURES = this.settings.get_boolean('enable-forward-back-gesture');\n\n\t\t\tTouchpadConstants.SWIPE_MULTIPLIER = Constants.TouchpadConstants.DEFAULT_SWIPE_MULTIPLIER * this.settings.get_double('touchpad-speed-scale');\n\t\t\tTouchpadConstants.PINCH_MULTIPLIER = Constants.TouchpadConstants.DEFAULT_PINCH_MULTIPLIER * this.settings.get_double('touchpad-pinch-speed');\n\t\t\tAltTabConstants.DELAY_DURATION = this.settings.get_int('alttab-delay');\n\t\t\tTouchpadConstants.HOLD_SWIPE_DELAY_DURATION = this.settings.get_int('hold-swipe-delay-duration');\n\t\t}\n\t}\n\n\tprivate _getPinchGestureTypeAndFingers(): Map<PinchGestureType, number[]> {\n\t\tif (!this.settings)\treturn new Map();\n\n\t\tconst pinch3FingerGesture = this.settings.get_enum('pinch-3-finger-gesture');\n\t\tconst pinch4FingerGesture = this.settings.get_enum('pinch-4-finger-gesture');\n\n\t\tconst gestureToFingersMap = new Map<PinchGestureType, number[]>();\n\t\tif (pinch3FingerGesture === pinch4FingerGesture)\n\t\t\tgestureToFingersMap.set(pinch3FingerGesture, [3, 4]);\n\t\telse {\n\t\t\tgestureToFingersMap.set(pinch3FingerGesture, [3]);\n\t\t\tgestureToFingersMap.set(pinch4FingerGesture, [4]);\n\t\t}\n\n\t\treturn gestureToFingersMap;\n\t}\n}\n\nexport function init(): IExtension {\n\treturn new Extension();\n}\n"
  },
  {
    "path": "extension/prefs.ts",
    "content": "// import Gtk from '@gi-types/gtk4';\nimport Adw from '@gi-types/adw1';\n\nimport { imports } from 'gnome-shell';\nimport { buildPrefsWidget } from './common/prefs';\n\nconst ExtensionUtils = imports.misc.extensionUtils;\nconst ExtMe = ExtensionUtils.getCurrentExtension();\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function init(): void { }\n\nexport function fillPreferencesWindow(prefsWindow: Adw.PreferencesWindow) {\n\tconst UIDirPath = ExtMe.dir.get_child('ui').get_path() ?? '';\n\tconst settings = ExtensionUtils.getSettings();\n\tbuildPrefsWidget(prefsWindow, settings, UIDirPath);\n}"
  },
  {
    "path": "extension/schemas/org.gnome.shell.extensions.gestureImprovements.gschema.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schemalist>\n  <enum id='org.gnome.shell.extensions.gestureImprovements.pinch-gestures'>\n    <value value='0' nick='NONE' />\n    <value value='1' nick='SHOW_DESKTOP' />\n    <value value='2' nick='CLOSE_WINDOW' />\n    <value value='3' nick='CLOSE_DOCUMENT' />\n  </enum>\n  <!--  -->\n  <enum id='org.gnome.shell.extensions.gestureImprovements.overview-navigation-states'>\n    <value value='0' nick='CYCLIC' />\n    <value value='1' nick='GNOME' />\n    <value value='2' nick='WINDOW_PICKER_ONLY' />\n  </enum>\n  <schema id=\"org.gnome.shell.extensions.gestureImprovements\" path=\"/org/gnome/shell/extensions/gestureImprovements/\">\n    <!-- See also: https://docs.gtk.org/glib/gvariant-format-strings.html -->\n    <key name=\"touchpad-speed-scale\" type=\"d\">\n      <default>1.0</default>\n    </key>\n    <key name=\"touchpad-pinch-speed\" type=\"d\">\n      <default>1.0</default>\n    </key>\n    <key name=\"alttab-delay\" type=\"i\">\n      <default>150</default>\n    </key>\n    <key name=\"hold-swipe-delay-duration\" type=\"i\">\n      <default>100</default>\n    </key>\n    <key name='default-session-workspace' type='b'>\n      <default>false</default>\n      <description>If true, use 3-fingers to switch workspace, 4 for windows</description>\n    </key>\n    <key name='default-overview' type='b'>\n      <default>false</default>\n      <description>If true, use 3-fingers for overview gesture, 4 for snapping/tiling</description>\n    </key>\n    <key name='allow-minimize-window' type='b'>\n      <default>false</default>\n      <description>If true, when swipe down on non-maximized window minimizes it</description>\n    </key>\n    <key name='follow-natural-scroll' type='b'>\n      <default>true</default>\n      <description>Whether to follow natural scroll for swipe</description>\n    </key>\n    <key name='default-overview-gesture-direction' type='b'>\n      <default>true</default>\n      <description>Default direction for overview navigation</description>\n    </key>\n    <key name='enable-alttab-gesture' type='b'>\n      <default>true</default>\n      <description>Enable alttab gesture</description>\n    </key>\n    <key name='enable-forward-back-gesture' type='b'>\n      <default>false</default>\n      <description>Enable forward/back keybinding gesture</description>\n    </key>\n    <key name='enable-window-manipulation-gesture' type='b'>\n      <default>true</default>\n      <description>Enable Window manipulation gesture</description>\n    </key>\n    <key name=\"pinch-3-finger-gesture\" enum=\"org.gnome.shell.extensions.gestureImprovements.pinch-gestures\">\n      <default>'NONE'</default>\n      <description>Gesture for 3 finger pinch</description>\n    </key>\n    <key name=\"pinch-4-finger-gesture\" enum=\"org.gnome.shell.extensions.gestureImprovements.pinch-gestures\">\n      <default>'SHOW_DESKTOP'</default>\n      <description>Gesture for 4 finger pinch</description>\n    </key>\n    <key name=\"overview-navifation-states\" enum=\"org.gnome.shell.extensions.gestureImprovements.overview-navigation-states\">\n      <default>'CYCLIC'</default>\n      <description>Gesture for 4 finger pinch</description>\n    </key>\n    <!-- \n      0 -> Default\n      1 -> Forward/Back\n      2 -> PageUP/PageDown\n      3 -> Right/Left\n      4 -> Audio Next/Prev\n      5 -> Tab Next/Prev\n      boolean value is to indicate whether to reverse keybinds\n    -->\n    <key name=\"forward-back-application-keyboard-shortcuts\" type=\"a{s(ib)}\">\n      <default>\n        {\n          'firefox.desktop': (5, false),\n          'org.chromium.Chromium.desktop': (5, false),\n          'microsoft-edge.desktop': (5, false),\n          'google-chrome.desktop': (5, false),\n          'org.gnome.gThumb.desktop': (2, false),\n          'org.gnome.eog.desktop': (3, false),\n          'org.gnome.Photos.desktop': (3, false),\n          'shotwell.desktop': (3, false),\n          'com.spotify.Client.desktop': (4, false),\n          'code.desktop': (5, false),\n          'code-insiders.desktop': (5, false),\n          'org.gnome.Terminal.desktop': (5, false),\n          'com.gexperts.Tilix.desktop': (5, false),\n          'org.gnome.TextEditor.desktop': (5, false)\n        }\n      </default>\n      <description>Application keyboard shortcuts for forward-back gesture</description>\n    </key>\n  </schema>\n</schemalist>"
  },
  {
    "path": "extension/src/altTab.ts",
    "content": "import Clutter from '@gi-types/clutter';\nimport GLib from '@gi-types/glib2';\nimport Shell from '@gi-types/shell';\nimport St from '@gi-types/st';\nimport { imports } from 'gnome-shell';\nimport { AltTabConstants, ExtSettings } from '../constants';\nimport { TouchpadSwipeGesture } from './swipeTracker';\n\nconst Main = imports.ui.main;\nconst { WindowSwitcherPopup } = imports.ui.altTab;\n\nlet dummyWinCount = AltTabConstants.DUMMY_WIN_COUNT;\n\nfunction getIndexForProgress(progress: number, nelement: number): number {\n\tlet index = Math.floor(progress * (nelement + 2 * dummyWinCount));\n\tindex = index - dummyWinCount;\n\treturn Math.clamp(index, 0, nelement - 1);\n}\n\n// index -> index + AltTabConstants.DUMMY_WIN_COUNT\nfunction getAvgProgressForIndex(index: number, nelement: number): number {\n\tindex = index + dummyWinCount;\n\tconst progress = (index + 0.5) / (nelement + 2 * dummyWinCount);\n\treturn progress;\n}\n\n// declare enum\nenum AltTabExtState {\n\tDISABLED = 0,\n\tDEFAULT = 1,\n\tALTTABDELAY = 2,\n\tALTTAB = 3,\n}\n\nexport class AltTabGestureExtension implements ISubExtension {\n\tprivate _connectHandlers: number[];\n\tprivate _touchpadSwipeTracker: typeof TouchpadSwipeGesture.prototype;\n\tprivate _adjustment: St.Adjustment;\n\tprivate _switcher?: typeof WindowSwitcherPopup.prototype;\n\tprivate _extState = AltTabExtState.DISABLED;\n\tprivate _progress = 0;\n\tprivate _altTabTimeoutId = 0;\n\n\tconstructor() {\n\t\tthis._connectHandlers = [];\n\n\t\tthis._touchpadSwipeTracker = new TouchpadSwipeGesture(\n\t\t\t(ExtSettings.DEFAULT_SESSION_WORKSPACE_GESTURE ? [4] : [3]),\n\t\t\tShell.ActionMode.ALL,\n\t\t\tClutter.Orientation.HORIZONTAL,\n\t\t\tfalse,\n\t\t\tthis._checkAllowedGesture.bind(this),\n\t\t);\n\n\t\tthis._adjustment = new St.Adjustment({\n\t\t\tvalue: 0,\n\t\t\tlower: 0,\n\t\t\tupper: 1,\n\t\t});\n\t}\n\n\t_checkAllowedGesture(): boolean {\n\t\treturn (\n\t\t\tthis._extState <= AltTabExtState.DEFAULT && \n\t\t\tMain.actionMode === Shell.ActionMode.NORMAL &&\n\t\t\t!(ExtSettings.APP_GESTURES && this._touchpadSwipeTracker.isItHoldAndSwipeGesture())\n\t\t);\n\t}\n\n\tapply(): void {\n\t\tthis._adjustment.connect('notify::value', this._onUpdateAdjustmentValue.bind(this));\n\n\t\tthis._connectHandlers.push(this._touchpadSwipeTracker.connect('begin', this._gestureBegin.bind(this)));\n\t\tthis._connectHandlers.push(this._touchpadSwipeTracker.connect('update', this._gestureUpdate.bind(this)));\n\t\tthis._connectHandlers.push(this._touchpadSwipeTracker.connect('end', this._gestureEnd.bind(this)));\n\t\tthis._extState = AltTabExtState.DEFAULT;\n\t}\n\n\tdestroy(): void {\n\t\tthis._extState = AltTabExtState.DISABLED;\n\t\tthis._connectHandlers.forEach(handle => this._touchpadSwipeTracker.disconnect(handle));\n\n\t\tthis._touchpadSwipeTracker.destroy();\n\t\tthis._connectHandlers = [];\n\t\tthis._adjustment.run_dispose();\n\n\t\tif (this._switcher) {\n\t\t\tthis._switcher.destroy();\n\t\t\tthis._switcher = undefined;\n\t\t}\n\t}\n\n\t_onUpdateAdjustmentValue(): void {\n\t\tif (this._extState === AltTabExtState.ALTTAB && this._switcher) {\n\t\t\tconst nelement = this._switcher._items.length;\n\t\t\tif (nelement > 1) {\n\t\t\t\tconst n = getIndexForProgress(this._adjustment.value, nelement);\n\t\t\t\tthis._switcher._select(n);\n\t\t\t\tconst adjustment = this._switcher._switcherList._scrollView.hscroll.adjustment;\n\t\t\t\tconst transition = adjustment.get_transition('value');\n\t\t\t\tif (transition) {\n\t\t\t\t\ttransition.advance(AltTabConstants.POPUP_SCROLL_TIME);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t_gestureBegin(): void {\n\t\tthis._progress = 0;\n\t\tif (this._extState === AltTabExtState.DEFAULT) {\n\t\t\tthis._switcher = new WindowSwitcherPopup();\n\t\t\tthis._switcher._switcherList.add_style_class_name('gie-alttab-quick-transition');\n\t\t\tthis._switcher.connect('destroy', () => {\n\t\t\t\tthis._switcher = undefined;\n\t\t\t\tthis._reset();\n\t\t\t});\n\n\t\t\t// remove timeout entirely\n\t\t\tthis._switcher._resetNoModsTimeout = function () {\n\t\t\t\tif (this._noModsTimeoutId) {\n\t\t\t\t\tGLib.source_remove(this._noModsTimeoutId);\n\t\t\t\t\tthis._noModsTimeoutId = 0;\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst nelement = this._switcher._items.length;\n\t\t\tif (nelement > 0) {\n\t\t\t\tthis._switcher.show(false, 'switch-windows', 0);\n\t\t\t\tthis._switcher._popModal();\n\n\t\t\t\tif (this._switcher._initialDelayTimeoutId !== 0) {\n\t\t\t\t\tGLib.source_remove(this._switcher._initialDelayTimeoutId);\n\t\t\t\t\tthis._switcher._initialDelayTimeoutId = 0;\n\t\t\t\t}\n\n\t\t\t\tconst leftOver = AltTabConstants.MIN_WIN_COUNT - nelement;\n\t\t\t\tif (leftOver > 0) {\n\t\t\t\t\tdummyWinCount = Math.max(AltTabConstants.DUMMY_WIN_COUNT, Math.ceil(leftOver / 2));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdummyWinCount = AltTabConstants.DUMMY_WIN_COUNT;\n\t\t\t\t}\n\n\t\t\t\tif (nelement === 1) {\n\t\t\t\t\tthis._switcher._select(0);\n\t\t\t\t\tthis._progress = 0;\n\t\t\t\t} else {\n\t\t\t\t\tthis._progress = getAvgProgressForIndex(1, nelement);\n\t\t\t\t\tthis._switcher._select(1);\n\t\t\t\t}\n\t\t\t\tthis._adjustment.value = 0;\n\t\t\t\tthis._extState = AltTabExtState.ALTTABDELAY;\n\t\t\t\tthis._altTabTimeoutId = GLib.timeout_add(\n\t\t\t\t\tGLib.PRIORITY_DEFAULT,\n\t\t\t\t\tAltTabConstants.DELAY_DURATION,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tMain.osdWindowManager.hideAll();\n\t\t\t\t\t\tif (this._switcher)\n\t\t\t\t\t\t\tthis._switcher.opacity = 255;\n\t\t\t\t\t\tthis._adjustment.value = this._progress;\n\t\t\t\t\t\tthis._extState = AltTabExtState.ALTTAB;\n\t\t\t\t\t\tthis._altTabTimeoutId = 0;\n\t\t\t\t\t\treturn GLib.SOURCE_REMOVE;\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis._switcher.destroy();\n\t\t\t\tthis._switcher = undefined;\n\t\t\t}\n\t\t}\n\t}\n\n\t_gestureUpdate(_gesture: never, _time: never, delta: number, distance: number): void {\n\t\tif (this._extState > AltTabExtState.ALTTABDELAY) {\n\t\t\tthis._progress = Math.clamp(this._progress + delta / distance, 0, 1);\n\t\t\tthis._adjustment.value = this._progress;\n\t\t}\n\t}\n\n\t_gestureEnd(): void {\n\t\tif (this._switcher) {\n\t\t\tconst win = this._switcher._items[this._switcher._selectedIndex].window;\n\t\t\tMain.activateWindow(win);\n\t\t\tthis._switcher.destroy();\n\t\t\tthis._switcher = undefined;\n\t\t}\n\n\t\tthis._reset();\n\t}\n\n\tprivate _reset() {\n\t\tif (this._extState > AltTabExtState.DEFAULT) {\n\t\t\tthis._extState = AltTabExtState.DEFAULT;\n\t\t\tif (this._altTabTimeoutId) {\n\t\t\t\tGLib.source_remove(this._altTabTimeoutId);\n\t\t\t\tthis._altTabTimeoutId = 0;\n\t\t\t}\n\n\t\t\tthis._progress = 0;\n\t\t\tthis._adjustment.value = 0;\n\t\t}\n\t\tthis._extState = AltTabExtState.DEFAULT;\n\t}\n}"
  },
  {
    "path": "extension/src/animations/arrow.ts",
    "content": "// import GObject from '@gi-types/gobject2';\nimport Gio from '@gi-types/gio2';\nimport Clutter from '@gi-types/clutter';\nimport St from '@gi-types/st';\n\nimport { imports } from 'gnome-shell';\nimport { registerClass } from '../../common/utils/gobject';\nimport { easeActor } from '../utils/environment';\nimport { WIGET_SHOWING_DURATION } from '../../constants';\n\nconst ExtMe = imports.misc.extensionUtils.getCurrentExtension();\nconst Util = imports.misc.util;\n\ndeclare type IconList = 'arrow1-right-symbolic.svg' | 'arrow1-left-symbolic.svg';\n\nconst Circle = registerClass(\n\tclass GIE_Circle extends St.Widget {\n\t\tconstructor(style_class: string) {\n\t\t\tstyle_class = `gie-circle ${style_class}`;\n\t\t\tsuper({ style_class });\n\t\t\tthis.set_pivot_point(0.5, 0.5);\n\t\t}\n\t},\n);\n\nexport const ArrowIconAnimation = registerClass(\n\tclass GIE_ArrowIcon extends St.Widget {\n\t\tprivate _inner_circle: typeof Circle.prototype;\n\t\tprivate _outer_circle: typeof Circle.prototype;\n\t\tprivate _arrow_icon: St.Icon;\n\t\tprivate _transition?: { arrow: { from: number; end: number; }; outer_circle: { from: number; end: number; }; };\n\n\t\tconstructor() {\n\t\t\tsuper();\n\n\t\t\tthis._inner_circle = new Circle('gie-inner-circle');\n\t\t\tthis._outer_circle = new Circle('gie-outer-circle');\n\t\t\tthis._arrow_icon = new St.Icon({ style_class: 'gie-arrow-icon' });\n\n\t\t\tthis._inner_circle.set_clip_to_allocation(true);\n\t\t\tthis._inner_circle.add_child(this._arrow_icon);\n\n\t\t\tthis.add_child(this._outer_circle);\n\t\t\tthis.add_child(this._inner_circle);\n\t\t}\n\n\t\tgestureBegin(icon_name: IconList, from_left: boolean) {\n\t\t\tthis._transition = {\n\t\t\t\tarrow: {\n\t\t\t\t\tfrom: this._inner_circle.width * (from_left ? -1 : 1),\n\t\t\t\t\tend: 0,\n\t\t\t\t},\n\t\t\t\touter_circle: {\n\t\t\t\t\tfrom: 1,\n\t\t\t\t\tend: 2,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tthis._arrow_icon.translation_x = this._transition.arrow.from;\n\t\t\tthis._outer_circle.scale_x = this._transition.outer_circle.from;\n\t\t\tthis._outer_circle.scale_y = this._outer_circle.scale_x;\n\t\t\tthis._arrow_icon.opacity = 255;\n\t\t\t\n\t\t\t// animating showing widget\n\t\t\tthis.opacity = 0;\n\t\t\tthis.show();\n\t\t\teaseActor(this as St.Widget, {\n\t\t\t\topacity: 255,\n\t\t\t\tmode: Clutter.AnimationMode.EASE_OUT_QUAD,\n\t\t\t\tduration: WIGET_SHOWING_DURATION,\n\t\t\t});\n\n\t\t\tthis._arrow_icon.set_gicon(Gio.Icon.new_for_string(`${ExtMe.dir.get_uri()}/assets/${icon_name}`));\n\t\t}\n\n\t\tgestureUpdate(progress: number) {\n\t\t\tif (this._transition === undefined) return;\n\n\t\t\tthis._arrow_icon.translation_x = Util.lerp(this._transition.arrow.from, this._transition.arrow.end, progress);\n\t\t\tthis._outer_circle.scale_x = Util.lerp(this._transition.outer_circle.from, this._transition.outer_circle.end, progress);\n\t\t\tthis._outer_circle.scale_y = this._outer_circle.scale_x;\n\t\t}\n\n\t\tgestureEnd(duration: number, progress: number, callback: () => void) {\n\t\t\tif (this._transition === undefined) return;\n\n\t\t\teaseActor(this as St.Widget, {\n\t\t\t\topacity: 0,\n\t\t\t\tmode: Clutter.AnimationMode.EASE_OUT_QUAD,\n\t\t\t\tduration,\n\t\t\t});\n\n\t\t\tconst translation_x = Util.lerp(this._transition.arrow.from, this._transition.arrow.end, progress);\n\t\t\teaseActor(this._arrow_icon, {\n\t\t\t\ttranslation_x,\n\t\t\t\tduration,\n\t\t\t\tmode: Clutter.AnimationMode.EASE_OUT_EXPO,\n\t\t\t\tonStopped: () => {\n\t\t\t\t\tcallback();\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tthis._arrow_icon.opacity = 0;\n\t\t\t\t\tthis._arrow_icon.translation_x = 0;\n\t\t\t\t\tthis._outer_circle.scale_x = 1;\n\t\t\t\t\tthis._outer_circle.scale_y = 1;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst scale = Util.lerp(this._transition.outer_circle.from, this._transition.outer_circle.end, progress);\n\t\t\teaseActor(this._outer_circle, {\n\t\t\t\tscale_x: scale,\n\t\t\t\tscale_y: scale,\n\t\t\t\tduration,\n\t\t\t\tmode: Clutter.AnimationMode.EASE_OUT_EXPO,\n\t\t\t});\n\t\t}\n\t},\n);"
  },
  {
    "path": "extension/src/forwardBack.ts",
    "content": "import Clutter from '@gi-types/clutter';\nimport Shell from '@gi-types/shell';\nimport Meta from '@gi-types/meta';\n\nimport { imports, global } from 'gnome-shell';\n\nimport { ExtSettings } from '../constants';\nimport { ArrowIconAnimation } from './animations/arrow';\nimport { createSwipeTracker } from './swipeTracker';\nimport { getVirtualKeyboard, IVirtualKeyboard } from './utils/keyboard';\nimport { ForwardBackKeyBinds } from '../common/settings';\n\nconst Main = imports.ui.main;\ndeclare type SwipeTrackerT = imports.ui.swipeTracker.SwipeTracker;\n\n// declare enum\nenum AnimationState {\n\tWAITING = 0, // waiting to cross threshold\n\tDEFAULT = WAITING,\n\tLEFT = -1,\n\tRIGHT = 1,\n}\n\n// declare enum\nenum SwipeGestureDirection {\n\tLeftToRight = 1,\n\tRightToLeft = 2,\n}\n\nconst SnapPointThreshold = 0.1;\n\ntype AppForwardBackKeyBinds = Record<string, [ForwardBackKeyBinds, boolean]>;\n\nexport class ForwardBackGestureExtension implements ISubExtension {\n\tprivate _connectHandlers: number[];\n\tprivate _swipeTracker: SwipeTrackerT;\n\tprivate _keyboard: IVirtualKeyboard;\n\tprivate _arrowIconAnimation: typeof ArrowIconAnimation.prototype;\n\tprivate _animationState = AnimationState.WAITING;\n\tprivate _appForwardBackKeyBinds: AppForwardBackKeyBinds;\n\tprivate _windowTracker: Shell.WindowTracker;\n\tprivate _focusWindow?: Meta.Window | null;\n\n\tconstructor(appForwardBackKeyBinds: AppForwardBackKeyBinds) {\n\t\tthis._appForwardBackKeyBinds = appForwardBackKeyBinds;\n\t\tthis._windowTracker = Shell.WindowTracker.get_default();\n\t\tthis._keyboard = getVirtualKeyboard();\n\n\t\tthis._swipeTracker = createSwipeTracker(\n\t\t\tglobal.stage,\n\t\t\tExtSettings.DEFAULT_SESSION_WORKSPACE_GESTURE ? [4] : [3],\n\t\t\tShell.ActionMode.NORMAL,\n\t\t\tClutter.Orientation.HORIZONTAL,\n\t\t\tfalse,\n\t\t\t1,\n\t\t\t{ allowTouch: false },\n\t\t);\n\n\t\tthis._connectHandlers = [\n\t\t\tthis._swipeTracker.connect('begin', this._gestureBegin.bind(this)),\n\t\t\tthis._swipeTracker.connect('update', this._gestureUpdate.bind(this)),\n\t\t\tthis._swipeTracker.connect('end', this._gestureEnd.bind(this)),\n\t\t];\n\n\t\tthis._arrowIconAnimation = new ArrowIconAnimation();\n\t\tthis._arrowIconAnimation.hide();\n\t\tMain.layoutManager.uiGroup.add_child(this._arrowIconAnimation);\n\t}\n\n\tdestroy(): void {\n\t\tthis._connectHandlers.forEach(handle => this._swipeTracker.disconnect(handle));\n\t\tthis._connectHandlers = [];\n\t\tthis._swipeTracker.destroy();\n\t\tthis._arrowIconAnimation.destroy();\n\t}\n\n\n\t_gestureBegin(tracker: SwipeTrackerT): void {\n\t\tthis._focusWindow = global.display.get_focus_window() as Meta.Window | null;\n\t\tif (!this._focusWindow)\n\t\t\treturn;\n\t\tthis._animationState = AnimationState.WAITING;\n\t\ttracker.confirmSwipe(\n\t\t\tglobal.screen_width,\n\t\t\t[AnimationState.LEFT, AnimationState.DEFAULT, AnimationState.RIGHT],\n\t\t\tAnimationState.DEFAULT,\n\t\t\tAnimationState.DEFAULT,\n\t\t);\n\t}\n\n\t_gestureUpdate(_tracker: SwipeTrackerT, progress: number): void {\n\t\tswitch (this._animationState) {\n\t\t\tcase AnimationState.WAITING:\n\t\t\t\tif (Math.abs(progress - AnimationState.DEFAULT) < SnapPointThreshold) return;\n\t\t\t\tthis._showArrow(progress);\n\t\t\t\tbreak;\n\t\t\tcase AnimationState.RIGHT:\n\t\t\t\tprogress = (progress - SnapPointThreshold) / (AnimationState.RIGHT - SnapPointThreshold);\n\t\t\t\tthis._arrowIconAnimation.gestureUpdate(Math.clamp(progress, 0, 1));\n\t\t\t\tbreak;\n\t\t\tcase AnimationState.LEFT:\n\t\t\t\tprogress = (progress + SnapPointThreshold) / (AnimationState.LEFT + SnapPointThreshold);\n\t\t\t\tthis._arrowIconAnimation.gestureUpdate(Math.clamp(progress, 0, 1));\n\t\t}\n\t}\n\n\t_gestureEnd(_tracker: SwipeTrackerT, duration: number, progress: AnimationState): void {\n\t\tif (this._animationState === AnimationState.WAITING) {\n\t\t\tif (progress === AnimationState.DEFAULT) return;\n\t\t\tthis._showArrow(progress);\n\t\t}\n\n\t\tswitch (this._animationState) {\n\t\t\tcase AnimationState.RIGHT:\n\t\t\t\tprogress = (progress - SnapPointThreshold) / (AnimationState.RIGHT - SnapPointThreshold);\n\t\t\t\tprogress = Math.clamp(progress, 0, 1);\n\t\t\t\tthis._arrowIconAnimation.gestureEnd(duration, progress, () => {\n\t\t\t\t\tif (progress !== 0) {\n\t\t\t\t\t\t// bring left page to right\n\t\t\t\t\t\tconst keys = this._getClutterKeyForFocusedApp(SwipeGestureDirection.LeftToRight);\n\t\t\t\t\t\tthis._keyboard.sendKeys(keys);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase AnimationState.LEFT:\n\t\t\t\tprogress = (progress + SnapPointThreshold) / (AnimationState.LEFT + SnapPointThreshold);\n\t\t\t\tprogress = Math.clamp(progress, 0, 1);\n\t\t\t\tthis._arrowIconAnimation.gestureEnd(duration, progress, () => {\n\t\t\t\t\tif (progress !== 0) {\n\t\t\t\t\t\t// bring right page to left\n\t\t\t\t\t\tconst keys = this._getClutterKeyForFocusedApp(SwipeGestureDirection.RightToLeft);\n\t\t\t\t\t\tthis._keyboard.sendKeys(keys);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t}\n\n\t_showArrow(progress: number) {\n\t\tconst [height, width] = [this._arrowIconAnimation.height, this._arrowIconAnimation.width];\n\t\tconst workArea = this._getWorkArea();\n\t\tif (progress > AnimationState.DEFAULT) {\n\t\t\tthis._animationState = AnimationState.RIGHT;\n\t\t\tthis._arrowIconAnimation.gestureBegin('arrow1-left-symbolic.svg', true);\n\t\t\tthis._arrowIconAnimation.set_position(workArea.x + width, workArea.y + Math.round((workArea.height - height) / 2));\n\t\t}\n\t\telse {\n\t\t\tthis._animationState = AnimationState.LEFT;\n\t\t\tthis._arrowIconAnimation.gestureBegin('arrow1-right-symbolic.svg', false);\n\t\t\tthis._arrowIconAnimation.set_position(workArea.x + workArea.width - 2 * width, workArea.y + Math.round((workArea.height - height) / 2));\n\t\t}\n\t}\n\n\t_getWorkArea() {\n\t\tconst window = this._focusWindow;\n\t\tif (window)\n\t\t\treturn window.get_frame_rect();\n\t\treturn Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.currentMonitor.index);\n\t}\n\n\t/**\n\t * @param gestureDirection direction of swipe gesture left to right or right to left\n\t */\n\t_getClutterKeyForFocusedApp(gestureDirection: SwipeGestureDirection) {\n\t\tconst focusApp = this._windowTracker.focus_app as Shell.App | null;\n\t\tconst keyBind = focusApp ? this._appForwardBackKeyBinds[focusApp.get_id()] : null;\n\n\t\tif (keyBind) {\n\t\t\t// if keyBind[1] is true => reverse order or keys\n\t\t\tconst returnBackKey = (gestureDirection === SwipeGestureDirection.LeftToRight) !== keyBind[1];\n\t\t\tswitch (keyBind[0]) {\n\t\t\t\tcase ForwardBackKeyBinds['Forward/Backward']:\n\t\t\t\t\treturn [returnBackKey ? Clutter.KEY_Back : Clutter.KEY_Forward];\n\t\t\t\tcase ForwardBackKeyBinds['Page Up/Down']:\n\t\t\t\t\treturn [returnBackKey ? Clutter.KEY_Page_Up : Clutter.KEY_Page_Down];\n\t\t\t\tcase ForwardBackKeyBinds['Right/Left']:\n\t\t\t\t\treturn [returnBackKey ? Clutter.KEY_Left : Clutter.KEY_Right];\n\t\t\t\tcase ForwardBackKeyBinds['Audio Next/Prev']:\n\t\t\t\t\treturn [returnBackKey ? Clutter.KEY_AudioPrev : Clutter.KEY_AudioNext];\n\t\t\t\tcase ForwardBackKeyBinds['Tab Next/Prev']:\n\t\t\t\t\treturn [Clutter.KEY_Control_L, returnBackKey ? Clutter.KEY_Page_Up: Clutter.KEY_Page_Down];\n\t\t\t}\n\t\t}\n\t\t// default key bind\n\t\treturn [gestureDirection === SwipeGestureDirection.LeftToRight ? Clutter.KEY_Back : Clutter.KEY_Forward];\n\t}\n}"
  },
  {
    "path": "extension/src/gestures.ts",
    "content": "import Clutter from '@gi-types/clutter';\nimport GObject from '@gi-types/gobject2';\nimport Shell from '@gi-types/shell';\nimport { CustomEventType, global, imports, __shell_private_types } from 'gnome-shell';\nimport { ExtSettings, OverviewControlsState } from '../constants';\nimport { createSwipeTracker, TouchpadSwipeGesture } from './swipeTracker';\n\nconst Main = imports.ui.main;\n\ndeclare interface ShallowSwipeTrackerT {\n\torientation: Clutter.Orientation,\n\tconfirmSwipe(distance: number, snapPoints: number[], currentProgress: number, cancelProgress: number): void;\n}\n\ndeclare type SwipeTrackerT = imports.ui.swipeTracker.SwipeTracker;\ndeclare type TouchPadSwipeTrackerT = Required<imports.ui.swipeTracker.SwipeTracker>['_touchpadGesture'];\ndeclare interface ShellSwipeTracker {\n\tswipeTracker: SwipeTrackerT,\n\tnfingers: number[],\n\tdisableOldGesture: boolean,\n\tmodes: Shell.ActionMode,\n\tfollowNaturalScroll: boolean,\n\tgestureSpeed?: number,\n\tcheckAllowedGesture?: (event: CustomEventType) => boolean\n}\n\nfunction connectTouchpadEventToTracker(tracker: TouchPadSwipeTrackerT) {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t(global.stage as any).connectObject(\n\t\t'captured-event::touchpad',\n\t\ttracker._handleEvent.bind(tracker),\n\t\ttracker,\n\t);\n}\n\nfunction disconnectTouchpadEventFromTracker(tracker: TouchPadSwipeTrackerT) {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t(global.stage as any).disconnectObject(tracker);\n}\n\nabstract class SwipeTrackerEndPointsModifer {\n\tprotected _firstVal = 0;\n\tprotected _lastVal = 0;\n\tprotected abstract _swipeTracker: SwipeTrackerT;\n\n\tpublic apply(): void {\n\t\tthis._swipeTracker.connect('begin', this._gestureBegin.bind(this));\n\t\tthis._swipeTracker.connect('update', this._gestureUpdate.bind(this));\n\t\tthis._swipeTracker.connect('end', this._gestureEnd.bind(this));\n\t}\n\n\tprotected abstract _gestureBegin(tracker: SwipeTrackerT, monitor: never): void;\n\tprotected abstract _gestureUpdate(tracker: SwipeTrackerT, progress: number): void;\n\tprotected abstract _gestureEnd(tracker: SwipeTrackerT, duration: number, progress: number): void;\n\n\tprotected _modifySnapPoints(tracker: SwipeTrackerT, callback: (tracker: ShallowSwipeTrackerT) => void) {\n\t\tconst _tracker: ShallowSwipeTrackerT = {\n\t\t\torientation: Clutter.Orientation.HORIZONTAL,\n\t\t\tconfirmSwipe: (distance, snapPoints, currentProgress, cancelProgress) => {\n\t\t\t\tthis._firstVal = snapPoints[0];\n\t\t\t\tthis._lastVal = snapPoints[snapPoints.length - 1];\n\n\t\t\t\tsnapPoints.unshift(this._firstVal - 1);\n\t\t\t\tsnapPoints.push(this._lastVal + 1);\n\n\t\t\t\ttracker.orientation = _tracker.orientation;\n\t\t\t\ttracker.confirmSwipe(distance, snapPoints, currentProgress, cancelProgress);\n\t\t\t},\n\t\t};\n\t\tcallback(_tracker);\n\t}\n\n\tpublic destroy(): void {\n\t\tthis._swipeTracker.enabled = false;\n\t}\n}\n\nclass WorkspaceAnimationModifier extends SwipeTrackerEndPointsModifer {\n\tprivate _workspaceAnimation: imports.ui.workspaceAnimation.WorkspaceAnimationController;\n\tprotected _swipeTracker: SwipeTrackerT;\n\n\tconstructor(wm: typeof imports.ui.main.wm) {\n\t\tsuper();\n\t\tthis._workspaceAnimation = wm._workspaceAnimation;\n\t\tthis._swipeTracker = createSwipeTracker(\n\t\t\tglobal.stage,\n\t\t\t(ExtSettings.DEFAULT_SESSION_WORKSPACE_GESTURE ? [3] : [4]),\n\t\t\tShell.ActionMode.NORMAL,\n\t\t\tClutter.Orientation.HORIZONTAL,\n\t\t\tExtSettings.FOLLOW_NATURAL_SCROLL,\n\t\t\t1,\n\t\t\t{ allowTouch: false },\n\t\t);\n\t}\n\n\tapply(): void {\n\t\tif (this._workspaceAnimation._swipeTracker._touchpadGesture) {\n\t\t\tdisconnectTouchpadEventFromTracker(this._workspaceAnimation._swipeTracker._touchpadGesture);\n\t\t}\n\t\tsuper.apply();\n\t}\n\n\tprotected _gestureBegin(tracker: SwipeTrackerT, monitor: number): void {\n\t\tsuper._modifySnapPoints(tracker, (shallowTracker) => {\n\t\t\tthis._workspaceAnimation._switchWorkspaceBegin(shallowTracker, monitor);\n\t\t\ttracker.orientation = shallowTracker.orientation;\n\t\t});\n\t}\n\n\tprotected _gestureUpdate(tracker: SwipeTrackerT, progress: number): void {\n\t\tif (progress < this._firstVal) {\n\t\t\tprogress = this._firstVal - (this._firstVal - progress) * 0.05;\n\t\t}\n\t\telse if (progress > this._lastVal) {\n\t\t\tprogress = this._lastVal + (progress - this._lastVal) * 0.05;\n\t\t}\n\t\tthis._workspaceAnimation._switchWorkspaceUpdate(tracker, progress);\n\t}\n\n\tprotected _gestureEnd(tracker: SwipeTrackerT, duration: number, progress: number): void {\n\t\tprogress = Math.clamp(progress, this._firstVal, this._lastVal);\n\t\tthis._workspaceAnimation._switchWorkspaceEnd(tracker, duration, progress);\n\t}\n\n\tdestroy(): void {\n\t\tthis._swipeTracker.destroy();\n\t\tconst swipeTracker = this._workspaceAnimation._swipeTracker;\n\t\tif (swipeTracker._touchpadGesture) {\n\t\t\tconnectTouchpadEventToTracker(swipeTracker._touchpadGesture);\n\t\t}\n\n\t\tsuper.destroy();\n\t}\n}\n\nexport class GestureExtension implements ISubExtension {\n\tprivate _stateAdjustment: imports.ui.overviewControls.OverviewAdjustment;\n\tprivate _swipeTrackers: ShellSwipeTracker[];\n\tprivate _workspaceAnimationModifier: WorkspaceAnimationModifier;\n\n\tconstructor() {\n\t\tthis._stateAdjustment = Main.overview._overview._controls._stateAdjustment;\n\t\tthis._swipeTrackers = [\n\t\t\t{\n\t\t\t\tswipeTracker: Main.overview._overview._controls._workspacesDisplay._swipeTracker,\n\t\t\t\tnfingers: [3, 4],\n\t\t\t\tdisableOldGesture: true,\n\t\t\t\tfollowNaturalScroll: ExtSettings.FOLLOW_NATURAL_SCROLL,\n\t\t\t\tmodes: Shell.ActionMode.OVERVIEW,\n\t\t\t\tgestureSpeed: 1,\n\t\t\t\tcheckAllowedGesture: (event: CustomEventType) => {\n\t\t\t\t\tif (Main.overview._overview._controls._searchController.searchActive) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (event.get_touchpad_gesture_finger_count() === 4) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn this._stateAdjustment.value === OverviewControlsState.WINDOW_PICKER;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tswipeTracker: Main.overview._overview._controls._appDisplay._swipeTracker,\n\t\t\t\tnfingers: [3],\n\t\t\t\tdisableOldGesture: true,\n\t\t\t\tfollowNaturalScroll: ExtSettings.FOLLOW_NATURAL_SCROLL,\n\t\t\t\tmodes: Shell.ActionMode.OVERVIEW,\n\t\t\t\tcheckAllowedGesture: () => {\n\t\t\t\t\tif (Main.overview._overview._controls._searchController.searchActive) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn this._stateAdjustment.value === OverviewControlsState.APP_GRID;\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\n\t\tthis._workspaceAnimationModifier = new WorkspaceAnimationModifier(Main.wm);\n\t}\n\n\tapply(): void {\n\t\tthis._workspaceAnimationModifier.apply();\n\n\t\tthis._swipeTrackers.forEach(entry => {\n\t\t\tconst {\n\t\t\t\tswipeTracker,\n\t\t\t\tnfingers,\n\t\t\t\tdisableOldGesture,\n\t\t\t\tfollowNaturalScroll,\n\t\t\t\tmodes,\n\t\t\t\tcheckAllowedGesture,\n\t\t\t} = entry;\n\t\t\tconst gestureSpeed = entry.gestureSpeed ?? 1;\n\t\t\tconst touchpadGesture = new TouchpadSwipeGesture(\n\t\t\t\tnfingers,\n\t\t\t\tmodes,\n\t\t\t\tswipeTracker.orientation,\n\t\t\t\tfollowNaturalScroll,\n\t\t\t\tcheckAllowedGesture,\n\t\t\t\tgestureSpeed,\n\t\t\t);\n\n\t\t\tthis._attachGestureToTracker(swipeTracker, touchpadGesture, disableOldGesture);\n\t\t});\n\t}\n\n\tdestroy(): void {\n\t\tthis._swipeTrackers.reverse().forEach(entry => {\n\t\t\tconst { swipeTracker, disableOldGesture } = entry;\n\t\t\tswipeTracker._touchpadGesture?.destroy();\n\t\t\tswipeTracker._touchpadGesture = swipeTracker.__oldTouchpadGesture;\n\t\t\tswipeTracker.__oldTouchpadGesture = undefined;\n\t\t\tif (swipeTracker._touchpadGesture && disableOldGesture) {\n\t\t\t\tconnectTouchpadEventToTracker(swipeTracker._touchpadGesture);\n\t\t\t}\n\t\t});\n\n\t\tthis._workspaceAnimationModifier.destroy();\n\t}\n\n\t_attachGestureToTracker(\n\t\tswipeTracker: SwipeTrackerT,\n\t\ttouchpadSwipeGesture: typeof TouchpadSwipeGesture.prototype | __shell_private_types.TouchpadGesture,\n\t\tdisablePrevious: boolean,\n\t): void {\n\t\tif (swipeTracker._touchpadGesture && disablePrevious) {\n\t\t\tdisconnectTouchpadEventFromTracker(swipeTracker._touchpadGesture);\n\t\t\tswipeTracker.__oldTouchpadGesture = swipeTracker._touchpadGesture;\n\t\t}\n\n\t\tswipeTracker._touchpadGesture = touchpadSwipeGesture as __shell_private_types.TouchpadGesture;\n\t\tswipeTracker._touchpadGesture.connect('begin', swipeTracker._beginGesture.bind(swipeTracker));\n\t\tswipeTracker._touchpadGesture.connect('update', swipeTracker._updateGesture.bind(swipeTracker));\n\t\tswipeTracker._touchpadGesture.connect('end', swipeTracker._endTouchpadGesture.bind(swipeTracker));\n\t\tswipeTracker.bind_property('enabled', swipeTracker._touchpadGesture, 'enabled', 0);\n\t\tswipeTracker.bind_property(\n\t\t\t'orientation',\n\t\t\tswipeTracker._touchpadGesture,\n\t\t\t'orientation',\n\t\t\tGObject.BindingFlags.SYNC_CREATE,\n\t\t);\n\t}\n}"
  },
  {
    "path": "extension/src/overviewRoundTrip.ts",
    "content": "import Clutter from '@gi-types/clutter';\nimport Shell from '@gi-types/shell';\nimport { global, imports } from 'gnome-shell';\nimport { OverviewNavigationState } from '../common/settings';\nimport { ExtSettings, OverviewControlsState } from '../constants';\nimport { createSwipeTracker } from './swipeTracker';\n\nconst Main = imports.ui.main;\nconst { SwipeTracker } = imports.ui.swipeTracker;\n\n// declare enum\nenum ExtensionState {\n\t// DISABLED = 0,\n\tDEFAULT = 1,\n\tCUSTOM = 2,\n}\n\nexport class OverviewRoundTripGestureExtension implements ISubExtension {\n\tprivate _overviewControls: imports.ui.overviewControls.OverviewControlsManager;\n\tprivate _stateAdjustment: imports.ui.overviewControls.OverviewAdjustment;\n\tprivate _oldGetStateTransitionParams: typeof imports.ui.overviewControls.OverviewAdjustment.prototype.getStateTransitionParams;\n\tprivate _swipeTracker?: typeof SwipeTracker.prototype;\n\tprivate _progress = 0;\n\tprivate _extensionState = ExtensionState.DEFAULT;\n\tprivate _connectors: number[];\n\tprivate _shownEventId = 0;\n\tprivate _hiddenEventId = 0;\n\tprivate _navigationStates: OverviewNavigationState;\n\n\tconstructor(navigationStates: OverviewNavigationState) {\n\t\tthis._navigationStates = navigationStates;\n\t\tthis._overviewControls = Main.overview._overview._controls;\n\t\tthis._stateAdjustment = this._overviewControls._stateAdjustment;\n\t\tthis._oldGetStateTransitionParams = this._overviewControls._stateAdjustment.getStateTransitionParams;\n\t\tthis._progress = 0;\n\t\tthis._connectors = [];\n\t}\n\n\t_getStateTransitionParams(): typeof imports.ui.overviewControls.OverviewAdjustment.prototype.getStateTransitionParams.prototype {\n\t\tif (this._extensionState <= ExtensionState.DEFAULT) {\n\t\t\treturn this._oldGetStateTransitionParams.call(this._stateAdjustment);\n\t\t}\n\t\telse if (this._extensionState === ExtensionState.CUSTOM) {\n\t\t\tconst currentState = this._stateAdjustment.value;\n\t\t\tconst initialState = OverviewControlsState.HIDDEN;\n\t\t\tconst finalState = OverviewControlsState.APP_GRID;\n\n\t\t\tconst length = Math.abs(finalState - initialState);\n\t\t\tconst progress = Math.abs((currentState - initialState) / length);\n\n\t\t\treturn {\n\t\t\t\ttransitioning: true,\n\t\t\t\tcurrentState,\n\t\t\t\tinitialState,\n\t\t\t\tfinalState,\n\t\t\t\tprogress,\n\t\t\t};\n\t\t}\n\t}\n\n\tapply(): void {\n\t\tMain.overview._swipeTracker.enabled = false;\n\n\t\tthis._swipeTracker = createSwipeTracker(\n\t\t\tglobal.stage,\n\t\t\t(ExtSettings.DEFAULT_OVERVIEW_GESTURE ? [3] : [4]),\n\t\t\tShell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,\n\t\t\tClutter.Orientation.VERTICAL,\n\t\t\tExtSettings.DEFAULT_OVERVIEW_GESTURE_DIRECTION,\n\t\t);\n\n\t\tthis._swipeTracker.orientation = Clutter.Orientation.VERTICAL;\n\t\tthis._connectors.push(this._swipeTracker.connect('begin', this._gestureBegin.bind(this)));\n\t\tthis._connectors.push(this._swipeTracker.connect('update', this._gestureUpdate.bind(this)));\n\t\tthis._connectors.push(this._swipeTracker.connect('end', this._gestureEnd.bind(this)));\n\n\t\t// override 'getStateTransitionParams' function\n\t\tthis._stateAdjustment.getStateTransitionParams = this._getStateTransitionParams.bind(this);\n\n\t\tthis._extensionState = ExtensionState.DEFAULT;\n\t\tthis._progress = 0;\n\n\t\t// reset extension state to default, when overview is shown and hidden (not showing/hidding event)\n\t\tthis._shownEventId = Main.overview.connect('shown', () => this._extensionState = ExtensionState.DEFAULT);\n\t\tthis._hiddenEventId = Main.overview.connect('hidden', () => this._extensionState = ExtensionState.DEFAULT);\n\n\t}\n\n\tdestroy(): void {\n\t\tif (this._swipeTracker) {\n\t\t\tthis._connectors.forEach(connector => this._swipeTracker?.disconnect(connector));\n\t\t\tthis._swipeTracker.destroy();\n\t\t\tthis._swipeTracker = undefined;\n\t\t}\n\t\tthis._connectors = [];\n\n\t\tMain.overview._swipeTracker.enabled = true;\n\t\tthis._stateAdjustment.getStateTransitionParams = this._oldGetStateTransitionParams.bind(this._stateAdjustment);\n\t\tMain.overview.disconnect(this._shownEventId);\n\t\tMain.overview.disconnect(this._hiddenEventId);\n\t}\n\n\t_gestureBegin(tracker: typeof SwipeTracker.prototype): void {\n\t\tconst _tracker = {\n\t\t\tconfirmSwipe: (distance: number, _snapPoints: number[], currentProgress: number, cancelProgress: number) => {\n\t\t\t\ttracker.confirmSwipe(\n\t\t\t\t\tdistance,\n\t\t\t\t\tthis._getGestureSnapPoints(),\n\t\t\t\t\tcurrentProgress,\n\t\t\t\t\tcancelProgress,\n\t\t\t\t);\n\t\t\t},\n\t\t};\n\n\t\tMain.overview._gestureBegin(_tracker);\n\t\tthis._progress = this._stateAdjustment.value;\n\t\tthis._extensionState = ExtensionState.DEFAULT;\n\t}\n\n\t_gestureUpdate(tracker: typeof SwipeTracker.prototype, progress: number): void {\n\t\tif (progress < OverviewControlsState.HIDDEN ||\n\t\t\tprogress > OverviewControlsState.APP_GRID) {\n\t\t\tthis._extensionState = ExtensionState.CUSTOM;\n\t\t}\n\t\telse {\n\t\t\tthis._extensionState = ExtensionState.DEFAULT;\n\t\t}\n\n\t\tthis._progress = progress;\n\t\t// log(`update: progress=${progress}, overview progress=${this._getOverviewProgressValue(progress)}`);\n\t\tMain.overview._gestureUpdate(tracker, this._getOverviewProgressValue(progress));\n\t}\n\n\t_gestureEnd(tracker: typeof SwipeTracker.prototype, duration: number, endProgress: number): void {\n\t\tif (this._progress < OverviewControlsState.HIDDEN) {\n\t\t\tthis._extensionState = ExtensionState.CUSTOM;\n\t\t\tendProgress = endProgress >= OverviewControlsState.HIDDEN ?\n\t\t\t\tOverviewControlsState.HIDDEN :\n\t\t\t\tOverviewControlsState.APP_GRID;\n\t\t}\n\t\telse if (this._progress > OverviewControlsState.APP_GRID) {\n\t\t\tthis._extensionState = ExtensionState.CUSTOM;\n\t\t\tendProgress = endProgress <= OverviewControlsState.APP_GRID ?\n\t\t\t\tOverviewControlsState.APP_GRID :\n\t\t\t\tOverviewControlsState.HIDDEN;\n\t\t}\n\t\telse {\n\t\t\tthis._extensionState = ExtensionState.DEFAULT;\n\t\t\tendProgress = Math.clamp(\n\t\t\t\tendProgress,\n\t\t\t\tOverviewControlsState.HIDDEN,\n\t\t\t\tOverviewControlsState.APP_GRID,\n\t\t\t);\n\t\t}\n\n\t\t// log(`end: progress=${this._progress}, endProgress=${endProgress}, overview progress=${this._getOverviewProgressValue(endProgress)}`)\n\t\tMain.overview._gestureEnd(tracker, duration, endProgress);\n\t}\n\n\t_getOverviewProgressValue(progress: number): number {\n\t\tif (progress < OverviewControlsState.HIDDEN) {\n\t\t\treturn Math.min(\n\t\t\t\tOverviewControlsState.APP_GRID,\n\t\t\t\t2 * Math.abs(OverviewControlsState.HIDDEN - progress),\n\t\t\t);\n\t\t}\n\t\telse if (progress > OverviewControlsState.APP_GRID) {\n\t\t\treturn Math.min(\n\t\t\t\tOverviewControlsState.APP_GRID,\n\t\t\t\t2 * Math.abs(OverviewControlsState.HIDDEN_N - progress),\n\t\t\t);\n\t\t}\n\n\t\treturn progress;\n\t}\n\n\tprivate _getGestureSnapPoints(): number[] {\n\t\tswitch (this._navigationStates) {\n\t\t\tcase OverviewNavigationState.CYCLIC:\n\t\t\t\treturn [\n\t\t\t\t\tOverviewControlsState.APP_GRID_P,\n\t\t\t\t\tOverviewControlsState.HIDDEN,\n\t\t\t\t\tOverviewControlsState.WINDOW_PICKER,\n\t\t\t\t\tOverviewControlsState.APP_GRID,\n\t\t\t\t\tOverviewControlsState.HIDDEN_N,\n\t\t\t\t];\n\t\t\tcase OverviewNavigationState.GNOME:\n\t\t\t\treturn [\n\t\t\t\t\tOverviewControlsState.HIDDEN,\n\t\t\t\t\tOverviewControlsState.WINDOW_PICKER,\n\t\t\t\t\tOverviewControlsState.APP_GRID,\n\t\t\t\t];\n\t\t\tcase OverviewNavigationState.WINDOW_PICKER_ONLY:\n\t\t\t\treturn [\n\t\t\t\t\tOverviewControlsState.HIDDEN,\n\t\t\t\t\tOverviewControlsState.WINDOW_PICKER,\n\t\t\t\t];\n\t\t}\n\t}\n}"
  },
  {
    "path": "extension/src/pinchGestures/closeWindow.ts",
    "content": "import Clutter from '@gi-types/clutter';\nimport Meta from '@gi-types/meta';\nimport Shell from '@gi-types/shell';\nimport St from '@gi-types/st';\n\nimport { global, imports } from 'gnome-shell';\n\nimport { PinchGestureType } from '../../common/settings';\nimport { WIGET_SHOWING_DURATION } from '../../constants';\nimport { TouchpadPinchGesture } from '../trackers/pinchTracker';\nimport { easeActor } from '../utils/environment';\nimport { getVirtualKeyboard, IVirtualKeyboard } from '../utils/keyboard';\n\nconst Main = imports.ui.main;\nconst Util = imports.misc.util;\n\nconst END_OPACITY = 0;\nconst END_SCALE = 0.5;\n\nenum CloseWindowGestureState {\n\tPINCH_IN = -1,\n\tDEFAULT = 0,\n}\n\ndeclare type Type_TouchpadPinchGesture = typeof TouchpadPinchGesture.prototype;\n\nexport class CloseWindowExtension implements ISubExtension {\n\tprivate _closeType: PinchGestureType.CLOSE_DOCUMENT | PinchGestureType.CLOSE_WINDOW;\n\tprivate _keyboard: IVirtualKeyboard;\n\tprivate _pinchTracker: Type_TouchpadPinchGesture;\n\tprivate _preview: St.Widget;\n\tprivate _focusWindow?: Meta.Window | null;\n\n\tconstructor(nfingers: number[], closeType: PinchGestureType.CLOSE_DOCUMENT | PinchGestureType.CLOSE_WINDOW) {\n\t\tthis._closeType = closeType;\n\t\tthis._keyboard = getVirtualKeyboard();\n\n\t\tthis._preview = new St.Widget({\n\t\t\treactive: false,\n\t\t\tstyle_class: 'gie-close-window-preview',\n\t\t\tvisible: false,\n\t\t});\n\t\tthis._preview.set_pivot_point(0.5, 0.5);\n\t\tMain.layoutManager.uiGroup.add_child(this._preview);\n\n\t\tthis._pinchTracker = new TouchpadPinchGesture({\n\t\t\tnfingers: nfingers,\n\t\t\tallowedModes: Shell.ActionMode.NORMAL,\n\t\t\tpinchSpeed: 0.25,\n\t\t});\n\t\tthis._pinchTracker.connect('begin', this.gestureBegin.bind(this));\n\t\tthis._pinchTracker.connect('update', this.gestureUpdate.bind(this));\n\t\tthis._pinchTracker.connect('end', this.gestureEnd.bind(this));\n\t}\n\n\tdestroy(): void {\n\t\tthis._pinchTracker.destroy();\n\t\tthis._preview.destroy();\n\t}\n\n\tgestureBegin(tracker: Type_TouchpadPinchGesture) {\n\t\t// if we are currently in middle of animations, ignore this event\n\t\tif (this._focusWindow)\n\t\t\treturn;\n\t\t\n\t\tthis._focusWindow = global.display.get_focus_window() as Meta.Window | null;\n\t\tif (!this._focusWindow)\treturn;\n\n\t\ttracker.confirmPinch(0, [CloseWindowGestureState.PINCH_IN, CloseWindowGestureState.DEFAULT], CloseWindowGestureState.DEFAULT);\n\n\t\tconst frame = this._focusWindow.get_frame_rect();\n\t\tthis._preview.set_position(frame.x, frame.y);\n\t\tthis._preview.set_size(frame.width, frame.height);\n\t\t\n\t\t// animate showing widget\n\t\tthis._preview.opacity = 0;\n\t\tthis._preview.show();\n\t\teaseActor(this._preview, {\n\t\t\topacity: 255,\n\t\t\tmode: Clutter.AnimationMode.EASE_OUT_QUAD,\n\t\t\tduration: WIGET_SHOWING_DURATION,\n\t\t});\n\t}\n\n\tgestureUpdate(_tracker: unknown, progress: number): void {\n\t\tprogress = CloseWindowGestureState.DEFAULT - progress;\n\t\tconst scale = Util.lerp(1, END_SCALE, progress);\n\t\tthis._preview.set_scale(scale, scale);\n\t\tthis._preview.opacity = Util.lerp(255, END_OPACITY, progress);\n\t}\n\n\tgestureEnd(_tracker: unknown, duration: number, progress: CloseWindowGestureState) {\n\t\tswitch (progress) {\n\t\t\tcase CloseWindowGestureState.DEFAULT:\n\t\t\t\tthis._animatePreview(false, duration);\n\t\t\t\tbreak;\n\t\t\tcase CloseWindowGestureState.PINCH_IN:\n\t\t\t\tthis._animatePreview(true, duration, this._invokeGestureCompleteAction.bind(this));\n\t\t}\n\t}\n\n\tprivate _invokeGestureCompleteAction() {\n\t\tswitch (this._closeType) {\n\t\t\tcase PinchGestureType.CLOSE_WINDOW:\n\t\t\t\tthis._focusWindow?.delete?.(global.get_current_time());\n\t\t\t\tbreak;\n\t\t\tcase PinchGestureType.CLOSE_DOCUMENT:\n\t\t\t\tthis._keyboard.sendKeys([Clutter.KEY_Control_L, Clutter.KEY_w]);\n\t\t}\n\t}\n\n\tprivate _animatePreview(gestureCompleted: boolean, duration: number, callback?: () => void) {\n\t\teaseActor(this._preview,  {\n\t\t\topacity: gestureCompleted ? END_OPACITY : 255,\n\t\t\tscaleX: gestureCompleted ? END_SCALE : 1,\n\t\t\tscaleY: gestureCompleted ? END_SCALE : 1,\n\t\t\tduration,\n\t\t\tmode: Clutter.AnimationMode.EASE_OUT_QUAD,\n\t\t\tonStopped: () => {\n\t\t\t\tif (callback)\n\t\t\t\t\tcallback();\n\t\t\t\tthis._gestureAnimationDone();\n\t\t\t},\n\t\t});\n\t}\n\n\tprivate _gestureAnimationDone() {\n\t\tthis._preview.hide();\n\t\tthis._preview.opacity = 255;\n\t\tthis._preview.set_scale(1, 1);\n\n\t\tthis._focusWindow = undefined;\n\t}\n}"
  },
  {
    "path": "extension/src/pinchGestures/showDesktop.ts",
    "content": "import Clutter from '@gi-types/clutter';\nimport GObject from '@gi-types/gobject2';\nimport Meta from '@gi-types/meta';\nimport Shell from '@gi-types/shell';\nimport { global, imports, __shell_private_types } from 'gnome-shell';\nimport { TouchpadPinchGesture } from '../trackers/pinchTracker';\nimport { easeActor } from '../utils/environment';\n\nconst Main = imports.ui.main;\nconst Layout = imports.ui.layout;\nconst { lerp } = imports.misc.util;\n\n// declare enum \nenum WorkspaceManagerState {\n\tDEFAULT = 0,\n\tSHOW_DESKTOP = 1,\n}\n\n// declare enum\nenum ExtensionState {\n\tDEFAULT,\n\tANIMATING,\n}\n\ndeclare type Type_TouchpadPinchGesture = typeof TouchpadPinchGesture.prototype;\n\ndeclare type CornerPositions =\n\t| 'top-left' | 'top-mid' | 'top-right'\n\t| 'bottom-left' | 'bottom-mid' | 'bottom-right'\n\t;\n\ndeclare type Point = {\n\tx: number,\n\ty: number,\n}\n\ndeclare type Corner = Point & {\n\tposition: CornerPositions;\n}\n\ndeclare type WindowActorClone = {\n\twindowActor: Meta.WindowActor,\n\tclone: Clutter.Clone,\n\ttranslation?: {\n\t\tstart: Point,\n\t\tend: Point,\n\t},\n};\n\nclass MonitorGroup {\n\tpublic monitor: __shell_private_types.IMonitorState;\n\tprivate _container: Clutter.Actor;\n\tprivate _windowActorClones: WindowActorClone[] = [];\n\tprivate _corners: Corner[];\n\tprivate _bottomMidCorner: Corner;\n\n\tconstructor(monitor: __shell_private_types.IMonitorState) {\n\t\tthis.monitor = monitor;\n\n\t\tthis._container = new Clutter.Actor({ visible: false });\n\t\tconst constraint = new Layout.MonitorConstraint({ index: monitor.index });\n\t\tthis._container.add_constraint(constraint);\n\n\t\tthis._bottomMidCorner = { x: this.monitor.width / 2, y: this.monitor.height, position: 'bottom-mid' };\n\t\tthis._corners = [\n\t\t\t{ x: 0, y: 0, position: 'top-left' },\n\t\t\t// { x: this.monitor.width / 2, y: 0, position: 'top-mid' },\n\t\t\t{ x: this.monitor.width, y: 0, position: 'top-right' },\n\t\t\t{ x: this.monitor.width, y: this.monitor.height, position: 'bottom-right' },\n\t\t\t// { x: this.monitor.width / 2, y: this.monitor.height, position: 'bottom-mid' },\n\t\t\t{ x: 0, y: this.monitor.height, position: 'bottom-left' },\n\t\t];\n\n\t\tthis._container.set_clip_to_allocation(true);\n\t\tMain.layoutManager.uiGroup.insert_child_above(this._container, global.window_group);\n\t}\n\n\t_addWindowActor(windowActor: Meta.WindowActor) {\n\t\tconst clone = new Clutter.Clone({\n\t\t\tsource: windowActor,\n\t\t\tx: windowActor.x - this.monitor.x,\n\t\t\ty: windowActor.y - this.monitor.y,\n\t\t});\n\n\t\t// windowActor.opacity = 0;\n\t\twindowActor.hide();\n\n\t\tthis._windowActorClones.push({ clone, windowActor });\n\t\tthis._container.insert_child_below(clone, null);\n\t}\n\n\tprivate _getDestPoint(clone: Clutter.Clone, destCorner: Corner): Point {\n\t\tconst destY = destCorner.y;\n\t\tconst cloneRelXCenter = Math.round(clone.width / 2);\n\t\tswitch (destCorner.position) {\n\t\t\tcase 'top-left':\n\t\t\t\treturn { x: destCorner.x - clone.width, y: destY - clone.height };\n\t\t\tcase 'top-mid':\n\t\t\t\treturn { x: destCorner.x - cloneRelXCenter, y: destY - clone.height };\n\t\t\tcase 'top-right':\n\t\t\t\treturn { x: destCorner.x, y: destY - clone.height };\n\t\t\tcase 'bottom-right':\n\t\t\t\treturn { x: destCorner.x, y: destY };\n\t\t\tcase 'bottom-mid':\n\t\t\t\treturn { x: destCorner.x - cloneRelXCenter, y: destY };\n\t\t\tcase 'bottom-left':\n\t\t\t\treturn { x: destCorner.x - clone.width, y: destY };\n\t\t}\n\t}\n\n\tprivate _calculateDist(p: Point, q: Point) {\n\t\treturn Math.abs(p.x - q.x) + Math.abs(p.y - q.y);\n\t}\n\n\tprivate _assignCorner(actorClone: WindowActorClone, corner: Corner) {\n\t\tconst { clone } = actorClone;\n\t\tconst destPoint = this._getDestPoint(clone, corner);\n\t\tactorClone.translation = {\n\t\t\tstart: { x: clone.x, y: clone.y },\n\t\t\tend: { x: destPoint.x, y: destPoint.y },\n\t\t};\n\t}\n\n\tprivate _fillCloneDestPosition(windowActorsClones: WindowActorClone[]) {\n\t\tif (windowActorsClones.length === 0) return;\n\t\tif (windowActorsClones.length === 1) {\n\t\t\tthis._assignCorner(windowActorsClones[0], this._bottomMidCorner);\n\t\t\treturn;\n\t\t}\n\n\t\tinterface IMetricData {\n\t\t\tvalue: number,\n\t\t\tactorClone: WindowActorClone,\n\t\t\tcorner: Corner,\n\t\t}\n\n\t\tconst distanceMetrics: IMetricData[] = [];\n\t\tthis._corners.forEach(corner => {\n\t\t\twindowActorsClones.forEach(actorClone => {\n\t\t\t\tdistanceMetrics.push({\n\t\t\t\t\tvalue: this._calculateDist(actorClone.clone, this._getDestPoint(actorClone.clone, corner)),\n\t\t\t\t\tactorClone,\n\t\t\t\t\tcorner,\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tconst minActorsPerCorner = Math.floor(windowActorsClones.length / this._corners.length);\n\t\tlet extraActors = windowActorsClones.length - this._corners.length * minActorsPerCorner;\n\t\tconst clusterSizes = new Map<CornerPositions, number>();\n\t\tconst takenActorClones = new Set<WindowActorClone>();\n\t\tdistanceMetrics.sort((a, b) => a.value - b.value);\n\t\tdistanceMetrics.forEach(metric => {\n\t\t\tconst size = clusterSizes.get(metric.corner.position) ?? 0;\n\t\t\tif (takenActorClones.has(metric.actorClone)) return;\n\t\t\tif (size >= minActorsPerCorner) {\n\t\t\t\tif (size > minActorsPerCorner || extraActors <= 0) return;\n\t\t\t\textraActors -= 1;\n\t\t\t}\n\n\t\t\ttakenActorClones.add(metric.actorClone);\n\t\t\tclusterSizes.set(metric.corner.position, size + 1);\n\n\t\t\tthis._assignCorner(metric.actorClone, metric.corner);\n\t\t});\n\t}\n\n\tgestureBegin(windowActors: Meta.WindowActor[]) {\n\t\twindowActors.forEach(this._addWindowActor.bind(this));\n\t\tthis._fillCloneDestPosition(this._windowActorClones);\n\t\tthis._container.show();\n\t}\n\n\tgestureUpdate(progress: number) {\n\n\t\tthis._windowActorClones.forEach(actorClone => {\n\t\t\tconst { clone, translation } = actorClone;\n\t\t\tif (translation === undefined)\n\t\t\t\treturn;\n\t\t\tclone.x = lerp(translation.start.x, translation.end.x, progress);\n\t\t\tclone.y = lerp(translation.start.y, translation.end.y, progress);\n\t\t\tclone.opacity = lerp(255, 128, progress);\n\t\t});\n\t}\n\n\tgestureEnd(progress: WorkspaceManagerState, duration: number) {\n\t\tthis._windowActorClones.forEach(actorClone => {\n\t\t\tconst { clone, translation, windowActor } = actorClone;\n\t\t\tif (translation === undefined) {\n\t\t\t\tclone.destroy();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\teaseActor(clone, {\n\t\t\t\tx: lerp(translation.start.x, translation.end.x, progress),\n\t\t\t\ty: lerp(translation.start.y, translation.end.y, progress),\n\t\t\t\topacity: lerp(255, 128, progress),\n\t\t\t\tmode: Clutter.AnimationMode.EASE_OUT_QUAD,\n\t\t\t\tduration,\n\t\t\t\tonStopped: () => {\n\t\t\t\t\tthis._container.hide();\n\n\t\t\t\t\tconst window = windowActor.meta_window as Meta.Window | null;\n\t\t\t\t\tif (window?.can_minimize()) {\n\t\t\t\t\t\tMain.wm.skipNextEffect(windowActor);\n\t\t\t\t\t\tif (progress === WorkspaceManagerState.DEFAULT) {\n\t\t\t\t\t\t\twindow.unminimize();\n\t\t\t\t\t\t\twindowActor.show();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\twindow.minimize();\n\t\t\t\t\t\t\twindowActor.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\twindowActor.show();\n\t\t\t\t\t}\n\n\t\t\t\t\tclone.destroy();\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tif (this._windowActorClones.length === 0)\n\t\t\tthis._container.hide();\n\n\t\tthis._windowActorClones = [];\n\t}\n\n\tdestroy() {\n\t\tthis._container.destroy();\n\t}\n}\n\nexport class ShowDesktopExtension implements ISubExtension {\n\tprivate _windows = new Set<Meta.Window>();\n\n\tprivate _workspace?: Meta.Workspace;\n\tprivate _workspaceChangedId = 0;\n\tprivate _windowAddedId = 0;\n\tprivate _windowRemovedId = 0;\n\tprivate _windowUnMinimizedId = 0;\n\tprivate _monitorChangedId = 0;\n\tprivate _extensionState = ExtensionState.DEFAULT;\n\n\tprivate _minimizingWindows: Meta.Window[] = [];\n\tprivate _workspaceManagerState = WorkspaceManagerState.DEFAULT;\n\tprivate _monitorGroups: MonitorGroup[] = [];\n\tprivate _pinchTracker: Type_TouchpadPinchGesture;\n\n\tconstructor(nfingers: number[]) {\n\t\tthis._pinchTracker = new TouchpadPinchGesture({\n\t\t\tnfingers: nfingers,\n\t\t\tallowedModes: Shell.ActionMode.NORMAL,\n\t\t});\n\t}\n\n\tapply(): void {\n\t\tthis._pinchTracker.connect('begin', this.gestureBegin.bind(this));\n\t\tthis._pinchTracker.connect('update', this.gestureUpdate.bind(this));\n\t\tthis._pinchTracker.connect('end', this.gestureEnd.bind(this));\n\n\t\tfor (const monitor of Main.layoutManager.monitors)\n\t\t\tthis._monitorGroups.push(new MonitorGroup(monitor));\n\n\t\tthis._workspaceChangedId = global.workspace_manager.connect('active-workspace-changed', this._workspaceChanged.bind(this));\n\t\tthis._workspaceChanged();\n\t\tthis._windowUnMinimizedId = global.window_manager.connect('unminimize', this._windowUnMinimized.bind(this));\n\n\t\tthis._monitorChangedId = Main.layoutManager.connect('monitors-changed', () => {\n\t\t\tthis._monitorGroups.forEach(m => m.destroy());\n\t\t\tthis._monitorGroups = [];\n\t\t\tfor (const monitor of Main.layoutManager.monitors)\n\t\t\t\tthis._monitorGroups.push(new MonitorGroup(monitor));\n\t\t});\n\t}\n\n\tdestroy(): void {\n\t\tthis._pinchTracker?.destroy();\n\n\t\tif (this._monitorChangedId)\n\t\t\tMain.layoutManager.disconnect(this._monitorChangedId);\n\n\t\tif (this._windowAddedId)\n\t\t\tthis._workspace?.disconnect(this._windowAddedId);\n\n\t\tif (this._windowRemovedId)\n\t\t\tthis._workspace?.disconnect(this._windowRemovedId);\n\n\t\tif (this._workspaceChangedId)\n\t\t\tglobal.workspace_manager.disconnect(this._workspaceChangedId);\n\n\t\tif (this._windowUnMinimizedId)\n\t\t\tglobal.window_manager.disconnect(this._windowUnMinimizedId);\n\n\t\tthis._resetState();\n\n\t\tfor (const monitor of this._monitorGroups)\n\t\t\tmonitor.destroy();\n\t\tthis._monitorGroups = [];\n\t}\n\n\tprivate _getMinimizableWindows() {\n\t\tif (this._workspaceManagerState === WorkspaceManagerState.DEFAULT) {\n\t\t\tthis._minimizingWindows = global\n\t\t\t\t.get_window_actors()\n\t\t\t\t.filter(a => a.visible)\n\t\t\t\t// top actors should be at the beginning\n\t\t\t\t.reverse()\n\t\t\t\t.map(actor => actor.meta_window)\n\t\t\t\t.filter(win =>\n\t\t\t\t\twin.get_window_type() !== Meta.WindowType.DESKTOP &&\n\t\t\t\t\tthis._windows.has(win) &&\n\t\t\t\t\t(win.is_always_on_all_workspaces() || win.get_workspace().index === this._workspace?.index) &&\n\t\t\t\t\t!win.minimized);\n\t\t}\n\n\t\treturn this._minimizingWindows;\n\t}\n\n\tgestureBegin(tracker: Type_TouchpadPinchGesture) {\n\t\tthis._extensionState = ExtensionState.ANIMATING;\n\n\t\tMeta.disable_unredirect_for_display(global.display);\n\n\t\tthis._minimizingWindows = this._getMinimizableWindows();\n\t\t// this._setDesktopWindowsBelow();\n\n\t\tfor (const monitor of this._monitorGroups) {\n\t\t\tconst windowActors = this._minimizingWindows\n\t\t\t\t.map(win => win.get_compositor_private())\n\t\t\t\t.filter((actor: GObject.Object): actor is Meta.WindowActor => {\n\t\t\t\t\treturn actor instanceof Meta.WindowActor && actor.meta_window.get_monitor() === monitor.monitor.index;\n\t\t\t\t});\n\t\t\tmonitor.gestureBegin(windowActors);\n\t\t}\n\n\t\ttracker.confirmPinch(\n\t\t\t1,\n\t\t\t[WorkspaceManagerState.DEFAULT, WorkspaceManagerState.SHOW_DESKTOP],\n\t\t\tthis._workspaceManagerState,\n\t\t);\n\n\t}\n\n\tgestureUpdate(_tracker: unknown, progress: number) {\n\t\t// progress 0 -> NORMAL state, 1 -> SHOW Desktop\n\t\t// printStack();\n\t\tfor (const monitor of this._monitorGroups)\n\t\t\tmonitor.gestureUpdate(progress);\n\t}\n\n\tgestureEnd(_tracker: unknown, duration: number, endProgress: number) {\n\t\t// endProgress 0 -> NORMAL state, 1 -> SHOW Desktop\n\t\tfor (const monitor of this._monitorGroups)\n\t\t\tmonitor.gestureEnd(endProgress, duration);\n\n\t\tif (endProgress === WorkspaceManagerState.DEFAULT)\n\t\t\tthis._minimizingWindows = [];\n\n\t\tthis._extensionState = ExtensionState.DEFAULT;\n\t\tthis._workspaceManagerState = endProgress;\n\n\t\tMeta.enable_unredirect_for_display(global.display);\n\t}\n\n\tprivate _resetState(animate = false) {\n\t\t// reset state, aka. undo show desktop\n\t\tthis._minimizingWindows.forEach(win => {\n\t\t\tif (!this._windows.has(win))\n\t\t\t\treturn;\n\t\t\tconst onStopped = () => {\n\t\t\t\tMain.wm.skipNextEffect(win.get_compositor_private());\n\t\t\t\twin.unminimize();\n\t\t\t};\n\t\t\tconst actor = win.get_compositor_private() as Meta.WindowActor;\n\t\t\tif (animate && actor) {\n\t\t\t\tactor.show();\n\t\t\t\tactor.opacity = 0;\n\t\t\t\teaseActor(actor, {\n\t\t\t\t\topacity: 255,\n\t\t\t\t\tduration: 500,\n\t\t\t\t\tmode: Clutter.AnimationMode.EASE_OUT_QUAD,\n\t\t\t\t\tonStopped,\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t\tonStopped();\n\t\t});\n\n\t\tthis._minimizingWindows = [];\n\t\tthis._workspaceManagerState = WorkspaceManagerState.DEFAULT;\n\t}\n\n\tprivate _workspaceChanged() {\n\t\tif (this._windowAddedId)\n\t\t\tthis._workspace?.disconnect(this._windowAddedId);\n\n\t\tif (this._windowRemovedId)\n\t\t\tthis._workspace?.disconnect(this._windowRemovedId);\n\n\t\tthis._resetState(false);\n\t\tthis._windows.clear();\n\t\tthis._workspace = global.workspace_manager.get_active_workspace();\n\n\t\tthis._windowAddedId = this._workspace.connect('window-added', this._windowAdded.bind(this));\n\t\tthis._windowRemovedId = this._workspace.connect('window-removed', this._windowRemoved.bind(this));\n\t\tthis._workspace.list_windows().forEach(win => this._windowAdded(this._workspace, win));\n\t}\n\n\tprivate _windowAdded(_workspace: unknown, window: Meta.Window) {\n\t\tif (this._windows.has(window))\n\t\t\treturn;\n\n\t\tif (!window.skip_taskbar && this._extensionState === ExtensionState.DEFAULT)\n\t\t\tthis._resetState(true);\n\t\tthis._windows.add(window);\n\t}\n\n\tprivate _windowRemoved(_workspace: unknown, window: Meta.Window) {\n\t\tif (!this._windows.has(window))\n\t\t\treturn;\n\t\tthis._windows.delete(window);\n\t}\n\n\tprivate _windowUnMinimized(_wm: Shell.WM, actor: Meta.WindowActor) {\n\t\tif (actor.meta_window.get_workspace().index !== this._workspace?.index)\n\t\t\treturn;\n\n\t\tthis._minimizingWindows = [];\n\t\tthis._workspaceManagerState = WorkspaceManagerState.DEFAULT;\n\t}\n}"
  },
  {
    "path": "extension/src/snapWindow.ts",
    "content": "import Clutter from '@gi-types/clutter';\nimport Meta from '@gi-types/meta';\nimport Shell from '@gi-types/shell';\nimport St from '@gi-types/st';\nimport { global, imports } from 'gnome-shell';\nimport { registerClass } from '../common/utils/gobject';\nimport { ExtSettings } from '../constants';\nimport { createSwipeTracker, TouchpadSwipeGesture } from './swipeTracker';\nimport { easeActor, easeAdjustment } from './utils/environment';\nimport { getVirtualKeyboard, IVirtualKeyboard } from './utils/keyboard';\n\n\nconst Main = imports.ui.main;\nconst Utils = imports.misc.util;\n\nconst { SwipeTracker } = imports.ui.swipeTracker;\n\nconst WINDOW_ANIMATION_TIME = 250;\nconst UPDATED_WINDOW_ANIMATION_TIME = 150;\nconst TRIGGER_THRESHOLD = 0.1;\n\n// define enum\nenum GestureMaxUnMaxState {\n\tMINIMIZE = -1,\n\tUNMAXIMIZE = 0,\n\tMAXIMIZE = 1,\n\tFULLSCREEN = 2,\n}\n\n// define enum\nenum GestureTileState {\n\tRIGHT_TILE = GestureMaxUnMaxState.MINIMIZE,\n\tNORMAL = GestureMaxUnMaxState.UNMAXIMIZE,\n\tLEFT_TILE = GestureMaxUnMaxState.MAXIMIZE,\n}\n\nconst TilePreview = registerClass(\n\tclass TilePreview extends St.Widget {\n\t\tprivate _adjustment: St.Adjustment;\n\n\t\tprivate _window?: Meta.Window;\n\t\tprivate _direction = Clutter.Orientation.VERTICAL;\n\t\tprivate _normalBox?: Meta.Rectangle;\n\t\tprivate _maximizeBox?: Meta.Rectangle;\n\t\tprivate _minimizeBox?: Meta.Rectangle;\n\t\tprivate _leftSnapBox?: Meta.Rectangle;\n\t\tprivate _rightSnapBox?: Meta.Rectangle;\n\t\tprivate _virtualDevice: IVirtualKeyboard;\n\t\tprivate _fullscreenBox?: Meta.Rectangle;\n\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\treactive: false,\n\t\t\t\tstyle_class: 'tile-preview',\n\t\t\t\tvisible: false,\n\t\t\t});\n\t\t\tthis.add_style_class_name('gie-tile-window-preview');\n\t\t\tthis.connect('destroy', this._onDestroy.bind(this));\n\n\t\t\tthis._adjustment = new St.Adjustment({\n\t\t\t\tactor: this,\n\t\t\t\tvalue: 0,\n\t\t\t\tlower: -1,\n\t\t\t\tupper: 2,\n\t\t\t});\n\n\t\t\tthis._adjustment.connect('notify::value', this._valueChanged.bind(this));\n\t\t\tthis._virtualDevice = getVirtualKeyboard();\n\t\t}\n\n\t\topen(window: Meta.Window, currentProgress: GestureMaxUnMaxState): boolean {\n\t\t\tif (this.visible) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._window = window;\n\t\t\tthis._fullscreenBox = global.display.get_monitor_geometry(window.get_monitor());\n\t\t\tthis._maximizeBox = this.getMaximizedBox(window);\n\t\t\tthis._normalBox = this.getNormalBox(window);\n\t\t\tthis._leftSnapBox = this._maximizeBox.copy();\n\t\t\tthis._rightSnapBox = this._maximizeBox.copy();\n\t\t\tthis._minimizeBox = this.getMinimizedBox(this._window, this._maximizeBox);\n\n\t\t\tthis._leftSnapBox.width /= 2;\n\t\t\tthis._rightSnapBox.width /= 2;\n\t\t\tthis._rightSnapBox.x += this._rightSnapBox.width;\n\n\t\t\tthis._direction = Clutter.Orientation.VERTICAL;\n\t\t\tthis.opacity = 0;\n\t\t\tthis._adjustment.value = currentProgress;\n\t\t\tthis._valueChanged();\n\t\t\tthis.visible = true;\n\t\t\tthis.easeOpacity(255);\n\t\t\treturn true;\n\t\t}\n\n\t\tfinish(duration: number, state: GestureMaxUnMaxState | GestureTileState): void {\n\n\t\t\tconst callback = () => {\n\t\t\t\tif (!this.visible)\n\t\t\t\t\treturn;\n\n\t\t\t\tthis.easeOpacity(0, () => this.visible = false);\n\t\t\t\tif (this._window) {\n\t\t\t\t\t// maximize-unmaximize\n\t\t\t\t\tif (this._direction === Clutter.Orientation.VERTICAL) {\n\t\t\t\t\t\t// Main.wm.skipNextEffect(this._window.get_compositor_private() as Meta.WindowActor);\n\t\t\t\t\t\tconst stSettings = St.Settings.get();\n\t\t\t\t\t\t// speedup animations\n\t\t\t\t\t\tconst prevSlowdown = stSettings.slow_down_factor;\n\t\t\t\t\t\tstSettings.slow_down_factor = UPDATED_WINDOW_ANIMATION_TIME / WINDOW_ANIMATION_TIME;\n\n\t\t\t\t\t\tswitch (state) {\n\t\t\t\t\t\t\tcase GestureMaxUnMaxState.MINIMIZE:\n\t\t\t\t\t\t\t\tthis._window.minimize();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase GestureMaxUnMaxState.UNMAXIMIZE:\n\t\t\t\t\t\t\t\tif (this._window.is_fullscreen())\n\t\t\t\t\t\t\t\t\tthis._window.unmake_fullscreen();\n\t\t\t\t\t\t\t\tthis._window.unmaximize(Meta.MaximizeFlags.BOTH);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase GestureMaxUnMaxState.MAXIMIZE:\n\t\t\t\t\t\t\t\tif (this._window.is_fullscreen())\n\t\t\t\t\t\t\t\t\tthis._window.unmake_fullscreen();\n\t\t\t\t\t\t\t\tthis._window.maximize(Meta.MaximizeFlags.BOTH);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase GestureMaxUnMaxState.FULLSCREEN:\n\t\t\t\t\t\t\t\tthis._window.make_fullscreen();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstSettings.slow_down_factor = prevSlowdown;\n\t\t\t\t\t}\n\t\t\t\t\t// snap-left,normal,snap-right\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (state !== GestureTileState.NORMAL) {\n\t\t\t\t\t\t\tconst keys = [Clutter.KEY_Super_L, (state === GestureTileState.LEFT_TILE ? Clutter.KEY_Left : Clutter.KEY_Right)];\n\t\t\t\t\t\t\tthis._virtualDevice.sendKeys(keys);\t\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._window = undefined;\n\t\t\t\tthis._normalBox = undefined;\n\t\t\t\tthis._maximizeBox = undefined;\n\t\t\t\tthis._minimizeBox = undefined;\n\t\t\t\tthis._leftSnapBox = undefined;\n\t\t\t\tthis._rightSnapBox = undefined;\n\t\t\t\tthis._direction = Clutter.Orientation.VERTICAL;\n\t\t\t};\n\n\t\t\teaseAdjustment(this._adjustment, state, {\n\t\t\t\tduration: duration,\n\t\t\t\tmode: Clutter.AnimationMode.EASE_OUT_QUAD,\n\t\t\t\tonStopped: callback,\n\t\t\t});\n\t\t}\n\n\t\t_valueChanged(): void {\n\t\t\tlet progress = this._adjustment.value;\n\t\t\tlet startBox, endBox;\n\n\t\t\tif (this._direction === Clutter.Orientation.VERTICAL) {\n\t\t\t\tif (progress < GestureMaxUnMaxState.UNMAXIMIZE) {\n\t\t\t\t\tstartBox = this._minimizeBox;\n\t\t\t\t\tendBox = this._normalBox;\n\t\t\t\t\tprogress -= GestureMaxUnMaxState.MINIMIZE;\n\t\t\t\t}\n\t\t\t\telse if (progress <= GestureMaxUnMaxState.MAXIMIZE) {\n\t\t\t\t\t// no particular reason for equality here\n\t\t\t\t\tstartBox = this._normalBox;\n\t\t\t\t\tendBox = this._maximizeBox;\n\t\t\t\t\tprogress -= GestureMaxUnMaxState.UNMAXIMIZE;\n\t\t\t\t} else {\n\t\t\t\t\tstartBox = this._maximizeBox;\n\t\t\t\t\tendBox = this._fullscreenBox;\n\t\t\t\t\tprogress -= GestureMaxUnMaxState.MAXIMIZE;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tstartBox = this._normalBox;\n\t\t\t\tif (progress >= GestureTileState.NORMAL) {\n\t\t\t\t\tendBox = this._leftSnapBox;\n\t\t\t\t} else {\n\t\t\t\t\tendBox = this._rightSnapBox;\n\t\t\t\t\tprogress = -progress;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!startBox || !endBox) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst [x, y] = [\n\t\t\t\tUtils.lerp(startBox.x, endBox.x, progress),\n\t\t\t\tUtils.lerp(startBox.y, endBox.y, progress),\n\t\t\t];\n\n\t\t\tconst [width, height] = [\n\t\t\t\tUtils.lerp(startBox.width, endBox.width, progress),\n\t\t\t\tUtils.lerp(startBox.height, endBox.height, progress),\n\t\t\t];\n\n\t\t\tthis.set_position(x, y);\n\t\t\tthis.set_size(width, height);\n\t\t}\n\n\t\t_onDestroy(): void {\n\t\t\tthis._adjustment.run_dispose();\n\t\t}\n\n\t\tswitchToSnapping(value: GestureTileState): void {\n\t\t\tthis._adjustment.remove_transition('value');\n\t\t\tthis._adjustment.value = value;\n\t\t\tthis._direction = Clutter.Orientation.HORIZONTAL;\n\t\t}\n\n\t\teaseOpacity(value: number, callback?: () => void) {\n\t\t\teaseActor(this as St.Widget, {\n\t\t\t\topacity: value,\n\t\t\t\tduration: UPDATED_WINDOW_ANIMATION_TIME,\n\t\t\t\tmode: Clutter.AnimationMode.EASE_OUT_QUAD,\n\t\t\t\tonStopped: () => {\n\t\t\t\t\tif (callback)\n\t\t\t\t\t\tcallback();\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tget adjustment(): St.Adjustment {\n\t\t\treturn this._adjustment;\n\t\t}\n\n\t\tprivate getMinimizedBox(window: Meta.Window, monitorWorkArea: Meta.Rectangle) {\n\t\t\tconst [has_icon, icon_geometry] = window.get_icon_geometry();\n\t\t\tif (has_icon)\n\t\t\t\treturn icon_geometry;\n\n\t\t\tconst rect = monitorWorkArea.copy();\n\t\t\trect.width = 0;\n\t\t\trect.height = 0;\n\t\t\treturn rect;\n\t\t}\n\n\t\tprivate getNormalBox(window: Meta.Window) {\n\t\t\tconst normalBox = window.get_frame_rect();\n\t\t\tif (window.get_maximized() !== Meta.MaximizeFlags.BOTH)\n\t\t\t\treturn normalBox;\n\n\t\t\tconst [width, height] = [\n\t\t\t\tMath.round(normalBox.width * 0.05),\n\t\t\t\tMath.round(normalBox.height * 0.05),\n\t\t\t];\n\t\t\tnormalBox.x += width;\n\t\t\tnormalBox.width -= 2 * width;\n\t\t\tnormalBox.y += height;\n\t\t\tnormalBox.height -= 2 * height;\n\t\t\treturn normalBox;\n\t\t}\n\n\t\tprivate getMaximizedBox(window: Meta.Window) {\n\t\t\tconst monitor = window.get_monitor();\n\t\t\tconst maximizedBox = Main.layoutManager.getWorkAreaForMonitor(monitor);\n\t\t\tif (!window.is_fullscreen())\n\t\t\t\treturn maximizedBox;\n\n\t\t\tconst height = Math.round(maximizedBox.height * 0.025);\n\t\t\tmaximizedBox.y += height;\n\t\t\tmaximizedBox.height -= 2 * height;\n\t\t\treturn maximizedBox;\n\t\t}\n\t},\n);\n\nexport class SnapWindowExtension implements ISubExtension {\n\tprivate _swipeTracker: typeof SwipeTracker.prototype;\n\tprivate _connectors: number[] = [];\n\tprivate _tilePreview: typeof TilePreview.prototype;\n\tprivate _touchpadSwipeGesture: typeof TouchpadSwipeGesture.prototype;\n\tprivate _toggledDirection = false;\n\tprivate _allowChangeDirection = false;\n\tprivate _uiGroupAddedActorId: number;\n\n\tconstructor() {\n\t\tthis._swipeTracker = createSwipeTracker(\n\t\t\tglobal.stage,\n\t\t\t(ExtSettings.DEFAULT_OVERVIEW_GESTURE ? [4] : [3]),\n\t\t\tShell.ActionMode.NORMAL,\n\t\t\tClutter.Orientation.VERTICAL,\n\t\t\ttrue,\n\t\t\t1,\n\t\t\t{ allowTouch: false },\n\t\t);\n\n\t\tthis._swipeTracker.allowLongSwipes = true;\n\t\tthis._touchpadSwipeGesture = this._swipeTracker._touchpadGesture as typeof TouchpadSwipeGesture.prototype;\n\t\tthis._tilePreview = new TilePreview();\n\t\tMain.layoutManager.uiGroup.add_child(this._tilePreview);\n\t\tthis._uiGroupAddedActorId = Main.layoutManager.uiGroup.connect('actor-added', () => {\n\t\t\tMain.layoutManager.uiGroup.set_child_above_sibling(this._tilePreview, null);\n\t\t});\n\t\tMain.layoutManager.uiGroup.set_child_above_sibling(this._tilePreview, null);\n\t}\n\n\tapply(): void {\n\t\tthis._swipeTracker.orientation = Clutter.Orientation.VERTICAL;\n\t\tthis._connectors.push(this._swipeTracker.connect('begin', this._gestureBegin.bind(this)));\n\t\tthis._connectors.push(this._swipeTracker.connect('update', this._gestureUpdate.bind(this)));\n\t\tthis._connectors.push(this._swipeTracker.connect('end', this._gestureEnd.bind(this)));\n\t}\n\n\tdestroy(): void {\n\t\tif (this._uiGroupAddedActorId) {\n\t\t\tMain.layoutManager.uiGroup.disconnect(this._uiGroupAddedActorId);\n\t\t\tthis._uiGroupAddedActorId = 0;\n\t\t}\n\n\t\tthis._connectors.forEach(connector => this._swipeTracker.disconnect(connector));\n\t\tMain.layoutManager.uiGroup.remove_child(this._tilePreview);\n\t\tthis._swipeTracker.destroy();\n\t\tthis._tilePreview.destroy();\n\t}\n\n\t_gestureBegin(tracker: typeof SwipeTracker.prototype, monitor: number): void {\n\t\tconst window = global.display.get_focus_window() as Meta.Window | null;\n\n\t\t// fullscreen window's can't be maximized :O\n\t\t// if window can't be maximized and window is not fullscreen, return\n\t\tif (!window || !(window.can_maximize() || window.is_fullscreen())) {\n\t\t\treturn;\n\t\t}\n\t\t// window is on different monitor\n\t\tif (window.get_monitor() !== monitor) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentMonitor = window.get_monitor();\n\t\tconst monitorArea = global.display.get_monitor_geometry(currentMonitor);\n\n\t\tconst progress = window.is_fullscreen() ? GestureMaxUnMaxState.FULLSCREEN\n\t\t\t: window.get_maximized() === Meta.MaximizeFlags.BOTH ? GestureMaxUnMaxState.MAXIMIZE : GestureMaxUnMaxState.UNMAXIMIZE;\n\n\t\tthis._toggledDirection = false;\n\t\tthis._allowChangeDirection = false;\n\n\t\tconst snapPoints: number[] = [];\n\t\tswitch (progress) {\n\t\t\tcase GestureMaxUnMaxState.UNMAXIMIZE:\n\t\t\t\tsnapPoints.push(GestureTileState.RIGHT_TILE, GestureTileState.NORMAL, GestureTileState.LEFT_TILE);\n\t\t\t\t// allow tiling gesture, when window is unmaximized and minimized gesture is not enabled\n\t\t\t\tthis._allowChangeDirection = !ExtSettings.ALLOW_MINIMIZE_WINDOW;\n\t\t\t\tbreak;\n\t\t\tcase GestureMaxUnMaxState.MAXIMIZE:\n\t\t\t\tsnapPoints.push(GestureMaxUnMaxState.UNMAXIMIZE, GestureMaxUnMaxState.MAXIMIZE);\n\t\t\t\tif (!window.is_monitor_sized() && !monitorArea.equal(window.get_buffer_rect()))\n\t\t\t\t\tsnapPoints.push(GestureMaxUnMaxState.FULLSCREEN);\n\t\t\t\tbreak;\n\t\t\tcase GestureMaxUnMaxState.FULLSCREEN:\n\t\t\t\tsnapPoints.push(GestureMaxUnMaxState.MAXIMIZE, GestureMaxUnMaxState.FULLSCREEN);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (this._tilePreview.open(window, progress)) {\n\t\t\ttracker.confirmSwipe(\n\t\t\t\tmonitorArea.height,\n\t\t\t\tsnapPoints,\n\t\t\t\tprogress,\n\t\t\t\tprogress,\n\t\t\t);\n\t\t}\n\t}\n\n\t_gestureUpdate(_tracker: never, progress: number): void {\n\t\t// log(`progress: ${progress}, toggled: ${this._toggledDirection}`);\n\t\tif (this._toggledDirection) {\n\t\t\tthis._tilePreview.adjustment.value = progress;\n\t\t\treturn;\n\t\t}\n\n\t\t// if tiling gesture is not allowed or progress is above unmaximized state\n\t\tif (!this._allowChangeDirection || progress >= GestureMaxUnMaxState.UNMAXIMIZE) {\n\t\t\tthis._tilePreview.adjustment.value = progress;\n\t\t}\n\t\t// switch to horizontal\n\t\telse if (this._allowChangeDirection && progress <= GestureMaxUnMaxState.UNMAXIMIZE - TRIGGER_THRESHOLD) {\n\t\t\tthis._toggledDirection = true;\n\t\t\tthis._touchpadSwipeGesture.switchDirectionTo(Clutter.Orientation.HORIZONTAL);\n\t\t\tthis._swipeTracker._progress = GestureTileState.NORMAL;\n\t\t\tthis._swipeTracker._history.reset();\n\t\t\tthis._tilePreview.switchToSnapping(GestureTileState.NORMAL);\n\t\t}\n\t}\n\n\t_gestureEnd(_tracker: never, duration: number, progress: number): void {\n\t\tthis._tilePreview.finish(duration, progress);\n\t}\n}"
  },
  {
    "path": "extension/src/swipeTracker.ts",
    "content": "import Clutter from '@gi-types/clutter';\nimport GObject from '@gi-types/gobject2';\nimport Meta from '@gi-types/meta';\nimport Shell from '@gi-types/shell';\nimport { CustomEventType, global, imports } from 'gnome-shell';\nimport { registerClass } from '../common/utils/gobject';\nimport { TouchpadConstants } from '../constants';\nimport * as DBusUtils from './utils/dbus';\n\nconst Main = imports.ui.main;\nconst { SwipeTracker } = imports.ui.swipeTracker;\n\n// define enum\nenum TouchpadState {\n\tNONE = 0,\n\tPENDING = 1,\n\tHANDLING = 2,\n\tIGNORED = 3,\n}\n\nexport const TouchpadSwipeGesture = registerClass({\n\tProperties: {\n\t\t'enabled': GObject.ParamSpec.boolean(\n\t\t\t'enabled',\n\t\t\t'enabled',\n\t\t\t'enabled',\n\t\t\tGObject.ParamFlags.READWRITE,\n\t\t\ttrue,\n\t\t),\n\t\t'orientation': GObject.ParamSpec.enum(\n\t\t\t'orientation',\n\t\t\t'orientation',\n\t\t\t'orientation',\n\t\t\tGObject.ParamFlags.READWRITE,\n\t\t\tClutter.Orientation,\n\t\t\tClutter.Orientation.HORIZONTAL,\n\t\t),\n\t},\n\tSignals: {\n\t\t'begin': { param_types: [GObject.TYPE_UINT, GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE] },\n\t\t'update': { param_types: [GObject.TYPE_UINT, GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE] },\n\t\t'end': { param_types: [GObject.TYPE_UINT, GObject.TYPE_DOUBLE] },\n\t},\n}, class TouchpadSwipeGesture extends GObject.Object {\n\tprivate _nfingers: number[];\n\tprivate _allowedModes: Shell.ActionMode;\n\torientation: Clutter.Orientation;\n\tprivate _checkAllowedGesture?: (event: CustomEventType) => boolean;\n\tprivate _cumulativeX = 0;\n\tprivate _cumulativeY = 0;\n\tprivate _followNaturalScroll: boolean;\n\t_stageCaptureEvent = 0;\n\tSWIPE_MULTIPLIER: number;\n\tTOUCHPAD_BASE_HEIGHT = TouchpadConstants.TOUCHPAD_BASE_HEIGHT;\n\tTOUCHPAD_BASE_WIDTH = TouchpadConstants.TOUCHPAD_BASE_WIDTH;\n\tDRAG_THRESHOLD_DISTANCE = TouchpadConstants.DRAG_THRESHOLD_DISTANCE;\n\tenabled = true;\n\n\tprivate _state = TouchpadState.NONE;\n\tprivate _toggledDirection = false;\n\tprivate _swipeGestureBeginTime = 0;\n\tprivate _holdGestureBeginTime = 0;\n\tprivate _holdGestureCancelTime = 0;\n\n\tconstructor(\n\t\tnfingers: number[],\n\t\tallowedModes: Shell.ActionMode,\n\t\torientation: Clutter.Orientation,\n\t\tfollowNaturalScroll = true,\n\t\tcheckAllowedGesture?: (event: CustomEventType) => boolean,\n\t\tgestureSpeed = 1.0,\n\t) {\n\t\tsuper();\n\t\tthis._nfingers = nfingers;\n\t\tthis._allowedModes = allowedModes;\n\t\tthis.orientation = orientation;\n\t\tthis._checkAllowedGesture = checkAllowedGesture;\n\t\tthis._followNaturalScroll = followNaturalScroll;\n\t\tif (Meta.is_wayland_compositor()) {\n\t\t\tthis._stageCaptureEvent = global.stage.connect('captured-event::touchpad', this._handleEvent.bind(this));\n\t\t} else {\n\t\t\tDBusUtils.subscribe(this._handleEvent.bind(this));\n\t\t}\n\n\t\tthis.SWIPE_MULTIPLIER = TouchpadConstants.SWIPE_MULTIPLIER * (typeof (gestureSpeed) !== 'number' ? 1.0 : gestureSpeed);\n\t}\n\n\tprivate _resetState() {\n\t\tthis._state = TouchpadState.NONE;\n\t\tthis._toggledDirection = false;\n\n\t\tthis._swipeGestureBeginTime = 0;\n\t\tthis._holdGestureBeginTime = 0;\n\t\tthis._holdGestureCancelTime = 0;\n\t}\n\n\tprivate _handleHoldEvent(event: CustomEventType) {\n\t\tswitch (event.get_gesture_phase()) {\n\t\t\tcase Clutter.TouchpadGesturePhase.BEGIN:\n\t\t\t\tthis._holdGestureCancelTime = 0;\n\t\t\t\tthis._holdGestureBeginTime = event.get_time();\n\t\t\t\tbreak;\n\t\t\tcase Clutter.TouchpadGesturePhase.CANCEL:\n\t\t\t\tthis._holdGestureCancelTime = event.get_time();\n\t\t\t\tbreak;\n\t\t\tcase Clutter.TouchpadGesturePhase.END:\n\t\t\t\tthis._holdGestureBeginTime = 0;\n\t\t\t\tthis._holdGestureCancelTime = 0;\n\t\t}\n\t}\n\n\t_handleEvent(_actor: undefined | Clutter.Actor, event: CustomEventType): boolean {\n\t\tif (event.type() === Clutter.EventType.TOUCHPAD_HOLD) {\n\t\t\tthis._handleHoldEvent(event);\n\t\t\treturn Clutter.EVENT_PROPAGATE;\n\t\t}\n\n\t\tif (event.type() !== Clutter.EventType.TOUCHPAD_SWIPE)\n\t\t\treturn Clutter.EVENT_PROPAGATE;\n\n\t\tconst gesturePhase = event.get_gesture_phase();\n\t\tif (gesturePhase === Clutter.TouchpadGesturePhase.BEGIN) {\n\t\t\tthis._swipeGestureBeginTime = event.get_time();\n\t\t\tthis._state = TouchpadState.NONE;\n\t\t\tthis._toggledDirection = false;\n\t\t}\n\n\t\tif (this._state === TouchpadState.IGNORED)\n\t\t\treturn Clutter.EVENT_PROPAGATE;\n\n\t\tif (!this.enabled)\n\t\t\treturn Clutter.EVENT_PROPAGATE;\n\n\t\tif ((this._allowedModes !== Shell.ActionMode.ALL) && ((this._allowedModes & Main.actionMode) === 0)) {\n\t\t\tthis._state = TouchpadState.IGNORED;\n\t\t\treturn Clutter.EVENT_PROPAGATE;\n\t\t}\n\n\t\tif (!this._nfingers.includes(event.get_touchpad_gesture_finger_count())) {\n\t\t\tthis._state = TouchpadState.IGNORED;\n\t\t\treturn Clutter.EVENT_PROPAGATE;\n\t\t}\n\n\t\tif (gesturePhase === Clutter.TouchpadGesturePhase.BEGIN && this._checkAllowedGesture !== undefined) {\n\t\t\ttry {\n\t\t\t\tif (this._checkAllowedGesture(event) !== true) {\n\t\t\t\t\tthis._state = TouchpadState.IGNORED;\n\t\t\t\t\treturn Clutter.EVENT_PROPAGATE;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (ex) {\n\t\t\t\tthis._state = TouchpadState.IGNORED;\n\t\t\t\treturn Clutter.EVENT_PROPAGATE;\n\t\t\t}\n\t\t}\n\n\t\tconst time = event.get_time();\n\n\t\tconst [x, y] = event.get_coords();\n\t\tconst [dx, dy] = event.get_gesture_motion_delta_unaccelerated() as [number, number];\n\n\t\tif (this._state === TouchpadState.NONE) {\n\t\t\tif (dx === 0 && dy === 0)\n\t\t\t\treturn Clutter.EVENT_PROPAGATE;\n\n\t\t\tthis._cumulativeX = 0;\n\t\t\tthis._cumulativeY = 0;\n\t\t\tthis._state = TouchpadState.PENDING;\n\t\t}\n\n\t\tif (this._state === TouchpadState.PENDING) {\n\t\t\tthis._cumulativeX += dx * this.SWIPE_MULTIPLIER;\n\t\t\tthis._cumulativeY += dy * this.SWIPE_MULTIPLIER;\n\n\t\t\tconst cdx = this._cumulativeX;\n\t\t\tconst cdy = this._cumulativeY;\n\t\t\tconst distance = Math.sqrt(cdx * cdx + cdy * cdy);\n\n\t\t\tif (distance >= this.DRAG_THRESHOLD_DISTANCE) {\n\t\t\t\tconst gestureOrientation = Math.abs(cdx) > Math.abs(cdy)\n\t\t\t\t\t? Clutter.Orientation.HORIZONTAL\n\t\t\t\t\t: Clutter.Orientation.VERTICAL;\n\n\t\t\t\tthis._cumulativeX = 0;\n\t\t\t\tthis._cumulativeY = 0;\n\n\t\t\t\tif (gestureOrientation === this.orientation) {\n\t\t\t\t\tthis._state = TouchpadState.HANDLING;\n\t\t\t\t\tthis.emit('begin', time, x, y);\n\t\t\t\t} else {\n\t\t\t\t\tthis._state = TouchpadState.IGNORED;\n\t\t\t\t\treturn Clutter.EVENT_PROPAGATE;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn Clutter.EVENT_PROPAGATE;\n\t\t\t}\n\t\t}\n\n\t\tconst vertical = this.orientation === Clutter.Orientation.VERTICAL;\n\t\tlet delta = ((vertical !== this._toggledDirection) ? dy : dx) * this.SWIPE_MULTIPLIER;\n\t\tconst distance = vertical ? this.TOUCHPAD_BASE_HEIGHT : this.TOUCHPAD_BASE_WIDTH;\n\n\t\tswitch (gesturePhase) {\n\t\t\tcase Clutter.TouchpadGesturePhase.BEGIN:\n\t\t\tcase Clutter.TouchpadGesturePhase.UPDATE:\n\t\t\t\tif (this._followNaturalScroll)\n\t\t\t\t\tdelta = -delta;\n\n\t\t\t\tthis.emit('update', time, delta, distance);\n\t\t\t\tbreak;\n\n\t\t\tcase Clutter.TouchpadGesturePhase.END:\n\t\t\tcase Clutter.TouchpadGesturePhase.CANCEL:\n\t\t\t\tthis.emit('end', time, distance);\n\t\t\t\tthis._resetState();\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn this._state === TouchpadState.HANDLING\n\t\t\t? Clutter.EVENT_STOP\n\t\t\t: Clutter.EVENT_PROPAGATE;\n\t}\n\n\tisItHoldAndSwipeGesture() {\n\t\tif (this._holdGestureCancelTime === 0)\n\t\t\treturn false;\n\t\t\n\t\treturn (\n\t\t\t(this._holdGestureCancelTime - this._holdGestureBeginTime >= TouchpadConstants.HOLD_SWIPE_DELAY_DURATION) &&\t// ms\n\t\t\t(this._swipeGestureBeginTime - this._holdGestureCancelTime <= Math.max(100, TouchpadConstants.HOLD_SWIPE_DELAY_DURATION))\t\t// ms\n\t\t);\n\t}\n\n\tswitchDirectionTo(direction: Clutter.Orientation): void {\n\t\tif (this._state !== TouchpadState.HANDLING) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._toggledDirection = direction !== this.orientation;\n\t}\n\n\tdestroy() {\n\t\tif (this._stageCaptureEvent) {\n\t\t\tglobal.stage.disconnect(this._stageCaptureEvent);\n\t\t\tthis._stageCaptureEvent = 0;\n\t\t}\n\t}\n});\n\ndeclare type _SwipeTrackerOptionalParams = {\n\tallowTouch?: boolean,\n\tallowDrag?: boolean,\n\tallowScroll?: boolean,\n}\n\nexport function createSwipeTracker(\n\tactor: Clutter.Actor,\n\tnfingers: number[],\n\tallowedModes: Shell.ActionMode,\n\torientation: Clutter.Orientation,\n\tfollowNaturalScroll = true,\n\tgestureSpeed = 1,\n\tparams?: _SwipeTrackerOptionalParams,\n): typeof SwipeTracker.prototype {\n\n\tparams = params ?? {};\n\tparams.allowDrag = params.allowDrag ?? false;\n\tparams.allowScroll = params.allowScroll ?? false;\n\tconst allowTouch = params.allowTouch ?? true;\n\tdelete params.allowTouch;\n\n\t// create swipeTracker\n\tconst swipeTracker = new SwipeTracker(\n\t\tactor,\n\t\torientation,\n\t\tallowedModes,\n\t\tparams,\n\t);\n\n\t// remove touch gestures\n\tif (!allowTouch && swipeTracker._touchGesture) {\n\t\tglobal.stage.remove_action(swipeTracker._touchGesture);\n\t\tdelete swipeTracker._touchGesture;\n\t}\n\n\t// remove old touchpad gesture from swipeTracker\n\tif (swipeTracker._touchpadGesture) {\n\t\tswipeTracker._touchpadGesture.destroy();\n\t\tswipeTracker._touchpadGesture = undefined;\n\t}\n\n\t// add touchpadBindings to tracker\n\tswipeTracker._touchpadGesture = new TouchpadSwipeGesture(\n\t\tnfingers,\n\t\tswipeTracker._allowedModes,\n\t\tswipeTracker.orientation,\n\t\tfollowNaturalScroll,\n\t\tundefined,\n\t\tgestureSpeed,\n\t);\n\tswipeTracker._touchpadGesture.connect('begin', swipeTracker._beginGesture.bind(swipeTracker));\n\tswipeTracker._touchpadGesture.connect('update', swipeTracker._updateGesture.bind(swipeTracker));\n\tswipeTracker._touchpadGesture.connect('end', swipeTracker._endTouchpadGesture.bind(swipeTracker));\n\tswipeTracker.bind_property('enabled', swipeTracker._touchpadGesture, 'enabled', 0);\n\tswipeTracker.bind_property(\n\t\t'orientation',\n\t\tswipeTracker._touchpadGesture,\n\t\t'orientation',\n\t\tGObject.BindingFlags.SYNC_CREATE,\n\t);\n\treturn swipeTracker;\n}"
  },
  {
    "path": "extension/src/trackers/pinchTracker.ts",
    "content": "import Clutter from '@gi-types/clutter';\nimport GObject from '@gi-types/gobject2';\nimport Meta from '@gi-types/meta';\nimport Shell from '@gi-types/shell';\nimport { CustomEventType, global, imports } from 'gnome-shell';\nimport { registerClass } from '../../common/utils/gobject';\nimport { TouchpadConstants } from '../../constants';\nimport * as DBusUtils from '../utils/dbus';\n\nconst Main = imports.ui.main;\n\nconst MIN_ANIMATION_DURATION = 100;\nconst MAX_ANIMATION_DURATION = 400;\n\n// Derivative of easeOutCubic at t=0\nconst DURATION_MULTIPLIER = 3;\nconst ANIMATION_BASE_VELOCITY = 0.002;\n\nconst EVENT_HISTORY_THRESHOLD_MS = 150;\nconst DECELERATION_TOUCHPAD = 0.997;\nconst VELOCITY_CURVE_THRESHOLD = 2;\nconst DECELERATION_PARABOLA_MULTIPLIER = 0.35;\n\ndeclare type HisotyEvent = { time: number, delta: number };\n\nclass EventHistoryTracker {\n\tprivate _data: HisotyEvent[] = [];\n\n\treset() {\n\t\tthis._data = [];\n\t}\n\n\ttrim(time: number) {\n\t\tconst thresholdTime = time - EVENT_HISTORY_THRESHOLD_MS;\n\t\tconst index = this._data.findIndex(r => r.time >= thresholdTime);\n\t\tthis._data.splice(0, index);\n\t}\n\n\tappend(time: number, delta: number) {\n\t\tthis.trim(time);\n\t\tthis._data.push({ time, delta });\n\t}\n\n\tcalculateVelocity() {\n\t\tif (this._data.length < 2)\n\t\t\treturn 0;\n\n\t\tconst firstTime = this._data[0].time;\n\t\tconst lastTime = this._data[this._data.length - 1].time;\n\n\t\tif (firstTime === lastTime)\n\t\t\treturn 0;\n\n\t\tconst totalDelta = this._data.slice(1).map(a => a.delta).reduce((a, b) => a + b);\n\t\tconst period = lastTime - firstTime;\n\n\t\treturn totalDelta / period;\n\t}\n}\n\n\n// define enum\nenum TouchpadState {\n\tNONE = 0,\n\tHANDLING = 1,\n\tIGNORED = 2,\n}\n\nenum GestureACKState {\n\tNONE = 0,\n\tPENDING_ACK = 1,\n\tACKED = 2,\n}\n\nexport const TouchpadPinchGesture = registerClass({\n\tProperties: {},\n\tSignals: {\n\t\t'begin': { param_types: [] },\n\t\t'update': { param_types: [GObject.TYPE_DOUBLE] },\n\t\t'end': { param_types: [GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE] },\n\t},\n}, class TouchpadPinchGesture extends GObject.Object {\n\tprivate _nfingers: number[];\n\tprivate _allowedModes: Shell.ActionMode;\n\tprivate _state = TouchpadState.NONE;\n\tprivate _ackState = GestureACKState.NONE;\n\tprivate _checkAllowedGesture?: (event: CustomEventType) => boolean;\n\tprivate _stageCaptureEvent?: number;\n\tprivate _historyTracker: EventHistoryTracker;\n\tprivate _progress_scale = 1.0;\n\tprivate _snapPoints = [0, 1, 2];\n\n\tpublic enabled = true;\n\tprivate _initialProgress = 0;\n\n\tPINCH_MULTIPLIER: number;\n\n\tconstructor(params: {\n\t\tnfingers: number[],\n\t\tallowedModes: Shell.ActionMode,\n\t\tcheckAllowedGesture?: (event: CustomEventType) => boolean,\n\t\tpinchSpeed?: number,\n\t}) {\n\t\tsuper();\n\t\tthis._nfingers = params.nfingers;\n\t\tthis._allowedModes = params.allowedModes;\n\t\tthis._checkAllowedGesture = params.checkAllowedGesture;\n\t\tif (Meta.is_wayland_compositor()) {\n\t\t\tthis._stageCaptureEvent = global.stage.connect('captured-event::touchpad', this._handleEvent.bind(this));\n\t\t} else {\n\t\t\tDBusUtils.subscribe(this._handleEvent.bind(this));\n\t\t}\n\n\t\tthis._historyTracker = new EventHistoryTracker();\n\t\tthis.PINCH_MULTIPLIER = TouchpadConstants.PINCH_MULTIPLIER * (params.pinchSpeed ?? 1.0);\n\n\t}\n\n\t_handleEvent(_actor: undefined | Clutter.Actor, event: CustomEventType): boolean {\n\t\tif (event.type() !== Clutter.EventType.TOUCHPAD_PINCH)\n\t\t\treturn Clutter.EVENT_PROPAGATE;\n\n\t\tconst gesturePhase = event.get_gesture_phase();\n\t\tif (gesturePhase === Clutter.TouchpadGesturePhase.BEGIN) {\n\t\t\tthis._state = TouchpadState.NONE;\n\t\t\tthis._historyTracker.reset();\n\t\t}\n\n\t\tif (this._state === TouchpadState.IGNORED || !this.enabled)\n\t\t\treturn Clutter.EVENT_PROPAGATE;\n\n\t\tif ((this._allowedModes !== Shell.ActionMode.ALL) && ((this._allowedModes & Main.actionMode) === 0)) {\n\t\t\tthis._interrupt();\n\t\t\tthis._state = TouchpadState.IGNORED;\n\t\t\treturn Clutter.EVENT_PROPAGATE;\n\t\t}\n\n\t\tif (!this._nfingers.includes(event.get_touchpad_gesture_finger_count())) {\n\t\t\tthis._state = TouchpadState.IGNORED;\n\t\t\treturn Clutter.EVENT_PROPAGATE;\n\t\t}\n\n\t\tif (gesturePhase === Clutter.TouchpadGesturePhase.BEGIN && this._checkAllowedGesture !== undefined) {\n\t\t\ttry {\n\t\t\t\tif (this._checkAllowedGesture(event) !== true) {\n\t\t\t\t\tthis._state = TouchpadState.IGNORED;\n\t\t\t\t\treturn Clutter.EVENT_PROPAGATE;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (ex) {\n\t\t\t\tthis._state = TouchpadState.IGNORED;\n\t\t\t\treturn Clutter.EVENT_PROPAGATE;\n\t\t\t}\n\t\t}\n\n\t\tthis._state = TouchpadState.HANDLING;\n\t\tconst time = event.get_time();\n\t\tconst pinch_scale = event.get_gesture_pinch_scale();\n\n\t\tswitch (gesturePhase) {\n\t\t\tcase Clutter.TouchpadGesturePhase.BEGIN:\n\t\t\t\t// this._previous_scale = 1.0;\n\t\t\t\tthis._emitBegin();\n\t\t\t\tbreak;\n\t\t\tcase Clutter.TouchpadGesturePhase.UPDATE:\n\t\t\t\tthis._emitUpdate(time, pinch_scale);\n\t\t\t\tbreak;\n\n\t\t\tcase Clutter.TouchpadGesturePhase.END:\n\t\t\tcase Clutter.TouchpadGesturePhase.CANCEL:\n\t\t\t\tthis._emitEnd(time);\n\t\t\t\tthis._state = TouchpadState.NONE;\n\t\t\t\tthis._historyTracker.reset();\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn Clutter.EVENT_STOP;\n\t}\n\n\tprivate _getBounds(): [number, number] {\n\t\treturn [this._snapPoints[0], this._snapPoints[this._snapPoints.length - 1]];\n\t}\n\n\t/**\n\t * @param currentProgress must be in increasing order\n\t */\n\tpublic confirmPinch(_distance: number, snapPoints: number[], currentProgress: number) {\n\t\tif (this._ackState !== GestureACKState.PENDING_ACK)\n\t\t\treturn;\n\n\t\tthis._snapPoints = snapPoints;\n\t\tthis._initialProgress = currentProgress;\n\t\tthis._progress_scale = Math.clamp(currentProgress, ...this._getBounds());\n\t\tthis._ackState = GestureACKState.ACKED;\n\t}\n\n\t_reset() {\n\t\tthis._historyTracker.reset();\n\n\t\tthis._snapPoints = [];\n\t\tthis._initialProgress = 0;\n\t}\n\n\tprivate _interrupt() {\n\t\tif (this._ackState !== GestureACKState.ACKED)\n\t\t\treturn;\n\n\t\tthis._reset();\n\t\tthis._ackState = GestureACKState.NONE;\n\t\tthis.emit('end', 0, this._initialProgress);\n\t}\n\n\tprivate _emitBegin() {\n\t\tif (this._ackState === GestureACKState.ACKED)\n\t\t\treturn;\n\t\tthis._historyTracker.reset();\n\t\tthis._ackState = GestureACKState.PENDING_ACK;\n\t\tthis._progress_scale = 1.0;\n\t\tthis.emit('begin');\n\t}\n\n\tprivate _emitUpdate(time: number, pinch_scale: number) {\n\t\tif (this._ackState !== GestureACKState.ACKED)\n\t\t\treturn;\n\n\t\t// this._historyTracker.append(time, delta);\n\t\t// delta /= this._pinchDistance;\n\t\tconst new_progress = Math.log2(pinch_scale) * this.PINCH_MULTIPLIER + this._initialProgress;\n\t\tconst delta = new_progress - this._progress_scale;\n\t\tthis._historyTracker.append(time, delta);\n\t\tthis._progress_scale = Math.clamp(new_progress, ...this._getBounds());\n\t\t// log(JSON.stringify({ pinch_scale, new_progress, delta }));\n\t\tthis.emit('update', this._progress_scale);\n\t}\n\n\tprivate _emitEnd(time: number) {\n\t\tif (this._ackState !== GestureACKState.ACKED)\n\t\t\treturn;\n\n\t\tthis._historyTracker.trim(time);\n\n\t\tlet velocity = this._historyTracker.calculateVelocity();\n\t\tconst endProgress = this._getEndProgress(velocity);\n\n\t\tif ((endProgress - this._progress_scale) * velocity <= 0)\n\t\t\tvelocity = ANIMATION_BASE_VELOCITY;\n\n\t\tlet duration = Math.abs((this._progress_scale - endProgress) / velocity * DURATION_MULTIPLIER);\n\t\tduration = Math.clamp(duration, MIN_ANIMATION_DURATION, MAX_ANIMATION_DURATION);\n\n\t\tthis._reset();\n\t\tthis._ackState = GestureACKState.NONE;\n\t\tthis.emit('end', duration, endProgress);\n\t}\n\n\tprivate _findEndPoints() {\n\t\tconst current = this._progress_scale;\n\t\treturn {\n\t\t\tcurrent,\n\t\t\tnext: Math.clamp(Math.ceil(current), ...this._getBounds()),\n\t\t\tprevious: Math.clamp(Math.floor(current), ...this._getBounds()),\n\t\t};\n\t}\n\n\tprivate _findClosestPoint(pos: number) {\n\t\tconst distances = this._snapPoints.map(x => Math.abs(x - pos));\n\t\tconst min = Math.min(...distances);\n\t\treturn distances.indexOf(min);\n\t}\n\n\tprivate _findNextPoint(pos: number) {\n\t\treturn this._snapPoints.findIndex(p => p >= pos);\n\t}\n\n\tprivate _findPreviousPoint(pos: number) {\n\t\tconst reversedIndex = this._snapPoints.slice().reverse().findIndex(p => p <= pos);\n\t\treturn this._snapPoints.length - 1 - reversedIndex;\n\t}\n\n\tprivate _findPointForProjection(pos: number, velocity: number) {\n\t\tconst initial = this._findClosestPoint(this._initialProgress);\n\t\tconst prev = this._findPreviousPoint(pos);\n\t\tconst next = this._findNextPoint(pos);\n\n\t\tif ((velocity > 0 ? prev : next) === initial)\n\t\t\treturn velocity > 0 ? next : prev;\n\n\t\treturn this._findClosestPoint(pos);\n\t}\n\n\tprivate _getEndProgress(velocity: number) {\n\t\t// if (Math.abs(velocity) < VELOCITY_THRESHOLD_TOUCHPAD)\n\t\t// \treturn this._snapPoints[this._findClosestPoint(this._progress)];\n\n\t\tconst slope = DECELERATION_TOUCHPAD / (1.0 - DECELERATION_TOUCHPAD) / 1000.0;\n\n\t\tlet pos;\n\t\tif (Math.abs(velocity) > VELOCITY_CURVE_THRESHOLD) {\n\t\t\tconst c = slope / 2 / DECELERATION_PARABOLA_MULTIPLIER;\n\t\t\tconst x = Math.abs(velocity) - VELOCITY_CURVE_THRESHOLD + c;\n\n\t\t\tpos = slope * VELOCITY_CURVE_THRESHOLD +\n\t\t\t\tDECELERATION_PARABOLA_MULTIPLIER * x * x -\n\t\t\t\tDECELERATION_PARABOLA_MULTIPLIER * c * c;\n\t\t} else {\n\t\t\tpos = Math.abs(velocity) * slope;\n\t\t}\n\n\t\tpos = pos * Math.sign(velocity) + this._progress_scale;\n\t\tpos = Math.clamp(pos, ...this._getBounds());\n\n\t\tconst index = this._findPointForProjection(pos, velocity);\n\n\t\treturn this._snapPoints[index];\n\t}\n\n\tdestroy() {\n\t\tif (this._stageCaptureEvent) {\n\t\t\tglobal.stage.disconnect(this._stageCaptureEvent);\n\t\t\tthis._stageCaptureEvent = 0;\n\t\t}\n\t}\n});"
  },
  {
    "path": "extension/src/utils/dbus.ts",
    "content": "import Clutter from '@gi-types/clutter';\nimport Gio from '@gi-types/gio2';\nimport GObject from '@gi-types/gobject2';\nimport { CustomEventType, global, imports } from 'gnome-shell';\nimport { registerClass } from '../../common/utils/gobject';\nimport { printStack } from '../../common/utils/logging';\n\nconst Util = imports.misc.util;\n\nconst X11GestureDaemonXml = `<node>\n\t<interface name=\"org.gestureImprovements.gestures\">\n\t\t<signal name=\"TouchpadSwipe\">\n\t\t\t<arg name=\"event\" type=\"(siddu)\"/>\n\t\t</signal>\n\t\t<signal name=\"TouchpadHold\">\n\t\t\t<arg name=\"event\" type=\"(siub)\"/>\n\t\t</signal>\n\t\t<signal name=\"TouchpadPinch\">\n\t\t\t<arg name=\"event\" type=\"(siddu)\" />\n\t  \t</signal>\n\t</interface>\n</node>`;\n\nconst DBusWrapperGIExtension = registerClass({\n\tSignals: {\n\t\t'TouchpadSwipe': {\n\t\t\tparam_types: [\n\t\t\t\tGObject.TYPE_STRING,\t// phase\n\t\t\t\tGObject.TYPE_INT,\t\t// fingers\n\t\t\t\tGObject.TYPE_DOUBLE,\t// dx\n\t\t\t\tGObject.TYPE_DOUBLE, \t// dy\n\t\t\t\tGObject.TYPE_UINT],\t\t// time\n\t\t\tflags: GObject.SignalFlags.RUN_LAST,\n\t\t\taccumulator: GObject.AccumulatorType.TRUE_HANDLED,\n\t\t\treturn_type: GObject.TYPE_BOOLEAN,\n\t\t},\n\t\t'TouchpadHold': {\n\t\t\tparam_types: [\n\t\t\t\tGObject.TYPE_STRING,\t// phase\n\t\t\t\tGObject.TYPE_INT,\t\t// fingers\n\t\t\t\tGObject.TYPE_UINT,\t\t// time\n\t\t\t\tGObject.TYPE_BOOLEAN],\t// cancelled?\n\t\t\tflags: GObject.SignalFlags.RUN_LAST,\n\t\t\taccumulator: GObject.AccumulatorType.TRUE_HANDLED,\n\t\t\treturn_type: GObject.TYPE_BOOLEAN,\n\t\t},\n\t\t'TouchpadPinch': {\n\t\t\tparam_types: [\n\t\t\t\tGObject.TYPE_STRING,\t// phase\n\t\t\t\tGObject.TYPE_INT,\t\t// fingers\n\t\t\t\tGObject.TYPE_DOUBLE,\t// angle_delta\n\t\t\t\tGObject.TYPE_DOUBLE, \t// scale\n\t\t\t\tGObject.TYPE_UINT],\t\t// time\n\t\t\tflags: GObject.SignalFlags.RUN_LAST,\n\t\t\taccumulator: GObject.AccumulatorType.TRUE_HANDLED,\n\t\t\treturn_type: GObject.TYPE_BOOLEAN,\n\t\t},\n\t},\n\tProperties: {},\n}, class DBusWrapperGIExtension extends GObject.Object {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tprivate _proxy?: any;\n\tprivate _proxyConnectSignalIds: number[] = [];\n\tconstructor() {\n\t\tsuper();\n\n\t\tconst ProxyClass = Gio.DBusProxy.makeProxyWrapper(X11GestureDaemonXml);\n\t\tthis._proxy = new ProxyClass(\n\t\t\tGio.DBus.session,\n\t\t\t'org.gestureImprovements.gestures',\n\t\t\t'/org/gestureImprovements/gestures',\n\t\t);\n\n\t\tthis._proxyConnectSignalIds.push(this._proxy.connectSignal('TouchpadSwipe', this._handleDbusSwipeSignal.bind(this)));\n\t\tthis._proxyConnectSignalIds.push(this._proxy.connectSignal('TouchpadHold', this._handleDbusHoldSignal.bind(this)));\n\t\tthis._proxyConnectSignalIds.push(this._proxy.connectSignal('TouchpadPinch', this._handleDbusPinchSignal.bind(this)));\n\t}\n\n\tdropProxy() {\n\t\tif (this._proxy) {\n\t\t\tthis._proxyConnectSignalIds.forEach(id => this._proxy.disconnectSignal(id));\n\t\t\tthis._proxy.run_dispose();\n\t\t\tthis._proxy = undefined;\n\t\t}\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t_handleDbusSwipeSignal(_proxy: never, _sender: never, params: [any]): void {\n\t\t// (siddu)\n\t\tconst [sphase, fingers, dx, dy, time] = params[0];\n\t\tthis.emit('TouchpadSwipe', sphase, fingers, dx, dy, time);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t_handleDbusHoldSignal(_proxy: never, _sender: never, params: [any]): void {\n\t\t// (siub)\n\t\tconst [sphase, fingers, time, cancelled] = params[0];\n\t\tthis.emit('TouchpadHold', sphase, fingers, time, cancelled);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t_handleDbusPinchSignal(_proxy: never, _sender: never, params: [any]): void {\n\t\t// (siddu)\n\t\tconst [sphase, fingers, angle_delta, scale, time] = params[0];\n\t\tthis.emit('TouchpadPinch', sphase, fingers, angle_delta, scale, time);\n\t}\n});\n\ntype EventOptionalParams = Partial<{\n\tdx: number,\n\tdy: number,\n\tpinch_scale: number,\n\tpinch_angle_delta: number,\n\tis_cancelled: boolean,\n}>;\n\nfunction GenerateEvent(typ: Clutter.EventType, sphase: string, fingers: number, time: number, params: EventOptionalParams): CustomEventType {\n\treturn {\n\t\ttype: () => typ,\n\t\tget_gesture_phase: () => {\n\t\t\tswitch (sphase) {\n\t\t\t\tcase 'Begin':\n\t\t\t\t\treturn Clutter.TouchpadGesturePhase.BEGIN;\n\t\t\t\tcase 'Update':\n\t\t\t\t\treturn Clutter.TouchpadGesturePhase.UPDATE;\n\t\t\t\tdefault:\n\t\t\t\t\treturn params.is_cancelled ? Clutter.TouchpadGesturePhase.CANCEL : Clutter.TouchpadGesturePhase.END;\n\t\t\t}\n\t\t},\n\t\tget_touchpad_gesture_finger_count: () => fingers,\n\t\tget_coords: () => global.get_pointer().slice(0, 2) as [number, number],\n\t\tget_gesture_motion_delta_unaccelerated: () => [params.dx ?? 0, params.dy ?? 0],\n\t\tget_time: () => time,\n\t\tget_gesture_pinch_scale: () => params.pinch_scale ?? 1.0,\n\t\tget_gesture_pinch_angle_delta: () => params.pinch_angle_delta ?? 0,\n\t};\n}\n\nlet proxy: typeof DBusWrapperGIExtension.prototype | undefined;\nlet connectedSignalIds: number[] = [];\n\nexport function subscribe(callback: (actor: never | undefined, event: CustomEventType) => boolean): void {\n\tif (!proxy) {\n\t\tprintStack('starting dbus service \\'gesture_improvements_gesture_daemon.service\\' via spawn');\n\t\tUtil.spawn(['systemctl', '--user', 'start', 'gesture_improvements_gesture_daemon.service']);\n\t\tconnectedSignalIds = [];\n\t\tproxy = new DBusWrapperGIExtension();\n\t}\n\n\tconnectedSignalIds.push(\n\t\tproxy.connect('TouchpadSwipe', (_source, sphase, fingers, dx, dy, time) => {\n\t\t\tconst event = GenerateEvent(Clutter.EventType.TOUCHPAD_SWIPE, sphase, fingers, time, { dx, dy });\n\t\t\treturn callback(undefined, event);\n\t\t}),\n\t);\n\n\tconnectedSignalIds.push(\n\t\tproxy.connect('TouchpadHold', (_source, sphase, fingers, time, is_cancelled) => {\n\t\t\tconst event = GenerateEvent(Clutter.EventType.TOUCHPAD_HOLD, sphase, fingers, time, { is_cancelled });\n\t\t\treturn callback(undefined, event);\n\t\t}),\n\t);\n\n\tconnectedSignalIds.push(\n\t\tproxy.connect('TouchpadPinch', (_source, sphase, fingers, pinch_angle_delta, pinch_scale, time) => {\n\t\t\tconst event = GenerateEvent(Clutter.EventType.TOUCHPAD_PINCH, sphase, fingers, time, { pinch_angle_delta, pinch_scale });\n\t\t\treturn callback(undefined, event);\n\t\t}),\n\t);\n}\n\nexport function unsubscribeAll(): void {\n\tif (proxy) {\n\t\tconnectedSignalIds.forEach(id => proxy?.disconnect(id));\n\t\tconnectedSignalIds = [];\n\t}\n}\n\nexport function drop_proxy(): void {\n\tif (proxy) {\n\t\tunsubscribeAll();\n\t\tproxy.dropProxy();\n\t\tproxy.run_dispose();\n\t\tproxy = undefined;\n\t\tUtil.spawn(['systemctl', '--user', 'stop', 'gesture_improvements_gesture_daemon.service']);\n\t}\n}"
  },
  {
    "path": "extension/src/utils/environment.ts",
    "content": "/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { Actor, AnimationMode } from '@gi-types/clutter';\nimport GObject from '@gi-types/gobject2';\nimport { Adjustment } from '@gi-types/st';\n\ndeclare type EaseParamsType<T extends GObject.Object> = {\n\tduration: number;\n\tmode: AnimationMode;\n\trepeatCount?: number;\n\tautoReverse?: boolean;\n\tonStopped?: (isFinished?: boolean) => void;\n} & { [P in KeysOfType<T, number>]?: number };\n\nexport function easeActor<T extends Actor>(actor: T, params: EaseParamsType<T>): void {\n\t(actor as any).ease(params);\n}\n\nexport function easeAdjustment(actor: Adjustment, value: number, params: EaseParamsType<Adjustment>): void {\n\t(actor as any).ease(value, params);\n}"
  },
  {
    "path": "extension/src/utils/keyboard.ts",
    "content": "import Clutter from '@gi-types/clutter';\nimport GLib from '@gi-types/glib2';\n\nconst DELAY_BETWEEN_KEY_PRESS = 10; // ms\nconst timeoutIds = new Set<number>();\n\nclass VirtualKeyboard {\n\tprivate _virtualDevice: Clutter.VirtualInputDevice;\n\n\tconstructor() {\n\t\tconst seat = Clutter.get_default_backend().get_default_seat();\n\t\tthis._virtualDevice = seat.create_virtual_device(Clutter.InputDeviceType.KEYBOARD_DEVICE);\n\t}\n\n\tsendKeys(keys: number[]) {\n\t\t// log(`sending keys: ${keys}`);\n\n\t\t// keyEvents are stored in revere order so first event can be just popped\n\t\tconst keyEvents: [number, Clutter.KeyState][] = [];\n\t\tkeys.forEach(key => keyEvents.push([key, Clutter.KeyState.RELEASED]));\n\t\tkeys.reverse().forEach(key => keyEvents.push([key, Clutter.KeyState.PRESSED]));\n\n\t\tlet timeoutId = GLib.timeout_add(\n\t\t\tGLib.PRIORITY_DEFAULT,\n\t\t\tDELAY_BETWEEN_KEY_PRESS,\n\t\t\t() => {\n\t\t\t\tconst keyEvent = keyEvents.pop();\n\t\t\t\tif (keyEvent !== undefined)\n\t\t\t\t\tthis._sendKey(...keyEvent);\n\t\t\t\t\n\t\t\t\tif (keyEvents.length === 0) {\n\t\t\t\t\ttimeoutIds.delete(timeoutId);\n\t\t\t\t\ttimeoutId = 0;\n\t\t\t\t\treturn GLib.SOURCE_REMOVE;\n\t\t\t\t}\n\n\t\t\t\treturn GLib.SOURCE_CONTINUE;\n\t\t\t},\n\t\t);\n\n\t\tif (timeoutId)\n\t\t\ttimeoutIds.add(timeoutId);\n\t}\n\n\tprivate _sendKey(keyval: number, keyState: Clutter.KeyState) {\n\t\tthis._virtualDevice.notify_keyval(\n\t\t\tClutter.get_current_event_time() * 1000,\n\t\t\tkeyval,\n\t\t\tkeyState,\n\t\t);\n\t}\n}\n\nexport type IVirtualKeyboard = VirtualKeyboard;\n\nlet _keyboard: VirtualKeyboard | undefined;\nexport function getVirtualKeyboard() {\n\t_keyboard = _keyboard ?? new VirtualKeyboard();\n\treturn _keyboard;\n}\n\nexport function extensionCleanup() {\n\ttimeoutIds.forEach(id => GLib.Source.remove(id));\n\ttimeoutIds.clear();\n\t_keyboard = undefined;\n}"
  },
  {
    "path": "extension/stylesheet.css",
    "content": ".gie-alttab-quick-transition .switcher-popup,\n.gie-alttab-quick-transition .switcher-list,\n.gie-alttab-quick-transition .item-box {\n    transition-duration: 0ms;\n}\n\n.gie-circle {\n    width: 50px;\n    height: 50px;\n    border-radius: 50px;\n}\n\n.gie-inner-circle {\n    border: solid 2px #396bd7;\n    color: #396bd7;\n    background-color: #ffffff;\n}\n\n.gie-arrow-icon {\n    color: #396bd7;\n    margin: 10px 10px;  /* (50+2 - 32)/2 */\n    icon-size: 32px,\n}\n\n.gie-outer-circle {\n    background-color: rgba(68, 120, 175, 0.5);\n    border: solid 2px;\n}\n\n.gie-close-window-preview {\n    background-color: rgba(255, 128, 128, 0.5);\n    border: 1px solid rgba(255, 128, 128);\n    border-radius: 12px;\n}\n\n.gie-tile-window-preview {\n    border-radius: 12px;\n}"
  },
  {
    "path": "extension/ui/customizations.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<interface>\n  <requires lib=\"gtk\" version=\"4.0\" />\n  <requires lib=\"libadwaita\" version=\"1.0\" />\n\n  <object class=\"GtkStringList\" id=\"overview_navigation_states_model\">\n    <items>\n      <item translatable=\"yes\">Cyclic</item>\n      <item translatable=\"yes\">GNOME</item>\n      <item translatable=\"yes\">Overview only</item>\n    </items>\n  </object>\n\n  <object class=\"AdwPreferencesPage\" id=\"customizations_page\">\n    <property name=\"title\">Misc</property>\n    <property name=\"icon-name\">emblem-system-symbolic</property>\n    <child>\n\n      <!-- Customizations -->\n      <object class=\"AdwPreferencesGroup\">\n        <!-- <property name=\"title\">Customizations</property> -->\n\n        <!-- Touchpad swipe speed -->\n        <child>\n          <object class=\"AdwActionRow\">\n            <property name=\"title\" translatable=\"yes\">Touchpad swipe speed</property>\n\n            <child>\n              <object class=\"GtkScale\" id=\"touchpad-speed-scale\">\n                <!-- <property name=\"width-request\">250</property> -->\n\n                <property name=\"hexpand\">true</property>\n                <property name=\"draw-value\">no</property>\n                <!-- <signal name=\"value-changed\" handler=\"touchpad_speed_changed\" object=\"touchpadspeed_speed_display_value\"/> -->\n                <property name=\"adjustment\">\n                  <object class=\"GtkAdjustment\">\n                    <property name=\"lower\">-3.3219280948873626</property>\n                    <property name=\"upper\">3.3219280948873626</property>\n                    <property name=\"step-increment\">0.01</property>\n                  </object>\n                </property>\n                <marks>\n                  <mark value=\"-1\" position=\"bottom\"></mark>\n                  <mark value=\"0\" position=\"bottom\"></mark>\n                  <mark value=\"1\" position=\"bottom\"></mark>\n                </marks>\n              </object>\n            </child>\n\n            <child>\n              <object class=\"GtkEditableLabel\" id=\"touchpad-speed-scale_display-value\">\n                <property name=\"valign\">center</property>\n                <property name=\"max_width_chars\">5</property>\n                <property name=\"editable\">False</property>\n                <property name=\"can-focus\">False</property>\n                <property name=\"text\">1.00</property>\n              </object>\n            </child>\n\n          </object>\n        </child>\n\n        <!-- Follow natural swipe -->\n        <child>\n          <object class=\"AdwActionRow\">\n            <property name=\"title\" translatable=\"yes\">Follow natural swipe</property>\n            <property name=\"subtitle\">Similar to natural scrolling. Swipe moves the content, not the view</property>\n            <child>\n              <object class=\"GtkSwitch\" id=\"follow-natural-scroll\">\n                <property name=\"valign\">center</property>\n                <property name=\"active\">True</property>\n              </object>\n            </child>\n          </object>\n        </child>\n\n        <!-- Revert direction of overview navigation gesture -->\n        <child>\n          <object class=\"AdwActionRow\">\n            <property name=\"title\" translatable=\"yes\">Revert direction of overview navigation gesture</property>\n            <child>\n              <object class=\"GtkSwitch\" id=\"default-overview-gesture-direction\">\n                <property name=\"valign\">center</property>\n                <property name=\"active\">True</property>\n              </object>\n            </child>\n          </object>\n        </child>\n\n        <!-- Overview navigation states -->\n        <child>\n          <object class=\"AdwComboRow\" id=\"overview-navifation-states\">\n            <property name=\"title\" translatable=\"yes\">Overview navigation states</property>\n            <property name=\"model\">overview_navigation_states_model</property>\n          </object>\n        </child>\n\n        <!-- Window switcher popup delay (ms) -->\n        <child>\n          <object class=\"AdwActionRow\">\n            <property name=\"title\" translatable=\"yes\">Window switcher popup delay (ms)</property>\n            <property name=\"sensitive\" bind-source=\"enable-alttab-gesture\" bind-property=\"active\" bind-flags=\"sync-create\"></property>\n            <child>\n              <object class=\"GtkSpinButton\" id=\"alttab-delay\">\n                <property name=\"valign\">center</property>\n                <property name=\"adjustment\">\n                  <object class=\"GtkAdjustment\">\n                    <property name=\"lower\">0</property>\n                    <property name=\"upper\">5000</property>\n                    <property name=\"step-increment\">5</property>\n                  </object>\n                </property>\n                <property name=\"value\">150</property>\n              </object>\n            </child>\n          </object>\n        </child>\n\n        <!-- Touchpad pinch speed -->\n        <child>\n          <object class=\"AdwActionRow\">\n            <property name=\"title\" translatable=\"yes\">Touchpad pinch speed</property>\n\n            <child>\n              <object class=\"GtkScale\" id=\"touchpad-pinch-speed\">\n                <!-- <property name=\"width-request\">250</property> -->\n\n                <property name=\"hexpand\">true</property>\n                <property name=\"draw-value\">no</property>\n                <!-- <signal name=\"value-changed\" handler=\"touchpad_speed_changed\" object=\"touchpadspeed_speed_display_value\"/> -->\n                <property name=\"adjustment\">\n                  <object class=\"GtkAdjustment\">\n                    <property name=\"lower\">-3.3219280948873626</property>\n                    <property name=\"upper\">3.3219280948873626</property>\n                    <property name=\"step-increment\">0.01</property>\n                  </object>\n                </property>\n                <marks>\n                  <mark value=\"-1\" position=\"bottom\"></mark>\n                  <mark value=\"0\" position=\"bottom\"></mark>\n                  <mark value=\"1\" position=\"bottom\"></mark>\n                </marks>\n              </object>\n            </child>\n\n            <child>\n              <object class=\"GtkEditableLabel\" id=\"touchpad-pinch-speed_display-value\">\n                <property name=\"valign\">center</property>\n                <property name=\"max_width_chars\">5</property>\n                <property name=\"editable\">False</property>\n                <property name=\"can-focus\">False</property>\n                <property name=\"text\">1.00</property>\n              </object>\n            </child>\n\n          </object>\n        </child>\n\n        <!-- Duration between hold and swipe (ms) -->\n        <child>\n          <object class=\"AdwActionRow\">\n            <property name=\"title\" translatable=\"yes\">Duration between hold and swipe (ms)</property>\n            <child>\n              <object class=\"GtkSpinButton\" id=\"hold-swipe-delay-duration\">\n                <property name=\"valign\">center</property>\n                <property name=\"adjustment\">\n                  <object class=\"GtkAdjustment\">\n                    <property name=\"lower\">0</property>\n                    <property name=\"upper\">5000</property>\n                    <property name=\"step-increment\">5</property>\n                  </object>\n                </property>\n                <property name=\"value\">100</property>\n              </object>\n            </child>\n          </object>\n        </child>\n\n      </object>\n    </child>\n\n  </object>\n</interface>"
  },
  {
    "path": "extension/ui/gestures.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<interface>\n  <requires lib=\"gtk\" version=\"4.0\" />\n  <requires lib=\"libadwaita\" version=\"1.0\" />\n\n  <object class=\"GtkStringList\" id=\"pinch_gestures_model\">\n    <items>\n      <item translatable=\"yes\">None</item>\n      <item translatable=\"yes\">Show Desktop</item>\n      <item translatable=\"yes\">Close Window</item>\n      <item translatable=\"yes\">Invoke Ctrl+W shortcut</item>\n    </items>\n  </object>\n\n  <object class=\"AdwPreferencesPage\" id=\"gestures_page\">\n    <property name=\"title\">Gestures</property>\n    <property name=\"icon-name\">gesture-swipe-right-symbolic</property>\n\n    <!-- Swipe Gestures -->\n    <child>\n      <object class=\"AdwPreferencesGroup\">\n        <property name=\"title\">Swipe Gestures</property>\n\n        <!-- Use default(4-finger) for session overview navigation -->\n        <child>\n          <object class=\"AdwActionRow\">\n            <property name=\"title\" translatable=\"yes\">4-finger gestures for overview navigation</property>\n            <property name=\"subtitle\">For navigating between desktop, activities and appgrid</property>\n            <child>\n              <object class=\"GtkSwitch\" id=\"default-overview\">\n                <property name=\"valign\">center</property>\n                <property name=\"active\">True</property>\n              </object>\n            </child>\n          </object>\n        </child>\n\n        <!-- Use default(4-finger) for session workspace switching -->\n        <child>\n          <object class=\"AdwActionRow\">\n            <property name=\"title\" translatable=\"yes\">4-finger gestures for workspace switching</property>\n            <child>\n              <object class=\"GtkSwitch\" id=\"default-session-workspace\">\n                <property name=\"valign\">center</property>\n                <property name=\"active\">True</property>\n              </object>\n            </child>\n          </object>\n        </child>\n\n        <!-- AltTab Gesture -->\n        <child>\n          <object class=\"AdwActionRow\">\n            <property name=\"title\" translatable=\"yes\">Window switching</property>\n            <child>\n              <object class=\"GtkSwitch\" id=\"enable-alttab-gesture\">\n                <property name=\"valign\">center</property>\n                <property name=\"active\">True</property>\n              </object>\n            </child>\n          </object>\n        </child>\n        \n        <!-- Window manipulation Gesture -->\n        <child>\n          <object class=\"AdwActionRow\">\n            <property name=\"title\" translatable=\"yes\">Window manipulation</property>\n            <property name=\"subtitle\">Tile, unmaximize, maximize or fullscreen a window</property>\n            <child>\n              <object class=\"GtkSwitch\" id=\"enable-window-manipulation-gesture\">\n                <property name=\"valign\">center</property>\n                <property name=\"active\">True</property>\n              </object>\n            </child>\n          </object>\n        </child>\n\n        <!-- Minimize window -->\n        <child>\n          <object class=\"AdwActionRow\">\n            <property name=\"title\" translatable=\"yes\">Minimize window</property>\n            <property name=\"subtitle\">This will disable tiling gesture</property>\n            <property name=\"sensitive\" bind-source=\"enable-window-manipulation-gesture\" bind-property=\"active\" bind-flags=\"sync-create\"></property>\n            <child>\n              <object class=\"GtkSwitch\" id=\"allow-minimize-window\">\n                <property name=\"valign\">center</property>\n                <property name=\"active\">True</property>\n              </object>\n            </child>\n          </object>\n        </child>\n\n      </object>\n\n    </child>\n\n    <!-- Pinch Gestures -->\n    <child>\n      <object class=\"AdwPreferencesGroup\">\n        <property name=\"title\">Pinch Gestures</property>\n\n        <!-- 3 finger pinch gesture -->\n        <child>\n          <object class=\"AdwComboRow\" id=\"pinch-3-finger-gesture\">\n            <property name=\"title\" translatable=\"yes\">3 finger pinch</property>\n            <property name=\"model\">pinch_gestures_model</property>\n          </object>\n        </child>\n\n        <!-- 4 finger pinch gesture -->\n        <child>\n          <object class=\"AdwComboRow\" id=\"pinch-4-finger-gesture\">\n            <property name=\"title\" translatable=\"yes\">4 finger pinch</property>\n            <property name=\"model\">pinch_gestures_model</property>\n          </object>\n        </child>\n      </object>\n\n    </child>\n  </object>\n</interface>"
  },
  {
    "path": "extension/ui/style-dark.css",
    "content": ".custom-smaller-card {\n\tmin-height: 35px;\n}\n\n.custom-information-label-row {\n\tbackground-color: #44403b;\n}"
  },
  {
    "path": "extension/ui/style.css",
    "content": ".custom-smaller-card {\n\tmin-height: 35px;\n}\n\n.custom-information-label-row {\n\tbackground-color: #f1e6d9;\n}"
  },
  {
    "path": "extension_page.md",
    "content": "Improve touchpad gestures for Wayland/X11\n\nThis extension adds following features:\n\n• Switch windows from current workspace using 3-finger horizontal swipe\n• Cyclic gestures between Desktop/Overview/AppGrid using 4 vertical swipe\n• Switch app-pages using 3-finger swipe gesture on AppGrid\n• Unmaximize/maximize/fullscreen/half-tiling using 3-finger vertical & horizontal gesture\n• Optional minimize a window gesture\n• Override 3-finger gesture with 4-finger for switching workspace\n• Pinch to show desktop\n• Application specific keyboard shortcut based hold-swipe gestures (e.g., navigating browser tabs)\n• Configure speed of gestures\n• Support for X11\n   \nOn X11, you need to install https://github.com/harshadgavali/gnome-x11-gesture-daemon\n\nReport any bugs/requests on GitHub (link directly below)\n"
  },
  {
    "path": "gnome-shell/global.d.ts",
    "content": "/* eslint-disable @typescript-eslint/no-explicit-any */\n\ndeclare function log(message: any): void;\ndeclare function logError(err: Error, message?: string): void;\ndeclare interface IExtension {\n\tenable(): void,\n\tdisable(): void;\n}\n\ndeclare interface ISubExtension {\n\tapply?(): void,\n\tdestroy(): void;\n}\n\ndeclare interface Math {\n\tclamp(num: number, min: number, max: number): number;\n}\n\n// types\ndeclare type KeysOfType<T, U> = { [P in keyof T]: T[P] extends U ? P : never; }[keyof T];\ndeclare type KeysThatStartsWith<K extends string, U extends string> = K extends `${U}${infer _R}` ? K : never;\n\ndeclare interface ExtensionMeta {\n\tuuid: string,\n\t'settings-schema'?: string,\n\t'gettext-domain'?: string\n}\n\n// gjs constants \ndeclare const TextDecoder = import('util').TextDecoder;\ndeclare const TextEncoder = import('util').TextEncoder;\n\n// gnome-shell modules\ndeclare module '@gi-types/clutter' {\n\texport * from '@gi-types/clutter12';\n}\n\ndeclare module '@gi-types/meta' {\n\texport * from '@gi-types/meta12';\n}\n\ndeclare module '@gi-types/st' {\n\texport * from '@gi-types/st12';\n}\n\ndeclare module '@gi-types/shell' {\n\texport * from '@gi-types/shell12';\n}"
  },
  {
    "path": "gnome-shell/index.d.ts",
    "content": "import Clutter from '@gi-types/clutter';\nimport Gio from '@gi-types/gio2';\nimport GObject from '@gi-types/gobject2';\nimport Meta from '@gi-types/meta';\nimport Shell from '@gi-types/shell';\nimport St from '@gi-types/st';\n\ndeclare const global: import('@gi-types/shell').Global;\ndeclare interface ExtensionUtilsMeta {\n\tgetSettings(schema?: string): Gio.Settings;\n\tgetCurrentExtension(): {\n\t\tmetadata: ExtensionMeta,\n\t\tdir: Gio.FilePrototype,\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\timports: any,\n\t};\n\tinitTranslations(domain?: string): void;\n}\n\ndeclare namespace __shell_private_types {\n\tdeclare class TouchpadGesture extends GObject.Object {\n\t\tdestroy(): void;\n\t\t_handleEvent(actor: Clutter.Actor | undefined, event: CustomEventType): boolean;\n\t}\n\n\tdeclare interface IMonitorState {\n\t\tx: number,\n\t\ty: number,\n\t\twidth: number,\n\t\theight: number,\n\t\tgeometry_scale: number,\n\t\tindex: number,\n\t\tinFullscreen: () => boolean,\n\t}\n}\n\ndeclare namespace imports {\n\tnamespace gettext {\n\t\tfunction domain(name: string): { gettext(message: string): string; };\n\t}\n\n\tnamespace misc {\n\t\tdeclare const extensionUtils: ExtensionUtilsMeta;\n\t}\n\tnamespace ui {\n\t\tnamespace main {\n\t\t\tconst actionMode: Shell.ActionMode;\n\t\t\tfunction notify(message: string): void;\n\t\t\tfunction activateWindow(window: Meta.Window, time?: number, workspaceNum?: number): void;\n\n\t\t\tconst panel: {\n\t\t\t\taddToStatusArea(role: string, indicator: Clutter.Actor, position?: number, box?: string): void,\n\t\t\t} & Clutter.Actor;\n\n\t\t\tconst overview: {\n\t\t\t\tdash: {\n\t\t\t\t\tshowAppsButton: St.Button\n\t\t\t\t};\n\t\t\t\tsearchEntry: St.Entry,\n\t\t\t\tshouldToggleByCornerOrButton(): boolean,\n\t\t\t\tvisible: boolean,\n\t\t\t\tshow(): void,\n\t\t\t\thide(): void,\n\t\t\t\tshowApps(): void,\n\t\t\t\tconnect(signal: 'showing' | 'hiding' | 'hidden' | 'shown', callback: () => void): number,\n\t\t\t\tdisconnect(id: number): void,\n\t\t\t\t_overview: {\n\t\t\t\t\t_controls: overviewControls.OverviewControlsManager\n\t\t\t\t} & St.Widget\n\t\t\t\t_gestureBegin(tracker: {\n\t\t\t\t\tconfirmSwipe: typeof swipeTracker.SwipeTracker.prototype.confirmSwipe;\n\t\t\t\t}): void;\n\t\t\t\t_gestureUpdate(tracker: swipeTracker.SwipeTracker, progress: number);\n\t\t\t\t_gestureEnd(tracker: swipeTracker.SwipeTracker, duration: number, endProgress: number);\n\n\t\t\t\t_swipeTracker: swipeTracker.SwipeTracker;\n\t\t\t};\n\n\t\t\tconst layoutManager: GObject.Object & {\n\t\t\t\tuiGroup: St.Widget,\n\t\t\t\tpanelBox: St.BoxLayout,\n\t\t\t\tmonitors: __shell_private_types.IMonitorState[],\n\t\t\t\tprimaryMonitor: __shell_private_types.IMonitorState,\n\t\t\t\tcurrentMonitor: __shell_private_types.IMonitorState,\n\t\t\t\tgetWorkAreaForMonitor: (index: number) => Meta.Rectangle,\n\n\t\t\t\tconnect(id: 'monitors-changed', callback: () => void);\n\t\t\t};\n\n\t\t\tconst wm: {\n\t\t\t\tskipNextEffect(actor: Meta.WindowActor): void;\n\t\t\t\t_workspaceAnimation: workspaceAnimation.WorkspaceAnimationController;\n\t\t\t};\n\n\t\t\tconst osdWindowManager: {\n\t\t\t\thideAll(): void;\n\t\t\t};\n\t\t}\n\n\t\tnamespace overviewControls {\n\t\t\tdeclare enum ControlsState {\n\t\t\t\tHIDDEN,\n\t\t\t\tWINDOW_PICKER,\n\t\t\t\tAPP_GRID\n\t\t\t}\n\n\t\t\tdeclare class OverviewAdjustment extends St.Adjustment {\n\t\t\t\tgetStateTransitionParams(): {\n\t\t\t\t\tinitialState: ControlsState,\n\t\t\t\t\tfinalState: ControlsState\n\t\t\t\t\tcurrentState: number,\n\t\t\t\t\tprogress: number\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdeclare class OverviewControlsManager extends St.Widget {\n\t\t\t\t_stateAdjustment: OverviewAdjustment;\n\t\t\t\tlayoutManager: Clutter.BoxLayout & {\n\t\t\t\t\t_searchEntry: St.Bin\n\t\t\t\t};\n\n\t\t\t\t_toggleAppsPage(): void\n\n\t\t\t\t_workspacesDisplay: {\n\t\t\t\t\t_swipeTracker: swipeTracker.SwipeTracker\n\t\t\t\t};\n\n\t\t\t\t_appDisplay: {\n\t\t\t\t\t_swipeTracker: swipeTracker.SwipeTracker\n\t\t\t\t};\n\n\t\t\t\t_searchController: {\n\t\t\t\t\tsearchActive: boolean\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tnamespace swipeTracker {\n\t\t\tdeclare class SwipeTracker extends GObject.Object {\n\t\t\t\torientation: Clutter.Orientation;\n\t\t\t\tenabled: boolean;\n\t\t\t\tallowLongSwipes: boolean;\n\t\t\t\tconfirmSwipe(distance: number, snapPoints: number[], currentProgress: number, cancelProgress: number): void;\n\t\t\t\tdestroy(): void;\n\n\t\t\t\t_touchGesture?: Clutter.GestureAction;\n\t\t\t\t_touchpadGesture?: __shell_private_types.TouchpadGesture;\n\t\t\t\t// custom\n\t\t\t\t__oldTouchpadGesture?: __shell_private_types.TouchpadGesture;\n\t\t\t\t//\n\t\t\t\t_allowedModes: Shell.ActionMode;\n\n\t\t\t\t_progress: number;\n\t\t\t\t_beginGesture(): void;\n\t\t\t\t_updateGesture(): void;\n\t\t\t\t_endTouchpadGesture(): void;\n\t\t\t\t_history: {\n\t\t\t\t\treset(): void;\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tnamespace panelMenu {\n\t\t\tdeclare class Button extends St.Widget {\n\t\t\t\tconstructor(menuAlignment: number, nameText?: string, dontCreateMenu?: boolean);\n\t\t\t\tcontainer: St.Bin;\n\t\t\t\tmenu: popupMenu.PopupMenuItem;\n\t\t\t}\n\t\t}\n\n\t\tnamespace popupMenu {\n\t\t\tdeclare class PopupMenuItem extends St.BoxLayout {\n\t\t\t\tconstructor(text: string);\n\t\t\t\taddMenuItem(subMenu: PopupMenuItem);\n\t\t\t}\n\t\t}\n\n\t\tnamespace workspaceAnimation {\n\t\t\tdeclare class WorkspaceAnimationController {\n\t\t\t\t_swipeTracker: swipeTracker.SwipeTracker;\n\t\t\t\t_switchWorkspaceBegin(tracker: {\n\t\t\t\t\torientation: Clutter.Orientation,\n\t\t\t\t\tconfirmSwipe: typeof swipeTracker.SwipeTracker.prototype.confirmSwipe\n\t\t\t\t}, monitor: number);\n\n\t\t\t\t_switchWorkspaceUpdate(tracker: swipeTracker.SwipeTracker, progress: number);\n\t\t\t\t_switchWorkspaceEnd(tracker: swipeTracker.SwipeTracker, duration: number, progress: number);\n\n\t\t\t\tmovingWindow: Meta.Window | undefined;\n\t\t\t}\n\t\t}\n\n\t\tnamespace layout {\n\t\t\tdeclare class MonitorConstraint extends Clutter.Constraint {\n\t\t\t\tconstructor(params: Partial<{ primary: boolean, index: number }>);\n\t\t\t}\n\t\t}\n\t}\n}\n\ndeclare namespace imports {\n\tnamespace misc {\n\t\tnamespace util {\n\t\t\tfunction spawn(argv: string[]): void;\n\t\t\tfunction lerp(start: number, end: number, progress: number): number;\n\t\t}\n\t}\n\n\tnamespace ui {\n\t\tnamespace altTab {\n\t\t\tdeclare class WindowSwitcherPopup extends St.Widget {\n\t\t\t\t_items: St.Widget & {\n\t\t\t\t\twindow: Meta.Window\n\t\t\t\t}[];\n\n\t\t\t\t_switcherList: St.Widget & {\n\t\t\t\t\t_scrollView: {\n\t\t\t\t\t\thscroll: {\n\t\t\t\t\t\t\tadjustment: St.Adjustment\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\t_select(n: number): void;\n\t\t\t\t_resetNoModsTimeout(): void;\n\t\t\t\t_popModal(): void;\n\n\t\t\t\t_noModsTimeoutId: number;\n\t\t\t\t_initialDelayTimeoutId: number;\n\t\t\t\t_selectedIndex: number;\n\n\t\t\t\tshow(backward: boolean, binding: string, mask: number);\n\t\t\t}\n\t\t}\n\t}\n}\n\n// types\nexport type CustomEventType = Pick<\n\timport('@gi-types/clutter').Event,\n\t'type' | 'get_gesture_phase' |\n\t'get_touchpad_gesture_finger_count' | 'get_time' |\n\t'get_coords' | 'get_gesture_motion_delta_unaccelerated' |\n\t'get_gesture_pinch_scale' | 'get_gesture_pinch_angle_delta'\n>;"
  },
  {
    "path": "metadata.json",
    "content": "{\n\t\"description\": \"Improve touchpad gestures for Wayland/X11\",\n\t\"name\": \"Gesture Improvements\",\n\t\"shell-version\": [\n\t\t\"42\",\n\t\t\"43\",\n\t\t\"44\"\n\t],\n\t\"settings-schema\": \"org.gnome.shell.extensions.gestureImprovements\",\n\t\"url\": \"https://github.com/harshadgavali/gnome-gesture-improvements\",\n\t\"uuid\": \"gestureImprovements@gestures\",\n\t\"version\": 25.0\n}"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"gnome-gestures\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Touchpad Gesture Improvements\",\n  \"main\": \"extension.js\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"generate-bindings\": \"sh scripts/generate-gi-bindings.sh\",\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\",\n    \"build:transpile\": \"tsc scripts/transpile.ts --outDir build --allowSyntheticDefaultImports --sourceMap --target esnext --module esnext --moduleResolution node\",\n    \"lint:extension\": \"eslint extension scripts tests\",\n    \"lint:package\": \"eslint build --fix\",\n    \"transpile:watch\": \"tsc --watch\",\n    \"postinstall\": \"cp -r @types/* node_modules/@gi-types/\",\n    \"transpile\": \"npm run lint:extension && tsc\",\n    \"build\": \"npm run clean && npm run transpile && node --unhandled-rejections=strict build/scripts/transpile.js && npm run lint:package\",\n    \"clean\": \"rm -rf build && mkdir build\",\n    \"pack\": \"npm run build && make pack\",\n    \"update\": \"npm run pack && make update\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://gitlab.gnome.org/harshadgavali/gnome-gestures.git\"\n  },\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"devDependencies\": {\n    \"@gi-types/base-types\": \"^1.0.0\",\n    \"@gi-types/gjs-environment\": \"^1.0.0\",\n    \"@gi-types/gio2\": \"^2.68.0\",\n    \"@gi-types/glib2\": \"^2.68.0\",\n    \"@gi-types/gobject2\": \"^2.68.0\",\n    \"@gi-types/gtk4-types\": \"^1.0.0\",\n    \"@gi-types/gtk4\": \"^4.2.0\",\n    \"@gi.ts/cli\": \"^1.5.7\",\n    \"@gi.ts/lib\": \"^1.5.9\",\n    \"@types/glob\": \"^7.2.0\",\n    \"@types/node\": \"^17.0.23\",\n    \"@types/yargs\": \"^17.0.10\",\n    \"@typescript-eslint/eslint-plugin\": \"^5.18.0\",\n    \"@typescript-eslint/parser\": \"^5.18.0\",\n    \"typescript\": \"^4.3.5\",\n    \"eslint\": \"^8.12.0\"\n  },\n  \"dependencies\": {\n    \"fs\": \"0.0.1-security\",\n    \"glob\": \"^7.2.0\",\n    \"path\": \"^0.12.7\",\n    \"typescript\": \"^4.6.3\",\n    \"yargs\": \"^17.4.0\"\n  }\n}\n"
  },
  {
    "path": "scripts/generate-gi-bindings.sh",
    "content": "#!/bin/sh\n\n# first argument is extra data dirs to add\nfunction generate_bindings {\n    NEW_XDG_DATA_DIRS=\"$XDG_DATA_DIRS\"\n    if [ -n \"$1\" ]; then\n        NEW_XDG_DATA_DIRS=\"$1:$NEW_XDG_DATA_DIRS\"\n    fi\n    env XDG_DATA_DIRS=\"$NEW_XDG_DATA_DIRS\" \\\n        npx gi-ts generate \\\n        --all --importPrefix=\"@gi-types/\" \\\n        --out=build/@types --outputFormat=folder \\\n        --versionedImports --versionedOutput \\\n        --withDocs --emitMetadata\n}\n\n# generate bindings\n\ngenerate_bindings \"/usr/lib64/mutter-12/:/usr/lib64/gnome-shell/\"\ngenerate_bindings   # needs to generate again, cause some conflict adw1 bindings are not generated with above command\n\n# move bindings to @types\nmkdir -p @types/\nfor pkg in meta12 clutter12 st12 shell12 adw1; do\n    if [ -d \"build/@types/${pkg}\" ]; then\n        cp -vr \"build/@types/${pkg}\" @types/\n    fi\ndone\n\n# cleanup\n# rm -r build/@types/\n"
  },
  {
    "path": "scripts/transpile.ts",
    "content": "import * as fs from 'fs';\nimport glob from 'glob';\nimport path from 'path';\nimport ts from 'typescript';\n\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\n// list of gi modules (regex) and their name in imports.gi\nconst GIReplacements: Record<string, string> = {\n\t'^@gi-types/gtk(\\\\d+)?$': 'Gtk',\n\t'^@gi-types/gdk(\\\\d+)?$': 'Gdk',\n\t'^@gi-types/st(\\\\d+)?$': 'St',\n\t'^@gi-types/clutter(\\\\d+)?$': 'Clutter',\n\t'^@gi-types/gobject(\\\\d+)?$': 'GObject',\n\t'^@gi-types/glib(\\\\d+)?$': 'GLib',\n\t'^@gi-types/gio(\\\\d+)?$': 'Gio',\n\t'^@gi-types/shell(\\\\d+)?$': 'Shell',\n\t'^@gi-types/meta(\\\\d+)?$': 'Meta',\n\t'^@gi-types/adw(\\\\d+)?$': 'Adw',\n};\n\n/**\n * Create Property access expression for code string\n * @param context\n * @param access javascript code for which to create expression\n * @returns\n *\n * e.g., createAccessExpressionFor(context, 'obj.property')\n */\nfunction createAccessExpressionFor(context: ts.TransformationContext, access: string): ts.Expression {\n\tconst ids = access.split('.').filter(a => a.length > 0);\n\tif (ids.length === 0) {\n\t\tthrow new Error(`can't create access expression for ${access}`);\n\t}\n\n\tlet expression: ts.Expression = context.factory.createIdentifier(ids[0]);\n\tids.slice(1).forEach(id => {\n\t\texpression = context.factory.createPropertyAccessExpression(\n\t\t\texpression,\n\t\t\tcontext.factory.createIdentifier(id),\n\t\t);\n\t});\n\n\treturn expression;\n}\n\n/**\n * Create variable declaration expression\n * @param context\n * @param name name of variable\n * @param initializer variable initizlizer expression\n * @returns\n */\nfunction createVariableDeclaration(\n\tcontext: ts.TransformationContext,\n\tname: string | ts.Identifier | ts.BindingName,\n\tinitializer: ts.Expression | undefined,\n): ts.VariableDeclaration {\n\treturn context.factory.createVariableDeclaration(\n\t\tname,\n\t\tundefined,\n\t\tundefined,\n\t\tinitializer,\n\t);\n}\n\n/**\n * Create variable declaration statement\n * @param context\n * @param name name of variable\n * @param initializer variable initizlizer expression\n * @param flags flags, e.g. ts.NodeFlags.Const\n * @returns\n */\nfunction createVariableStatement(\n\tcontext: ts.TransformationContext,\n\tname: string | ts.Identifier | ts.BindingName,\n\tinitializer?: ts.Expression,\n\tflags?: ts.NodeFlags,\n): ts.VariableStatement {\n\treturn context.factory.createVariableStatement(\n\t\t[],\n\t\tcontext.factory.createVariableDeclarationList(\n\t\t\t[createVariableDeclaration(context, name, initializer)],\n\t\t\tflags,\n\t\t),\n\t);\n}\n\n/**\n * Move all comments to node\n * @param node target node to move comments to\n * @param originalNode original node\n * @returns target node\n */\nfunction moveComments<T extends ts.Node>(node: T, originalNode: ts.Node): T {\n\tif (node === undefined || originalNode === undefined) {\n\t\treturn node;\n\t}\n\tnode = ts.setSyntheticLeadingComments(node, ts.getSyntheticLeadingComments(originalNode));\n\tnode = ts.setSyntheticTrailingComments(node, ts.getSyntheticTrailingComments(originalNode));\n\treturn ts.setCommentRange(node, ts.getCommentRange(originalNode));\n}\n\n// printer to print code\nconst printer: ts.Printer = ts.createPrinter({ removeComments: false });\n\n/**\n * typescript transformer to transform exports\n * @param context\n * @returns transformation function\n *\n * transformation function\n * 1. Removes 'export' modifier from function\n * 2. Convert exported ClassDeclaration into variable statement.\n * \te.g., 'export class A {}' => 'var A = class A{};'\n * 3. Convert exported variables into 'var'\n * \te.g., 'export const ABC = 8;' => 'var ABC = 8;'\n */\nconst transformExports: ts.TransformerFactory<ts.SourceFile> = context => {\n\t/* Remove 'export' modifier from function declaration */\n\tconst tranformFunction = (node: ts.FunctionDeclaration, variables: string[]): ts.FunctionDeclaration => {\n\t\tif (!node.modifiers?.some(m => m.kind === ts.SyntaxKind.ExportKeyword)) {\n\t\t\treturn node;\n\t\t}\n\n\t\tvariables.push(node.name?.text || '');\n\t\treturn moveComments(\n\t\t\tcontext.factory.createFunctionDeclaration(\n\t\t\t\tnode.decorators,\n\t\t\t\tnode.modifiers.filter(m => m.kind !== ts.SyntaxKind.ExportKeyword),\n\t\t\t\tnode.asteriskToken,\n\t\t\t\tnode.name,\n\t\t\t\tnode.typeParameters,\n\t\t\t\tnode.parameters,\n\t\t\t\tnode.type,\n\t\t\t\tnode.body || context.factory.createBlock([]),\n\t\t\t),\n\t\t\tnode,\n\t\t);\n\t};\n\n\t/* convert exported class declaration to variable statement */\n\tconst transformClass = (node: ts.ClassDeclaration, variables: string[]): ts.ClassDeclaration | ts.VariableStatement => {\n\t\tif (!node.modifiers?.some(m => m.kind === ts.SyntaxKind.ExportKeyword)) {\n\t\t\treturn node;\n\t\t}\n\n\t\tvariables.push(node.name?.text || '');\n\t\treturn moveComments(\n\t\t\tcreateVariableStatement(\n\t\t\t\tcontext,\n\t\t\t\tnode.name?.text || '',\n\t\t\t\tcontext.factory.createClassExpression(\n\t\t\t\t\tnode.decorators,\n\t\t\t\t\tnode.modifiers.filter(m => m.kind !== ts.SyntaxKind.ExportKeyword),\n\t\t\t\t\tnode.name,\n\t\t\t\t\tnode.typeParameters,\n\t\t\t\t\tnode.heritageClauses,\n\t\t\t\t\tnode.members,\n\t\t\t\t),\n\t\t\t),\n\t\t\tnode,\n\t\t);\n\t};\n\n\t/* make all exported variables 'var' type */\n\tconst tranformVariable = (node: ts.VariableStatement, variables: string[]): ts.VariableStatement => {\n\t\tif (!node.modifiers?.some(m => m.kind === ts.SyntaxKind.ExportKeyword)) {\n\t\t\treturn node;\n\t\t}\n\n\t\treturn moveComments(\n\t\t\tcontext.factory.createVariableStatement(\n\t\t\t\t[],\n\t\t\t\tnode.declarationList.declarations.map(d => {\n\t\t\t\t\tif (d.name.kind === ts.SyntaxKind.Identifier) {\n\t\t\t\t\t\tvariables.push((d.name as ts.Identifier).text);\n\t\t\t\t\t}\n\t\t\t\t\treturn moveComments(createVariableDeclaration(context, d.name, d.initializer), d);\n\t\t\t\t}),\n\t\t\t),\n\t\t\tnode,\n\t\t);\n\t};\n\n\t/* transformation function */\n\treturn sourceFile => {\n\t\tconst variables: string[] = [];\n\t\tconst visitor = (node: ts.Node): ts.Node => {\n\t\t\tswitch (node.kind) {\n\t\t\t\tcase ts.SyntaxKind.ClassDeclaration:\n\t\t\t\t\treturn transformClass(node as ts.ClassDeclaration, variables);\n\t\t\t\tcase ts.SyntaxKind.FunctionDeclaration:\n\t\t\t\t\treturn tranformFunction(node as ts.FunctionDeclaration, variables);\n\t\t\t\tcase ts.SyntaxKind.VariableStatement:\n\t\t\t\t\treturn tranformVariable(node as ts.VariableStatement, variables);\n\t\t\t\tdefault:\n\t\t\t\t\treturn node;\n\t\t\t}\n\t\t};\n\t\tconst modifiedSourceFile = ts.visitEachChild(sourceFile, visitor, context);\n\t\t// Add /* exported var1,var2 */ comment to before first statement\n\t\tif (variables.length && modifiedSourceFile.statements.length) {\n\t\t\tts.addSyntheticLeadingComment(\n\t\t\t\tmodifiedSourceFile.statements[0],\n\t\t\t\tts.SyntaxKind.MultiLineCommentTrivia,\n\t\t\t\t` exported ${variables.join(', ')} `,\n\t\t\t\ttrue,\n\t\t\t);\n\t\t}\n\n\t\treturn moveComments(modifiedSourceFile, sourceFile);\n\t};\n};\n\n/**\n * typescript transformer to transform exports\n * @param context\n * @returns transformation function\n *\n * transformation function\n * 1. replaces @gi-types/* modules into imports.gi\n * \te.g., \"import St from '@gi-types/st';\" => \"const St = imports.gi.St;\"\n * 2. Removes \"import ... from 'gnome-shell'\" statement.\n * 3. replaces local imports with statement compatible with extensions\n * \te.g., in extension.js (top level)\n * \t\t\"import { Indicator } from './indicator';\" => \"const { Indicator } = Me.imports.indicator;\"\n * \t\tand it ensures \"const Me = imports.misc.extensionUtils.getCurrentExtension();\" is added before above statement.\n *\n */\nconst transformImports: ts.TransformerFactory<ts.SourceFile> = context => {\n\n\t/**\n\t * Actual transformation function\n\t * @param node ImportDeclaration node\n\t * @param getModuleReplacement function which returns object with module expression and \"const Me ....\" statement is necessary\n\t * \t\t\te.g., getModuleReplacement('@gi-types/clutter') => {statement: undefined, module: Expression('imports.gi.Clutter')}\n\t * \t\t\te.g., getModuleReplacement('@gi-types/gobject2') => {statement: Expression('const Me = ...'), module: Expression('imports.gi.GObject')}\n\t * @returns returns either\tthrows when import declaration doesn't fit into above categories\n\t * \t\t\t\t\t\t\tor returns list of variable statements or empty statement\n\t */\n\tconst transformImport = (\n\t\tnode: ts.ImportDeclaration,\n\t\tgetModuleReplacement: (module: string) => {\n\t\t\tstatement?: ts.VariableStatement,\n\t\t\tmodule: ts.Expression\n\t\t} | null,\n\t): ts.ImportDeclaration | ts.VariableStatement[] | ts.EmptyStatement => {\n\n\t\tconst module = node.moduleSpecifier as ts.StringLiteral;\n\t\t/* remove import from 'gnome-shell' statement */\n\t\tif (module.text === 'gnome-shell') {\n\t\t\treturn moveComments(context.factory.createEmptyStatement(), node);\n\t\t}\n\n\t\tconst replacement = getModuleReplacement(module.text);\n\t\t/* unknown import statement */\n\t\tif (!replacement) {\n\t\t\tthrow new Error(`Unknown import statement '${node.getFullText()}'`);\n\t\t}\n\n\t\tconst statements: ts.VariableStatement[] = [];\n\t\tif (replacement.statement) {\n\t\t\t/* 'const Me = ...' statement */\n\t\t\tstatements.push(replacement.statement);\n\t\t}\n\n\t\tif (node.importClause?.name) {\n\t\t\t/* import whole module 'St' in 'import St from ...' or 'Gtk' in 'import Gtk, {} from ...'  */\n\t\t\tstatements.push(createVariableStatement(\n\t\t\t\tcontext,\n\t\t\t\tnode.importClause.name.text,\n\t\t\t\treplacement.module,\n\t\t\t\tts.NodeFlags.Const,\n\t\t\t));\n\t\t}\n\n\t\t/* namespace imports e.g., 'import * as Clutter from ...' */\n\t\tnode.importClause?.namedBindings?.forEachChild(binding => {\n\t\t\tif (binding.kind !== ts.SyntaxKind.Identifier) {\n\t\t\t\tif (binding.kind !== ts.SyntaxKind.ImportSpecifier)\n\t\t\t\t\tthrow new Error(`Can't understand namespace import ${node}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst bindingId = binding as ts.Identifier;\n\t\t\tstatements.push(createVariableStatement(\n\t\t\t\tcontext,\n\t\t\t\tbindingId.text,\n\t\t\t\treplacement.module,\n\t\t\t\tts.NodeFlags.Const,\n\t\t\t));\n\t\t});\n\n\t\t/* named imports e.g., 'import { a, b } from ...' */\n\t\tconst namedBindings: string[] = [];\n\t\tnode.importClause?.namedBindings?.forEachChild(binding => {\n\t\t\tif (binding.kind === ts.SyntaxKind.ImportSpecifier) {\n\t\t\t\tconst node = binding as ts.ImportSpecifier;\n\t\t\t\tnamedBindings.push(node.name.text);\n\t\t\t}\n\t\t});\n\n\t\tif (namedBindings.length) {\n\t\t\tconst bindingName = context.factory.createObjectBindingPattern(\n\t\t\t\tnamedBindings.map(name => {\n\t\t\t\t\treturn context.factory.createBindingElement(\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t);\n\t\t\t\t}),\n\t\t\t);\n\t\t\t/* replacing named imports with 'const { a, b } = ...' */\n\t\t\tstatements.push(createVariableStatement(\n\t\t\t\tcontext,\n\t\t\t\tbindingName,\n\t\t\t\treplacement.module,\n\t\t\t\tts.NodeFlags.Const,\n\t\t\t));\n\t\t}\n\n\t\tif (statements.length) {\n\t\t\tmoveComments(statements[0], node);\n\t\t\treturn statements;\n\t\t}\n\t\telse {\n\t\t\tthrow new Error(`Can't understand import statement '${node}'`);\n\t\t}\n\t};\n\n\t/* transformation function */\n\treturn sourceFile => {\n\t\tlet addedMeStatement = false;\n\n\t\t/* function which returns object with module expression and \"const Me ....\" statement is necessary */\n\t\tconst getModuleReplacement = (module: string): { statement?: ts.VariableStatement, module: ts.Expression } | null => {\n\t\t\tconst giModule = Object.keys(GIReplacements).find(key => module.match(new RegExp(key)));\n\t\t\tif (giModule) {\n\t\t\t\t/* GI import */\n\t\t\t\treturn { module: createAccessExpressionFor(context, `imports.gi.${GIReplacements[giModule]}`) };\n\t\t\t}\n\t\t\tif (module.startsWith('.')) {\n\t\t\t\t/* local import */\n\t\t\t\tlet statement: ts.VariableStatement | undefined = undefined;\n\t\t\t\tif (!addedMeStatement && ISEXTENSION) {\n\t\t\t\t\taddedMeStatement = true;\n\t\t\t\t\t//const Me = imports.misc.extensionUtils.getCurrentExtension();\n\t\t\t\t\tstatement = createVariableStatement(\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t'Me',\n\t\t\t\t\t\tcontext.factory.createCallExpression(\n\t\t\t\t\t\t\tcreateAccessExpressionFor(context, 'imports.misc.extensionUtils.getCurrentExtension'),\n\t\t\t\t\t\t\t[],\n\t\t\t\t\t\t\t[],\n\t\t\t\t\t\t),\n\t\t\t\t\t\tts.NodeFlags.Const,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t/* path of imported module relative to root directory if extension */\n\t\t\t\tmodule = path.join(path.dirname(sourceFile.fileName), module);\n\t\t\t\tmodule = path.relative(BASEDIR, module);\n\n\t\t\t\tconst moduleStrings = module.split('/').filter(m => m.length > 0);\n\t\t\t\tif (!moduleStrings.length) {\n\t\t\t\t\tthrow new Error(`unable to resolve '${module}'`);\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tstatement,\n\t\t\t\t\tmodule: createAccessExpressionFor(\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t(ISEXTENSION ? 'Me.' : '') + `imports.${moduleStrings.join('.')}`,\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t/* unknown import */\n\t\t\treturn null;\n\t\t};\n\t\tconst visitor = (node: ts.Node): ts.Node | ts.Node[] => {\n\t\t\tif (node.kind !== ts.SyntaxKind.ImportDeclaration) {\n\t\t\t\treturn node;\n\t\t\t}\n\n\t\t\treturn transformImport(node as ts.ImportDeclaration, getModuleReplacement);\n\t\t};\n\n\t\treturn moveComments(ts.visitEachChild(sourceFile, visitor, context), sourceFile);\n\t};\n};\n\n/**\n * typescript transformer to transform exports\n * @param context\n * @returns transformation function\n *\n * transformation function\n * 1. Replace constructor with '_init' function.\n * 2. Replace 'super()' call with 'super._init' call.\n */\nconst transformGObjectClasses: ts.TransformerFactory<ts.SourceFile> = context => {\n\t/**\n\t * replace 'super()' call\n\t * @param node child node of function body\n\t * @returns\n\t */\n\tconst replaceSuperCall = (node: ts.Node): ts.Node => {\n\t\tif (node.kind === ts.SyntaxKind.CallExpression) {\n\t\t\tconst callNode = node as ts.CallExpression;\n\t\t\tif (callNode.expression.kind === ts.SyntaxKind.SuperKeyword) {\n\t\t\t\treturn moveComments(\n\t\t\t\t\tcontext.factory.createCallExpression(\n\t\t\t\t\t\tcontext.factory.createPropertyAccessExpression(\n\t\t\t\t\t\t\tcontext.factory.createIdentifier('super'),\n\t\t\t\t\t\t\tcontext.factory.createIdentifier('_init'),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcallNode.typeArguments,\n\t\t\t\t\t\tcallNode.arguments,\n\t\t\t\t\t),\n\t\t\t\t\tnode,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn moveComments(ts.visitEachChild(node, replaceSuperCall, context), node);\n\t};\n\n\t/**\n\t * Replace constructor and super call\n\t * @param node child of class expression\n\t * @returns\n\t */\n\tconst transformConstructor = (node: ts.Node): ts.Node => {\n\t\tif (node.kind === ts.SyntaxKind.Constructor) {\n\t\t\tconst constructorNode = node as ts.ConstructorDeclaration;\n\n\t\t\treturn moveComments(\n\t\t\t\tcontext.factory.createMethodDeclaration(\n\t\t\t\t\tconstructorNode.decorators,\n\t\t\t\t\tconstructorNode.modifiers,\n\t\t\t\t\tconstructorNode.asteriskToken,\n\t\t\t\t\t'_init',\n\t\t\t\t\tconstructorNode.questionToken,\n\t\t\t\t\tconstructorNode.typeParameters,\n\t\t\t\t\tconstructorNode.parameters,\n\t\t\t\t\tconstructorNode.type,\n\t\t\t\t\tts.visitEachChild(constructorNode.body, replaceSuperCall, context),\n\t\t\t\t),\n\t\t\t\tnode,\n\t\t\t);\n\t\t}\n\t\treturn node;\n\t};\n\n\t/* transformation function */\n\treturn sourceFile => {\n\t\tconst visitor = (node: ts.Node): ts.Node => {\n\t\t\tif (node.kind === ts.SyntaxKind.CallExpression) {\n\t\t\t\tconst callNode = node as ts.CallExpression;\n\n\t\t\t\tif (callNode.expression.kind === ts.SyntaxKind.Identifier) {\n\t\t\t\t\t/* '... = registerClass(...)' call, e.g, registerClass was named import */\n\t\t\t\t\tif ((callNode.expression as ts.Identifier).text !== 'registerClass') {\n\t\t\t\t\t\treturn moveComments(ts.visitEachChild(node, visitor, context), node);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (callNode.expression.kind === ts.SyntaxKind.PropertyAccessExpression) {\n\t\t\t\t\t/* '... = <module>.registerClass(...)' call, e.g, GObject.registerClass(...) after importing GObject class */\n\t\t\t\t\tconst id = callNode.expression as ts.PropertyAccessExpression;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tid.expression.kind !== ts.SyntaxKind.Identifier ||\n\t\t\t\t\t\tid.name.kind !== ts.SyntaxKind.Identifier ||\n\t\t\t\t\t\t(id.name as ts.Identifier).text !== 'registerClass'\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn moveComments(ts.visitEachChild(node, visitor, context), node);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn moveComments(ts.visitEachChild(node, visitor, context), node);\n\t\t\t\t}\n\n\t\t\t\tif (callNode.arguments.length === 2 && callNode.arguments[1].kind === ts.SyntaxKind.ClassExpression) {\n\t\t\t\t\t// second argument is class expression, registerClass({}, class {}) call\n\t\t\t\t\treturn moveComments(\n\t\t\t\t\t\tcontext.factory.createCallExpression(\n\t\t\t\t\t\t\tcallNode.expression,\n\t\t\t\t\t\t\tcallNode.typeArguments,\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tcallNode.arguments[0],\n\t\t\t\t\t\t\t\tmoveComments(ts.visitEachChild(callNode.arguments[1], transformConstructor, context), callNode.arguments[1]),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t),\n\t\t\t\t\t\tnode,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (callNode.arguments.length === 1 && callNode.arguments[0].kind === ts.SyntaxKind.ClassExpression) {\n\t\t\t\t\t// first argument is class expression, registerClass(class {}) call\n\t\t\t\t\treturn moveComments(\n\t\t\t\t\t\tcontext.factory.createCallExpression(\n\t\t\t\t\t\t\tcallNode.expression,\n\t\t\t\t\t\t\tcallNode.typeArguments,\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tmoveComments(ts.visitEachChild(callNode.arguments[0], transformConstructor, context), callNode.arguments[0]),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t),\n\t\t\t\t\t\tnode,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`registerClass(${printer.printNode(ts.EmitHint.Unspecified, node, sourceFile)})` +\n\t\t\t\t\t'can\\'t have more than 2 argument and last argument should be class expression',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn moveComments(ts.visitEachChild(node, visitor, context), node);\n\t\t};\n\n\t\treturn moveComments(ts.visitEachChild(sourceFile, visitor, context), sourceFile);\n\t};\n};\n\nenum ProgramType {\n\tApp = 'app',\n\tExtension = 'extension',\n}\n\ninterface ProgramOptions {\n\tdir: string,\n\ttype: ProgramType | string,\n}\n\nasync function readCommandLineOptions(): Promise<ProgramOptions> {\n\tconst options = await yargs(hideBin(process.argv))\n\t\t.option('dir', {\n\t\t\talias: 'd',\n\t\t\tdescription: 'Directory of *javascript* files, which will be overwritten',\n\t\t\ttype: 'string',\n\t\t\tdefault: 'build/extension',\n\t\t})\n\t\t.option('type', {\n\t\t\talias: 't',\n\t\t\tchoices: Object.values(ProgramType),\n\t\t\tdescription: 'Is your code gjs-app or extension?',\n\t\t\tdefault: 'extension',\n\t\t})\n\t\t.help()\n\t\t.alias('h', 'help')\n\t\t.parse();\n\n\treturn options;\n}\n\nfunction transpileFiles() {\n\tconst matches = new glob.GlobSync(`${BASEDIR}/**/*.js`);\n\tmatches.found.forEach(file => {\n\t\tconsole.log(`transpiling file: ${file}`);\n\n\t\tconst text = fs.readFileSync(file).toString();\n\t\tlet sourceFile = ts.createSourceFile(file, text, ts.ScriptTarget.ES2018, true, ts.ScriptKind.JS);\n\t\tsourceFile = ts.transform(sourceFile, [transformExports, transformImports, transformGObjectClasses]).transformed[0];\n\t\tfs.writeFileSync(file, printer.printFile(sourceFile));\n\t});\n}\n\nlet BASEDIR = 'build/extension';\nlet ISEXTENSION = true; // is your code for extension?\n\nasync function main() {\n\tconst options = await readCommandLineOptions();\n\tBASEDIR = options.dir;\n\tISEXTENSION = options.type === ProgramType.Extension;\n\ttranspileFiles();\n}\n\nmain();"
  },
  {
    "path": "scripts/updateMetadata.ts",
    "content": "import * as fs from 'fs';\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\ninterface ProgramOptions {\n    inFile: string,\n    descriptionREADMEFile: string,\n    outFile?: string,\n}\n\nasync function readCommandLineOptions(): Promise<ProgramOptions> {\n\tconst options = await yargs(hideBin(process.argv))\n\t\t.option('inFile', {\n\t\t\tdescription: 'Input metadata file',\n\t\t\ttype: 'string',\n\t\t\tdefault: './build/extension/metadata.json',\n\t\t})\n\t\t.option('descriptionREADMEFile', {\n\t\t\tdescription: 'README file for description',\n\t\t\ttype: 'string',\n\t\t\tdefault: './extension_page.md',\n\t\t})\n\t\t.option('outFile', {\n\t\t\tdescription: 'Output metadada file, if not provided input file is modified',\n\t\t\ttype: 'string',\n\t\t\trequiresArg: false,\n\t\t})\n\t\t.help()\n\t\t.parse();\n\n\treturn options;\n}\n\nasync function main() {\n\tconst options = await readCommandLineOptions();\n\toptions.outFile = options.outFile ?? options.inFile;\n\n\tconst metadada =  JSON.parse(fs.readFileSync(options.inFile, 'utf8'));\n\tconst description = fs.readFileSync(options.descriptionREADMEFile, 'utf8');\n\n\tmetadada['description'] = description;\n\n\tfs.writeFileSync(options.outFile, JSON.stringify(metadada, null, 2));\n}\n\nmain();"
  },
  {
    "path": "tests/prefs.ts",
    "content": "/* eslint-disable @typescript-eslint/no-unused-vars */\n\ndeclare const ARGV: string[];\nimports.gi.versions['Gtk'] = '4.0';\n\nimport Gio from '@gi-types/gio2';\nimport GLib from '@gi-types/glib2';\nimport { registerClass } from '@gi-types/gobject2';\n// import Gtk from '@gi-types/gtk4';\nimport Adw from '@gi-types/adw1';\n\n/** Add parent directory of file in searchPath to be able to import files */\nfunction InsertIntoImportsPath() {\n\tconst dirname = Gio.file_new_for_path(imports.system.programPath ?? imports.system.programInvocationName).get_parent()?.get_path();\n\tif (dirname) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t(imports as any).searchPath.unshift(dirname);\n\t}\n}\nInsertIntoImportsPath();\n\nimport { buildPrefsWidget } from './common/prefs';\n\n/** Read metadata of extension file */\nfunction GetExtensionObj(): ExtensionMeta {\n\tconst [_, buffer] = Gio.file_new_for_path('./metadata.json').load_contents(null);\n\tconst metadata = imports.byteArray.toString(buffer);\n\treturn JSON.parse(metadata);\n}\n\n/** Using this function to get all global options into single object */\nfunction GetProgramOptions() {\n\tconst extension = GetExtensionObj();\n\tconst currentDir = GLib.get_current_dir();\n\tconst extensionId = extension['uuid'];\n\tlet schema: string;\n\tif (extension['settings-schema'] === undefined) {\n\t\tthrow new Error('Schema not provided in metadata');\n\t}\n\telse\n\t\tschema = extension['settings-schema'];\n\treturn {\n\t\textensionId,\n\t\t/** updated ui file */\n\t\tuiDir: `${currentDir}/extension/ui`,\n\t\t/** using same schema used by extension to ensure, we can test preference */\n\t\tschemaDir: Gio.file_new_for_path(`${GLib.get_home_dir()}/.local/share/gnome-shell/extensions/${extensionId}/schemas`),\n\t\tschema,\n\t};\n}\n\n\nconst programOptions = GetProgramOptions();\n\n/** Get extension settings */\nfunction getSettings() {\n\tconst GioSSS = Gio.SettingsSchemaSource;\n\n\t/// let it crash,...\n\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\tlet schemaSource = GioSSS.get_default()!;\n\tif (programOptions.schemaDir.query_exists(null)) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tschemaSource = GioSSS.new_from_directory(programOptions.schemaDir.get_path()!, schemaSource, false);\n\t} else {\n\t\tthrow new Error(`Schema Directory '${programOptions.schemaDir.get_path()}' could not be found. Please check your installation`);\n\t}\n\n\tconst schemaObj = schemaSource.lookup(programOptions.schema, true);\n\tif (!schemaObj)\n\t\tthrow new Error(`Schema ${programOptions.schema} could not be found for extension ${programOptions.extensionId}. Please check your installation`);\n\n\treturn new Gio.Settings({ settings_schema: schemaObj });\n}\n\nconst ExampleApp = registerClass(\n\tclass ExampleApp extends Adw.Application {\n\t\tprefsWindow!: Adw.PreferencesWindow;\n\t\tsettings!: Gio.Settings;\n\n\t\tvfunc_startup() {\n\t\t\tsuper.vfunc_startup();\n\t\t\tthis.prefsWindow = new Adw.PreferencesWindow({ application: this });\n\t\t\tthis.settings = getSettings();\n\t\t\tbuildPrefsWidget(this.prefsWindow, this.settings, programOptions.uiDir);\n\t\t}\n\n\t\tvfunc_activate() {\n\t\t\tsuper.vfunc_activate();\n\t\t\tthis.prefsWindow.present();\n\t\t}\n\t},\n);\n\nconst app = new ExampleApp();\napp.run([]);\nlog('App quit');"
  },
  {
    "path": "tests/testing.ts",
    "content": "// // used for testing stuff\n\n// import GLib from '@gi-types/glib2';\n// import Clutter from '@gi-types/clutter';\n// // import Adw from '@gi-types/adw1';\n\n// // const group = new Adw.PreferencesGroup({na})\n\n// const aa = new GLib.Variant<'a{s(ib)}'>('a{s(ib)}', {});\n// const val = aa.deepUnpack();\n// log(aa);\n// log(val);\n\n// log(Clutter.KEY_Tab);\n// console.log('eget');"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n    \"compilerOptions\": {\n        \"strict\": true,\n        \"typeRoots\": [\n            \"./node_modules/@types\",\n            \"./node_modules/@gi-types\"\n        ],\n        \"types\": [\n            \"gjs-environment\",\n            \"base-types\",\n            \"gtk4-types\",\n            \"node\"\n        ],\n        \"lib\": [\n            \"ES2019\"\n        ],\n        \"allowSyntheticDefaultImports\": true,\n        \"rootDir\": \"./\",\n        \"outDir\": \"./build\",\n        \"target\": \"ES6\",\n        \"moduleResolution\": \"Node\",\n        \"skipLibCheck\": true,\n        \"paths\": {\n          \"gnome-shell\": [\n            \"./gnome-shell\"\n          ]\n        },\n    },\n    \"include\": [\n      \"extension/**/*.ts\",\n      \"extension/**/*.js\",\n      \"scripts/**/*.ts\",\n      \"gnome-shell/*.d.ts\",\n      \"tests/**/*.ts\"\n    ]\n}"
  }
]