import '@pnp/polyfill-ie11';
import { CommentData, LikeData, CamlQuery } from '@pnp/sp';
import { SiteUser } from '@pnp/sp/src/siteusers';
import { LoggingOptions } from '../logger/entities/LoggingOptions';
import { ItemField } from '../entities/ItemField';
import { ItemDataAsStream } from '../entities/ItemDataAsStream';
declare global {
    interface Window {
        _spPageContextInfo: any;
    }
}
export declare class SPModernAbstractService {
    private context?;
    private logOptions?;
    private web;
    private oldWeb;
    private sp;
    private logger;
    private streamService;
    /**
     * @param context WebpartContextBase or ListViewCommandSetContext
     */
    constructor(context?: any, logOptions?: LoggingOptions);
    getItemComments(listName: string, itemId: number): Promise<CommentData[]>;
    getItemLikes(listName: string, itemId: number): Promise<LikeData[]>;
    like(listName: string, itemId: number): Promise<void>;
    unlike(listName: string, itemId: number): Promise<void>;
    getUserById(userId: number): SiteUser;
    setWeb(webUrl: string): void;
    restoreWeb(): void;
    private getResponseJSon;
    getIfSavedForLater(itemURL: string): Promise<any>;
    getLastXSaved(xSaved: number): Promise<string[]>;
    addSaveForLater(itemURL: string): Promise<any>;
    removeSaveForLater(itemURL: string): Promise<any>;
    /**
        * if query property already contains ViewFields, they will be remove and replaced for  a new ViewFields with the fields from selectedFields property
        * you need to put a non empty selectedFields property and true value at returnParsedItems if you want these fields will be parsed

    */
    getListItemsDataAsStream<T>(listName: string, query: CamlQuery, selectedFields?: ItemField[], returnParsedItems?: boolean): Promise<ItemDataAsStream<T>>;
}
