// Generated by dts-bundle v0.7.3
// Dependencies for this module:
//   ../gd-bs
//   ../gd-sprest
//   ../gd-bs/src/components/form/controlTypes
//   ../gd-bs/src/components/dropdown/types
//   ../gd-bs/src/components/components
//   ../gd-bs/src/components/form/formTypes
//   ../gd-bs/src/components/button/types
//   ../gd-bs/src/components/modal/types
//   ../gd-bs/src/components/tooltipGroup/types
//   ../gd-bs/src/components/nav/types
//   ../gd-bs/src/components/toolbar/types

declare module 'gd-sprest-bs' {
    export * from "gd-bs";
    export * from "gd-sprest";
    
    import { CustomIconTypes, CustomIcons } from "gd-sprest-bs/icons/customIcons";
    export { CustomIconTypes, CustomIcons }
    
    import * as Components from "gd-sprest-bs/components/types";
    import * as PropertyPane from "gd-sprest-bs/propertyPane/types";
    import { ThemeManager } from "gd-sprest-bs/themeManager/types";
    import * as WebParts from "gd-sprest-bs/webparts/types";
    export {
        Components,
        PropertyPane,
        ThemeManager,
        WebParts
    }
    
    import { IRESTBS } from "gd-sprest-bs/rest";
    export const $REST: IRESTBS;
}

declare module 'gd-sprest-bs/icons/customIcons' {
    export const CustomIcons: (iconType:number, height?:number, width?:number, className?:string) => HTMLElement;
    
    export const CustomIconTypes: {
        aIP: number;
        bookings: number;
        dataverse: number;
        defender: number;
        dynamics: number;
        entra: number;
        exchange: number;
        forms: number;
        intune: number;
        keyVault: number;
        m365: number;
        mDM: number;
        office: number;
        officeOnline: number;
        oneDrive: number;
        planner: number;
        powerApps: number;
        powerAutomate: number;
        powerBI: number;
        powerPlatform: number;
        project: number;
        securityCenter: number;
        serviceHealth: number;
        sharePoint: number;
        skype: number;
        stream: number;
        sway: number;
        teams: number;
        viva: number;
    }
}

declare module 'gd-sprest-bs/components/types' {
    export * from "gd-sprest-bs/components/components";
    
    import { IFormControlTypes as Parent } from "gd-bs/src/components/form/controlTypes";
    export interface IFormControlTypes extends Parent {
        DateTime: number;
        PeoplePicker: number;
        RichTextBox: number;
    }
    export const FormControlTypes: IFormControlTypes;
}

declare module 'gd-sprest-bs/propertyPane/types' {
    import { IDropdown, IDropdownItem } from "gd-bs/src/components/dropdown/types";
    import { IFormControlPropsMultiDropdown, IFormControlPropsMultiDropdownButton, IFormControlPropsMultiDropdownCheckbox } from "gd-bs/src/components/form/controlTypes";
    
    /**
        * Base Property Pane Properties
        */
    export interface IBasePropertyPaneProps<IComponent = any, IComponentProps = any> {
            description?: string;
            label?: string;
            onRendered?: (component?: IComponent, props?: IComponentProps) => void;
            onRendering?: (props?: IComponentProps) => IComponentProps;
            onSave?: (value: string | number | boolean | undefined) => string | number | boolean | undefined;
            properties?: object;
            tooltip?: string;
    }
    
    /**
        * Base Property Pane
        */
    export interface IBasePropertyPane {
            /**
                * Type of the PropertyPane field.
                */
            type: number;
    
            /**
                * Target property from the web part's property bag.
                */
            targetProperty: string;
    
            /**
                * Whether this control should be focused.
                */
            shouldFocus?: boolean;
    
            /**
                * Strongly typed properties object. Specific to each field type.
                */
            properties: IBasePropertyPaneProperties;
    }
    export const BasePropertyPane = (targetProperty: string, config: IProps, context?: any) => IBasePropertyPane;
    
    /**
        * Property Pane Base Properties
        */
    export interface IBasePropertyPaneProperties {
            /**
                * This API will be called once the custom field is mounted on the host element.
                */
            onRender: (domElement: HTMLElement, context: any, changeCallback: (targetProperty: string, newValue?: string | number | boolean | undefined) => void) => void;
    
            /**
                * An UNIQUE key indicates the identity of this control.
                */
            key: string;
    
            /**
                * This API is called when the component is unmounted from the host element.
                */
            onDispose?: (domElement: HTMLElement, context: any) => void;
    
            /**
                * Instance specific context. This context is passed back to the web part in the
                * onRender and onDispose APIs. The web part can use this context to manage state
                * information.
                */
            context?: any;
    }
    
    
    /**
        * Dropdown
        */
    export interface IDropdown extends IBasePropertyPaneProps<IDropdown, IFormControlPropsDropdown> {
            items?: IDropdownItem[];
    }
    export const Dropdown = (targetProperty: string, config: IDropdown, context?: any) => IBasePropertyPane;
    
    /**
        * Dropdown Button
        */
    export interface IDropdownButton extends IBasePropertyPaneProps<IDropdown, IFormControlPropsDropdownButton> {
            items?: IDropdownItem[];
            placeholder?: string;
            placement?: number;
    }
    export const DropdownButton = (targetProperty: string, config: IDropdownButton, context?: any) => IBasePropertyPane;
    
    /**
        * Dropdown Checkbox
        */
    export interface IDropdownCheckbox extends IBasePropertyPaneProps<IDropdown, IFormControlPropsDropdownCheckbox> {
            items?: IDropdownItem[];
            placeholder?: string;
            placement?: number;
    }
    export const DropdownCheckbox = (targetProperty: string, config: IDropdownCheckbox, context?: any) => IBasePropertyPane;
    
    /**
        * Multi-Dropdown
        */
    export interface IMultiDropdown extends IBasePropertyPaneProps<IDropdown, IFormControlPropsMultiDropdown> {
            items?: IDropdownItem[];
    }
    export const MultiDropdown = (targetProperty: string, config: IMultiDropdown, context?: any) => IBasePropertyPane;
    
    /**
        * Multi-Dropdown Button
        */
    export interface IMultiDropdownButton extends IBasePropertyPaneProps<IDropdown, IFormControlPropsMultiDropdownButton> {
            items?: IDropdownItem[];
            placeholder?: string;
            placement?: number;
    }
    export const MultiDropdownButton = (targetProperty: string, config: IMultiDropdownButton, context?: any) => IBasePropertyPane;
    
    /**
        * Multi-Dropdown Checkbox
        */
    export interface IMultiDropdownCheckbox extends IBasePropertyPaneProps<IDropdown, IFormControlPropsMultiDropdownCheckbox> {
            items?: IDropdownItem[];
            placeholder?: string;
            placement?: number;
    }
    export const MultiDropdownCheckbox = (targetProperty: string, config: IMultiDropdownCheckbox, context?: any) => IBasePropertyPane;
}

