/**
 * Type of client-side component.
 * @public
 */
export declare type ComponentType = 'Application' | 'WebPart' | 'Library' | 'Extension' | 'AdaptiveCardExtension';

/**
 * The type of client-side extension.  Used by IClientSideExtensionManifest.extensionType.
 *
 * @public
 */
export declare type ExtensionType = 'Unknown' | 'ApplicationCustomizer' | 'FieldCustomizer' | 'ListViewCommandSet' | 'SearchQueryModifier';

/**
 * @beta
 */
export declare interface IAdaptiveCardExtensionManifest<TProperties> extends IClientSideComponentManifest {
    /**
     * Id matching the Teams SaaS application that the ACE will redirect to when a “full page” experience is required
     */
    connectedTeamsAppId?: string;
    /**
     * Id of the SPFx application that the ACE will redirect to when a “full page” experience is required
     */
    connectedSPFXAppId?: string;
    /**
     * Definition: An array defining what host types are supported
     *
     *
     * @remarks
     * Usage: Use this array to define all hosts that are supported.
     *
     */
    supportedHosts?: ReadonlyArray<'Dashboard' | 'SharePointWebPart'>;
    /**
     * Definition: If true, this ACE supports and has been tested for theme variants experience.
     *
     * @remarks
     * Usage: Use this flag if a ACE supports theme variants and has been tested as such.
     * In order to support theme variants, ACEs must have the capability to render correctly in the context
     * of a theme variant. An ACE may or may not need to be updated to support theme variants, but should
     * always be tested before enabling this flag. By default no ACEs support theme variants.
     *
     */
    supportsThemeVariants?: boolean;
    /**
     * An untyped property bag for experimental flags not ready for production.
     *
     */
    experimentalData?: {
        [key: string]: any;
    };
    /**
     * If true, this AdaptiveCardExtension should not be displayed in the modern SharePoint toolbox.
     *
     * @remarks
     * Usage: Use this flag if it is not appropriate to display a AdaptiveCardExtension in the modern toolbox. By default,
     * all AdaptiveCardExtensions are enabled to be displayed in the toolbox if supportedHosts contains 'SharePointWebPart'
     * Such AdaptiveCardExtensions can be provisioned on pages though API or be added to the page in a pre configured way.
     */
    hiddenFromToolbox?: boolean;
    /* Excluded from this release type: isolationLevel */
    /**
     * Definition:
     * - If true, the AdaptiveCardExtension will be disposed and reloaded when the AdaptiveCardExtension data is updated by an external source.
     * - If false, the AdaptiveCardExtension data will be deserialized and the properties of the AdaptiveCardExtension will be updated,
     *   onAfterPropertiesUpdatedExternally will be executed.
     * - If undefined, AdaptiveCardExtensions developed with SPFx version below 1.9 will default to true and AdaptiveCardExtensions developed with
     *   a SPFx version 1.9 or greater will default to false.
     *
     * @remarks
     * By default, onAfterPropertiesUpdatedExternally will re-render the AdaptiveCardExtension. If your AdaptiveCardExtension requires specialized
     * logic, then it is recommended to override onAfterPropertiesUpdatedExternally.
     */
    useFallbackWhenPropertiesUpdatedExternally?: boolean;
    /**
     * A AdaptiveCardExtension can have pre-configured properties like the title, description, iconImageUrl, officeFabricIconFontName, toolbox group name
     * and AdaptiveCardExtension specific custom properties. And there can be multiple instances of these pre-configured properties.
     *
     * @remarks
     * This helps support scenarios where an organization may want to present multiple pre-configured entries
     * for a AdaptiveCardExtension in the Toolbox. Each entry is expected to configure the AdaptiveCardExtension with a different set
     * of pre-configured properties. A developer may decide to seed some initial values for these properties
     * but an organization admin can go ahead and customize these properties per the needs of his/her organization.
     * The properties can also be modified by the author of the page.
     *
     * Usage: help display a AdaptiveCardExtension in the Toolbox, PropertyPane and the initial rendering of the AdaptiveCardExtension.
     *
     * Type: JSON object
     *
     * Supported values: Array of `IClientSideWebPartManifestEntry` objects.
     *
     * Example:
     * ```
     *   [{
     *      "groupId": "5c03119e-3074-46fd-976b-c60198311f70",
     *      "group": { "default": "Other" },
     *      "title": { "id": "$./ManifestStrings.resx:PrimaryTextL1Template;" },
     *      "description": { "id": "$./ManifestStrings.resx:PrimaryTextL1TemplateDescription;" },
     *      "officeFabricIconFontName": "Balloons",
     *      "properties": {
     *        "templateType": "primaryText",
     *        "title": "Primary Text",
     *        "primaryText": "Basic card",
     *        "description": "This is an example.",
     *        "cardSize": "Medium"
     *      }
     *    }]
     * ```
     */
    preconfiguredEntries: IAdaptiveCardExtensionManifestEntry<TProperties>[];
}

/**
 * This interface specifies the set of properties that can be pre-configured by a AdaptiveCardExtension developer. Each
 * pre-configured instance of the AdaptiveCardExtension will need a copy of these properties. Organization admins and
 * content authors can modify these properties on a need basis.
 *
 * @beta
 */
