import * as _capacitor_device from '@capacitor/device';
import * as PIXI from 'pixi.js';
import { Rectangle, Point, AbstractText, AnyTextStyle, AnyTextStyleOptions, Container as Container$1, FederatedPointerEvent, Sprite, Graphics, Texture, NineSliceSprite, DestroyOptions, Optional, Size, ContainerChild, ColorSource, EventMode, Ticker, PointData, TextStyleOptions, Color } from 'pixi.js';
import { Tween } from '@tweenjs/tween.js';
import { Howl } from 'howler';
import { Input as Input$1 } from '@pixi/ui';
import { Signal } from 'typed-signals';
import { AbstractText as AbstractText$1 } from 'pixi.js/lib/scene/text/AbstractText';

interface IAnimatable extends IDestroy {
    get juggler(): GameJuggler | null;
    set juggler(value: GameJuggler | null);
    advanceTime(delta: number): void;
    addToJuggler(): void;
    removeFromJuggler(): void;
    onRemovedFromJuggler(): void;
}
declare class GameDelayCall extends GameObject {
    private readonly _callback;
    private _totalDelta;
    private readonly _endDelta;
    constructor(juggler: GameJuggler, callback: Function, durationSec: number);
    advanceTime(delta: number): void;
}
interface TweenBezier {
    startPoint: {
        x: number;
        y: number;
    };
    endPoint: {
        x: number;
        y: number;
    };
    curviness: number;
}
interface TweenParams {
    [key: string]: any;
    bezier?: TweenBezier;
}
declare class GameTween extends Tween implements IAnimatable, IDestroy {
    private _isDestroyed;
    private _juggler;
    private _targetObject;
    private _isCompleted;
    private _onComplete;
    constructor(target: IDestroy, juggler: GameJuggler);
    get targetObject(): IDestroy | null;
    addToJuggler(): void;
    removeFromJuggler(): void;
    get juggler(): GameJuggler;
    set juggler(value: GameJuggler);
    get destroyed(): boolean;
    start(time?: number, overrideStartingValues?: boolean): this;
    delay(amount: number): this;
    repeatDelay(amount: number): this;
    stop(): this;
    end(): this;
    pause(time?: number): this;
    repeat(times: number): this;
    yoyoFix(easingFunction: (amount: number) => number): this;
    easing(easingFunction: (amount: number) => number): this;
    to(props: TweenParams, duration: number): this;
    calculateMidPoint(startPoint: {
        x: number;
        y: number;
    }, endPoint: {
        x: number;
        y: number;
    }, curviness: number): {
        x: number;
        y: number;
    };
    onRemovedFromJuggler(): void;
    private onCompleteInternal;
    onComplete(callback?: (object: any) => void): this;
    advanceTime(delta: number): void;
    destroy(): void;
}
declare class GameJuggler extends GameObject {
    protected _animates: IAnimatable[];
    readonly root: AbstractPixiRoot;
    constructor(root: AbstractPixiRoot, parentJuggler: GameJuggler | null);
    advanceTime(delta: number): void;
    delayCall(callback: Function, durationSec: number): GameDelayCall;
    tween(target: any, duration: number, params: TweenParams): GameTween;
    removeTweens(animatable?: IAnimatable | null): void;
    removeAnimatable(animatable?: IAnimatable | null): void;
    addAnimatable(animatable: IAnimatable | null): void;
    purge(): void;
    destroy(): void;
}

interface IPoolable extends IDestroy {
    onReturnToPool(): void;
    onGetFromPool(pool: GamePool): void;
}
declare class GamePool extends GameObject {
    private _allObjects;
    private _pool;
    private _creator;
    constructor(creator: () => IPoolable);
    destroy(): void;
    removeFromPool(obj: IPoolable): void;
    returnToPool(obj: IPoolable): void;
    getFromPool(): IPoolable;
    returnAllToPool(): void;
}

interface IDestroy {
    destroy(): void;
    get destroyed(): boolean;
}
declare class GameObject implements IDestroy, IPoolable, IAnimatable {
    protected _isDestroyed: boolean;
    protected _juggler: GameJuggler | null;
    advanceTime(delta: number): void;
    addToJuggler(): void;
    onRemovedFromJuggler(): void;
    removeFromJuggler(): void;
    get juggler(): GameJuggler | null;
    set juggler(value: GameJuggler);
    get destroyed(): boolean;
    static destroy(object: any): null;
    onReturnToPool(): void;
    onGetFromPool(pool: GamePool): void;
    destroy(): void;
}

declare class LibraryText extends GameObject {
    readonly fontName: string;
    readonly root: AbstractPixiRoot;
    constructor(root: AbstractPixiRoot, fontName: string);
    unloadAssets(): void;
    destroy(): void;
    createBitmapText(txt: string, maxWidth: number, maxHeight: number, align?: PIXI.TextStyleAlign, fontSize?: number): PIXI.BitmapText;
    private fitText;
}

declare class GameView extends PIXI.Container implements IDestroy, IAnimatable {
    root: AbstractPixiRoot;
    constructor(...args: any[]);
    onResize(): void;
    set interactive(value: boolean);
    protected get pulsatingDisplayObject(): GameView;
    protected _pulsateTween?: GameTween;
    startPulsating(scaleDiff?: number, time?: number): void;
    continuePulsating(): void;
    stopPulsating(): void;
    protected _juggler?: GameJuggler;
    advanceTime(delta: number): void;
    addToJuggler(): void;
    removeFromJuggler(): void;
    onRemovedFromJuggler(): void;
    get juggler(): GameJuggler;
    set juggler(value: GameJuggler);
    destroyChildren(): void;
    destroy(): void;
}

declare class Placer extends GameView {
    private _content;
    constructor(root: AbstractPixiRoot, x: number, y: number, width: number, height: number, pivotX: number, pivotY: number);
    get content(): GameView;
    clear(): Placer;
    place(child: PIXI.Container): Placer;
    fitWidth(shouldFitIfBigger?: boolean, shouldFitIfSmaller?: boolean): Placer;
    fitHeight(shouldFitIfBigger?: boolean, shouldFitIfSmaller?: boolean): Placer;
    alignLeft(): Placer;
    alignCenter(offsetX?: number, offsetY?: number): Placer;
    alignCenterTop(): Placer;
    alignCenterBottom(): Placer;
    destroy(): void;
}

declare class AtlasTextureMold extends GameObject {
    symbol: string;
    bounds: Rectangle;
    origin: Point;
    tint_color: number;
    static fromJSON(o: Record<string, any>): AtlasTextureMold;
    destroy(): void;
}

declare class AtlasMold extends GameObject {
    private static readonly SCALE_FACTOR;
    file: string;
    atlasTextureMolds: AtlasTextureMold[];
    get scaleFactor(): number;
    static extractScaleFactor(filename: string): number;
    static fromJSON(o: Record<string, any>): AtlasMold;
    static stripDotSuffix(filename: string): string;
    static stripPath(filename: string, separator?: string): string;
    static stripPathAndDotSuffix(filename: string, separator?: string): string;
    destroy(): void;
}

declare class TextureGroupMold extends GameObject {
    scaleFactor: number;
    atlasMolds: AtlasMold[];
    static fromJSON(o: Record<string, any>): TextureGroupMold;
    destroy(): void;
}

declare class LibraryMold extends GameObject {
    movieMolds: MovieMold[];
    textureGroups: TextureGroupMold[];
    static fromJSON(data: Record<string, any>, mult?: number): LibraryMold;
    destroy(): void;
    bestTextureGroupForScaleFactor(scaleFactor: number): TextureGroupMold | null;
    private static compareInts;
}

declare class MovieLayer extends GameObject {
    private _currentDisplay;
    private _displaysByFrames;
    private _library;
    private _layerMold;
    constructor(movie: Movie, layerMold: MovieLayerMold, library: LibraryFlump);
    destroy(): void;
    drawFrame(frameNumber: number): void;
}