declare module 'gd-sprest-bs/themeManager/types' {
    /**
      * Theme Manager
      */
    export const ThemeManager: {
        // Current Theme
        get CurrentTheme(): { [key: string]: string };
    
        // Default Classic Theme Values
        get ClassicThemeInfo(): { [key: string]: string }
        set ClassicThemeInfo(value: { [key: string]: string });
    
        // Flag to determine if the theme is currently inverted
        get IsInverted(): boolean;
    
        // Default Modern Theme Values
        get ModernThemeInfo(): { [key: string]: string }
        set ModernThemeInfo(value: { [key: string]: string });
    
        // Loads the modern theme, or the classic theme if it's not found
        load(updateTheme?: boolean): PromiseLike<void>;
    
        // Sets the current theme
        setCurrentTheme: (value: any, updateTheme?: boolean) => void;
    
        // Updates the sass variables for this framework
        update: (themeInfo?: any) => void;
    }
}

declare module 'gd-sprest-bs/webparts/types' {
    export * from "gd-sprest-bs/webparts/base/helperTypes";
    export * from "gd-sprest-bs/webparts/base/types";
    export * from "gd-sprest-bs/webparts/list/types";
    export * from "gd-sprest-bs/webparts/listFields/types";
    export * from "gd-sprest-bs/webparts/search/types";
    export * from "gd-sprest-bs/webparts/tabs/types";
    export * from "gd-sprest-bs/webparts/taxonomy/types";
}

declare module 'gd-sprest-bs/rest' {
    import { IconTypes, Icons } from "gd-bs";
    import { IREST } from "gd-sprest";
    import { Components } from "gd-sprest-bs/components/types";
    import { CustomIconTypes, CustomIcons } from "gd-sprest-bs/icons/customIcons";
    import * as WebParts from "gd-sprest-bs/webparts/types";
    
    /**
      * $REST Bootstrap Library
      */
    export interface IRESTBS extends IREST {
        Components,
        CustomIconTypes, CustomIcons,
        Icons, IconTypes,
        WebParts
    }
}

declare module 'gd-sprest-bs/components/components' {
    export * from "gd-bs/src/components/components";
    export * from "gd-sprest-bs/components/datetime/types";
    export * from "gd-sprest-bs/components/field/types";
    export * from "gd-sprest-bs/components/listForm/types";
    export * from "gd-sprest-bs/components/listFormDialog/types";
    export * from "gd-sprest-bs/components/peoplePicker/types";
    export * from "gd-sprest-bs/components/richTextBox/types";
    
    import { IFormControlTypes as Parent } from "gd-bs/src/components/form/controlTypes";
    export interface IFormControlTypes extends Parent {
        DateTime: number;
        PeoplePicker: number;
        RichTextBox: number;
    }
    export const FormControlTypes: IFormControlTypes;
}

declare module 'gd-sprest-bs/webparts/base/helperTypes' {
    import { IFormControlProps } from "gd-bs/src/components/form/controlTypes";
    import { IForm } from "gd-bs/src/components/form/formTypes";
    import { IWebPartInfo } from "gd-sprest-bs/webparts/base/types";
    
    /**
        * Helper Methods
        */
    export const Helper: IHelper;
    
    /**
        * Helper Methods
        */
    export interface IHelper {
            /**
                * Method to get the webpart
                * @param wpId - The webpart id.
                */
            getWebPart(wpId: string): PromiseLike<IWPInstance>;
    
            /**
                * Method to get the webpart id for a specified element
                * @param el - The target element.
                */
            getWebPartId(el: HTMLElement): string;
    
            /**
                * Method to render the edit form.
                * @param el - The element to render the form to.
                * @param wpCfg - The webpart configuration information.
                * @param formControls - The form controls to render.
                */
            renderEditForm: (el: HTMLElement, wpCfg: IWebPartCfg, formControls: Array<IFormControlProps>) => IForm;
    
            /**
                * Method to save the webpart configuration.
                * This method may execute a postback, based on the page type.
                * @param wpId - The webpart id.
                * @param cfgId: The configuration element id.
                * @param wpCfg - The webpart configuration.
                */
            saveConfiguration(wpId: string, cfgId?: string, wpCfg?: any): PromiseLike<void>;
    
            /**
                * Method to update the configuration element
                * @param cfgId: The configuration element id.
                * @param elTarget - The target element.
                * @param wpCfg - The webpart configuration.
                */
            updateConfigurationInElement(cfgId: string, elTarget: HTMLInputElement, wpCfg);
    
            /**
                * Method to update the webpart content elements
                * @param wpId - The webpart id.
                * @param cfgId: The configuration element id.
                * @param wpCfg - The webpart configuration.
                */
            updateWebPartContentElements(wpId: string, cfgId?: string, wpCfg?: any): boolean;
    }
    
    /**
        * WebPart Information
        */
    export interface IWPInstance {
            Context: any;
            Properties: any;
            WebPart: any;
            WebPartDefinition: any;
    }
}

declare module 'gd-sprest-bs/webparts/base/types' {
    import { IButtonProps } from "gd-bs/src/components/button/types";
    import { IFormControl, IFormControlProps } from "gd-bs/src/components/form/controlTypes";
    import { IForm, IFormProps } from "gd-bs/src/components/form/formTypes";
    import { IModal, IModalProps } from "gd-bs/src/components/modal/types";
    import { ITooltipGroupProps } from "gd-bs/src/components/tooltipGroup/types";
    
    /**
        * ### Web Part
        * 
        * The client-side webpart component can be used to control what is displayed when a page is being edited and displayed. An optional hidden configuration element can be utilized to store a custom configuration.
        * 
        * ```ts
        * import { WebParts } from "gd-sprest-bs";
        * 
        * // Create the webpart
        * WebParts.WebPart({
        *     elementId: "my-wp",
        *     cfgElementId: "my-wp-cfg",
        *     onRenderDisplay: (wpInfo) => {
        *         // Render the display element
        *         wpInfo.el.innerHTML = '<h1>Hello Display Mode</h1>';
        *     },
        *     onRenderEdit: (wpInfo) => {
        *         // Render the edit element
        *         wpInfo.el.innerHTML = '<h1>Hello Edit Mode</h1>';
        *     }
        * });
        * ```
        */
    export const WebPart: (props: IWebPartProps) => IWebPart;
    
    /**
        * WebPart
        */
    export interface IWebPart<IWPCfg = IWebPartCfg, IWPInfo = IWebPartInfo> {
            /** The webpart configuration. */
            cfg: IWPCfg;
    
            /** The webpart information. */
            info: IWPInfo;
    
            /** Method to update the edit form. */
            updateEditForm?: (formControls: Array<IFormControl>) => void;
    }
    
    /**
        * WebPart Information
        */
    export interface IWebPartInfo<IWPCfg = IWebPartCfg> {
            /** The configuration */
            cfg: IWPCfg;
    
            /** The element to render the webpart to */
            el: HTMLElement;
    
            /** The webpart id */
            wpId: string;
    }
    
