import type { ActionManifest, CSPAppDirectives, DocumentsManifest, DocumentTypesManifest, FunctionManifest, OAuthScope, SettingsManifest } from '../utils/config/cli-options';
import type { IntentsDeclarations } from './intents';
import type { UiCommands } from './ui-commands';
export type DynatracePlatformDependency = {
    name: string;
    version: string;
};
export type DynatraceDependency = DynatracePlatformDependency & {
    packageJsonDep?: string;
    path?: string;
};
export type AppIcon = {
    /** Path to the custom app icon relative to the app bundle root */
    name: 'icon.svg' | 'icon.png';
    /** Whether the app icon has been automatically generated */
    generated: boolean;
};
/** Interface defining the manifest structure.  */
export interface DynatraceApplicationManifest {
    /** App id */
    id: string;
    /** App name */
    name: string;
    /** App description */
    description: string;
    /** App version */
    version: string;
    /** Metadata of all Dynatrace packages that contain a dynatrace-metadata.json */
    dependencies?: DynatracePlatformDependency[];
    /** Hide in App Launcher */
    hidden?: boolean;
    /** Intent capabilities */
    intents?: IntentsDeclarations;
    /** Action capabilities */
    actions?: ActionManifest[];
    /** App widget settings */
    settings?: SettingsManifest;
    /** Function capabilities */
    functions?: Record<string, FunctionManifest>;
    /** App documents */
    documents?: DocumentsManifest;
    /** App document types */
    'document-types'?: DocumentTypesManifest;
    /** Page tokens */
    pageTokens?: Record<string, string>;
    /** App icon options */
    icon: AppIcon;
    /**
     * Represents a custom set of directives for the app
     * The value holds the actual directive.
     * For every directive there needs to be a comment provided that explains why this directive is necessary.
     */
    csp?: CSPAppDirectives;
    /**
     * The list of authentication scopes your app needs.
     */
    scopes: OAuthScope[];
    /**
     * The "SemVer" version of the app bundle.
     */
    'app-bundle-version'?: string;
    /**
     * App ui Commands.
     */
    uiCommands?: UiCommands;
}
