/*!
 * Copyright Sysdoc @ 2019
 */
/// <reference types="sharepoint" />
import { FormFieldModel } from "@sysdoc/forms";
import { Dictionary } from "@sysdoc/utilities";
import { ExecutorFn } from "../util/executor";
import { IPnPField } from "./IPnPField";
import { ISPFieldDecorator } from "./ISPFieldDecorator";
export interface ISPListProvider<Key, T> {
    listTitle: string;
    webUrl: string;
    update(obj: T, exec?: ExecutorFn): Promise<Partial<T>>;
    get(key: Key, exec?: ExecutorFn): Promise<Partial<T>>;
    getByQuery(query: SP.CamlQuery, exec?: ExecutorFn): Promise<Partial<T>[]>;
    save(obj: T, exec?: ExecutorFn): Promise<Partial<T>>;
    create(obj: T, exec?: ExecutorFn): Promise<Partial<T>>;
    delete(key: Key, exec?: ExecutorFn): Promise<void>;
    getSchema(): Promise<Dictionary<IPnPField>>;
    setSchema(schema: Dictionary<IPnPField>): void;
    getDecorator<Value>(key: string): ISPFieldDecorator<Value, T>;
    getObjectFromFields(fields: FormFieldModel<any>[]): T;
    getObjectFromFieldsOnline(fields: FormFieldModel<any>[]): T;
    getFormValuesFromFields(fields: FormFieldModel<any>[]): any;
}