    /**
        * WebPart Object
        */
    export interface IWebPartObject {
            /** The JSOM context object */
            Context: any;
    
            /** The webpart properties object */
            Properties: any;
    
            /** The webpart id */
            WebPartId: string;
    
            /** The webpart html element */
            WebPart: HTMLElement;
    
            /** The webpart definition object */
            WebPartDefinition: any;
    }
    
    /**
        * WebPart Properties
        */
    export interface IWebPartProps<IWPInfo = IWebPartInfo, IWPEditForm = IWebPartEditForm> {
            /** The optional configuration element */
            cfgElementId?: string;
    
            /** The class name. */
            className?: string;
    
            /** The target element id to render the webpart to */
            elementId?: string;
    
            /** The edit form */
            editForm?: IWPEditForm;
    
            /** The optional help link properties */
            helpProps?: {
                    /** The link title */
                    title?: string;
    
                    /** The link url */
                    url: string;
            };
    
            /** The post render event */
            onPostRender?: (wp: IWPInfo, ...args) => void;
    
            /** The render event triggered when the page is in 'Display' mode */
            onRenderDisplay?: (wp: IWPInfo) => any;
    
            /** The render event triggered when the page is in 'Edit' mode */
            onRenderEdit?: (wp: IWPInfo) => any;
    
            /** The render form event triggered when the form is created */
            onRenderForm?: (form: IForm, wp?: IWPInfo) => any;
    
            /** The webpart class name */
            wpClassName?: string;
    }
    
    /**
        * WebPart Configuration
        */
    export const WPCfg: (cfg: IWebPartCfg, props: IWebPartProps) => {
            /** Method to render the edit form. */
            renderForm?: (formControls: Array<IFormControl>) => void;
    };
    
    /**
        * WebPart Configuration
        */
    export interface IWebPartCfg {
            /** The webpart id */
            WebPartId?: string;
    }
    
    /**
        * WebPart Edit Form
        */
    export interface IWebPartEditForm<IWPCfg = IWebPartCfg, IWPInfo = IWebPartInfo> {
            /** The form action buttons displayed in the footer of the modal. */
            actions?: Array<IButtonProps>;
    
            /** The render form event. */
            onRenderForm?: (wpInfo?: IWPInfo) => Array<IFormControlProps> | PromiseLike<Array<IFormControlProps>> | void;
    
            /** The save event. */
            onSave?: (wpCfg?: IWPCfg, form?: IForm) => IWPCfg;
    
            /** True to hide the save button. */
            showSaveButton?: boolean;
    }
    
    /**
        * SPFx WebPart
        */
    export const SPFxWebPart: (props: ISPFxWebPartProps) => ISPFxWebPart;
    
    /**
        * SPFx WebPart
        */
    export interface ISPFxWebPart {
            /** The webpart configuration object. */
            Configuration: ISPFxWebPartCfg;
    
            /** The webpart configuration form. */
            Form: IForm;
    
            /** The webpart configuration modal. */
            Modal: IModal;
    
            /** Shows the webpart configuration form in a modal. */
            showEditModal: () => void;
    }
    
    /**
        * SPFx WebPart Configuration
        */
    export interface ISPFxWebPartCfg { }
    
    /**
        * SPFx WebPart Properties
        */
    export interface ISPFxWebPartProps {
            /** The environment type. */
            envType?: number;
    
            /** The event called prior to saving the webpart configuration. */
            onConfigSaving?: (wpCfg: ISPFxWebPartCfg) => ISPFxWebPartCfg;
    
            /** The event called after the webpart configuration is saved. */
            onConfigSaved?: (wpCfg?: ISPFxWebPartCfg) => void;
    
            /** The event called when the modal is being displayed. */
            onConfigFormDisplaying?: (wpCfg?: ISPFxWebPartCfg) => void;
    
            /** The webpart configuration modal footer button properties. */
            onConfigFormFooterRendering?: (props: ITooltipGroupProps, wpCfg?: ISPFxWebPartCfg) => ITooltipGroupProps;
    
            /** The webpart configuration modal form properties. */
            onConfigFormRendering?: (props: IFormProps, wpCfg?: ISPFxWebPartCfg) => IFormProps;
    
            /** The webpart configuration modal form object. */
            onConfigFormRendered?: (form: IForm, wpCfg?: ISPFxWebPartCfg) => void;
    
            /** The webpart configuration modal properties. */
            onModalRendering?: (props: IModalProps) => IModalProps;
    
            /** The webpart configuration modal properties. */
            onModalRendered?: (modal: IModal) => void;
    
            /** The render event for the webpart. */
            render?: (el?: HTMLElement, cfg?: ISPFxWebPartCfg) => void;
    
            /** The render event for the webpart when the page is in edit mode. */
            renderEdit?: (el?: HTMLElement, cfg?: ISPFxWebPartCfg) => void;
    
            /** The spfx properties. */
            spfx?: {
                    context: {
                            domElement: HTMLElement;
                            graphHttpClient: any;
                            host: any;
                            httpClient: any;
                            instanceId: string;
                            itemId?: number;
                            list?: {
                                    title: string;
                            }
                            manifest: {
                                    alias: string;
                                    componentType: string;
                                    id: string;
                                    loaderConfig: any;
                                    manifestVersion: number;
                                    requiresCustomScript: boolean;
                                    supportedHosts: string[];
                                    supportsThemeVariants: boolean;
                                    version: string;
                            };
                            pageContext: any;
                            propertyPane: any;
                            serviceScope: any;
                            spHttpClient: any;
                            statusRenderer: any;
                            webPartTag: string;
                    };
                    dataVersion: any;
                    description: string;
                    displayMode: number;
                    domElement: HTMLElement;
                    formClosed?: () => void;
                    formSaved?: () => void;
                    getPropertyPaneConfiguration: any;
                    instanceId: string;
                    isRenderAsync: boolean;
                    previewImageUrl: string;
                    properties: any;
                    propertiesMetadata: any;
                    title: string;
                    width: number;
            };
    }
}

declare module 'gd-sprest-bs/webparts/list/types' {
    import { IFormControlProps } from "gd-bs/src/components/form/controlTypes";
    import { Helper, Types } from "gd-sprest";
    import { IWebPart, IWebPartInfo, IWebPartProps, IWebPartCfg, IWebPartEditForm, ISPFxWebPart, ISPFxWebPartCfg, ISPFxWebPartProps } from "gd-sprest-bs/webparts/base/types";
    import { IListFormDisplay, IListFormDisplayProps, IListFormEdit, IListFormEditProps } from "gd-sprest-bs/components/listForm/types";
    
    /**
        * ### List WebPart
        * 
        * The list webpart should be used when targeting a list as a datasource.
        * 
        * ```ts
        * import { WebParts } from "gd-sprest-bs";
        * 
        * // Create the webpart
        * WebParts.WebPart({
        *     elementId: "my-wpList",
        *     cfgElementId: "my-wpList-cfg",
        *     onRenderItems: (wpInfo, items) => {
        *         // Render the display element
        *         wpInfo.el.innerHTML = [
        *             '<h1>List: ' + wpInfo.ListName + '</h1>',
        *             '<h5>List Items: ' + items.length + '</h5>'
        *         ].join('\n');
        *     }
        * });
        * ```
        */
    export const WPList: (props: IWPListProps) => IWPList;
    