declare class Movie extends Container {
    static STOPPED: number;
    static PLAYING: number;
    static FIRST_FRAME: string;
    static LAST_FRAME: string;
    onLabelPassed: ((movie: Movie, label: string) => void) | null;
    onPlayToPositionComplete?: ((movie: Movie) => void) | null;
    protected _stopFrame: number;
    protected _layers: MovieLayer[];
    protected _startFrame: number;
    protected _isPlayRangeLoop: boolean;
    protected _shouldDisposeOnComplete: boolean;
    protected _currentFrame: number;
    protected _numFrames: number;
    constructor(mold: MovieMold, library: LibraryFlump);
    build(): void;
    destroy(): void;
    removeFromParent(): void;
    getFrameForLabel(label: string): number;
    goTo(position: string): void;
    playLoop(): Movie;
    playOnce(shouldDispose: boolean): Movie;
    playRange(positionFrom?: string, positionTo?: string, loop?: boolean, shouldDispose?: boolean): Movie;
    playToPosition(positionTo?: string): Movie;
    stop(): Movie;
    private drawCurrentFrame;
    advanceTime(dt: number): void;
}

interface DisplayObjectFrameState {
    x: number;
    y: number;
    scaleX: number;
    scaleY: number;
    skewX: number;
    skewY: number;
    pivotX: number;
    pivotY: number;
    alpha: number;
    visible: boolean;
}
declare class LibraryFlump extends GameObject {
    static readonly FLUMP_LABEL = "label";
    static readonly FLUMP_CLASS = "CLASS:";
    static readonly FLUMP_PLACER = "PLACER:";
    static readonly FLUMP_CONTENT = "CONTENT";
    static readonly FLUMP_IGNORE = "IGNORE";
    static readonly FLUMP_STATE_UP = "STATE_UP";
    static readonly FLUMP_STATE_DOWN = "STATE_DOWN";
    static readonly FLUMP_BOX = "BOX";
    static readonly FLUMP_CHECK = "CHECK";
    static readonly FLUMP_TEXT = "TEXT:";
    private name;
    private creatorsMap;
    private libraryMold;
    readonly pixiRoot: AbstractPixiRoot;
    constructor(pixiRoot: AbstractPixiRoot);
    unloadAssets(): void;
    init(name: string, libraryMold: LibraryMold): void;
    getMovieMoldBySymbol(symbol: string): MovieMold | null;
    getTexture(name: string): PIXI.Texture | undefined;
    createImage(textureName: string): PIXI.Sprite;
    createMovie(movieName: string): Movie;
    createContainer(containerName: string): Container;
    create(symbolName: string): PIXI.Container<PIXI.ContainerChild>;
    protected createContainerByClassName(className: string, movieMold: MovieMold): Container | null;
    applyFrameState(displayObject: PIXI.Container, state: DisplayObjectFrameState): void;
    destroy(): void;
    private addCreator;
}

declare class KeyframeMold extends GameObject implements DisplayObjectFrameState {
    index: number;
    /** The length of this keyframe in frames. */
    duration: number;
    /** The symbol of the image or movie in this keyframe, or null if there is nothing in it. */
    ref: string | null;
    /** The label on this keyframe, or null if there isn't one */
    label: string | null;
    /** Exploded values from matrix */
    x: number;
    y: number;
    scaleX: number;
    scaleY: number;
    skewX: number;
    skewY: number;
    /** Transformation point */
    pivotX: number;
    pivotY: number;
    alpha: number;
    visible: boolean;
    /** Is this keyframe tweened? */
    tweened: boolean;
    /** Tween easing. Only valid if tweened==true. */
    ease: number;
    static fromJSON(o: Record<string, any>, mult?: number): KeyframeMold;
    private static extractNested;
    private static extract;
}

declare class FrameMold implements DisplayObjectFrameState {
    ref: string | null;
    x: number;
    y: number;
    scaleX: number;
    scaleY: number;
    skewX: number;
    skewY: number;
    pivotX: number;
    pivotY: number;
    alpha: number;
    tintColor: string | null;
    visible: boolean;
}
declare class MovieLayerMold extends GameObject {
    name: string;
    keyframeMolds: KeyframeMold[];
    framesMolds: (FrameMold | null)[];
    get framesCount(): number;
    static fromJSON(o: Record<string, any>, mult?: number): MovieLayerMold;
    private initFrames;
    destroy(): void;
}

declare class MovieMold extends GameObject {
    symbol: string;
    layers: MovieLayerMold[];
    labels: string[];
    get flumpClassLabel(): string;
    getLayerMoldByName(name: string): MovieLayerMold | null;
    static fromJSON(o: Record<string, any>, mult?: number): MovieMold;
    destroy(): void;
    private fillLabels;
}

declare class Container extends GameView {
    protected _mold: MovieMold;
    protected _library: LibraryFlump;
    constructor(mold: MovieMold, library: LibraryFlump);
    clone(): Container;
    getPlacerByLabel(label: string): Placer;
    getMovieByLabel(label: string): Movie;
    getButtonByLabel(label: string): Button;
    getContainerByLabel(label: string): Container;
    getImageByLabel(label: string): PIXI.Sprite;
    build(): void;
    protected createPlacer(layerName: string, firstKeyFrameMold: KeyframeMold): Placer;
    protected createDisplayObject(layerName: string, firstKeyFrameMold: KeyframeMold): PIXI.Container<PIXI.ContainerChild> | null;
}

declare class Button extends Container {
    protected _onClickCallback: Function | null;
    protected _btnContent: Container;
    protected _alreadyClickedOnce: boolean;
    protected _isDown: boolean;
    protected _initialScale: number;
    protected _scaleTween?: GameTween;
    protected _clickDelayCall?: GameDelayCall;
    protected _shimmer: PIXI.Sprite | null;
    protected _shimmerTween: GameTween | null;
    private _text;
    private _textField;
    private _iconTextAlignContainer;
    constructor(mold: MovieMold, library: LibraryFlump);
    destroy(): void;
    startShimmer(): void;
    stopShimmer(): void;
    get pulsatingDisplayObject(): Container;
    get content(): Container;
    protected _shouldClickOnlyOnce: boolean;
    set shouldClickOnlyOnce(value: boolean);
    protected _minDistance: number;
    set minDistance(value: number);
    protected _animTime: number;
    set animTime(value: number);
    protected _clicksBetweenDelay: number;
    get clicksBetweenDelay(): number;
    set clicksBetweenDelay(value: number);
    protected _unTouchAnimTime: number;
    get unTouchAnimTime(): number;
    set unTouchAnimTime(value: number);
    protected _minScale: number;
    set minScale(value: number);
    protected _isEnabled: boolean;
    get isEnabled(): boolean;
    set isEnabled(value: boolean);
    set clickCallback(value: Function | null);
    protected get textPlacer(): Placer;
    protected get animScale(): number;
    setText(txt: string): this;
    build(): void;
    protected initBoundsArea(): void;
    protected onTouch(): void;
    protected onUnTouch(): void;
    protected onScaleTweenComplete(): void;
    protected onTap(event: PIXI.FederatedPointerEvent): void;
    protected onTouched(event: PIXI.FederatedPointerEvent): void;
    protected addClickListener(): void;
    protected removeClickListener(): void;
    protected removeAllTweens(): void;
}

declare class Checkbox extends Container {
    payload: string;
    protected _checkFunction: Function | null;
    protected _bg: PIXI.Container | null;
    protected _check: PIXI.Container | null;
    protected _initialScale: number;
    protected _isDown: boolean;
    protected _isSelected: boolean;
    protected _isEnabled: boolean;
    get isSelected(): boolean;
    set isSelected(value: boolean);
    set checkCallback(value: Function);
    get isEnabled(): boolean;
    set isEnabled(value: boolean);
    build(): void;
    destroy(): void;
    protected addClickListener(): void;
    protected removeClickListener(): void;
    protected onTouched(event: PIXI.FederatedPointerEvent): void;
    protected onTap(event: PIXI.FederatedPointerEvent): void;
    protected onTouch(): void;
    protected onUnTouch(): void;
    protected changeState(): void;
}

declare class ClickArea extends Button {
    constructor(mold: MovieMold, library: LibraryFlump);
    build(): void;
    onTouch(): void;
    onUnTouch(): void;
}

declare class TabButton extends Button {
    protected _upState: PIXI.Container;
    protected _downState: PIXI.Container;
    constructor(mold: MovieMold, library: LibraryFlump);
    protected _isSelected: boolean;
    get isSelected(): boolean;
    set isSelected(value: boolean);
    build(): void;
    destroy(): void;
    protected onTouch(): void;
    protected onUnTouch(): void;
    protected onSelectedStateChange(): void;
}