export declare interface IAdaptiveCardExtensionManifestEntry<TProperties> {
    /**
     * Size of the AdaptiveCardExtension when it is rendered. This is value must be one of the supported CardSizes
     * ["Medium", "Large"] defined in the sp-adaptive-card-base project.
     */
    cardSize: string;
    /**
     * Title of the AdaptiveCardExtension represented as a single a dictionary of locale keys to title values. This
     * value will be displayed to the user in the toolbox.
     *
     * @remarks
     * This title should be used in the Toolbox and other display areas. The AdaptiveCardExtension developer may give
     * an initial title to the AdaptiveCardExtension. The organization admin and page author will have the ability to
     * change this title as per need.
     *
     * Usage: display the name of the AdaptiveCardExtension in the toolbox, web part gallery and the page.
     *
     * Supported values: a dictionary of locale keys to strings. Should always have a `'default'` key.
     *
     * Example: `"My Webpart"`
     * ```
     *          {
     *            "default": "My WebPart"
     *            "en-us": "My WebPart",
     *            "fr-fr": "Ma WebPart",
     *            "zh": "我的 web 部件"
     *          }
     * ```
     */
    title: ILocalizedString;
    /**
     * Description of the AdaptiveCardExtension represented as a dictionary of locale keys to description values. This
     * value will be displayed to the user in the toolbox. This description should be used in the Toolbox tooltip and
     * other display areas.
     *
     * @remarks
     * The AdaptiveCardExtension developer may give an initial description to the AdaptiveCardExtension. The organization
     * admin and page author will have the ability to change this description as per need.
     *
     * Usage: display the description of the AdaptiveCardExtension in the toolbox tooltip, web part gallery and the page.
     *
     * Supported values: a dictionary of locale keys to strings. Should always have a `'default'` key.
     *
     * Example: `"A tool for displaying neat information."`
     *
     * ```
     *          {
     *            "default": "A tool for displaying neat information.",
     *            "en-us": "A tool for displaying neat information.",
     *            "fr-fr": "Un outil d’affichage des informations soignées.",
     *            "zh": "用於顯示整潔資訊的工具。"
     *          }
     * ```
     */
    description: ILocalizedString;
    /**
     * The icon for the AdaptiveCardExtension, to be displayed in the toolbox, represented as a character name in the
     * Office 365 icon font file.
     *
     * @remarks
     * The icon font is specified here: {@link https://aka.ms/uifabric-icons}  If this field has
     * a value, the {@link IClientSideWebPartManifestEntry.iconImageUrl} field will be ignored.
     *
     * Supported values: Any character name in the Office 365 Icon Font.
     *
     * Example: "graph"
     */
    officeFabricIconFontName?: string;
    /**
     * The icon for the AdaptiveCardExtension, to be displayed in the toolbox, represented an image URL. The image at the
     * URL must be exactly 40x28 px (SPPPLAT VSO#218660 to fix the size of the icon image).
     *
     * @remarks
     *  If the {@link IClientSideWebPartManifestEntry.officeFabricIconFontName} field does not have a value,
     *  this field must have a value. This value can be an absolute URL (e.g. `"http://example.com/icons/my-icon.png"`) or
     *  a relative file path (e.g. `"./icons/my-icon.png"`). In the latter case, the path will be resolved relative to
     *  the folder containing the input manifest. The icon file will be copied to the deployment folder like an asset,
     *  and the output manifest’s iconImageUrl will be replaced with a URL relative to the URL used to load all other
     *  assets (the loaderConfig.internalModuleBaseUrls property).
     *
     * Supported values: Any absolute URL.
     *
     * Example: `"https://contoso.akamaihd.net/files/myWebpartIcon.png"`
     */
    iconImageUrl?: string;
    /**
     * The group id to determine which modern group contains the AdaptiveCardExtension in modern site page. The SharePoint
     * Framework reserves group ids for predefined groups. The developer can pick one from those groups. If the developer
     * fills an id not in the predefined groups, it falls back to Other group.
     *
     * @remarks
     *
     * Supported values: the GUID from PredefinedGroup list
     *
     * Example: `"cf066440-0614-43d6-98ae-0b31cf14c7c3"`
     *
     * @beta
     */
    groupId: PredefinedGroup | string;
    /**
     * This field is used to tag a AdaptiveCardExtension with keywords that are different from the AdaptiveCardExtension group name.
     * Tags can be used for categorization and searching of AdaptiveCardExtensions. For example, in the toolbox.
     *
     * @remarks
     *
     * Example `[{ "default": "image" }, { "default": "media" }, { "default": "picture" }, ...]`
     *
     * @beta
     */
    tags?: ILocalizedString[];
    /**
     * Definition: Use this field to specify the data version of the pre-configured data provided to the AdaptiveCardExtension.
     * Note that data version is different from the version field in the manifest.
     *
     * @remarks
     * The manifest version is used to control the versioning of the AdaptiveCardExtension code, while data version is used
     * to control the versioning of the serialized data of the AdaptiveCardExtension. Refer to dataVersion field of your
     * AdaptiveCardExtension for more information.
     *
     * Usage: versioning and evolving the serialized data of the AdaptiveCardExtension
     *
     * Type: string representing a {@link http://semver.org | semantic version} with only two parts
     *
     * Supported values: MAJOR.MINOR
     *
     * Example: `"1.0"`
     */
    dataVersion?: string;
    /**
     * Every AdaptiveCardExtension is expected to have some custom properties.  For example, a page AdaptiveCardExtension might define
     * properties for the page URL and caption text. A list AdaptiveCardExtension may have the list ID and list title as its
     * properties, and so on.
     *
     * @remarks
     *
     * The SharePoint Framework passes these properties to the AdaptiveCardExtensions when they are loaded. The AdaptiveCardExtension developer
     * fully controls the schema for these properties. The AdaptiveCardExtension developer should follow versioning rules when
     * updating the properties.
     *
     * Usage: rendering of the AdaptiveCardExtension
     *
     * Example: `{"imageSource": "https://contoso.akamaihd.net/files/contosoLogo.jpg", "captionText": "Contoso logo"}"`
     */
    properties: TProperties;
}

/* Excluded from this release type: ICapabilityCollection */

/* Excluded from this release type: IClientSideApplicationManifest */

/**
 * A library is defined by this manifest. Libraries currently do not have any additional properties.
 *
 * @public
 */
export declare interface IClientSideAssemblyManifest extends IClientSideComponentManifest {
    /**
     * The ID of the component from which the assembly is built.
     *
     * @remarks
     *
     * Supported values: any GUID
     *
     * Example: "dbef608d-3ad5-4f8f-b139-d916f2f0a294"
     */
    rootComponentId: string;
}

/**
 * This interface describes how a client-side component is to be loaded and initialized by a SharePoint client
 * framework. It contains all data for loading an entrypoint script and its dependency scripts.
 *
 * @beta
 */
