import { default as CortexElement } from '../../../../base/src/cortex-element.ts';
import { CSSResultGroup } from 'lit';

/**
 * @summary Includes give you the power to embed external HTML files into the page.
 *
 * @description Included files are asynchronously requested using `window.fetch()`. Requests are cached, so the same file can be included multiple times, but only one request will be made. </br> </br>
 * The included content will be inserted into the `<cx-include>` element's default slot so it can be easily accessed and styled through the light DOM.
 *
 * @event cx-load - Emitted when the included file is loaded.
 * @event {{ status: number }} cx-error - Emitted when the included file fails to load due to an error.
 */
export default class CxInclude extends CortexElement {
    static styles: CSSResultGroup;
    /**
     * The location of the HTML file to include. Be sure you trust the content you are including as it will be executed as
     * code and can result in XSS attacks.
     */
    src: string;
    /** The fetch mode to use. */
    mode: 'cors' | 'no-cors' | 'same-origin';
    /**
     * Allows included scripts to be executed. Be sure you trust the content you are including as it will be executed as
     * code and can result in XSS attacks.
     */
    allowScripts: boolean;
    private requestInclude;
    private executeScript;
    handleSrcChange(): Promise<void>;
    render(): import('lit').TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        'cx-include': CxInclude;
    }
}