    /**
        * List WebPart Edit Form
        */
    export const WPListEditForm: (props: IWPListEditForm) => IWPListEditForm;
    
    /**
        * List WebPart
        */
    export interface IWPList<IListCfg = IWPListCfg, IListInfo = IWPListInfo> extends IWebPart<IListCfg, IListInfo> { }
    
    /**
        * List WebPart Information
        */
    export interface IWPListInfo<IListCfg = IWPListCfg> extends IWebPartInfo<IListCfg> { }
    
    /**
        * List WebPart Properties
        */
    export interface IWPListProps<IListInfo = IWPListInfo, IListEditForm = IWPListEditForm> extends IWebPartProps<IListInfo, IListEditForm> {
            /** The caml query. */
            camlQuery?: string;
    
            /** The odata query. */
            odataQuery?: Types.IODataQuery;
    
            /** The executing caml query event. */
            onExecutingCAMLQuery?: (wpInfo: IListInfo, caml: string) => string;
    
            /** The executing odata query event. */
            onExecutingODATAQuery?: (wpInfo: IListInfo, odata: Types.IODataQuery) => Types.IODataQuery;
    
            /** The on render items event. */
            onRenderItems?: (wpInfo: IListInfo, items: Array<Types.SP.IListItemQuery | Types.SP.ListItem>) => void;
    }
    
    /**
        * List WebPart Configuration
        */
    export interface IWPListCfg extends IWebPartCfg {
            /** The list name */
            ListName?: string;
    
            /** The relative web url */
            WebUrl?: string;
    }
    
    /**
        * List WebPart Edit Form
        */
    export interface IWPListEditForm<IListCfg = IWPListCfg, IListInfo = IWPListInfo> extends IWebPartEditForm<IListCfg, IListInfo> {
            /** The odata list query. */
            listQuery?: Types.IODataQuery;
    
            /** The list changed event. */
            onListChanged?: (wpInfo: IListInfo, list?: Types.SP.IListQuery | Types.SP.List) => Array<IFormControlProps> | PromiseLike<Array<IFormControlProps>> | void;
    
            /** The lists loaded event. */
            onListsLoaded?: (wpInfo: IListInfo, lists?: Array<Types.SP.IListQuery | Types.SP.List>) => Array<Types.SP.IListQuery | Types.SP.List>;
    
            /** The render form event. */
            onRenderForm?: (wpInfo: IListInfo, list?: Types.SP.IListQuery | Types.SP.List) => Array<IFormControlProps> | PromiseLike<Array<IFormControlProps>> | void;
    }
    
    /**
        * SPFx List WebPart
        */
    export const SPFxListWebPart: (props: ISPFxListWebPartProps) => ISPFxListWebPart;
    
    /**
        * SPFx List WebPart
        */
    export interface ISPFxListWebPart extends ISPFxWebPart {
            /** The webpart configuration object. */
            Configuration: ISPFxListWebPartCfg;
    }
    
    /**
        * SPFx List WebPart Configuration
        */
    export interface ISPFxListWebPartCfg extends ISPFxWebPartCfg {
            /** The list id */
            ListId?: string;
    
            /** The list name */
            ListName?: string;
    
            /** The relative web url */
            WebUrl?: string;
    }
    
    /**
        * SPFx List WebPart Properties
        */
    export interface ISPFxListWebPartProps extends ISPFxWebPartProps {
            /** The odata list query. */
            listQuery?: Types.IODataQuery;
    
            /** The event called prior to saving the webpart configuration. */
            onConfigSaving?: (wpCfg: ISPFxListWebPartCfg) => ISPFxListWebPartCfg;
    
            /** The event called after the webpart configuration is saved. */
            onConfigSaved?: (wpCfg?: ISPFxListWebPartCfg) => void;
    
            /** The event called when the modal is being displayed. */
            onConfigFormDisplaying?: (wpCfg?: ISPFxListWebPartCfg) => void;
    
            /** The webpart configuration modal footer button properties. */
            onConfigFormFooterRendering?: (props: ITooltipGroupProps, wpCfg?: ISPFxListWebPartCfg) => ITooltipGroupProps;
    
            /** The webpart configuration modal form properties. */
            onConfigFormRendering?: (props: IFormProps, wpCfg?: ISPFxListWebPartCfg) => IFormProps;
    
            /** The webpart configuration modal form object. */
            onConfigFormRendered?: (form: IForm, wpCfg?: ISPFxListWebPartCfg) => void;
    
            /** The event to customize the CAML query used for getting the list items. */
            onListItemCAMLQuery?: (wpCfg: ISPFxListWebPartCfg, query: string) => string;
    
            /** The event to customize the ODATA query used for getting the list items. */
            onListItemODataQuery?: (wpCfg: ISPFxListWebPartCfg, query: Types.IODataQuery) => Types.IODataQuery;
    
            /** The list changed event. */
            onListsChanged?: (wpInfo: IListInfo, list?: Types.SP.IListQuery | Types.SP.List) => Array<IFormControlProps> | PromiseLike<Array<IFormControlProps>> | void;
    
            /** The lists loaded event. */
            onListsLoaded?: (wpInfo: IListInfo, lists?: Array<Types.SP.IListQuery | Types.SP.List>) => Array<Types.SP.IListQuery | Types.SP.List>;
    
            /** The render event for the webpart. */
            render?: (el?: HTMLElement, cfg?: ISPFxListWebPartCfg) => void;
    
            /** The render event for the webpart when the page is in edit mode. */
            renderEdit?: (el?: HTMLElement, cfg?: ISPFxListWebPartCfg) => void;
    
            /** The render event for the webpart. */
            renderItems?: (el?: HTMLElement, cfg?: ISPFxListWebPartCfg, items?: Array<Types.SP.IListItemQuery | Types.SP.ListItem>) => void;
    }
    
    /**
        * SPFx List Form WebPart
        */
    export const SPFxListFormWebPart: (props: ISPFxListFormWebPartProps) => ISPFxListFormWebPart;
    
    /**
        * SPFx List Form WebPart
        */
    export interface ISPFxListFormWebPart extends ISPFxListWebPart {
            /** The display form. */
            DisplayForm?: IListFormDisplay;
    
            /** The edit/new form. */
            EditForm?: IListFormEdit;
    }
    
    /**
        * SPFx List WebPart Configuration
        */
    export interface ISPFxListFormWebPartCfg extends ISPFxListWebPartCfg { }
    
    /**
        * SPFx List Form WebPart Properties
        */
    export interface ISPFxListFormWebPartProps extends ISPFxListWebPartProps {
            /** The form component id to use for the edit configuration webpart. */
            componentId?: string;
    
            /** The form component properties to use for the edit configuration webpart. */
            componentProps?: string;
    
