import { Sticker } from '../parts/parts/sticker/types.js';
export declare const RESOURCE_CACHE_RESOLUTION_MULTIPLIER = 2;
export interface IResource {
    id: string;
    label: string;
    path: string;
}
export interface IResourceCategory {
    id: string;
    label: string;
    resources: {
        [key: string]: IResource;
    };
}
export interface IResourceArrayWithSrc {
    id: string;
    label: string;
    resources: {
        id: string;
        label: string;
        src: string;
    }[];
}
export interface IResourceArrayCategory {
    id: string;
    label: string;
    resources: IResource[];
}
export interface IResourceInformation {
    default?: string;
    resourceSet: IResource[];
    categories?: {
        [key: string]: IResourceCategory;
    };
    categorisedResource: IResourceArrayWithSrc[];
    categoryEnum: [string, string][];
    getUrl: (id: string | Sticker | null) => string;
    getRandom: () => string;
    getRandomFrom: (id: string) => string;
    cacheValue: (id: string | Sticker) => HTMLCanvasElement | undefined;
    load: (resource: IResource) => Promise<any>;
    legacyIdMap?: Map<string, string>;
}
export interface IResources {
    stickers?: IResourceInformation;
    get: (id: string) => IResourceInformation | undefined;
    load: (progress: (value: number) => void) => Promise<any>;
}
export declare class Resource<T> implements IResourceInformation {
    default: string;
    categories: {
        [key: string]: IResourceCategory;
    };
    all: IResource[];
    allCategorised: IResourceArrayWithSrc[];
    cache: Map<string | Sticker, HTMLCanvasElement | undefined>;
    legacyIdMap: Map<string, string>;
    constructor();
    addCategory(id: string, label: string): void;
    add(category: string, id: string, label: string, path: string): void;
    setDefault(id: string): void;
    resolve(path: string): string;
    addLegacyIdMap(map: Map<string, string>): void;
    readonly resourceSet: IResource[];
    readonly categorisedResource: IResourceArrayWithSrc[];
    readonly categoryEnum: [string, string][];
    cacheValue(id: string | Sticker, type?: string): HTMLCanvasElement | undefined;
    rasteriseImage(img: HTMLImageElement): HTMLCanvasElement;
    load(resource: IResource): Promise<{}>;
    getRandom(): string;
    getRandomFrom(id: string): string;
    getUrl(id: string | Sticker | null): string;
    getLabel(id: string): string | undefined;
}
export declare class Resources implements IResources {
    resources: Map<string, IResourceInformation>;
    constructor();
    get(id: string): IResourceInformation | undefined;
    load(progress: (value: number) => void): Promise<any[]>;
}
