import { Handler } from './handlers/exports';
import { HandlerBase } from './handlers/handlerbase';
import { IProvisioningConfig } from './provisioningconfig';
import { Schema } from './schema';
import { IWeb } from '@pnp/sp/presets/all';
import '@pnp/sp/presets/all';
/**
 * Root class of Provisioning
 */
export declare class WebProvisioner {
    private web;
    handlerSort: Record<Handler, number>;
    handlerMap: Record<string, HandlerBase>;
    private context;
    private config;
    /**
     * Creates a new instance of the Provisioner class
     *
     * @param web - The Web instance to which we want to apply templates
     * @param handlerSort - A set of handlers we want to apply. The keys of the map need to match the property names in the template
     */
    constructor(web: IWeb, handlerSort?: Record<Handler, number>);
    private onSetup;
    /**
     * Applies the supplied template to the web used to create this Provisioner instance
     *
     * @param template - The template to apply
     * @param handlers - A set of handlers we want to apply
     * @param progressCallback - Callback for progress updates
     */
    applyTemplate(template: Schema, handlers?: string[], progressCallback?: (handler: Handler) => void): Promise<any>;
    /**
     * Sets up the web provisioner
     *
     * @param config - Provisioning config
     */
    setup(config: IProvisioningConfig): WebProvisioner;
}