export declare interface IClientSideComponentLoaderConfiguration {
    /**
     * This is an array of fully-qualified paths to be prepended to each of the script resource paths with the
     * "internal" or "localized" type. If one fails to load, the loader will attempt to load from the next until there
     * are no base paths remaining.
     *
     * @remarks
     * All "internal" and "localized" script resources that do not have fully-qualified URLs
     * as their "path" field values must be hosted under each of the paths listed in this property. For example, if an
     * internal module's "path" field value is `"master_2015-04-20/my-application.bundle_1928f8a0.js"` and this field's
     * value is `[ "https://contoso.akamaihd.net/files/", "https://contoso.msecnd.net/files/" ]`, the loader will first
     * attempt to load this script resource from the URL
     * `"https://contoso.akamaihd.net/files/master_2015-04-20/my-application.bundle_1928f8a0.js"`. If loading from
     * that URL fails, the loader will then attempt to load this script resource from
     * `"https://contoso.msecnd.net/files/master_2015-04-20/my-application.bundle_1928f8a0.js"`. If that URL fails
     * to load, the component will fail to load and an error will be returned. It is important to note that the support
     * for multiple base URLs is purely for failover support. This means that all files must be present on all hosts
     * listed in this field.
     *
     * Usage: Base URLs for script resources with the "internal" or "localized" type.
     *
     * Supported values: Any URL that contains all internal scripts referenced in the "scriptResources" dictionary.
     *
     * Example: `[ "https://contoso.akamaihd.net/files/", "https://contoso.msecnd.net/files/" ]`
     */
    internalModuleBaseUrls: string[];
    /**
     * This is the ID of one of the entries in the "scriptResources" dictionary.
     *
     * @remarks
     * The loader will download and evaluate the script resource referenced in this field, resolve all dependencies
     * against the keys in the "scriptResources", and return the exported object to the loader's calling function.
     * The entry referenced in the "scriptResources" dictionary must be of the "internal" or the "localized" type.
     *
     * Supported values: An entry in the "scriptResources" dictionary that defines the base exported module of the
     * component.
     *
     * Example: `"myApplication.bundle"`
     */
    entryModuleId: string;
    /**
     * The module referenced by the "entryModuleId" field may export an object with several fields.
     *
     * @remarks
     * This value optionally references the name of a field on the object exported by the module referenced by the
     * `entryModuleId` field. When this field has a value, the value of the referenced field on the object exported
     * by the module referenced by the `entryModuleId` field is returned when this manifest is loaded instead of
     * the base exported object. For example, if entryModuleId refers to a module with with a top-level export of
     * `{ foo: 'bar', baz: 123 }` and:
     *
     *    - if this field is unset, the value returned by the module loader is `{ foo: 'bar', baz: 123 }`
     *
     *    - if this field is set to `foo`, the value returned by the module loader is `bar`
     *
     *    - if this field is set to `bar`, the value returned by the module loader is undefined (as `bar` is not a key in
     *        the top-level export).
     *
     * Example: `mySpWebpart`
     */
    exportName?: string;
    /**
     * This is a dictionary of named script resources. `path` and `localizedPath` modules may reference each
     * other and `manifest` modules are expected to be provided by the framework runtime. The resource named in the
     * `entryModuleId` must contain the component's exported object.
     *
     * @remarks
     *
     * Supported values: A dictionary of named script resources.
     *
     * Example:
     *
     * ```
     *  {
     *    "myApplication.bundle": {
     *      "type": "path",
     *      "path": "master_2015-04-20/my-application.bundle_1928f8a0.js"
     *    },
     *    "@microsoft/sp-client-base": {
     *      "type": "component",
     *      "id": "af59c2b3-2da7-41fd-8b72-3939817960af",
     *      "version": "latest"
     *    },
     *    "@microsoft/sp-client-preview": {
     *      "type": "component",
     *      "id": "4d5eb168-6729-49a8-aec7-0e397f486b6e",
     *      "version": "latest"
     *    },
     *    "jQuery": {
     *      "type": "component",
     *      "id": "00000000-0000-0000-0000-000000000000",
     *      "version": "2.2.4",
     *      "path": "https://code.jquery.com/jquery-2.2.4.min.js"
     *    },
     *    "myApplication_strings": {
     *      "type": "localizedPath",
     *      "defaultPath": "master_2015-04-20/my-application_strings_default_af378e0d.js",
     *      "paths": {
     *        "en-us": "master_2015-04-20/my-application_strings_en-us_d38ff012.js",
     *        "fr-fr": "master_2015-04-20/my-application_strings_fr-fr_138af7e4.js"
     *      }
     *    }
     *  }
     * ```
     */
    scriptResources: {
        [name: string]: IModuleConfiguration;
    };
}

/**
 * All client-side components built on the SharePoint framework need a valid component manifest. This interface
 * represents properties that are required by all types of client-side components like Applications and Web Parts.
 * Component specific manifests will extend this interface to add properties required by that component type.
 *
 * @remarks
 *
 * The schema of this manifest is owned and versioned by Microsoft. Following rules should be followed while changing
 * this schema. This set of rules can also be called the "manifest upgrade rules".
 *
 * - For minor changes, new properties can be added to this schema in a backwards-compatible way. i.e. the code
 *   that processes the manifest should be able to handle the absence of those new properties.
 *
 * - Try to model your changes as minor SemVer increments.  Major version changes should be avoided because they
 *   impose a migration cost on developers.
 *
 * - The `'manifestVersion'` should be bumped for all small or big changes.
 *
 * @privateRemarks
 *
 * This schema should be at all times kept in sync with the server-side code file
 * SPClientSideComponentManifest.cs.
 *
 * @public
 */
