import type { ManifestElement } from '../../../libs/extension-api/index.js';
import type { UUIInterfaceColor, UUIInterfaceLook } from '../../../external/uui/index.js';
/**
 * Represents an authentication provider that can be used to authenticate users.
 * The provider needs to be registered in the API that the authorization request is sent to in order to be used.
 * @see {forProviderName} for the provider name that this provider is for.
 */
export interface ManifestAuthProvider extends ManifestElement {
    type: 'authProvider';
    /**
     * The provider name that this provider is for.
     * @examples 'Umbraco.Github'
     */
    forProviderName: string;
    meta?: MetaAuthProvider;
}
export interface MetaAuthProvider {
    /**
     * The label of the provider that is shown to the user.
     */
    label?: string;
    /**
     * The default view of the provider that is shown to the user.
     * If no element is provided, then the button will be rendered as a @see {UUIButtonElement} using these options.
     */
    defaultView?: {
        /**
         * The icon of the provider that is shown to the user.
         * @examples ['icon-cloud', 'icon-github', 'icon-google', 'icon-facebook', 'icon-twitter', 'icon-x', 'icon-microsoft']
         * @default 'icon-cloud'
         */
        icon?: string;
        /**
         * The color of the provider that is shown to the user.
         * @default 'secondary'
         */
        color?: UUIInterfaceColor;
        /**
         * The look of the provider that is shown to the user.
         * @default 'default'
         */
        look?: UUIInterfaceLook;
    };
    /**
     * The behavior of the provider when it is used.
     */
    behavior?: {
        /**
         * If true, the user will be redirected to the provider's login page immediately.
         * @default false
         */
        autoRedirect?: boolean;
        /**
         * The target of the popup that is opened when the user logs in.
         * @default 'umbracoAuthPopup'
         * @remarks This is the name of the window that is opened when the user logs in, use `_blank` to open in a new tab.
         */
        popupTarget?: string;
        /**
         * The features of the popup that is opened when the user logs in.
         * @default 'width=600,height=600,menubar=no,location=no,resizable=yes,scrollbars=yes,status=no,toolbar=no'
         * @remarks This is the features of the window that is opened when the user logs in.
         * @seehref https://developer.mozilla.org/en-US/docs/Web/API/Window/open#features
         */
        popupFeatures?: string;
    };
    /**
     * The linking options of the provider when it is used.
     */
    linking?: {
        /**
         * If true, the user will be able to link the provider to an existing account.
         * @default false
         */
        allowManualLinking?: boolean;
    };
}
declare global {
    interface UmbExtensionManifestMap {
        umbAuthProvider: ManifestAuthProvider;
    }
}
