import { IWeb } from '@pnp/sp/presets/all';
import { JsomContext } from 'spfx-jsom';
import { IProvisioningConfig } from '../provisioningconfig';
import { ProvisioningContext } from '../provisioningcontext';
import { IListInstance } from '../schema';
import { TokenHelper } from '../util/tokenhelper';
import { HandlerBase } from './handlerbase';
export interface ISPField {
    Id: string;
    InternalName: string;
    SchemaXml: string;
}
/**
 * Describes the Lists Object Handler
 */
export declare class Lists extends HandlerBase {
    tokenHelper: TokenHelper;
    jsomContext: JsomContext;
    context: ProvisioningContext;
    /**
     * Creates a new instance of the Lists class
     *
     * @param config - Provisioning config
     */
    constructor(config: IProvisioningConfig);
    /**
     * Provisioning lists
     *
     * @param web - The web
     * @param lists - The lists to provision
     */
    ProvisionObjects(web: IWeb, lists: IListInstance[], context: ProvisioningContext): Promise<void>;
    /**
     * Processes a list
     *
     * @param web - The web
     * @param lc - The list
     */
    private processList;
    /**
     * Processes content type bindings for a list
     *
     * @param lc - The list configuration
     * @param list - The pnp list
     * @param contentTypeBindings - Content type bindings
     * @param removeExisting - Remove existing content type bindings
     */
    private processContentTypeBindings;
    /**
     * Processes a content type binding for a list
     *
     * @param lc - The list configuration
     * @param list - The pnp list
     * @param contentTypeID - The Content Type ID
     */
    private processContentTypeBinding;
    /**
     * Processes fields for a list
     *
     * @param web - The web
     * @param list - The pnp list
     */
    private processListFields;
    /**
     * Processes a field for a lit
     *
     * @param web - The web
     * @param lc - The list configuration
     * @param fieldXml - Field XML
     */
    private processField;
    /**
     * Processes field refs for a list
     *
     * @param web - The web
     * @param lc - The list configuration
     */
    private processListFieldRefs;
    /**
     *
     * Processes a field ref for a list
     *
     * @param list - The list
     * @param lc - The list configuration
     * @param fieldRef - The list field ref
     * @param listFields - The list fields
     * @param webFields - The web fields
     */
    private processFieldRef;
    /**
     * Processes views for a list
     *
     * @param web - The web
     * @param lc - The list configuration
     */
    private processListViews;
    /**
     * Removes existing views for a list
     *
     * @param web - The web
     * @param lc - The list configuration
     */
    private removeExistingViews;
    /**
     * Processes a view for a list
     *
     * @param web - The web
     * @param lc - The list configuration
     * @param lvc - The view configuration
     */
    private processView;
    /**
     * Processes view fields for a view
     *
     * @param view - The pnp view
     * @param lvc - The view configuration
     */
    private processViewFields;
}
