import { Texture, TextureSourceLike, TextureSource, PointData, ObservablePoint } from 'pixi.js';
import { ImageSpriteOptions } from '../../interface/canvas/canvas-options.js';
import AdditionalPositionsExtension from './AdditionalPositions.js';
import Sprite from './Sprite.js';
import ImageSpriteMemory from '../../interface/canvas/memory/ImageSpriteMemory.js';
import './AnchorExtension.js';
import '../../types/ContainerChild.js';
import './CanvasBaseItem.js';
import '../../interface/canvas/memory/CanvasBaseItemMemory.js';
import '../../types/CanvasEventNamesType.js';
import '../CanvasEvent.js';
import '../../types/EventIdType.js';
import '../../interface/canvas/memory/SpriteMemory.js';
import '../../interface/canvas/TextureMemory.js';

/**
 * This class is a extension of the {@link Sprite} class, it has the same properties and methods,
 * but it has some features that make texture management easier.
 * You need to use {@link ImageSprite.load()} to show the image in the canvas.
 * This class is used for functions like {@link addImage} and {@link showWithDissolve}.
 * @example
 * ```typescript
 * let alien = new ImageSprite({
 *     anchor: { x: 0.5, y: 0.5 },
 *     x: 100,
 *     y: 100,
 * }, 'https://pixijs.com/assets/eggHead.png')
 * await alien.load()
 * canvas.add("alien", alien)
 * ```
 * @example
 * ```typescript
 * let alien = addImage("alien", 'https://pixijs.com/assets/eggHead.png')
 * alien.anchor.set(0.5);
 * alien.x = 100
 * alien.y = 100
 * await alien.load()
 * ```
 */
declare class ImageSprite<Memory extends ImageSpriteMemory = ImageSpriteMemory> extends Sprite<Memory> implements AdditionalPositionsExtension {
    pixivnId: string;
    constructor(options?: ImageSpriteOptions | Texture | undefined, textureAlias?: string);
    get memory(): ImageSpriteMemory;
    set memory(_value: ImageSpriteMemory);
    setMemory(value: ImageSpriteMemory): Promise<void>;
    static from(source: Texture | TextureSourceLike, skipCache?: boolean): ImageSprite<ImageSpriteMemory>;
    private _loadIsStarted;
    get loadIsStarted(): boolean;
    /**
     * Load the image from the link and set the texture of the sprite.
     * @returns A promise that resolves when the image is loaded.
     */
    load(): Promise<void>;
    set texture(value: Texture<TextureSource<any>>);
    get texture(): Texture<TextureSource<any>>;
    /**
     * Check if the texture is empty.
     * @returns A boolean that is true if the texture is empty.
     */
    get haveEmptyTexture(): boolean;
    /** AdditionalPositions */
    private _align;
    set align(value: Partial<PointData> | number);
    get align(): Partial<PointData> | number;
    set xAlign(value: number);
    get xAlign(): number;
    set yAlign(value: number);
    get yAlign(): number;
    private _percentagePosition;
    set percentagePosition(value: Partial<PointData> | number);
    get percentagePosition(): Partial<PointData> | number;
    get xPercentagePosition(): number;
    set xPercentagePosition(_value: number);
    get yPercentagePosition(): number;
    set yPercentagePosition(_value: number);
    get positionType(): "pixel" | "percentage" | "align";
    get positionInfo(): {
        x: number;
        y: number;
        type: "pixel" | "percentage" | "align";
    };
    set positionInfo(value: {
        x: number;
        y: number;
        type?: "pixel" | "percentage" | "align";
    });
    private reloadPosition;
    get position(): ObservablePoint;
    set position(value: ObservablePoint);
    get x(): number;
    set x(value: number);
    get y(): number;
    set y(value: number);
}
declare function setMemoryImageSprite(element: ImageSprite, memory: ImageSpriteMemory | {}, options?: {
    ignoreTexture?: boolean;
}): Promise<void>;

export { ImageSprite as default, setMemoryImageSprite };