            /** The list information properties. */
            onGetListInfo?: (props: Helper.IListFormProps) => Helper.IListFormProps;
    
            /** The display form rendering event. */
            onDisplayFormRendering?: (props: IListFormDisplayProps) => IListFormDisplayProps;
    
            /** The display form rendered event. */
            onDisplayFormRendered?: (form?: IListDisplayForm) => void;
    
            /** The footer rendering. */
            onEditFooterRendering?: (props: ITooltipGroupProps) => ITooltipGroupProps;
    
            /** The edit form rendering event. */
            onEditFormRendering?: (props: IListFormEditProps) => IListFormEditProps;
    
            /** The edit form rendered event. */
            onEditFormRendered?: (form?: IListEditForm) => void;
    
            /** The saving event. */
            onSaving?: (values: any) => any;
    
            /** The saved event */
            onSaved?: (item: any) => void;
    }
}

declare module 'gd-sprest-bs/webparts/listFields/types' {
    import { IWPList, IWPListCfg, IWPListEditForm, IWPListInfo, IWPListProps } from "gd-sprest-bs/webparts/list/types";
    
    /**
        * ### List Fields WebPart
        * 
        * The list fields webpart should be used when targeting a list and fields as a datasource.
        * 
        * ```ts
        * import { WebParts } from "gd-sprest-bs";
        * 
        * // Create the webpart
        * WebParts.WebPart({
        *     elementId: "my-wpList",
        *     cfgElementId: "my-wpList-cfg",
        *     onRenderItems: (wpInfo, items) => {
        *         // Render the display element
        *         wpInfo.el.innerHTML = [
        *             '<h1>List: ' + wpInfo.ListName + '</h1>',
        *             '<h5>List Items: ' + items.length + '</h5>'
        *         ].join('\n');
        *     }
        * });
        * ```
        */
    export const WPListFields: (props: IWPListFieldsProps) => IWPListFields;
    
    /**
        * List Fields WebPart Edit Form
        */
    export const WPListFieldsEditForm: (props: IWPListFieldsEditForm) => IWPListFieldsEditForm;
    
    /**
        * List Fields WebPart
        */
    export interface IWPListFields<IListFieldsCfg = IWPListFieldsCfg, IListFieldsInfo = IWPListFieldsInfo> extends IWPList<IListFieldsCfg, IListFieldsInfo> { }
    
    /**
        * List Fields WebPart Information
        */
    export interface IWPListFieldsInfo<IListFieldsCfg = IWPListFieldsCfg> extends IWPListInfo<IListFieldsCfg> { }
    
    /**
        * List Fields WebPart Properties
        */
    export interface IWPListFieldsProps<IListFieldsInfo = IWPListFieldsInfo, IListFieldsEditForm = IWPListFieldsEditForm> extends IWPListProps<IListFieldsInfo, IListFieldsEditForm> { }
    
    /**
        * WebPart Configuration List Field
        */
    export interface IWPListField {
            // The internal field name
            Name: string;
    
            // The display name of the field
            Title: string
    }
    
    /**
        * List Fields WebPart Configuration
        */
    export interface IWPListFieldsCfg extends IWPListCfg {
            /** The selected fields */
            Fields: Array<IWPListField>;
    }
    
    /**
        * List Fields WebPart Edit Form
        */
    export interface IWPListFieldsEditForm<IListFieldsCfg = IWPListFieldsCfg, IListFieldsInfo = IWPListFieldsInfo> extends IWPListEditForm<IListFieldsCfg, IListFieldsInfo> { }
}

declare module 'gd-sprest-bs/webparts/search/types' {
    import { Types } from "gd-sprest";
    import { IWPList, IWPListInfo, IWPListProps, IWPListCfg, IWPListEditForm } from "gd-sprest-bs/webparts/list/types";
    
    /**
        * ### Search WebPart
        * 
        * The search webpart extends the list webpart, and includes a filterItems method to return items based on the inputed filter text.
        * 
        * ```ts
        * import { WebParts } from "gd-sprest-bs";
        * 
        * // Create the webpart
        * let wp = WebParts.WebPart({
        *     elementId: "my-wpSearch",
        *     cfgElementId: "my-wpSearch-cfg",
        *     onRenderItems: (wpInfo, items) => {
        *         // Render the display element
        *         wpInfo.el.innerHTML = [
        *             '<h1>List: ' + wpInfo.ListName + '</h1>',
        *             '<h5>List Items: ' + items.length + '</h5>'
        *         ].join('\n');
        *     }
        * });
        * ```
        */
    export const WPSearch: (props: IWPListProps) => IWPSearch;
    
    /**
        * Search WebPart Edit Form
        */
    export const WPSearchEditForm: (props: IWPSearchEditForm) => IWPSearchEditForm;
    
    /**
        * Search WebPart
        */
    export interface IWPSearch extends IWPList<IWPSearchCfg, IWPSearchInfo> {
            /** The filter items method. */
            filterItems: (filterText: string) => Array<Types.SP.IListItemQuery | Types.SP.ListItem>;
    }
    
    /**
        * Search WebPart Information
        */
    export interface IWPSearchInfo extends IWPListInfo<IWPSearchCfg> { }
    
    /**
        * Search WebPart Properties
        */
    export interface IWPSearchProps extends IWPListProps<IWPSearchInfo, IWPSearchEditForm> {
            /** The internal field names to be used for search. These will be appended to the configuration fields. */
            searchFields?: Array<{ name: string, type: string }>;
    }
    
    /**
        * Search WebPart Configuration
        */
    export interface IWPSearchCfg extends IWPListCfg {
            /** The searchable fields. */
            Fields: Array<{ name: string, type: string }>;
    }
    
    /**
        * Search WebPart Edit Form
        */
    export interface IWPSearchEditForm extends IWPListEditForm<IWPSearchCfg, IWPSearchInfo> { }
}

declare module 'gd-sprest-bs/webparts/tabs/types' {
    import { INav } from "gd-bs/src/components/nav/types";
    import { IWebPart, IWebPartProps } from "gd-sprest-bs/webparts/base/types";
    
    /**
        * ### WebPart Tabs
        * 
        * The webpart tabs will generate tabs for each visible webpart in its zone.
        * 
        * ```ts
        * import { WebParts } from "gd-sprest-bs";
        * 
        * // Create the webpart
        * WebParts.WPTabs({ elementId: "my-tabs" });
        * ```
        */
    export const WPTabs: (props: IWPTabsProps) => IWPTabs;
    
    /**
        * WebPart Tab Types
        */
    export const WPTabTypes: IWPTabTypes;
    
    /**
        * WebPart Tabs
        */
    export interface IWPTabs extends IWebPart {
            getNav(): INav;
            getTabs(): Array<HTMLElement>;
    }
    
    /**
        * WebPart Tabs Properties
        */
    export interface IWPTabsProps extends IWebPartProps {
            onClick?: (el?: HTMLElement) => void;
            type?: number;
    }
    