type GameDispatcherListener = (sender?: GameObject | null, argument?: any | null) => void;
declare class GameDispatcher extends GameObject {
    private _sender?;
    private _listeners?;
    constructor(sender?: any);
    add(listener: GameDispatcherListener, context: any): void;
    remove(listener: GameDispatcherListener): void;
    dispatch(argument?: any): void;
    hasListener(listener: GameDispatcherListener): boolean;
    removeAllListeners(): void;
    destroy(): void;
}

declare class TextInput extends Container {
    static hack_currentInputPlaceholder: string;
    onChange: GameDispatcher;
    onEnter: GameDispatcher;
    protected _input?: Input$1 | null;
    protected _inputText: string;
    protected _inputPlaceholderText: string;
    constructor(mold: MovieMold, library: LibraryFlump);
    get input(): Input$1 | null | undefined;
    get text(): string;
    set text(value: string);
    extractText(): string;
    build(): void;
    destroy(): void;
    protected onInputChange(val: string): void;
    protected onInputEnter(val: string): void;
}

declare class BackgroundEffectParticle extends GameView {
    protected _dx: number;
    protected _dy: number;
    protected _rotSpeed: number;
    constructor(root: AbstractPixiRoot, layerNum: number);
    protected get horizontalForce(): number;
    update(): void;
    protected createParticleImage(): PIXI.Sprite;
}
declare class BackgroundEffect extends GameView {
    private _particles;
    constructor(root: AbstractPixiRoot, particlesCount: number);
    advanceTime(): void;
    destroy(): void;
    protected createParticle(layer: number): BackgroundEffectParticle;
    protected distribution(): number[];
}

declare class SpineMovie extends GameView {
    private readonly _spine;
    private readonly _touchableQuad?;
    private _durationDelayCall?;
    private _currentCallback?;
    constructor(skeleton: string, atlas: string);
    destroy(): void;
    addToJuggler(): void;
    removeFromJuggler(): void;
    advanceTime(time: number): void;
    playLoop(animationName: string, fromDelta?: number): this;
    playOnce(animationName: string, onComplete?: (() => void) | null): SpineMovie;
    playDuration(animationName: string, durationSec: number, onEndCallback: () => void): SpineMovie;
    stop(): this;
    private onAnimationComplete;
}

declare class LibrarySpine extends GameObject {
    private readonly _skeletonName;
    private readonly _atlasName;
    constructor(skeletonName: string, atlasName: string);
    unloadAssets(): void;
    createSpineMovie(): SpineMovie;
    destroy(): void;
}

interface AssetAlias {
    alias: string;
    src: string;
    isMultipack?: boolean;
}
declare class PixiAssetsLoader extends GameObject {
    private static referenceCounter;
    private loadedAssets;
    private onLoadCallbacks;
    private isLoading;
    private loadingQueue;
    private flumpLibs;
    private spineLibs;
    private textLibs;
    private _isLoaded;
    readonly root: AbstractPixiRoot;
    constructor(root: AbstractPixiRoot);
    get isLoaded(): boolean;
    private get assetsScaleFactorPath();
    private get assetsFlumpDirPath();
    private get assetsSpineDirPath();
    getTextLib(libName: string): LibraryText;
    getFlumpLib(libName: string): LibraryFlump;
    getSpineLib(libName: string): LibrarySpine | undefined;
    enqueueFontFace(): Promise<void>;
    enqueueBitmapFont(fontFileName: string): void;
    private static flumpLibJsonFilePrefix;
    enqueueFlumpLib(name: string, isMultiatlas?: boolean, libInstance?: LibraryFlump | null): void;
    private static spineLibJsonFilePrefix;
    private static spineAtlasFilePrefix;
    enqueueSpineLib(name: string): void;
    enqueueAtlas(name: string, isMultiatlas?: boolean): void;
    enqueueFile(alias: AssetAlias): boolean;
    loadAssets(onLoad?: () => void): Promise<void>;
    private replaceFileNameInPath;
    unloadAssets(): Promise<void>;
    getTextureByName(alias: string): PIXI.Texture | undefined;
    unloadAssetByAlias(alias: string): void;
    getObjectByAlias(alias: string): any;
    destroy(): void;
    private incrementReferenceCount;
    private decrementReferenceCount;
}

declare class GameScreen extends GameView {
    assetsLoader: PixiAssetsLoader | null;
    protected _bgImage?: PIXI.Sprite | null;
    protected _bgParticleEffect: BackgroundEffect | null;
    protected _isAdded: boolean;
    constructor();
    getAreaForHtml(): PIXI.Rectangle;
    get screenID(): string;
    destroy(): void;
    onAdded(): Promise<void>;
    getStateDescription(): string;
    loadAssets(onLoad?: () => void): Promise<void>;
    createBg(): void;
    protected getBgTexture(): PIXI.Texture<PIXI.TextureSource<any>> | undefined;
    protected createBgEffect(): void;
    onActivate(): void;
    onDeActivate(): void;
    onExit(): void;
}

declare class GameSplashScreen extends GameScreen {
    onShowed?: Function | null;
    onHide?: Function | null;
    onAdded(): Promise<void>;
    hide(): void;
    protected onShowComplete(): void;
    protected onHideComplete(): void;
}

declare class GameWaiter extends GameView {
    private _blackImage;
    private _spinner;
    private _isShowed;
    private _container;
    private _spinnerTween;
    private _blackTween;
    constructor(root: AbstractPixiRoot, container: PIXI.Container);
    destroy(): void;
    protected createSpinner(): Movie;
    show(): void;
    hide(): void;
}

declare class GameDialog extends GameView {
    static SHOW_TIME: number;
    assetsLoader: PixiAssetsLoader | null;
    protected _waiter: Movie | null;
    protected _dialog: GameView | null;
    protected _blackBack: PIXI.Graphics | null;
    protected _dialogContent: Container | null;
    protected _isInHideProcess: boolean;
    _shouldDisposeCallback?: ((dialog: GameDialog) => void) | null;
    get btnClose(): Button | undefined;
    protected get title(): string | null;
    protected get dialogContentMoldName(): string;
    protected get dialogScale(): number;
    protected get tabletMultiplier(): number;
    protected get backgroundAlpha(): number;
    protected get createDialogLib(): LibraryFlump;
    protected playShowSound(): void;
    loadAssets(onLoaded?: () => void): Promise<void>;
    onAdded(): void;
    destroy(): void;
    showWaiter(): void;
    hideWaiter(): void;
    createDialog(): void;
    show(): void;
    hide(): void;
    onButtonClose(): void;
    protected createBlackBack(): void;
    protected createBackgroundEffect(): void;
    protected createTitle(): void;
    protected getCenterX(): number;
    protected getCenterY(): number;
    protected hideDialog(): void;
    protected onDialogShowEnd(): void;
    protected playCloseSound(): void;
    protected disposeFromNavigator(): void;
    protected hideBlackBack(): void;
}

declare class GameDialogLayer extends GameView {
    hideAllDialogsWithType(dialogType: string): void;
    onResize(): void;
}

declare class GameScreenLayer extends GameView {
    onResize(): void;
}

declare class SplashLayer extends GameView {
    onResize(): void;
}

declare class UILayer extends GameView {
    onResize(): void;
}

declare class WaiterLayer extends GameView {
    onResize(): void;
}

declare class GameScreenNavigator extends GameScreen {
    protected _splashScreenClass: (new () => GameSplashScreen) | null;
    protected _splashScreen: GameSplashScreen | null;
    protected _isScreenChangingProcess: boolean;
    protected _gameWaiter: GameWaiter | null;
    protected _screenLayer: GameScreenLayer;
    protected _uiLayer: UILayer;
    protected _dialogLayer: GameDialogLayer;
    protected _splashLayer: SplashLayer;
    protected _waiterLayer: WaiterLayer;
    protected _incomingScreen: GameScreen | null;
    protected _dialogsQueue: GameDialog[];
    constructor();
    protected _currentScreen: GameScreen | null;
    getAreaForHtml(): Rectangle;
    get currentScreen(): GameScreen | null;
    getScreenFromHierarchy(targetClass: any): any;
    get isLoadingIncomingScreen(): boolean;
    getStateDescription(): string;
    setSplashScreenClass(splashScreenClass: (new () => GameSplashScreen)): void;
    destroy(): void;
    showDialog(dialog: GameDialog, enqueue?: boolean, replaceOthersOfSameType?: boolean): void;
    changeScreen<T extends GameScreen>(screen: T, withSplash: boolean): Promise<void>;
    showWaiter(): void;
    hideWaiter(): void;
    removeAllDialogs(): void;
    destroySplash(): void;
    protected loadIncomingScreen(): void;
    protected onIncomingScreenLoaded(): Promise<void>;
    private onDialogRemove;
    private showSplashScreen;
    onActivate(): void;
    onDeActivate(): void;
    onExit(): void;
    onResize(): void;
}