export declare interface IClientSideComponentManifest extends IClientSideManifestBase {
    /**
     * Type of client-side component. Components with the "Application" type are defined by the
     * "IClientSideApplicationManifest" interface. Components with the "WebPart" type are defined by the
     * "IClientSideWebPartManifest" interface. Components with the "Library" type are defined by the
     * "IClientSideLibraryManifest" interface. Components with the "AdaptiveCardExtension" type are defined
     * by the "IAdaptiveCardExtensionManifest" interface.
     *
     * @remarks
     *
     * Usage: To help bundling, loading, enumeration, and initialization of components based on their contents.
     *
     * Supported values: `"Application"`, `"WebPart"`, `"Library"`, `"Extension"`, `"AdaptiveCardExtension"`
     */
    componentType: ComponentType;
    /**
     * A short name usually given by developer. It does not need to be localized and is expected to stay
     * the same through the lifetime of the component. If an application overrides the `ClientSideApplication.alias`
     * property, `ClientSideApplication.alias` is given precedence over the value provided in the manifest.
     *
     * @remarks
     *
     * Usage: A short name to identify a client-side component by developer.
     *
     * Supported values: Allowed characters are a-z, A-Z, and '-'. Not longer than 40 characters.
     *
     * Example: `"NewFeed"`
     *
     * @privateRemarks
     * telemetry data is categorized based on alias. If alias changes, new telemetry date for this
     * component will be put in a new category. It breaks history data if alias changes.
     */
    alias: string;
    /* Excluded from this release type: isInternal */
    /* Excluded from this release type: _isDebug */
    /**
     * Client-side component version. The value of this field is expected to be controlled by the developer
     * of the client-side component.
     *
     * @remarks
     *
     * The purpose of this field is to help client-side component developers upgrade their client-side components
     * in a managed way. This helps the consumers of the client-side component make decisions about when and how
     * to upgrade the client-side component. As the developer evolves the code for their client-side
     * component, they can decide to bump the MAJOR, MINOR or PATCH version of the component.
     *
     * All incompatible API changes should result in a MAJOR version bump. Backwards compatible functionality
     * changes should result in a MINOR version bump, and backwards compatible bug fixes should result in a
     * PATCH version bump. Please see {@link http://semver.org} for more details on how to manage the version
     * of your components.
     *
     * Usage: Versioning and evolving a client-side component safely in a controlled way.
     *
     * Supported values: string representing a {@link http://semver.org | semantic version} i.e. MAJOR.MINOR.PATCH
     *
     * Example: `"1.0.0"`
     */
    version: string;
    /* Excluded from this release type: preloadComponents */
    /**
     * This property is used to keep older components that don't explicitly use fabric CSS.
     * For the most part, webparts build after using spfx 1.1 don't need this.
     */
    loadLegacyFabricCss?: boolean;
    /**
     * This property is provided for backwards compatibility.  It no longer has any effect.
     *
     * @deprecated Use requiresCustomScript instead of safeWithCustomScriptDisabled.
     */
    safeWithCustomScriptDisabled?: boolean;
    /**
     * If true, the component can only be installed on sites where Custom Script is enabled.
     * This should be set to true if the component allows authors to execute arbitrary scripts on the page.
     *
     * @remarks
     * Defaults to false.  See
     * https://support.office.com/en-us/article/Turn-scripting-capabilities-on-or-off-1f2c515f-5d7e-448a-9fd7-835da935584f
     * for more information.
     *
     * Usage: Requires Custom Script to be allowed in order for this component to be installed and run.
     */
    requiresCustomScript?: boolean;
    /**
     * This portion of the configuration describes how the component is to be loaded and initialized by a
     * client.  It contains an enumeration of scripts that the component requires along with a single
     * entry point script.
     *
     * @remarks
     * Usage: Loading a component.
     *
     * See `IClientSideComponentLoaderConfiguration` for more information and examples.
     *
     * @beta
     */
    loaderConfig: IClientSideComponentLoaderConfiguration;
    /* Excluded from this release type: isolatedDomain */
    /* Excluded from this release type: storeAppId */
    /* Excluded from this release type: mpnId */
    /* Excluded from this release type: componentDeveloperName */
    /* Excluded from this release type: properties */
}

/**
 * This is the manifest for a client-side extension.
 *
 * @public
 */
export declare interface IClientSideExtensionManifest extends IClientSideComponentManifest {
    /**
     * Specifies the type of client-side extension.  Some extension types support additional manifest
     * fields beyond SPClientSideExtensionManifest.
     */
    extensionType: ExtensionType;
}

/**
 * A library is defined by this manifest. Libraries currently do not have any additional properties.
 *
 * @public
 */
export declare interface IClientSideLibraryManifest extends IClientSideComponentManifest {
}

/**
 * @Copyright (c) Microsoft Corporation.  All rights reserved.
 */
/**
 * This interface defines members that are common between all deployable manifests.
 *
 * @public
 */
export declare interface IClientSideManifestBase {
    /**
     * Version of the component manifest schema. The value of this field is controlled by Microsoft. The
     * purpose of this field is to help manage upgrades of the component manifest schema.
     *
     * @remarks
     *
     * A component developer needs to only confirm that they are using the correct value per the
     * manifest schema. Please read the "manifest upgrade rules" for more details on when the schema
     * could change. Note, manifest schema version upgrade will be considered a big API change event
     * and will be advertised broadly.
     *
     * Usage: To help support multiple manifest schema versions.
     *
     * Supported values: A positive integer.
     *
     * Example: `1`
     */
    manifestVersion: number;
    /**
     * A universally unique component id. Each client-side component is required to have this id.
     * Once an id has been used for a component, it cannot be changed. A change in this value is
     * treated same as the creation of a new component. Two components are never expected to have
     * the same id.
     *
     * Usage: Uniquely identify a client-side component.
     *
     * Supported values: a GUID string
     *
     * Example: `"dbef608d-3ad5-4f8f-b139-d916f2f0a294"`
     */
    id: string;
}

/* Excluded from this release type: IClientSideMultiVersionManifest */

/**
 * The client-side SharePoint framework identifies a Web Part by its manifest. All Web Parts are expected to have a
 * manifest.
 *
 * @remarks
 *
 * The manifest is a schematized JSON blob that is used in multiple parts of the SharePoint infrastructure
 * to identify, load and process a Web Part. The schema for this manifest is completely owned and versioned by
 * Microsoft. There are some required properties in the manifest and some optional properties. Optional properties
 * need to be provided only if the Web Part needs the specific functionality. An invalid manifest could lead to issues
 * with Web Part loading and functionality problems.
 *
 * @public
 */
