import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSMutableDictionary } from "../Foundation/NSMutableDictionary.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSSecureCoding } from "../Foundation/NSSecureCoding.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _SKTexture } from "./SKTexture.js";
import type { CGSize } from "../structs/CGSize.js";
import type { SKTileDefinitionRotation } from "./SKTileDefinitionRotation.js";
export declare class _SKTileDefinition extends _NSObject {
    static alloc(): _SKTileDefinition;
    static new(): _SKTileDefinition;
    init(): _SKTileDefinition;
    /**
     * Create a tile definition with an SKTexture, and set its size to the SKTexture's width/height. @param texture the texture to reference for size and content
     */
    static tileDefinitionWithTexture$(texture: _SKTexture): _SKTileDefinition;
    /**
     * Create a tile definition with an SKTexture and the specified size. @param texture the texture to reference for content @param size the size of the tile in points
     */
    static tileDefinitionWithTexture$size$(texture: _SKTexture, size: CGSize): _SKTileDefinition;
    /**
     * Create a tile definition with an SKTexture and the specified size. @param texture the texture to reference for content @param normalTexture the normal texture to use for generating normals for lighting @param size the size of the tile in points
     */
    static tileDefinitionWithTexture$normalTexture$size$(texture: _SKTexture, normalTexture: _SKTexture, size: CGSize): _SKTileDefinition;
    /**
     * Create an animated tile definition with an array of SKTextures, the specified size, and the length of time each texture should be displayed for in the animation. @param textures the textures to reference for animated content @param size the size of the tile in points @param timePerFrame the duration, in seconds, that each texture in the textures array is displayed before switching to the next texture in the sequence
     */
    static tileDefinitionWithTextures$size$timePerFrame$(textures: _NSArray, size: CGSize, timePerFrame: number): _SKTileDefinition;
    /**
     * Create an animated tile definition with an array of SKTextures, the specified size, and the length of time each texture should be displayed for in the animation. @param textures the textures to reference for animated content @param normalTextures the normal textures to use for generating normals for lighting @param size the size of the tile in points @param timePerFrame the duration, in seconds, that each texture in the textures array is displayed before switching to the next texture in the sequence
     */
    static tileDefinitionWithTextures$normalTextures$size$timePerFrame$(textures: _NSArray, normalTextures: _NSArray, size: CGSize, timePerFrame: number): _SKTileDefinition;
    /**
     * Initilize a tile definition with an SKTexture, and set its size to the SKTexture's width/height. @param texture the texture to reference for size and content
     */
    initWithTexture$(texture: _SKTexture): _SKTileDefinition;
    /**
     * Initilize a tile definition with an SKTexture and the specified size. @param texture the texture to reference for content @param size the size of the tile in points
     */
    initWithTexture$size$(texture: _SKTexture, size: CGSize): _SKTileDefinition;
    /**
     * Initilize a tile definition with an SKTexture and the specified size. @param texture the texture to reference for content @param normalTexture the normal texture to use for generating normals for lighting @param size the size of the tile in points
     */
    initWithTexture$normalTexture$size$(texture: _SKTexture, normalTexture: _SKTexture, size: CGSize): _SKTileDefinition;
    /**
     * Initilize an animated tile definition with an array of SKTextures, the specified size, and the length of time each texture should be displayed for in the animation. @param textures the textures to reference for animated content @param size the size of the tile in points @param timePerFrame the duration, in seconds, that each texture in the textures array is displayed before switching to the next texture in the sequence
     */
    initWithTextures$size$timePerFrame$(textures: _NSArray, size: CGSize, timePerFrame: number): _SKTileDefinition;
    /**
     * Initilize an animated tile definition with an array of SKTextures, the specified size, and the length of time each texture should be displayed for in the animation. @param textures the textures to reference for animated content @param normalTextures the normal textures to use for generating normals for lighting @param size the size of the tile in points @param timePerFrame the duration, in seconds, that each texture in the textures array is displayed before switching to the next texture in the sequence
     */
    initWithTextures$normalTextures$size$timePerFrame$(textures: _NSArray, normalTextures: _NSArray, size: CGSize, timePerFrame: number): _SKTileDefinition;
    /**
     * The textures used to draw the tile. Non-animated tiles use only one texture. When more than one texture is present, the tile will swap through them in sequence, showing each for the duration specified in the timePerFrame property. After displaying the last texture in the array, the sequence is repeated from the first texture.
     */
    textures(): _NSArray;
    setTextures$(value: _NSArray): void;
    /**
     * The textures to use for generating normals that lights use to light this tile. These will only be used if the tile is lit by at least one light. Each normal texture corresponds to a texture in the textures property.
     */
    normalTextures(): _NSArray;
    setNormalTextures$(value: _NSArray): void;
    /**
     * An optional dictionary that can be used to store your own data for each tile definition. Defaults to nil.
     */
    userData(): _NSMutableDictionary | null;
    setUserData$(value: _NSMutableDictionary | null): void;
    /** Client-assignable name for the tile definition. Defaults to nil. */
    name(): _NSString | null;
    setName$(value: _NSString | null): void;
    /** The size of the tile in points. */
    size(): CGSize;
    setSize$(value: CGSize): void;
    /**
     * The duration, in seconds, that each texture in the textures array is displayed before switching to the next texture in the sequence. Only used when there is more than one texture available.
     */
    timePerFrame(): number;
    setTimePerFrame$(value: number): void;
    /**
     * This value is used to determine how likely this tile definition is to be chosen for placement when a SKTileGroupRule has mulitple tile definitions assigned to it. A higher value relative to the other definitions assigned to the rule make it more likely for this definition to be selected; lower values make it less likely. Defaults to 1. When set to 0, the definition will never be chosen as long as there is at least one other definition with a placementWeight above 0.
     */
    placementWeight(): number;
    setPlacementWeight$(value: number): void;
    /**
     * The rotation of the tile definition's images can be set in 90 degree increments. Defaults to SKTileDefinitionRotation0.
     */
    rotation(): SKTileDefinitionRotation;
    setRotation$(value: SKTileDefinitionRotation): void;
    /**
     * When set to YES, the tile definition's images will be flipped vertically (i.e., the top of the image becomes the bottom). Defaults to NO.
     */
    flipVertically(): boolean;
    setFlipVertically$(value: boolean): void;
    /**
     * When set to YES, the tile definition's images will be flipped horizontally (i.e., the left of the image becomes the right). Defaults to NO.
     */
    flipHorizontally(): boolean;
    setFlipHorizontally$(value: boolean): void;
}
export interface _SKTileDefinition extends _NSCopying, _NSSecureCoding {
}
