import * as _backstage_core_app_api from '@backstage/core-app-api';
import { AppOptions, AppIcons, AppComponents } from '@backstage/core-app-api';
import { IconComponent, AppTheme } from '@backstage/core-plugin-api';

/**
 * Creates a new Backstage App using a default set of components, icons and themes unless
 * they are explicitly provided.
 *
 * @public
 */
declare function createApp(options?: Omit<AppOptions, keyof OptionalAppOptions> & OptionalAppOptions): _backstage_core_app_api.BackstageApp;
/**
 * The set of app options that {@link createApp} will provide defaults for
 * if they are not passed in explicitly.
 *
 * @public
 */
type OptionalAppOptions = {
    /**
     * A set of icons to override the default icons with.
     *
     * The override is applied for each icon individually.
     *
     * @public
     */
    icons?: Partial<AppIcons> & {
        [key in string]: IconComponent;
    };
    /**
     * A set of themes that override all of the default app themes.
     *
     * If this option is provided none of the default themes will be used.
     *
     * @public
     */
    themes?: (Partial<AppTheme> & Omit<AppTheme, 'theme'>)[];
    /**
     * A set of components to override the default components with.
     *
     * The override is applied for each app component individually.
     *
     * @public
     */
    components?: Partial<AppComponents>;
};

export { type OptionalAppOptions, createApp };
