import type { ConstructedType, Constructor } from '@d-fischer/shared-utils';
export type CacheableType<T> = T & {
    getFromCache: (key: string) => unknown;
    setCache: (key: string, value: unknown, timeInSeconds: number) => void;
    removeFromCache: (key: string | string[], prefix?: boolean) => void;
};
export declare function Cacheable<T extends Constructor<any>>(cls: T): Constructor<CacheableType<ConstructedType<T>>> & T;