    /**
        * WebPart Tab Types
        */
    export type IWPTabTypes = {
            Pillars: number;
            Tabs: number;
    }
}

declare module 'gd-sprest-bs/webparts/taxonomy/types' {
    import { IDropdownItem } from "gd-bs/src/components/dropdown/types"
    import { Helper } from "gd-sprest";
    import { IWebPart, IWebPartInfo, IWebPartProps, IWebPartCfg, IWebPartEditForm } from "gd-sprest-bs/webparts/base/types";
    
    /**
        * ### Taxonomy WebPart
        * 
        * The taxonomy webpart should be used when targeting the term store as a datasource.
        * 
        * ```ts
        * import { WebParts } from "gd-sprest-bs";
        * 
        * // Create the webpart
        * WebParts.WPTaxonomy({
        *     elementId: "my-wpTaxonomy",
        *     cfgElementId: "my-wpTaxonomy-cfg",
        *     onRenderTermSetTerms: (wpInfo, terms) => {
        *         // Render the display element
        *         wpInfo.el.innerHTML = [
        *             '<h1>Term Set: ' + wpInfo.TermSetName + '</h1>',
        *             '<h5>Terms: ' + terms.length + '</h5>'
        *         ].join('\n');
        *     }
        * });
        * ```
        */
    export const WPTaxonomy: (props: IWPTaxonomyProps) => IWPTaxonomy;
    
    /**
        * Taxonomy WebPart Edit Form
        */
    export const WPTaxonomyEditForm: (props: IWPTaxonomyEditForm) => IWPTaxonomyEditForm;
    
    /**
        * Taxonomy WebPart
        */
    export interface IWPTaxonomy extends IWebPart<IWPTaxonomyCfg, IWPTaxonomyInfo> { }
    
    /**
        * Taxonomy WebPart Information
        */
    export interface IWPTaxonomyInfo extends IWebPartInfo<IWPTaxonomyCfg> { }
    
    /**
        * Taxonomy WebPart Properties
        */
    export interface IWPTaxonomyProps extends IWebPartProps<IWPTaxonomyInfo, IWPTaxonomyEditForm> {
            /** The on render term set event. */
            onRenderTermSet?: (wpInfo: IWPTaxonomyInfo, termSet: Helper.ITerm) => void;
    
            /** The on render term sets event. */
            onRenderTermSets?: (wpInfo: IWPTaxonomyInfo, termSets: Array<Helper.ITermSetInfo>) => void;
    
            /** The on render term set terms event. */
            onRenderTermSetTerms?: (wpInfo: IWPTaxonomyInfo, terms: Array<Helper.ITermInfo>) => void;
    }
    
    /**
        * Taxonomy WebPart Configuration
        */
    export interface IWPTaxonomyCfg extends IWebPartCfg {
            /** The term group id. */
            TermGroupId?: string;
    
            /** The term group name. */
            TermGroupName?: string;
    
            /** The term set id. */
            TermSetId?: string;
    
            /** The term set name */
            TermSetName?: string;
    
            /** The term set term id. */
            TermSetTermId?: string;
    
            /** The term set term name */
            TermSetTermName?: string;
    }
    
    /**
        * Taxonomy WebPart Edit Form
        */
    export interface IWPTaxonomyEditForm extends IWebPartEditForm<IWPTaxonomyCfg, IWPTaxonomyInfo> {
            /** The term group changed event. */
            onTermGroupChanged?: (wpInfo: IWPTaxonomyInfo, termGroupInfo?: ITermGroupInfo) => void;
    
            /** The term group loaded event. */
            onTermGroupsLoaded?: (wpInfo: IWPTaxonomyInfo, termGroups: Array<IDropdownItem>) => Array<IDropdownItem>;
    
            /** The term set changed event. */
            onTermSetChanged?: (wpInfo: IWPTaxonomyInfo, termSetInfo?: ITermInfo) => void;
    
            /** The term set loaded event. */
            onTermSetsLoaded?: (wpInfo: IWPTaxonomyInfo, termSets?: Array<IDropdownItem>) => Array<IDropdownItem>;
    
            /** The term set term changed event. */
            onTermSetTermChanged?: (wpInfo: IWPTaxonomyInfo, termInfo?: ITermInfo) => void;
    
            /** The term set terms loaded event. */
            onTermSetTermsLoaded?: (wpInfo: IWPTaxonomyInfo, terms?: Array<IDropdownItem>) => Array<IDropdownItem>;
    
            /** Flag to display the term set terms. */
            showTermSetTerms?: boolean;
    }
    
    /**
        * Term Group Info
        */
    interface ITermGroupInfo {
            id: string;
            name: string;
    }
    
    /**
        * Term Info
        */
    interface ITermInfo {
            id: string;
            name: string;
    }
}

declare module 'gd-sprest-bs/components/datetime/types' {
    import { IFormControlProps } from "gd-bs/src/components/form/controlTypes";
    
    /**
        * Date/Time
        */
    export const DateTime: (props: IDateTimeProps) => IDateTime
    
    /**
        * Date/Time
        */
    export interface IDateTime {
            /** The date/time picker element. */
            el: HTMLDivElement;
    
            /** The flatpickr object. */
            flatpickrObj: any;
    
            /** Returns the date as a Date/Time object. */
            getDate: () => Date;
    
            /** Method to get the value. */
            getValue: () => string;
    
            /** Method to set the value. */
            setValue: (dt: string | Date, dtFormat?: string) => void;
    }
    
    /**
        * Date/Time Props
        */
    export interface IDateTimeProps {
            /** Assigns the object to the input parameter. */
            assignTo?: (obj: IDateTime) => void;
    
            /** The class name to apply to the element. */
            className?: string;
    
            /** The element to render the form to. */
            el?: HTMLElement;
    
            /** True to disable the date/time plugin */
            disabled?: boolean;
    
            /** The date/time label. */
            label?: string;
    
            /** The change event. */
            onChange?: (value: string) => void;
    
            /** The flatpickr options. */
            options?: any;
    
            /** Flag to display the time. */
            showTime?: boolean;
    
            /** The date/time value. */
            value?: string;
    }
    
    /**
        * Form Control Properties - DateTime
        */
    export interface IFormControlPropsDateTime extends IFormControlProps {
            /** The flatpickr options. */
            options?: any;
    
            /** Flag to display the time. */
            showTime?: boolean;
    
            /** The date/time value. */
            value?: string;
    }
}

declare module 'gd-sprest-bs/components/field/types' {
    import { Helper, Types } from "gd-sprest";
    import { IFormControl, IFormControlProps, IFormControlValidationResult } from "gd-bs/src/components/form/controlTypes";
    
    /**
        * Field
        */
    export const Field: (props: IFieldProps) => IField;
    
    /**
        * Field
        */
    export interface IField {
            control: IFormControl;
            controlProps: IFormControlProps;
            getValue: () => IFieldValue;
            setControl: (control: IFormControl) => void;
            isValid: () => boolean;
    }
    
