import { TString } from "./Api";
import { IStorage } from "../utils/IStorage";
export type TStringifyrBaseParams = {
    apiKey: string;
    baseURL?: string;
    isDev?: boolean;
    storage?: IStorage;
    fetchOnLoadWithParams?: TFetchRootParams | false;
};
type TFetchRootParams = {
    fileSlug?: string;
    __incUnpublished?: boolean;
};
export declare class StringifyrBase {
    private fetchParams;
    private readonly api;
    private readonly persist;
    private lastRoot;
    get loaded(): boolean;
    private listeners;
    constructor(params: TStringifyrBaseParams);
    setFileSlug(fileSlug: string | undefined): this;
    setApiKey(apiKey: string | undefined): this;
    addListener(event: 'load', cb: () => void): () => any;
    removeListener(event: 'load', cb: () => void): void;
    node(template: string | undefined): Promise<TString | null>;
    nodeSync(template: string | undefined): TString | null;
    waitForRoot(): Promise<void>;
    private nodeSyncInternal;
    private isFetchingRoot;
    private fetchRootCached;
}
export {};
