import { Sticker } from '../parts/parts/sticker/types.js';
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;
        src: string;
    }[];
}
export interface IResourceArrayCategory {
    id: string;
    label: string;
    resources: IResource[];
}
export interface IResourceInformation {
    default?: string;
    categories?: {
        [key: string]: IResourceCategory;
    };
    categorisedResource: IResourceArrayWithSrc[];
    categoryEnum: [string, string][];
    getUrl: (id: string | Sticker | null) => string;
    getRandom: () => string;
    getRandomFrom: (id: string) => string;
}
export interface IResources {
    stickers?: IResourceInformation;
    get: (id: string) => IResourceInformation | undefined;
}
export declare class Resource implements IResourceInformation {
    default: string;
    categories: {
        [key: string]: IResourceCategory;
    };
    all: IResource[];
    allCategorised: IResourceArrayWithSrc[];
    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;
    readonly resourceSet: IResource[];
    readonly categorisedResource: IResourceArrayWithSrc[];
    readonly categoryEnum: [string, string][];
    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;
}
