import type { IAPIMethods } from '@looker/sdk-rtl';
import { EntityService } from './EntityService';
export declare const DEFAULT_TTL = 900;
export interface GetOptions {
    useCache?: boolean;
    [key: string]: any;
}
export interface IItemList<T extends Record<string, any>> {
    readonly timeToLive: number;
    items: T[];
    readonly expiresAt: number;
    index(key?: keyof T): ItemList<T>;
    indexedItems: Record<string, T>;
    expired(): boolean;
    setExpiration(): void;
    clearIfExpired(): void;
    find(key: keyof T | Array<keyof T>, value: any): T | undefined;
    getCacheDefault(options?: GetOptions): boolean;
}
export interface IEntityService<T extends Record<string, any>> extends IItemList<T> {
    get(id: string, options?: GetOptions): Promise<T>;
    set(id: string, item: T): Promise<T>;
    getAll(...options: any[]): Promise<IItemList<T>>;
    delete(id: string): void;
}
export declare abstract class ItemList<T extends Record<string, any>> extends EntityService implements IItemList<T> {
    items: T[];
    indexedItems: Record<string, T>;
    expiresAt: number;
    private keyField;
    constructor(sdk: IAPIMethods, timeToLive?: number);
    index(key?: keyof T): this;
    setExpiration(): void;
    expired(): boolean;
    clearIfExpired(): void;
    find(key: keyof T | Array<keyof T>, expression: string): T | undefined;
    getCacheDefault(options?: GetOptions): boolean;
}
