/*!
 * Copyright Sysdoc @ 2019
 */
/// <reference types="sharepoint" />
import { Dictionary, ILogger } from "@sysdoc/utilities";
import { ExecutorFn } from "../util/executor";
import { IPnPField } from "./IPnPField";
import { ISPFieldsFilterStrategy } from "./ISPFieldsFilterStrategy";
import { ISPListItem } from "./ISPListItem";
import { ISPListItemSerializer } from "./ISPListItemSerializer";
export interface ISPBasicListProviderConfig {
    listTitle: string;
    webUrl?: string;
    fields?: Dictionary<string>;
    logger: ILogger;
    fieldsFilterStrategy?: ISPFieldsFilterStrategy;
}
export declare class SPBasicListProvider<T extends ISPListItem> implements ISPListItemSerializer<T> {
    _ready: Promise<any>;
    listTitle: string;
    logger: ILogger;
    webUrl: string;
    fields: Dictionary<string>;
    schema: Dictionary<IPnPField>;
    filterStrategy: ISPFieldsFilterStrategy;
    constructor(cfg: ISPBasicListProviderConfig);
    itemToJson(item: SP.ListItem<any>): Partial<T>;
    jsonToItem(json: T, item: SP.ListItem<any>): SP.ListItem<any>;
    update(obj: T, exec?: ExecutorFn): Promise<Partial<T>>;
    create(obj: T, exec?: ExecutorFn, folderUrl?: string): Promise<Partial<T>>;
    save(obj: T, exec?: ExecutorFn): Promise<Partial<T>>;
    getByQuery(query: SP.CamlQuery, exec?: ExecutorFn): Promise<Partial<T>[]>;
    getAll(exec?: ExecutorFn): Promise<Partial<T>[]>;
    get(key: number, exec?: ExecutorFn): Promise<Partial<T>>;
    delete(key: number, exec?: ExecutorFn): Promise<void>;
}