type PixiAssetsScaleFactor = 2 | 4;
declare abstract class AbstractPixiRoot extends GameScreenNavigator {
    readonly app: AbstractApp;
    readonly pixi: PIXI.Application;
    readonly onScreenHierarchyChanged: GameDispatcher;
    readonly webglcontextlost: GameDispatcher;
    readonly webglcontextrestored: GameDispatcher;
    protected _currentPixiWidth: number;
    protected _currentPixiHeight: number;
    protected _scaleFactor: PixiAssetsScaleFactor;
    protected _fixedStageWidth: number;
    protected _safeAreaTop: number;
    protected _safeAreaBottom: number;
    protected _fixedStageHeight: number;
    protected _isInitialized: boolean;
    protected _pixiContainer: HTMLElement;
    protected _pixiContainerResizeObserver: ResizeObserver | null;
    protected static _isLoadKTX2Initialized: boolean;
    constructor(app: AbstractApp);
    get isInitialized(): boolean;
    destroy(): void;
    get scaleFactor(): PixiAssetsScaleFactor;
    static multiply(scaleFactor: PixiAssetsScaleFactor): 1 | 0.5;
    get fixedStageWidth(): number;
    get fixedStageHeight(): number;
    get safeZoneBottom(): number;
    get safeZoneTop(): number;
    get fixedStageSafeHeight(): number;
    adapt(size: number): number;
    deAdaptsize(size: number): number;
    lock(): void;
    unlock(): void;
    get uiLib(): LibraryFlump;
    get mainTextLib(): LibraryText;
    get dialogTitleTextLib(): LibraryText;
    init(pixiContainer: HTMLElement, options?: {
        backgroundColor: number;
        backgroundAlpha: number;
    }): Promise<void>;
    onResize(): void;
    createTextureByColor(color: PIXI.Color): PIXI.Texture<PIXI.TextureSource<any>>;
}

declare class GameSprite extends PIXI.Sprite implements IDestroy {
    needDestroyTexture: boolean;
    set interactive(value: boolean);
    destroy(): void;
}

declare abstract class AbstractInfoDialog extends GameDialog {
    protected _text: string;
    protected _tf?: AbstractText | null;
    protected _btnCallback?: Function | null;
    constructor(text: string, btnCallback?: Function | null);
    onAdded(): void;
    get tabletMultiplier(): number;
    destroy(): void;
    get dialogContentMoldName(): string;
    getCenterY(): number;
    createDialog(): void;
    protected getText(): string;
    protected getIcon(): PIXI.Container<PIXI.ContainerChild>;
    protected getButtonText(): string;
    protected onButtonClick(): void;
}

declare class QuadtreeNode<T> {
    private topRight;
    private topLeft;
    private bottomRight;
    private bottomLeft;
    private bounds;
    private minimumBounds;
    private objectContainer;
    private objectsInBounds;
    constructor(bounds: PIXI.Rectangle, minimumBounds: PIXI.Point);
    removeObject(object: T): void;
    private objectInBoundsHelper;
    objectInBounds(checkingBounds: PIXI.Rectangle): T[];
    insert(object: T, objectBounds: PIXI.Rectangle): QuadtreeNode<T> | null;
    getObjects(): T[];
    getBounds(): PIXI.Rectangle;
}

declare class Quadtree<T> {
    private root;
    private bounds;
    private minimumBounds;
    private objectNodeMapping;
    constructor(minX: number, minY: number, maxX: number, maxY: number, minimumSize?: number);
    insert(object: T, bounds: Rectangle): boolean;
    nodeForObject(object: T): QuadtreeNode<T> | undefined;
    remove(object: T): boolean;
    update(object: T, bounds: Rectangle): void;
    objectsInRectangle(rectangle: Rectangle): T[];
    getRoot(): QuadtreeNode<T>;
}

declare class GameQuadtreeView extends GameView {
    private _quadtree;
    private _viewport;
    private _quadChildren;
    private _childrenPositions;
    private _invalidated;
    constructor(worldSpace: PIXI.Rectangle, maintainOrder?: boolean);
    advanceTime(delta: number): void;
    updateChild(child: PIXI.Container): void;
    addChild<U extends (PIXI.IRenderLayer | PIXI.ContainerChild)[]>(...children: U): U[0];
    addChildAt<U extends PIXI.IRenderLayer | PIXI.ContainerChild>(child: U, index: number): U;
    removeChild<U extends (PIXI.IRenderLayer | PIXI.ContainerChild)[]>(...children: U): U[0];
    get visibleViewport(): PIXI.Rectangle;
    get quadtree(): Quadtree<PIXI.Container<PIXI.ContainerChild>>;
    get width(): number;
    get height(): number;
    updateViewport(viewport: PIXI.Rectangle, force?: boolean): void;
    private updateChildrenPositions;
}

type PixiText = AbstractText;
type AnyText = string | number | PixiText;
type PixiTextClass = new ({ text, style, }: {
    text: string;
    style?: PixiTextStyle;
    [x: string]: any;
}) => PixiText;
type PixiTextStyle = AnyTextStyle | Partial<AnyTextStyleOptions>;
declare function getTextView(text: AnyText): PixiText;

/** TODO */
interface DragObject extends Container$1 {
    dragData: FederatedPointerEvent;
    dragging: number;
    dragPointerStart: Container$1;
    dragObjStart: Point;
    dragGlobalStart: Point;
}
declare const BUTTON_EVENTS: string[];
type ButtonEvent = (typeof BUTTON_EVENTS)[number];
type Padding = number | [number, number] | [number, number, number, number] | {
    left?: number;
    right?: number;
    top?: number;
    bottom?: number;
};

type ViewType = Sprite | Graphics | Texture | string;
type InputOptions = {
    bg: ViewType;
    textStyle: PixiTextStyle;
    TextClass: PixiTextClass;
    placeholder: string;
    value: string;
    maxLength: number;
    secure: boolean;
    align: 'left' | 'center' | 'right';
    padding: Padding;
    cleanOnFocus: boolean;
    nineSliceSprite: [number, number, number, number];
    addMask: boolean;
};
/**
 * Container-based component that creates an input to read the user's text.
 * @example
 * new Input({
 *     bg: Sprite.from('input.png'),
 *     placeholder: 'Enter text',
 *     padding: {
 *      top: 11,
 *      right: 11,
 *      bottom: 11,
 *      left: 11
 *     } // alternatively you can use [11, 11, 11, 11] or [11, 11] or just 11
 * });
 */
