export interface Size {
    width: number;
    height: number;
}
export interface Dictionary<T> {
    [key: string]: T;
}
export interface ImagePart {
    width: number;
    height: number;
    x: number;
    y: number;
    filePath: string;
}
export interface IImageProcessor {
    getSize(path: string): Promise<Size>;
    scale(input: string, output: string, scale: {
        width: number;
        height: number;
    }): Promise<void>;
    trim(input: string, output: string, fuzz?: string): Promise<IRect>;
    combine(rects: ImagePart[], width: number, height: number, outputFileName: string, exportConfig: SpritesheetExportConfig): Promise<void>;
}
export interface ILayoutConfig {
    max_width: number;
    max_height: number;
    padding: number;
    oversized_warning: boolean;
}
export interface ICache {
    lookup(type: string, key: string, cacheMissFunction: () => any, version?: any): Promise<any>;
    getCachePath(basename: string): string;
    calculateHash(path: string): Promise<string>;
    createHash(string: string): string;
}
export interface Logger {
    assert(value: any, message?: string, ...optionalParams: any[]): void;
    error(message?: any, ...optionalParams: any[]): void;
    info(message?: any, ...optionalParams: any[]): void;
    log(message?: any, ...optionalParams: any[]): void;
    trace(message?: any, ...optionalParams: any[]): void;
    warn(message?: any, ...optionalParams: any[]): void;
}
export interface ConvertOptions {
    scaleX?: number;
    scaleY?: number;
    dontExtent?: boolean;
    maxWidth?: number;
    maxHeight?: number;
    trim?: boolean;
}
export interface IRect {
    x: number;
    y: number;
    height: number;
    width: number;
}
export interface ITrim {
    width: number;
    height: number;
    trim?: IRect;
    path: string;
}
export interface LoadingInformation {
    path: string;
    position: {
        x: number;
        y: number;
    };
    dimension: {
        w: number;
        h: number;
    };
    trim: {
        x: number;
        y: number;
        w: number;
        h: number;
    } | null;
}
export interface SpritesheetExportConfig {
    ext?: 'jpeg' | 'png';
}
export interface AtlasInputNotResolved {
    files: {
        path: string | string[];
        convertOption: ConvertOptions;
    }[];
    layoutConfig: ILayoutConfig;
    exportConfig: SpritesheetExportConfig;
}
export interface AtlasInput {
    files: {
        path: string;
        convertOption: ConvertOptions;
    }[];
    layoutConfig: ILayoutConfig;
    exportConfig: SpritesheetExportConfig;
}
export interface AtlasOutput {
    sheets: {
        sprites: LoadingInformation[];
        path: string;
        hash: string;
        width: number;
        height: number;
    }[];
}
export interface IGeneratorOutput {
    atlases: AtlasOutput[];
}