export declare interface IClientSideWebPartManifest<TProperties> extends IClientSideComponentManifest {
    /**
     * Indicates whether the web part uses the property pane to update the configuration
     * of the web part.
     *
     * @remarks
     * Default value is `true` if the property is not explicitly defined.
     */
    canUpdateConfiguration?: boolean;
    /**
     * If true, this web part is disabled on SharePoint classic pages
     *
     * @remarks
     *
     * Certain web parts may not be required on or apply to SharePoint classic pages. This flag helps control
     * that. If this flag is true, the web part will not appear in the classic page web part gallery.
     */
    disabledOnClassicSharepoint?: boolean;
    /* Excluded from this release type: experimentalData */
    /**
     * If true, this web part should not be displayed in the modern SharePoint toolbox.
     *
     * @remarks
     * Usage: Use this flag if it is not appropriate to display a web part in the modern toolbox. This property
     * is not used in  Classic SharePoint. By default, all web parts are enabled to be displayed in the toolbox.
     * Such web parts can be provisioned on pages though API or be added to the page in a pre configured way.
     */
    hiddenFromToolbox?: boolean;
    /**
     * Definition: If true, this web part supports and has been tested for full bleed experience.
     *
     * @remarks
     * Usage: Use this flag if a web part supports full bleed experience and has been tested as such. In this context,
     * full bleed is a term used to denote that the web part takes the whole width of the containing page. Full bleed
     * experiences require special treatment and testing. By default no web parts support full bleed experiences.
     */
    supportsFullBleed?: boolean;
    /* Excluded from this release type: requiredCapabilities */
    /* Excluded from this release type: isolationLevel */
    /**
     * Definition: If true, this web part supports and has been tested for theme variants experience.
     *
     * @remarks
     * Usage: Use this flag if a web part supports theme variants and has been tested as such.
     * In order to support theme variants, web parts must have the capability to render correctly in the context
     * of a theme variant. A web part may or may not need to be updated to support theme variants, but should
     * always be tested before enabling this flag. By default no web parts support theme variants.
     *
     */
    supportsThemeVariants?: boolean;
    /* Excluded from this release type: useFallbackWhenPropertiesUpdatedExternally */
    /**
     * A Web Part can have pre-configured properties like the title, description, toolbox group name and Web
     * Part specific custom properties. And there can be multiple instances of these pre-configured properties.
     *
     * @remarks
     * This helps support scenarios where an organization may want to present multiple pre-configured entries
     * for a Web Part in the Toolbox. Each entry is expected to configure the Web Part with a different set
     * of pre-configured properties. A developer may decide to seed some initial values for these properties
     * but an organization admin can go ahead and customize these properties per the needs of his/her organization.
     * The properties can also be modified by the author of the page.
     *
     * Usage: help display a Web Part in the Toolbox, PropertyPane and the initial rendering of the Web Part.
     *
     * Type: JSON object
     *
     * Supported values: Array of `IClientSideWebPartManifestEntry` objects.
     *
     * Example:
     * ```
     *   [{
     *      title:"Image Web Part",
     *      description: "This Web Part displays an image",
     *      group: "Media",
     *      iconFontName: "image",
     *      properties: {
     *        imageSource: "https://contoso.akamaihd.net/files/mountRainier.jpg",
     *        captionText: "Mount Rainier"
     *      }
     *    }]
     * ```
     */
    preconfiguredEntries: IClientSideWebPartManifestEntry<TProperties>[];
    /**
     * Definition: An array defining what host types are supported
     *
     * @remarks
     * Usage: Use this array to define all hosts that are supported. The default
     * value is SharePointWebPart if nothing is provided.  If SharePointFullPage is
     * added the solution will be available when adding full page apps.  If
     * SharePointWebPart is added the solution will be available when adding webparts
     * to a page.  If TeamsTab, TeamsPersonalApp, or TeamsMeetingApp is added the solution will be
     * available when using teams.  TeamsMeetingApp cannot be used with TeamsTab or TeamsPersonalTab.
     *
     */
    supportedHosts?: Array<'SharePointFullPage' | 'SharePointWebPart' | 'TeamsTab' | 'TeamsPersonalApp' | 'TeamsMeetingApp'>;
    /**
     * Definition: Url of the image image used for preview
     *
     * @remarks
     * Usage: Use this string to specify that a preview image should be used instead
     * of a preview rendering of the web part.  This can either be a absolute url
     * or a relative URL which will be resolved based on the internal base module
     * url
     */
    imagePreviewUrl?: string;
}

/**
 * This interface specifies the set of properties that can be pre-configured by a Web Part developer. Each
 * pre-configured instance of the Web Part will need a copy of these properties. Organization admins and
 * content authors can modify these properties on a need basis.
 *
 * @public
 */