declare class Input extends Container$1 {
    protected _bg: Container$1 | NineSliceSprite | Graphics;
    protected inputMask?: Container$1 | NineSliceSprite | Graphics;
    protected _cursor?: Sprite;
    protected _value: string;
    protected _secure: boolean;
    protected inputField?: PixiText;
    protected placeholder?: PixiText;
    protected editing: boolean;
    protected tick: number;
    protected lastInputData: string | null;
    protected activation: boolean;
    protected readonly options: InputOptions;
    protected input: HTMLInputElement | null;
    protected handleActivationBinding: () => void;
    protected onKeyUpBinding: (e: KeyboardEvent) => void;
    protected stopEditingBinding: () => void;
    protected onInputBinding: (e: InputEvent) => void;
    protected onPasteBinding: (e: any) => void;
    /** Fires when input loses focus. */
    onEnter: Signal<(text: string) => void>;
    /** Fires every time input string is changed. */
    onChange: Signal<(text: string) => void>;
    /** Top side padding */
    paddingTop: number;
    /** Right side padding */
    paddingRight: number;
    /** Bottom side padding */
    paddingBottom: number;
    /** Left side padding */
    paddingLeft: number;
    /**
     * Creates an input.
     * @param { number } options - Options object to use.
     * @param { Sprite | Graphics | Texture | string } options.bg - Background of the Input.
     * <br> Can be a string (name of texture) or an instance of Texture, Sprite or Graphics.
     * <br> If you want to use NineSliceSprite, you have to pass a text (name of texture)
     * or an instance of Texture as a parameter.
     * @param { PixiTextStyle } options.textStyle - Text style of the Input.
     * @param { string } options.placeholder - Placeholder of the Input.
     * @param { string } options.value - Value of the Input.
     * @param { number } options.maxLength - Max length of the Input.
     * @param { 'left' | 'center' | 'right' } options.align - Align of the Input.
     * @param { Padding } options.padding - Padding of the Input.
     * @param { number } options.padding.top - Top padding of the Input.
     * @param { number } options.padding.right - Right padding of the Input.
     * @param { number } options.padding.bottom - Bottom padding of the Input.
     * @param { number } options.padding.left - Left padding of the Input.
     * @param { boolean } options.cleanOnFocus - Clean Input on focus.
     * @param { boolean } options.addMask - Add mask to the Input text, so it is cut off when it does not fit.
     * @param { Array } options.nineSliceSprite - NineSliceSprite values for bg and fill ([number, number, number, number]).
     * <br> <b>!!! IMPORTANT:</b> To make it work, you have to pass a texture name or texture instance as a bg parameter.
     */
    constructor(options: InputOptions);
    protected onInput(e: InputEvent): void;
    protected onKeyUp(e: KeyboardEvent): void;
    protected init(): void;
    set bg(bg: ViewType);
    get bg(): Container$1 | string;
    protected _add(key: string): void;
    protected _delete(): void;
    protected _startEditing(): void;
    protected createInputField(): void;
    protected handleActivation(): void;
    protected stopEditing(): void;
    protected update(dt: number): void;
    protected align(): void;
    protected getAlign(): 0 | 1 | 0.5;
    protected getCursorPosX(): number;
    /** Sets the input text. */
    set value(text: string);
    /** Return text of the input. */
    get value(): string;
    set secure(val: boolean);
    get secure(): boolean;
    /**
     * Set paddings
     * @param value - number, array of 4 numbers or object with keys: top, right, bottom, left
     * or: [top, right, bottom, left]
     * or: [top&bottom, right&left]
     * or: {
     *  left: 10,
     *  right: 10,
     *  top: 10,
     *  bottom: 10,
     * }
     */
    set padding(value: Padding);
    get padding(): [number, number, number, number];
    destroy(options?: DestroyOptions | boolean): void;
    /**
     * Sets width of a Input.
     * If nineSliceSprite is set, then width will be set to nineSliceSprite.
     * If nineSliceSprite is not set, then width will control components width as Container.
     * @param width - Width value.
     */
    set width(width: number);
    /** Gets width of Input. */
    get width(): number;
    /**
     * Sets height of a Input.
     * If nineSliceSprite is set, then height will be set to nineSliceSprite.
     * If nineSliceSprite is not set, then height will control components height as Container.
     * @param height - Height value.
     */
    set height(height: number);
    /** Gets height of Input. */
    get height(): number;
    setSize(value: number | Optional<Size, 'height'>, height?: number): void;
    protected createInputMask(bg: ViewType): void;
    protected updateInputMaskSize(): void;
    protected onPaste(e: any): void;
}

type ListType = 'horizontal' | 'vertical';
type ListOptions<C extends ContainerChild = ContainerChild> = {
    elementsMargin?: number;
    children?: C[];
    padding?: number;
    vertPadding?: number;
    horPadding?: number;
    topPadding?: number;
    bottomPadding?: number;
    leftPadding?: number;
    rightPadding?: number;
    items?: C[];
};
/**
 * Container-based component for arranging Pixi containers one after another based on their sizes.
 *
 * Type option is used to set the direction of the arrangement.
 *
 * If type is not specified, it will be acting like a bidirectional, items will be arranged to fit horizontally,
 * after there is no space left, new line will be started, so items will be arranged like `inline-block` in css.
 *
 * It is used inside elements with repeatable content, like {@link Select} or {@link ScrollBox}.
 * @example
 * const list = new List({
 *    children: [
        new Graphics().rect(0, 0, 50, 50).fill(0x000000),
        new Graphics().rect(0, 0, 50, 50).fill(0xFFFFFF),
 *    ],
 * });
 *
 * list.addChild(new Graphics().rect(0, 0, 50, 50)).fill(0x000000);
 */
declare class List<C extends ContainerChild = ContainerChild> extends Container$1<C> {
    protected options?: {
        type?: ListType;
    } & ListOptions<C>;
    /** Container, that holds all inner elements. */
    view: Container$1;
    /** Arrange direction. */
    protected _type: ListType;
    /** Returns all arranged elements. */
    readonly children: C[];
    constructor(options?: {
        type?: ListType;
    } & ListOptions<C>);
    /**
       * Initiates list component.
       * @param options
       */
    init(options?: {
        type?: ListType;
    } & ListOptions<C>): void;
    /**
     * Set items arrange direction.
     * @param type - Arrange direction.
     */
    set type(type: ListType);
    /**
     * Get items arrange direction.
     * @returns Arrange direction.
     */
    get type(): ListType;
    /**
     * Set element margin.
     * @param margin - Margin between elements.
     */
    set elementsMargin(margin: number);
    /**
     * Get element margin.
     * @returns Margin between elements.
     */
    get elementsMargin(): number;
    /**
     * Set padding, overriding all padding options.
     * @param padding - Padding surrounding list elements and its border.
     */
    set padding(padding: number);
    /**
     * Get padding.
     * @returns Padding surrounding list elements and its border.
     */
    get padding(): number;
    /**
     * Set vertical padding, overriding all top and bottom padding options.
     * @param padding - Vertical padding between list border and its elements.
     */
    set vertPadding(padding: number);
    /**
     * Get vertical padding.
     * @returns Vertical padding between list border and its elements.
     */
    get vertPadding(): number;
    /**
     * Set horizontal padding, overriding all left and right padding options.
     * @param padding - Horizontal padding between list border and its elements.
     */
    set horPadding(padding: number);
    /**
     * Get horizontal padding.
     * @returns Horizontal padding between list border and its elements.
     */
    get horPadding(): number;
    /**
     * Set left padding.
     * @param padding - Left padding between list border and its elements.
     */
    set leftPadding(padding: number);
    /**
     * Get left padding.
     * @returns Left padding between list border and its elements.
     */
    get leftPadding(): number;
    /**
     * Set right padding.
     * @param padding - Right padding between list border and its elements.
     */
    set rightPadding(padding: number);
    /**
     * Get right padding.
     * @returns Right padding between list border and its elements.
     */
    get rightPadding(): number;
    /**
     * Set top padding.
     * @param padding - Top padding between list border and its elements.
     */
    set topPadding(padding: number);
    /**
     * Get top padding.
     * @returns Top padding between list border and its elements.
     */
    get topPadding(): number;
    /**
     * Set bottom padding.
     * @param padding - Bottom padding between list border and its elements.
     */
    set bottomPadding(padding: number);
    /**
     * Get bottom padding.
     * @returns Bottom padding between list border and its elements.
     */
    get bottomPadding(): number;
    /**
     * Arrange all elements basing in their sizes and component options.
     * Can be arranged vertically, horizontally or bidirectional.
     */
    arrangeChildren(): void;
    /**
     * Removes items from the list. (Does not destroy them)
     * @param itemID - Item to remove (starting from 0).
     */
    removeItem(itemID: number): void;
}

interface SlidingNumberOptions {
    constrain?: boolean;
    maxSpeed?: number;
    ease?: ConstrainEase;
    disableDragOutOfBounce?: boolean;
}
interface ConstrainEase {
    done: boolean;
    to: number;
    start(speed: number, pos: number, to: number): void;
    update(): number;
}
declare class SlidingNumber {
    position: number;
    constrain: boolean;
    min: number;
    max: number;
    maxSpeed: number;
    disableDragOutOfBounce: boolean;
    protected _ease: ConstrainEase;
    protected _offset: number;
    protected _prev: number;
    protected _speed: number;
    protected _hasStopped: boolean;
    protected _targetSpeed: number;
    protected _speedChecker: number;
    protected _grab: number;
    protected _activeEase: ConstrainEase | null;
    constructor(options?: SlidingNumberOptions);
    set value(n: number);
    get value(): number;
    grab(offset: number): void;
    hold(newPosition: number): void;
    slide(instant?: boolean): void;
    get moveAmount(): number;
    protected _updateDefault(): void;
    protected _updateConstrain(instant?: boolean): void;
}