    /**
        * Field Properties
        */
    export interface IFieldProps {
            assignTo?: (obj: IField) => void;
            controlMode?: number;
            errorMessage?: string;
            field: Types.SP.Field;
            listInfo: Helper.IListFormResult;
            lookupFilter?: string | Types.IODataQuery;
            onError?: (msg: string) => void;
            onControlRendered?: (control: IFormControl, field: Types.SP.Field) => void | Promise<IFormControl>;
            onControlRendering?: (control: IFormControlProps, field: Types.SP.Field) => void | Promise<IFormControlProps>;
            onValidate?: (field: Types.SP.Field, control: IFormControl, value: IFormControlValidationResult) => boolean | IFormControlValidationResult;
            value?: any;
    }
    
    /**
        * Field Image Information
        */
    export interface IFieldImageInfo extends Helper.IListFormAttachmentInfo {
            fieldId: string;
            fieldName: string;
    }
    
    /**
        * Field Image Value
        */
    export interface IFieldImageValue {
            fieldId: string;
            fieldName: string;
            fileName: string;
            id: string;
            nativeFile?: any;
            serverRelativeUrl: string;
            serverUrl: string;
            type: string;
    }
    
    /**
        * Field Value
        */
    export interface IFieldValue {
            name: string;
            value: any;
    }
    
    /**
        * Form Control Lookup Properties
        */
    export interface IFormControlLookupProps extends IFormControlProps {
            lookupFilter?: string | Types.IODataQuery;
            onControlRendering?: (control: IFieldLookupProps, field: Types.SP.Field) => void | Promise<IFieldLookupProps>;
    }
    
    /**
        * Form Control Url Properties
        */
    export interface IFormControlUrlProps extends IFormControlProps {
            showDescription?: boolean;
            onControlRendering?: (control: IFieldUrlProps, field: Types.SP.Field) => void | Promise<IFieldUrlProps>;
    }
}

declare module 'gd-sprest-bs/components/listForm/types' {
    import { IFormControl, IFormControlProps } from "gd-bs/src/components/form/controlTypes";
    import { IForm, IFormRow } from "gd-bs/src/components/form/formTypes";
    import { Helper, Types } from "gd-sprest";
    
    /**
        * List Form
        */
    export const ListForm: IListForm;
    
    /**
        * List Form
        */
    export interface IListForm extends Helper.IListForm {
            /**
                * Method to render the display form template.
                * @param props - The display form properties.
                */
            renderDisplayForm(props: IListFormDisplayProps): IListFormDisplay;
    
            /**
                * Method to render the edit/new form.
                * @param props - The edit/new form properties.
                */
            renderEditForm(props: IListFormEditProps): IListFormEdit;
    }
    
    /**
        * List Form Attachments Properties
        */
    export interface IListFormAttachmentsProps {
            /** The element to render the form to. */
            el: Element;
    
            /** The list form information. */
            info: Helper.IListFormResult;
    
            /** The item attachment saved event. */
            onSave?: (info: Helper.IListFormResult) => void;
    }
    
    /**
        * List Form Display
        */
    export interface IListFormDisplay {
            /** Optional data object to store custom properties for this form. */
            data?: any;
    
            /** The form element. */
            el: HTMLFormElement;
    
            /** Method to get a control by field name */
            getControl(fieldName: string): IFormControl;
    }
    
    /**
        * List Form Display Properties
        */
    export interface IListFormDisplayProps extends Helper.IListFormDisplayProps {
            /** Assigns the object to the input parameter. */
            assignTo?: (obj: IListFormDisplay) => void;
    
            /** The form component class name. */
            className?: string;
    
            /** Flag to display the attachments, if they are loaded. */
            displayAttachments?: boolean;
    
            /** The form component group class name. */
            groupClassName?: string;
    
            /** The form component row class name. */
            rowClassName?: string;
    
            /** The control rendered event. */
            onControlRendered?: (control: IFormControl, field: Types.SP.Field) => void | Promise<IFormControl>;
    
            /** The control rendering event. */
            onControlRendering?: (control: IFormControlProps, field: Types.SP.Field) => void | Promise<IFormControlProps>;
    
            /** The form rendered event. */
            onFormRendered?: (form: IForm) => void;
    
            /** The fields to render event. */
            onGetFields?: (fieldNames?: string[]) => string[];
    
            /** The error event. */
            onError?: (msg?: string) => void;
    
            /** The list form rows. */
            template?: Array<IFormRow>;
    }
    
    /**
        * List Form Edit
        */
    export interface IListFormEdit {
            /** Appends controls to the form */
            appendControls(controls: Array<IFormControlProps>);
    
            /** Appends rows to the form */
            appendRows(rows: Array<IFormRow>);
    
            /** Optional data object to store custom properties for this form. */
            data?: any;
    
            /** The form element. */
            el: HTMLFormElement;
    
            /** Method to get a control by field name */
            getControl(fieldName: string): IFormControl;
    
            /** Method to get the list item associated with the item */
            getItem(): any;
    
            /** Method to get the form values */
            getValues(): { [key: string]: any }
    
            /** Flag to indicate if attachments exist */
            hasAttachments(): boolean;
    
            /** Inserts a control into the form. */
            insertControl(idx: number, control: IFormControlProps);
    
            /** Method to determine if the field is valid. */
            isValid(): boolean;
    
            /** Method to refresh the request digest value. */
            refreshRequestDigest(): PromiseLike<void>;
    
            /** Method to save the form. */
            save(customValues?: any, checkItemVersion?: boolean): PromiseLike<Types.SP.ListItem>;
    }
    
    /**
        * List Form Edit Properties
        */
    export interface IListFormEditProps extends IListFormDisplayProps, Helper.IListFormEditProps {
            /** Assigns the object to the input parameter. */
            assignTo?: (obj: IListFormEdit) => void;
    
            /** Use this event to filter a lookup field by OData query. */
            onFilterLookupField?: (field: Types.SP.Field) => string | Types.IODataQuery;
    
            /** The form saving event. */
            onSaving?: (item: any) => void | PromiseLike<any>;
    
            /** Use this event to set a custom default value. */
            onSetFieldDefaultValue?: (field: Types.SP.Field, value: any) => any;
    
            /** The form validating event. */
            onValidate?: (field: Types.SP.Field, control: IFormControl) => boolean;
    }
}

declare module 'gd-sprest-bs/components/listFormDialog/types' {
    import { IFormControl, IFormControlProps } from "gd-bs/src/components/form/controlTypes";
    import { IFormRow } from "gd-bs/src/components/form/formTypes";
    import { IModal, IModalProps } from "gd-bs/src/components/modal/types";
    import { IToolbarProps } from "gd-bs/src/components/toolbar/types";
    import { Helper, Types } from "gd-sprest";
    
    /**
        * List Form Dialog
        */
    export const ListFormDialog: (props: IListFormDialogProps) => IListFormDialog;
    
    /**
        * List Form Dialog
        */
    export interface IListFormDialog extends IModal {
            /** Method to save the form. */
            saveForm: () => PromiseLike<Types.SP.ListItem>;
    }
    