export declare interface IClientSideWebPartManifestEntry<TProperties> {
    /**
     * Title of the web part represented as a single a dictionary of locale keys to title values. This
     * value will be displayed to the user in the toolbox.
     *
     * @remarks
     * This title should be used in the Toolbox and other display areas. The Web Part developer may give
     * an initial title to the web part. The organization admin and page author will have the ability to
     * change this title as per need.
     *
     * Usage: display the name of the web part in the toolbox, web part gallery and the page.
     *
     * Supported values: a dictionary of locale keys to strings. Should always have a `'default'` key.
     *
     * Example: `"My Webpart"`
     * ```
     *          {
     *            "default": "My WebPart"
     *            "en-us": "My WebPart",
     *            "fr-fr": "Ma WebPart",
     *            "zh": "我的 web 部件"
     *          }
     * ```
     */
    title: ILocalizedString;
    /**
     * Description of the web part represented as a dictionary of locale keys to description values. This
     * value will be displayed to the user in the toolbox. This description should be used in the Toolbox tooltip and
     * other display areas.
     *
     * @remarks
     * The Web Part developer may give an initial description to the web part. The organization
     * admin and page author will have the ability to change this description as per need.
     *
     * Usage: display the description of the web part in the toolbox tooltip, web part gallery and the page.
     *
     * Supported values: a dictionary of locale keys to strings. Should always have a `'default'` key.
     *
     * Example: `"A tool for displaying neat information."`
     *
     * ```
     *          {
     *            "default": "A tool for displaying neat information.",
     *            "en-us": "A tool for displaying neat information.",
     *            "fr-fr": "Un outil d’affichage des informations soignées.",
     *            "zh": "用於顯示整潔資訊的工具。"
     *          }
     * ```
     */
    description: ILocalizedString;
    /**
     * The icon for the Web Part, to be displayed in the toolbox, represented as a character name in the
     * Office 365 icon font file.
     *
     * @remarks
     * The icon font is specified here: {@link https://aka.ms/uifabric-icons}  If this field has
     * a value, the {@link IClientSideWebPartManifestEntry.iconImageUrl} field will be ignored.
     *
     * Supported values: Any character name in the Office 365 Icon Font.
     *
     * Example: "graph"
     */
    officeFabricIconFontName?: string;
    /**
     * The icon for the web part, to be displayed in the toolbox, represented an image URL. The image at the
     * URL must be exactly 40x28 px (SPPPLAT VSO#218660 to fix the size of the icon image).
     *
     * @remarks
     *  If the {@link IClientSideWebPartManifestEntry.officeFabricIconFontName} field does not have a value,
     *  this field must have a value. This value can be an absolute URL (e.g. `"http://example.com/icons/my-icon.png"`) or
     *  a relative file path (e.g. `"./icons/my-icon.png"`). In the latter case, the path will be resolved relative to
     *  the folder containing the input manifest. The icon file will be copied to the deployment folder like an asset,
     *  and the output manifest’s iconImageUrl will be replaced with a URL relative to the URL used to load all other
     *  assets (the loaderConfig.internalModuleBaseUrls property).
     *
     * Supported values: Any absolute URL.
     *
     * Example: `"https://contoso.akamaihd.net/files/myWebpartIcon.png"`
     */
    iconImageUrl?: string;
    /**
     * The group id to determine which modern group contains the web part in modern site page. The SharePoint
     * Framework reserves group ids for predefined groups. The developer can pick one from those groups. If the developer
     * fills an id not in the predefined groups, it falls back to Other group.
     *
     * @remarks
     *
     * Supported values: the GUID from PredefinedGroup list
     *
     * Example: `"cf066440-0614-43d6-98ae-0b31cf14c7c3"`
     *
     * @beta
     */
    groupId: PredefinedGroup | string;
    /**
     * The group name in web part picker to contain the web part in the classic page. If no value is provided,
     * then the web part will be displayed in the Miscellaneous group.
     *
     * @remarks
     *
     * Example: `{ "default": "Media and Content" }`
     *
     * @beta
     */
    group?: ILocalizedString;
    /**
     * This field is used to tag a web part with keywords that are different from the web part group name.
     * Tags can be used for categorization and searching of web parts. For example, in the web part toolbox.
     *
     * @remarks
     *
     * Example `[{ "default": "image" }, { "default": "media" }, { "default": "picture" }, ...]`
     *
     * @beta
     */
    tags?: ILocalizedString[];
    /**
     * Definition: Use this field to specify the data version of the pre-configured data provided to the web part.
     * Note that data version is different from the version field in the manifest.
     *
     * @remarks
     * The manifest version is used to control the versioning of the web part code, while data version is used
     * to control the versioning of the serialized data of the web part. Refer to dataVersion field of your
     * web part for more information.
     *
     * Usage: versioning and evolving the serialized data of the web part
     *
     * Type: string representing a {@link http://semver.org | semantic version} with only two parts
     *
     * Supported values: MAJOR.MINOR
     *
     * Example: `"1.0"`
     */
    dataVersion?: string;
    /**
     * Every web part is expected to have some custom properties.  For example, an image web part might define
     * properties for the image URL and caption text. A list web part may have the list ID and list title as its
     * properties, and so on.
     *
     * @remarks
     *
     * The SharePoint Framework passes these properties to the web parts when they are loaded. The web part developer
     * fully controls the schema for these properties. The web part developer should follow versioning rules when
     * updating the properties.
     *
     * Usage: rendering of the web part
     *
     * Example: `{"imageSource": "https://contoso.akamaihd.net/files/contosoLogo.jpg", "captionText": "Contoso logo"}"`
     */
    properties: TProperties;
    /**
     * The icon for the Application pages.
     *
     * @remarks
     *  If this field is not defined, then the iconimageurl is used instead as the icon for Full Page apps.
     *  This value can be an absolute URL (e.g. `"http://example.com/icons/my-icon.png"`) or a relative file path
     *  (e.g. `"./icons/my-icon.png"`). In the latter case, the path will be resolved relative to the folder containing
     *  the input manifest.
     *
     * Supported values: Any absolute URL.
     *
     * Example: `"https://contoso.akamaihd.net/files/myWebpartIcon.png"`
     */
    fullPageAppIconImageUrl?: string;
}

/**
 * Manifest that is relevant to a Web Part instance.
 *
 * @public
 */
export declare interface IClientSideWebPartManifestInstance<TProperties> extends IClientSideComponentManifest {
}

/**
 * Used by ICommandSetExtensionManifest, this defines a command to be displayed by
 * a UI surface such as a menu, tool bar, etc.
 *
 * @public
 */
export declare interface ICommandDefinition {
    /**
     * A short label to be displayed by the associated button, menu item, etc.
     * Example: "Show information"
     */
    title: ILocalizedString;
    /**
     * Type of the item.
     * Currently only "command" is allowed.
     */
    type: 'command';
    /**
     * Custom accessibility text for the browser's "aria-label" attribute.  If omitted, the title property
     * will be used by default.
     * Example: "Show information.  Press ENTER to select."
     */
    ariaLabel?: ILocalizedString;
    /**
     * An optional URL for an image to be displayed next to the command. The requirements for this image
     * are defined by the type of extension; some extension types may not display the image at all.
     *
     * @remarks
     * This value can be an absolute URL (e.g. "http://example.com/icons/my-icon.png") or
     * a relative file path (e.g. "./icons/my-icon.png"). In the latter case, the path will be resolved relative to
     * the folder containing the input manifest. The icon file will be copied to the deployment folder like an asset,
     * and the output manifest’s iconImageUrl will be replaced with a URL relative to the URL used to load all other
     * assets (the loaderConfig.internalModuleBaseUrls property).
     */
    iconImageUrl?: string;
}

/**
 * This is the manifest for a client-side extension that defines a set of custom commands
 * that can be shown in a menu, tool bar, etc.
 *
 * @privateRemarks
 *
 * Why is this called "ICommandSetExtensionManifest" and not "IListViewCommandSetExtensionManifest"?
 * Eventually other command set classes will be introduced, for example something like:
 * BaseListViewCommandSet, BasePublishingCommandSet, BaseSharePointHomeCommandSet, etc.
 * Although their contexts will be different, most likely they will all share the same
 * manifest type.  Thus the manifest schema will remain the same, but the extensionType
 * will expand to something like this:
 *
 * extensionType: 'ListViewCommandSet' | 'PublishingCommandSet' | 'SharePointHomeCommandSet';
 *
 * @public
 */
export declare interface ICommandSetExtensionManifest extends IClientSideExtensionManifest {
    /**
     * {@inheritDoc IClientSideExtensionManifest.extensionType}
     */
    extensionType: 'ListViewCommandSet';
    /**
     * A table of items defined by this command set. The object key is the Item ID.
     *
     * @remarks
     *
     * The Item ID is a unique identifier that event handlers use to recognize the command
     * The identifier must consist of upper-case letters, numbers, and underscores.
     * Example: "SHOW_INFO"
     */
    items: {
        [itemId: string]: ICommandDefinition;
    };
}