interface TrackpadOptions {
    /** override the easing function when constraining */
    xEase?: ConstrainEase;
    yEase?: ConstrainEase;
    maxSpeed?: number;
    constrain?: boolean;
    disableEasing?: boolean;
    disableDragOutOfBounce?: boolean;
}
/** Easing controller for the {@link ScrollBox}. */
declare class Trackpad {
    xAxis: SlidingNumber;
    yAxis: SlidingNumber;
    protected _isDown: boolean;
    protected _globalPosition: Point;
    protected _frame: Rectangle;
    protected _bounds: Rectangle;
    protected _dirty: boolean;
    protected disableEasing: boolean;
    constructor(options: TrackpadOptions);
    pointerDown(pos: Point): void;
    pointerUp(): void;
    pointerMove(pos: Point): void;
    update(): void;
    resize(w: number, h: number): void;
    setBounds(minX: number, maxX: number, minY: number, maxY: number): void;
    get x(): number;
    get y(): number;
}

type ScrollBoxOptions = {
    width: number;
    height: number;
    background?: ColorSource;
    type?: ListType;
    radius: number;
    disableDynamicRendering?: boolean;
    disableEasing?: boolean;
    disableDragOutOfBounce?: boolean;
    dragTrashHold?: number;
    globalScroll?: boolean;
    shiftScroll?: boolean;
    proximityRange?: number;
    proximityDebounce?: number;
    disableProximityCheck?: boolean;
} & Omit<ListOptions, 'children'>;
type ProximityEventData = {
    item: Container$1;
    index: number;
    inRange: boolean;
};
/**
 * Scrollable view, for arranging lists of Pixi container-based elements.
 *
 * Items, that are out of the visible area, are not rendered by default.
 * This behavior can be changed by setting 'disableDynamicRendering' option to true.
 * @example
 * new ScrollBox({
 *     background: 0XFFFFFF,
 *     width: 200,
 *     height: 300,
 *     items: [
 *         new Graphics().drawRect(0, 0, 200, 50).fill(0x000000),
 *         new Graphics().drawRect(0, 0, 200, 50).fill(0x000000),
 *         new Graphics().drawRect(0, 0, 200, 50).fill(0x000000),
 *         new Graphics().drawRect(0, 0, 200, 50).fill(0x000000),
 *         new Graphics().drawRect(0, 0, 200, 50).fill(0x000000),
 *         new Graphics().drawRect(0, 0, 200, 50).fill(0x000000),
 *         new Graphics().drawRect(0, 0, 200, 50).fill(0x000000),
 *     ],
 * });
 */
declare class ScrollBox extends Container$1 {
    protected background: Graphics;
    protected borderMask: Graphics;
    protected lastWidth: number;
    protected lastHeight: number;
    protected __width: number;
    protected __height: number;
    protected _dimensionChanged: boolean;
    protected list: List;
    protected _trackpad: Trackpad;
    get trackpad(): Trackpad;
    protected isDragging: number;
    protected interactiveStorage: {
        item: Container$1;
        eventMode?: EventMode;
    }[];
    protected visibleItems: Container$1[];
    protected pressedChild: Container$1 | null;
    protected ticker: Ticker;
    protected options: ScrollBoxOptions;
    protected stopRenderHiddenItemsTimeout?: any;
    protected onMouseScrollBinding: (event: WheelEvent) => void;
    protected dragStarTouchPoint: Point;
    protected isOver: boolean;
    protected proximityRange: number;
    protected proximityStatusCache: boolean[];
    protected lastScrollX: number | null;
    protected lastScrollY: number | null;
    protected proximityCheckFrameCounter: number;
    onProximityChange: Signal<(data: ProximityEventData) => void>;
    onScroll: Signal<(value: number) => void>;
    /**
     * @param options
     * @param {number} options.background - background color of the ScrollBox.
     * @param {number} options.width - width of the ScrollBox.
     * @param {number} options.height - height of the ScrollBox.
     * @param {number} options.radius - radius of the ScrollBox and its masks corners.
     * @param {number} options.elementsMargin - margin between elements.
     * @param {number} options.vertPadding - vertical padding of the ScrollBox.
     * @param {number} options.horPadding - horizontal padding of the ScrollBox.
     * @param {number} options.padding - padding of the ScrollBox (same horizontal and vertical).
     * @param {boolean} options.disableDynamicRendering - disables dynamic rendering of the ScrollBox,
     * so even elements the are not visible will be rendered. Be careful with this options as it can impact performance.
     * @param {boolean} [options.globalScroll=true] - if true, the ScrollBox will scroll even if the mouse is not over it.
     * @param {boolean} [options.shiftScroll=false] - if true, the ScrollBox will only scroll horizontally if the shift key
     * is pressed, and the type is set to 'horizontal'.
     */
    constructor(options?: ScrollBoxOptions);
    /**
     * Initiates ScrollBox.
     * @param options
     * @param {number} options.background - background color of the ScrollBox.
     * @param {number} options.width - width of the ScrollBox.
     * @param {number} options.height - height of the ScrollBox.
     * @param {number} options.radius - radius of the ScrollBox and its masks corners.
     * @param {number} options.elementsMargin - margin between elements.
     * @param {number} options.vertPadding - vertical padding of the ScrollBox.
     * @param {number} options.horPadding - horizontal padding of the ScrollBox.
     * @param {number} options.padding - padding of the ScrollBox (same horizontal and vertical).
     * @param {boolean} options.disableDynamicRendering - disables dynamic rendering of the ScrollBox,
     * so even elements the are not visible will be rendered. Be careful with this options as it can impact performance.
     * @param {boolean} [options.globalScroll=true] - if true, the ScrollBox will scroll even if the mouse is not over it.
     * @param {boolean} [options.shiftScroll=false] - if true, the ScrollBox will only scroll horizontally if the shift key
     */
    init(options: ScrollBoxOptions): void;
    protected get hasBounds(): boolean;
    /**
     *  Adds array of items to a scrollable list.
     * @param {Container[]} items - items to add.
     */
    addItems(items: Container$1[]): void;
    /** Remove all items from a scrollable list. */
    removeItems(): void;
    /**
     * Adds one or more items to a scrollable list.
     * @param {Container} items - one or more items to add.
     */
    addItem<T extends Container$1[]>(...items: T): T[0];
    /**
     * Removes an item from a scrollable list.
     * @param {number} itemID - id of the item to remove.
     */
    removeItem(itemID: number): void;
    /**
     * Checks if the item is visible or scrolled out of the visible part of the view.* Adds an item to a scrollable list.
     * @param {Container} item - item to check.
     * @param padding - proximity padding to consider the item visible.
     */
    isItemVisible(item: Container$1, padding?: number): boolean;
    /**
     * Returns all inner items in a list.
     * @returns {Array<Container> | Array} - list of items.
     */
    get items(): Container$1[] | [];
    /**
     * Set ScrollBox background.
     * @param {number | string} background - background color or texture.
     */
    setBackground(background?: ColorSource): void;
    protected addMask(): void;
    protected makeScrollable(): void;
    protected setInteractive(interactive: boolean): void;
    protected get listHeight(): number;
    protected get listWidth(): number;
    /**
     * Controls item positions and visibility.
     * @param force
     */
    resize(force?: boolean): void;
    protected onMouseScroll(event: WheelEvent): void;
    /** Makes it scroll down to the last element. */
    scrollBottom(): void;
    /** Makes it scroll up to the first element. */
    scrollTop(): void;
    protected renderAllItems(): void;
    protected stopRenderHiddenItems(): void;
    protected updateVisibleItems(): void;
    /**
     * Scrolls to the element with the given ID.
     * @param elementID
     */
    scrollTo(elementID: number): void;
    /**
     * Scrolls to the given position.
     * @param position - x and y position object.
     * @param position.x - x position.
     * @param position.y - y position.
     */
    scrollToPosition({ x, y }: Partial<PointData>): void;
    /** Gets component height. */
    get height(): number;
    set height(value: number);
    /** Gets component width. */
    get width(): number;
    set width(value: number);
    setSize(value: number | Optional<Size, 'height'>, height?: number): void;
    getSize(out?: Size): Size;
    /** Gets the current raw scroll position on the x-axis (Negated Value). */
    get scrollX(): number;
    /** Sets the current raw scroll position on the x-axis (Negated Value). */
    set scrollX(value: number);
    /** Gets the current raw scroll position on the y-axis (Negated Value). */
    get scrollY(): number;
    /** Sets the current raw scroll position on the y-axis (Negated Value). */
    set scrollY(value: number);
    protected update(): void;
    /**
     * Destroys the component.
     * @param {boolean | DestroyOptions} [options] - Options parameter.
     * A boolean will act as if all options have been set to that value
     */
    destroy(options?: DestroyOptions | boolean): void;
    protected restoreItemsInteractivity(): void;
    protected revertClick(item: Container$1): void;
    get scrollHeight(): number;
    get scrollWidth(): number;
}