    /**
        * List Form Dialog Properties
        */
    export interface IListFormDialogProps extends Helper.IListFormProps {
            /** The form actions. */
            actions?: IToolbarProps;
    
            /** Assigns the object to the input parameter. */
            assignTo?: (obj: IListFormDialog) => void;
    
            /** The form control mode. */
            controlMode?: number;
    
            /** The element to render the field to. */
            el: HTMLElement;
    
            /** The item. */
            item?: any;
    
            /** The modal dialog properties. */
            modalProps?: IModalProps;
    
            /** The control rendered event. */
            onControlRendered?: (control: IFormControl) => void | Promise<IFormControl>;
    
            /** The control rendering event. */
            onControlRendering?: (control: IFormControlProps) => void | Promise<IFormControlProps>;
    
            /** The form saving event. */
            onSaving?: (item: any) => void | PromiseLike<any>;
    
            /** The form saved event. */
            onSaved?: (item?: Types.SP.ListItem) => void;
    
            /** The list form rows. */
            template?: Array<IFormRow>;
    
            /** True to display the modal by default. */
            visible?: boolean;
    }
}

declare module 'gd-sprest-bs/components/peoplePicker/types' {
    
    /**
        * ### People Picker
        * 
        * ```ts
        * import { ContextInfo, Components } from "gd-sprest-bs";
        * 
        * // Create the panel
        * let el = document.querySelector("#people-picker");
        * let form = Components.Form({
        *     el: el,
        *     rows: [
        *         // Other controls go here
        *         {
        *             control: {
        *                 allowGroups: false,
        *                 label: "Select User:",
        *                 multi: true,
        *                 name: "User",
        *                 type: Components.FormControlTypes.PeoplePicker
        *                 value: ContextInfo.userId // Default to the current user
        *             } as Components.IFormControlPropsPeoplePicker
        *         }
        *     ]
        * });
        * ```
        */
    export const PeoplePicker: (props: IPeoplePickerProps) => IPeoplePicker;
    
    import { IFormControlProps } from "gd-bs/src/components/form/controlTypes";
    import { Types } from "gd-sprest";
    
    /**
        * People Picker
        */
    export interface IPeoplePicker {
            /** The people picker element. */
            el: HTMLElement;
    
            /** Returns the selected users. */
            getValue: () => Array<Types.SP.User | Types.SP.Group>;
    
            /** Sets the selected users by id or people picker user object. */
            setValue: (selectedUsers: Array<string | number | Types.IPeoplePickerUser>) => void;
    }
    
    /**
        * People Picker Properties
        */
    export interface IPeoplePickerProps {
            /** True, to include groups in the results. */
            allowGroups?: boolean;
    
            /** Assigns the object to the input parameter. */
            assignTo?: (obj: IPeoplePicker) => void;
    
            /** The class name to apply to the element. */
            className?: string;
    
            /** True to disable the component. */
            disabled?: boolean;
    
            /** The element to render the form to. */
            el?: HTMLElement;
    
            /** The specific SharePoint group id to search within. */
            groupId?: number;
    
            /** The label. */
            label?: string;
    
            /** Limits the results to a maximum number. */
            maxResults?: number;
    
            /** The minimum number of characters to enter before search occurs. */
            minCharSearch?: number;
    
            /** True to allow multiple users to be selected. */
            multi?: boolean;
    
            /** The change event. */
            onChange?: (obj: Array<Types.IPeoplePickerUser>) => void;
    
            /** The placeholder text. (Default value is "Search") */
            placeholder?: string;
    
            /** True to make the component read-only. */
            readOnly?: boolean;
    
            /** True to search the local users first. */
            searchLocal?: boolean;
    
            /** The url to search for for users. */
            searchUrl?: string;
    
            /** The selected users. */
            value?: string | number | Types.IPeoplePickerUser | Array<string | number | Types.IPeoplePickerUser>;
    }
    
    /**
        * Form Control Properties - People Picker
        */
    export interface IFormControlPropsPeoplePicker extends IFormControlProps {
            allowGroups?: boolean;
            groupId?: number;
            maxResults?: number;
            multi?: boolean;
            onChange?: (obj: Array<Types.IPeoplePickerUser>) => void;
            placeholder?: string;
            searchLocal?: boolean;
            searchUrl?: string;
            value?: string | number | Types.IPeoplePickerUser | Array<string | number | Types.IPeoplePickerUser>;
    }
}

declare module 'gd-sprest-bs/components/richTextBox/types' {
    import { IFormControlProps } from "gd-bs/src/components/form/controlTypes";
    
    /**
        * Rich TextBox
        */
    export const RichTextBox: (props: IRichTextBoxProps) => IRichTextBox
    
    /**
        * Rich TextBox
        */
    export interface IRichTextBox {
            /** The quill root element. */
            el: HTMLDivElement;
    
            /** The div element containing the textbox content. */
            elContents: HTMLDivElement;
    
            /** The quill object. */
            quillObj: any;
    
            /** Method to get the contents as html. */
            getHtml: () => string;
    
            /** Method to get the contents as text. */
            getText: () => string;
    
            /** Method to set the content's html. */
            setHtml: (string) => void;
    }
    
    /**
        * Rich TextBox Quill Options
        */
    export interface IRichTextBoxOptions {
            bounds?: HTMLElement | string | undefined;
            debug?: string | boolean | undefined;
            formats?: string[] | undefined;
            modules?: { [key: string]: any } | undefined;
            placeholder?: string | undefined;
            readOnly?: boolean | undefined;
            scrollingContainer?: HTMLElement | string | undefined;
            strict?: boolean | undefined;
            theme?: string | undefined;
    }
    
    /**
        * Rich TextBox Props
        */
    export interface IRichTextBoxProps {
            /** Assigns the object to the input parameter. */
            assignTo?: (obj: IRichTextBox) => void;
    
            /** The class name to apply to the element. */
            className?: string;
    
            /** The element to render the form to. */
            el?: HTMLElement;
    
            /** True to disable the date/time plugin */
            disabled?: boolean;
    
            /** The date/time label. */
            label?: string;
    
            /** The quill options. */
            options?: IRichTextBoxOptions;
    
            /** The placeholder text. */
            placeholder?: string;
    
            /** The # of rows to display. */
            rows?: number;
    
            /** The type of toolbar to display. */
            toolbarType?: number;
    
            /** The date/time value. */
            value?: string;
    }
    
    /**
        * Form Control Properties - Rich TextBox
        */
    export interface IFormControlPropsRichTextBox extends IFormControlProps {
            /** The quill options. */
            options?: IRichTextBoxOptions;
    
            /** The placeholder text. */
            placeholder?: string;
    
            /** The # of rows to display. */
            rows?: number;
    
            /** The type of toolbar to display. */
            toolbarType?: number;
    
            /** The date/time value. */
            value?: string;
    }
    
    /**
        * Rich TextBox Types
        */
    export type IRichTextBoxTypes = {
            None: number;
            Basic: number;
            Full: number;
    }
}