/**
 * This is the interface for a script module with the "component" type. Modules of this type will be provided via
 * manifests. In order for the dependency to be loaded, the manifest must be available on the site.
 *
 * @beta
 */
export declare interface IComponentModuleConfiguration extends IModuleConfiguration {
    /**
     * The version of the framework-supplied component to be loaded. For framework runtime component such as
     * `@microsoft/sp-client-base`, it is recommended the version of the framework component the component was developed
     * against be specified.
     *
     * @remarks
     *
     * Supported values: string representing a {@link http://semver.org | semantic version}, or "latest".
     *
     * Example: `"2.2.4"`
     */
    version: string;
    /**
     * The ID of the framework-supplied component to be loaded.
     *
     * @remarks
     *
     * Supported values: string representing a component's ID.
     *
     * Example: `"0d910c1c-13b9-4e1c-9aa4-b008c5e42d7d"`
     */
    id: string;
    /**
     * A path to the framework-supplied component in case the framework fails to load the requested version.
     *
     * @remarks
     * This must be either a fully-qualified URL, or a path under the paths specified in the `internalModuleBaseUrls`
     * field. If this field is not specified and the version is not available in the framework runtime, the closest
     * matching version of the component will be provided instead.
     *
     * Supported values: The path to the component either as a fully-qualified URL or as a path under the
     * paths provided in the "internalModuleBaseUrls" field.
     *
     * Example: `"https://code.jquery.com/jquery-2.2.4.min.js"`
     */
    failoverPath?: string | IPath;
}

/**
 * This is the interface for a script module with the "localizedPath" type.
 *
 * @remarks
 * Modules of this type must be provided by the component developer. These script resources are similar to those of
 * the "path" type, but they may be present at a number of different paths, to be selected by the user's locale.
 * Paths in this module type are loaded exactly the same way as "internal" modules are.
 *
 * @beta
 */
export declare interface ILocalizedPathModuleConfiguration extends IModuleConfiguration {
    /**
     * A path to this module's default locale javascript resource either as a fully-qualified URL or as a
     * path under the paths provided in the "internalModuleBaseUrls" field.
     *
     * @remarks
     * If the user's locale does not resolve to one of the paths specified in the "paths" field, the path in this
     * field is used. Paths in this module type are treated exactly the same way paths in modules of the "internal"
     * type are treated.
     *
     * Supported values: The path to the default locale version of the module either as a fully-qualified URL or as a path
     * under the paths provided in the "internalModuleBaseUrls" field.
     *
     * Example: `"master_2015-04-20/my-application_strings_default_af378e0d.js"`
     */
    defaultPath: string | IPath;
    /**
     * This is a dictionary of locale keys (in the `"ll-cc"` format) to paths to this module's locale
     * javascript resource either as a fully-qualified URL or as a path under the paths provided in the
     * `"internalModuleBaseUrls"` field.
     *
     * @remarks
     * The loader will attempt to resolve the user's locale to one of the paths provided by this field, and will load
     * the script resource under that path. If the user's locale does not resolve to one of the paths specified in this
     * field, the path in `"defaultPath"` field is used. For example, if the user's locale is `"en-gb"`, and this field's
     * value contains the keys `[ "en-us", "en-gb", "fr-fr" ]`, the path specified by the `"en-gb"` key will be used.
     * If the user's locale is "en-gb", and this field's value contains the keys `[ "en-us", "fr-fr" ]`, the path
     * specified by the `"en-us"` key will be used. If the user's locale is `"en-gb"`, and this field's value contains
     * the keys `[ "es-es", "fr-fr" ]`, the path specified by the "defaultPath" field will be used.
     * Paths in this module type are treated exactly the same way paths in modules of the "internal" type are treated.
     *
     * Supported values: A dictionary of locale-to-path mappings.
     *
     * Example:
     * ```
     *  {
     *    "en-us": "master_2015-04-20/my-application_strings_en-us_d38ff012.js",
     *    "fr-fr": "master_2015-04-20/my-application_strings_fr-fr_138af7e4.js"
     *  }
     * ```
     */
    paths?: {
        [locale: string]: string | IPath;
    };
}

/**
 * A set of localized strings.
 *
 * @remarks

 * Supported values:
 *
 * - An Id referring to a localized resource. In this case it requires an 'id' key.
 *
 * - A dictionary of locale keys to strings. In this case it requires a 'default' key.
 *
 * ```
 * Example 1: "My Application"
 *          {
 *            "id": "$myStrings:myStrings.MyApplication;"
 *          }
 * Example 2: "My Application"
 *          {
 *            "default": "My Application"
 *            "en-us": "My Application",
 *            "fr-fr": "Ma demande",
 *            "zh": "我的應用程式"
 *          }
 * ```
 *
 * Notes on string ids:
 *
 * - Ids have the following structure: `$<resourceName>:<expression>;`
 *
 * - `resourceName` needs to be a `localizedResource` in the config.json.
 *
 * - `expression` is an expression that will be evaluated to access the string from the resource module.
 *
 * If your resource is a dictionary, access it through `"$resource:resource.MyString;"`
 * or `"$resource:resource[\"MyString\"];"`
 *
 * For more complex cases, run an appropriate expression to access your resource and return the string.
 *
 * @public
 */
export declare interface ILocalizedString {
    default?: string;
    id?: string;
    [locale: string]: string | undefined;
}

/**
 * This is the base interface for a script module's definition.
 *
 * @beta
 */
export declare interface IModuleConfiguration {
    /**
     * The type of the script block. `"component"` modules come from a component,
     * `"path"` and `"localizedPath"` modules must be available on the paths provided in
     * the `"internalModuleBaseUrls"` field.
     *
     * @remarks
     *
     * Modules with the `"path"` type use the `IPathModuleConfiguration` interface.
     *
     * Modules with the `"component"` type use the `IComponentModuleConfiguration` interface.
     * Modules with the "localizedPath" type use the `ILocalizedPathModuleConfiguration` interface.
     *
     * Supported values: `"component"`, `"path"`, `"localizedPath"`
     *
     * Example: `"localized"`
     */
    type: 'component' | 'path' | 'localizedPath';
    /**
     * If set to `true`, this module should not be preloaded when loading the component.
     *
     * @remarks
     * The most common case for setting this property to "true" is when a module is defined in a manifest,
     * but is not required for the module referenced in "entryModuleId" to load. Modules may be defined that
     * are loaded asynchronously, and these modules do not need to be preloaded. This field implicitly defaults
     * to `false`.
     *
     * Usage: Instructs the module loader to not preload this module.
     */
    shouldNotPreload?: boolean;
}