declare function cleanup(element: Container$1): void;

declare function fitToView(parent: Container$1, child: Container$1, padding?: number, uniformScaling?: boolean): void;

declare function centerElement(view: Container$1, horPos?: number, verPos?: number): void;
declare function centerView(view: Container$1): void;

declare const defaultTextStyle: TextStyleOptions;

type GetViewSettings = string | Texture | Container$1 | Sprite | Graphics;
declare function getView(view: GetViewSettings): Container$1 | Sprite | Graphics;

interface SpringOptions {
    max: number;
    damp: number;
    springiness: number;
}
declare class Spring {
    x: number;
    ax: number;
    dx: number;
    tx: number;
    protected _options: SpringOptions;
    constructor(options?: SpringOptions);
    update(): void;
    reset(): void;
    get max(): number;
    set max(value: number);
    get damp(): number;
    set damp(value: number);
    get springiness(): number;
    set springiness(value: number);
}

declare enum ScaleMode {
    SHOW_ALL = "SHOW_ALL",
    NO_BORDER = "NO_BORDER"
}
declare class RectangleUtils {
    static fitRectangle(source: PIXI.Rectangle, target: PIXI.Rectangle, scaleMode: ScaleMode): PIXI.Rectangle;
}

declare enum Align {
    LEFT = "left",
    CENTER = "center",
    RIGHT = "right",
    TOP = "top",
    BOTTOM = "bottom"
}
declare class ViewUtils {
    static getVisibleGap(containerA: PIXI.Container, containerB: PIXI.Container): {
        horizontal: number;
        vertical: number;
    };
    static alignPivot(displayObject: PIXI.Container | null | undefined, horizontalAlign?: Align, verticalAlign?: Align): void;
    static isEqualRects(rect1?: PIXI.Rectangle, rect2?: PIXI.Rectangle): boolean;
    static putOnTop(view?: PIXI.Container | null): void;
    static fitToWidth(fitDisplayObject: PIXI.Container | AbstractText$1 | null | undefined, fitWidth: number, fitIfBigger?: boolean, fitIfSmaller?: boolean): void;
    static fitToHeight(fitDisplayObject: PIXI.Container | AbstractText$1 | null | undefined, fitHeight: number, fitIfBigger?: boolean, fitIfSmaller?: boolean): void;
    static createRoundedRect(width: number | undefined, height: number | undefined, color: Color, cornerRadius: number, lineWidth: number | undefined, lineColor: Color): PIXI.Graphics;
    static createRect(width?: number, height?: number, color?: string): PIXI.Graphics;
}

declare class DeviceDetectorService {
    private userAgent;
    constructor();
    isMobile(): boolean;
    isTablet(): boolean;
    isDesktop(): boolean;
    getDeviceType(): 'mobile' | 'tablet' | 'desktop';
    getOS(): string;
    getBrowser(): string;
    getInfo(): {
        userAgent: string;
        deviceType: "mobile" | "tablet" | "desktop";
        os: string;
        browser: string;
    };
}
declare class DeviceManager {
    readonly onAppUrlOpenWithUrl: GameDispatcher;
    readonly onActivateEvent: GameDispatcher;
    readonly onDeactivateEvent: GameDispatcher;
    readonly onWindowResize: GameDispatcher;
    readonly onExit: GameDispatcher;
    private _deviceLanguageCode;
    private _isAndroid;
    private _isIOS;
    private _isTablet;
    private _isDesktop;
    private _isMobile;
    private _deviceName;
    private _deviceModel;
    private _deviceManufacturer;
    private _deviceOSName;
    private _deviceOperatingSystem;
    private _deviceOSVersion;
    private _appOpenWithUrl;
    private _safeAreaTop;
    private _safeAreaBottom;
    private _resizeDebounceTimerId;
    private _resizeDebounceTime;
    private _lastWindowWidth;
    private _lastWindowHeight;
    init(): Promise<void>;
    get isPortrait(): boolean;
    get isLandscape(): boolean;
    get devicePixelRatio(): number;
    private checkWindowResize;
    private updateSafeArea;
    get safeAreaTop(): number;
    get safeAreaBottom(): number;
    private onActivate;
    private onDeactivate;
    forceExit(): void;
    private waitForDOMReady;
    get appOpenWithUrl(): string;
    get deviceLanguageCode(): string;
    get deviceName(): string;
    get deviceOperatingSystem(): string;
    get deviceModel(): string;
    get deviceManufacturer(): string;
    get deviceOSName(): string;
    get deviceOSVersion(): string;
    get isTablet(): boolean;
    get isDesktop(): boolean;
    get isMobile(): boolean;
    get isAndroid(): boolean;
    get isIOS(): boolean;
    getDeviceId(): Promise<_capacitor_device.DeviceId>;
    getPersistentSecureDeviceId(): Promise<string>;
    getDeviceInfo(): Promise<_capacitor_device.DeviceInfo>;
    getLanguageCode(): Promise<_capacitor_device.GetLanguageCodeResult>;
}

declare abstract class AbstractPreferencesManager {
    protected setBoolValue(key: string, value: true | false): Promise<void>;
    protected getBoolValue(key: string): Promise<boolean>;
    protected setValue(key: string, value: string): Promise<void>;
    protected getValue(key: string): Promise<string | null>;
    protected removeValue(key: string): Promise<void>;
}

declare class SoundManager extends AbstractPreferencesManager {
    static SOUND_VOLUME: number;
    static MUSIC_VOLUME: number;
    static Click: string;
    static DialogOpen: string;
    static DialogClose: string;
    protected howlerSoundPool: Map<string, Howl>;
    protected howlMusic: Howl | null;
    protected musicName: string;
    protected soundLastPlayed: Map<string, number>;
    readonly app: AbstractApp;
    protected static SOUND_MUTED_KEY: string;
    protected static MUSIC_MUTED_KEY: string;
    protected _soundMuted: boolean;
    protected _musicMuted: boolean;
    protected _needPersistence: boolean;
    constructor(app: AbstractApp, needPersistence: boolean);
    init(): Promise<void>;
    playSound(soundName: string, timeGapBetweenNextSameSound?: number): Promise<void>;
    onActivate(): Promise<void>;
    onDeActivate(): Promise<void>;
    playMusic(musicName: string): void;
    unloadMusic(): void;
    unloadSounds(): void;
    get soundMuted(): boolean;
    set soundMuted(value: boolean);
    unmute(): Promise<void>;
    mute(): Promise<void>;
}

declare class ErrorInfo {
    [key: string]: any;
    isUncaught: true | false;
    listener: string;
    message: string;
    stackTrace?: string | undefined;
    name?: string | undefined;
    date?: string | undefined;
    deviceModel?: string | undefined;
    deviceName?: string | undefined;
    deviceManufacturer?: string | undefined;
    deviceOSName?: string | undefined;
    deviceOSVersion?: string | undefined;
    deviceOSType?: string | undefined;
}
declare class ErrorManager {
    readonly app: AbstractApp;
    private _isUncaughtErrorOccurred;
    private _onError;
    constructor(app: AbstractApp);
    get isUncaughtErrorOccurred(): boolean;
    handleCaughtError(error: any, devMessage?: string): void;
    private handleUncaughtError;
    init(onError: (errorInfo: ErrorInfo) => void): void;
    private addDeviceInfoToReport;
}

declare class NetworkManager {
    private _networkChangeEvent;
    private networkListener?;
    constructor();
    init(): Promise<void>;
    startListening(): Promise<void>;
    stopListening(): void;
    isReachable(): Promise<boolean>;
    get networkChangeEvent(): GameDispatcher;
    private networkChangeHandler;
}

declare class LocaleManager extends AbstractPreferencesManager {
    static readonly en = "en";
    static readonly es = "es";
    static readonly fr = "fr";
    static readonly de = "de";
    static readonly ru = "ru";
    static readonly uk = "uk";
    static readonly pl = "pl";
    static readonly pt = "pt";
    readonly languagesNames: {
        en: string;
        es: string;
        fr: string;
        de: string;
        ru: string;
        uk: string;
        pl: string;
        pt: string;
    };
    readonly app: AbstractApp;
    readonly needPersistence: boolean;
    readonly supportedLanguages: string[];
    protected static LANG_CODE_KEY: string;
    protected _currentLangCode: string;
    constructor(app: AbstractApp, needPersistence: boolean, supportedLanguages: string[]);
    init(): Promise<void>;
    getText(localeObject: Record<string, string>, innerTxt?: string | null, innerTxt2?: string | null): string;
    getLang(): string;
    setLang(value: string): Promise<void>;
}

declare abstract class AbstractApp {
    readonly onRouteChange: GameDispatcher;
    device: DeviceManager;
    sound: SoundManager;
    error: ErrorManager;
    network: NetworkManager;
    locale: LocaleManager;
    private _tasksQueue;
    private _isAppActive;
    private _isExecuting;
    private _currentRoute;
    private _currentRouteQuery;
    private _forceChangeRouteCallback;
    get isDevMode(): boolean;
    get currentRoute(): string | null;
    get currentRouteQuery(): Record<string, string> | null;
    set forceChangeRouteCallback(value: ((route: string, query: Record<string, string>) => void) | null);
    onRouteChanged(route: string, query: Record<string, string>): void;
    forceChangeRoute(route: string, query: Record<string, string>): void;
    log(...args: any[]): void;
    logError(...args: any[]): void;
    init(managers: {
        locale?: LocaleManager;
        error?: ErrorManager;
        device?: DeviceManager;
        sound?: SoundManager;
        network?: NetworkManager;
    }): Promise<void>;
    protected onError(errorInfo: ErrorInfo): void;
    navigateToURL(url: string): void;
    executeWhenApplicationIsActive(callback: Function): void;
    private onActivate;
    private onDeactivate;
    private processQueue;
}

declare class ArrayUtils {
    static remove(array?: any[] | undefined | null, element?: any): void;
    static removeAt(array: any[], index: number): any;
    static clear(array?: any[] | null): null;
    static getRandomEvenIndex<T>(collection: T[]): number;
    static filterBoolean<T>(array: T[]): T[];
    static shuffle(array: any[]): void;
    static getRandomElement(array: any[] | null | undefined): any;
}

declare class DateUtils {
    static readonly MINUTE: number;
    static readonly HOUR: number;
    static readonly DAY: number;
    private static readonly dateTime;
    private static readonly dateTimestamp;
    static get currentUTCDate(): Date;
    static get currentDateFormatted(): string;
    static get currentTime(): number;
    static msToSeconds(ms: number): number;
    static msToMinutes(ms: number): number;
    static msToHours(ms: number): number;
    static secondsToDays(sec: number): number;
    static hoursToSeconds(hours: number): number;
    static hoursToMinutes(hours: number): number;
    static daysToMs(days: number): number;
    static daysToMinutes(days: number): number;
    static minutesToSeconds(min: number): number;
    static hoursToMS(hours: number): number;
    static minutesToMs(min: number): number;
    static secondsToMs(sec: number): number;
    static getDaysBetween(d1: Date, d2: Date): number;
    static getTimeString(index: number, fps: number): string;
    static getTimeStringFromSeconds(seconds: number): string;
    static getNowTimeString(): string;
    static getTimeBetween(d1: Date, d2: Date): number;
    static isNextDay(d1: Date, d2: Date): boolean;
    static isTheSameDays(d1: Date, d2: Date): boolean;
    static parseDateStringToDate(utcParseString: string): Date | null;
    static parseObjectToDate(o: any): Date | null;
    static formatTimeMs(ms: number, dayLng: string, hourLng: string, minLng: string, secLng: string): string;
}

declare class FuncUtil {
    static call(func: Function | null | undefined, argument1?: any, argument2?: any): void;
}

declare class MathUtils {
    static getMidPoint(startX: number, startY: number, endX: number, endY: number): {
        x: number;
        y: number;
    };
    static getRandomElementOf<T>(array: T[]): T;
    static toArray<T>(iterable: Iterable<T>): T[];
    static isEvenInt(value: number): boolean;
    static getDistance(x1: number, y1: number, x2: number, y2: number): number;
    static getRandomInt(fromNum: number, toNum: number): number;
    static getRandomNumber(fromNum: number, toNum: number): number;
    static getAngle(x1: number, y1: number, x2: number, y2: number): number;
    static generateRandomArray(length: number): number[];
    static generateRandom(min: number, max: number): number;
    static randomBoolean(): boolean;
    static chance(chance: number): boolean;
    static chooseWeighedItem(weights: number[]): number;
    static randomInt(): number;
    static DEG_TO_RAD: number;
    static deg2rad(degrees: number): number;
    static int(num: number): number;
    static float(num: number, decimals: number): number;
    static distance(point1: Point | null, point2: Point | null): number;
}

declare class ObjectUtils {
    static truncateString(str: string, maxLength?: number, replace?: string): string;
    static getQualifiedClassName(obj: unknown): string;
    static getBase64Size(base64String: string): number;
    static getKeyObjValue<T = any>(json: Record<string, any> | null, key: string, fallback?: T | null): T | null;
    static getKeyBoolValue(json: Record<string, any> | null, key: string, fallback?: boolean): boolean;
    static getKeyStringValue(json: Record<string, any> | null, key: string, fallback?: string): string;
    static getKeyNumberValue(json: Record<string, any> | null, key: string, fallback?: number): number;
    static getKeyIntValue(json: Record<string, any> | null, key: string, fallback?: number): number;
    static getKeyArrayValue<T = any>(json: Record<string, any> | null, key: string, fallback?: T[]): T[];
    static getKeyDateValue(json: Record<string, any> | null, key: string, fallback?: Date | null): Date | null;
    static getKeyByteArrayValue(json: Record<string, any> | null, key: string, fallback?: Uint8Array | null): Uint8Array | null;
}

export { AbstractApp, AbstractInfoDialog, AbstractPixiRoot, AbstractPreferencesManager, Align, type AnyText, ArrayUtils, type AssetAlias, AtlasMold, AtlasTextureMold, BUTTON_EVENTS, BackgroundEffect, BackgroundEffectParticle, Button, type ButtonEvent, Checkbox, ClickArea, type ConstrainEase, Container, DateUtils, DeviceDetectorService, DeviceManager, type DisplayObjectFrameState, type DragObject, ErrorInfo, ErrorManager, FrameMold, FuncUtil, GameDelayCall, GameDialog, GameDialogLayer, GameDispatcher, type GameDispatcherListener, GameJuggler, GameObject, GamePool, GameQuadtreeView, GameScreen, GameScreenLayer, GameScreenNavigator, GameSplashScreen, GameSprite, GameTween, GameView, GameWaiter, type GetViewSettings, type IAnimatable, type IDestroy, type IPoolable, Input, type InputOptions, KeyframeMold, LibraryFlump, LibraryMold, LibrarySpine, LibraryText, List, type ListOptions, type ListType, LocaleManager, MathUtils, Movie, MovieLayer, MovieLayerMold, MovieMold, NetworkManager, ObjectUtils, type Padding, PixiAssetsLoader, type PixiAssetsScaleFactor, type PixiText, type PixiTextClass, type PixiTextStyle, Placer, Quadtree, QuadtreeNode, RectangleUtils, ScaleMode, ScrollBox, type ScrollBoxOptions, SlidingNumber, type SlidingNumberOptions, SoundManager, SpineMovie, SplashLayer, Spring, type SpringOptions, TabButton, TextInput, TextureGroupMold, Trackpad, UILayer, ViewUtils, WaiterLayer, centerElement, centerView, cleanup, defaultTextStyle, fitToView, getTextView, getView };