/**
 * This is the base interface for a set of debug and non-debug/minimized paths. The paths in this object are
 * loaded in exactly the same way as any other internal path.
 *
 * @beta
 */
export declare interface IPath {
    /**
     * A path to this module's javascript resource either as a fully-qualified URL or as a path under the
     * paths provided in the "internalModuleBaseUrls" field. The script referenced by this field is loaded by default
     * unless a debug version of the script is provided and explicitly requested.
     *
     * @remarks
     *
     * Supported values: The path to the default/non-debug script either as a fully-qualified URL or as a path under the
     *  paths provided in the "internalModuleBaseUrls" field.
     *
     * Example: `"master_2015-04-20/my-application.bundle_1928f8a0.js"`
     */
    default: string;
    /**
     * A path to this module's debug javascript resource either as a fully-qualified URL or as a path under
     * the paths provided in the "internalModuleBaseUrls" field. The script referenced by this field is only loaded if
     * it is present and debug scripts are explicitly requested.
     *
     * @remarks
     *
     * Supported values: The path to the debug script either as a fully-qualified URL or as a path under the
     * paths provided in the `"internalModuleBaseUrls"` field.
     *
     * Example: `"master_2015-04-20/my-application.bundle_18182c39.debug.js"`
     */
    debug?: string;
}

/**
 * This is the interface for a script module with the "path" type. Modules of this type must be provided by the
 * component developer.
 *
 * @beta
 */
export declare interface IPathModuleConfiguration extends IModuleConfiguration {
    /**
     * A path to this module's javascript resource either as a fully-qualified URL or as a path under the
     * paths provided in the `internalModuleBaseUrls` field.
     *
     * @remarks
     *
     * For example, if this field's value is `"master_2015-04-20/my-application.bundle_1928f8a0.js"` and
     * the `"internalModuleBaseUrls"` field's value is
     * `[ "https://contoso.akamaihd.net/files/", "https://contoso.msecnd.net/files/" ]`, the loader will
     * first attempt to load this script resource from the URL
     * `"https://contoso.akamaihd.net/files/master_2015-04-20/my-application.bundle_1928f8a0.js"`.
     * If loading from that URL fails, the loader will then attempt to load this script resource from
     * `"https://contoso.msecnd.net/files/master_2015-04-20/my-application.bundle_1928f8a0.js"`.
     * If that URL fails to load, the component will fail to load and an error will be returned.
     *
     * Supported values: The path to the module either as a fully-qualified URL or as a path under the
     *  paths provided in the "internalModuleBaseUrls" field.
     *
     * Example: `"master_2015-04-20/my-application.bundle_1928f8a0.js"`
     */
    path: string | IPath;
    /**
     * If this property is specified, this module is considered non-AMD and
     * the module loader will not expect "define" or "require" to be called.
     *
     * @remarks
     * In order to load scripts that don't follow the AMD/module-pattern where "define" or "require" is
     * called and dependencies are explicitly listed and exports are explicitly returned, the module loader needs to
     * know which global variable must be examined. If this property is specified, this module is considered non-AMD and
     * the module loader will not expect "define" or "require" to be called. Instead, it will wait for the script to
     * finish loading and examine the global variable specified in this field.
     *
     * Supported values: Variable names that are expected to be populated after this module is loaded. For example,
     * if this module is describing jQuery, this value should probably be "$". If an empty string is specified,
     * the module loader will throw an exception and the component will fail to load.
     *
     * Example: `"$"`
     */
    globalName?: string;
    /**
     * For non-AMD/module-pattern scripts that have dependencies (for example, jQuery plugins), the module
     * loader will ensure that those dependencies are already loaded.
     *
     * @remarks
     * Entries in the array specified in this field must refer to other non-AMD modules in this component. This field
     * is not required to have a value for non-AMD modules. If any values are specified that do not refer to other
     * modules in the same component manifest that this module is specified, the module loader will throw an exception
     * and the component will fail to load.
     *
     * Supported values: Names of other non-AMD-pattern modules in this loader configuration, as specified by the key
     * `IClientSideComponentLoaderConfiguration.scriptResources[]`
     *
     * Example: `["jquery"]`
     */
    globalDependencies?: string[];
}

/* Excluded from this release type: IPreloadOptions */

/* Excluded from this release type: ManifestType */

/**
 * Predefined web part group.
 *
 * @beta
 */
export declare const enum PredefinedGroup {
    /**
     * Text, media and content.
     *
     * This group includes web parts that display text, multi-media, documents, information from the web, and other
     * rich content.
     *
     * @beta
     */
    TextMediaAndContent = "cf066440-0614-43d6-98ae-0b31cf14c7c3",
    /**
     * Discovery.
     *
     * This group includes web parts that organize, group, and filter content to help users discover information.
     *
     * @beta
     */
    Discovery = "1edbd9a8-0bfb-4aa2-9afd-14b8c45dd489",
    /**
     * Communication and collaboration.
     *
     * This group includes web parts that facilitate information sharing, team work, and social interactions.
     *
     * @beta
     */
    CommunicationAndCollaboration = "75e22ed5-fa14-4829-850a-c890608aca2d",
    /**
     * Planning and process.
     *
     * This group includes web parts that empower team productivity with the use of planning and process tools.
     *
     * @beta
     */
    PlanningAndProcess = "1bc7927e-4a5e-4520-b540-71305c79c20a",
    /**
     * Business and intelligence.
     *
     * This group includes web parts for tracking and analyzing data, and for integrating business flow with pages.
     *
     * @beta
     */
    BusinessAndIntelligence = "4aca9e90-eff5-4fa1-bac7-728f5f157b66",
    /**
     * Site tools.
     *
     * This group includes web parts for site information and management.
     *
     * @beta
     */
    SiteTools = "070951d7-94da-4db8-b06e-9d581f1f55b1",
    /**
     * Other.
     *
     * This group includes web parts not in other groups.
     *
     * @beta
     */
    Other = "5c03119e-3074-46fd-976b-c60198311f70"
}

export { }
