import { ViewSlot } from 'aurelia-framework';
import { Language, UIFilesColumnInfo } from './model/common-model';
import { RouteConfig } from 'aurelia-router';
import { CacheLocation } from '@auth0/auth0-spa-js';
import { RawEditorOptions } from 'tinymce';
import { EnumerationTypeCategory } from './utils/enumeration-types-helper';
import { PermissionsConfig } from './vm/security/security-helpers';
import { RemoteFileStorage } from './services/file-storage-service';
export interface AuthConfig {
    clientId: string;
    domain: string;
    originalDomain?: string;
    audience: string;
    callback_uri: string;
    logout_uri: string;
    clientSecret?: string;
    cacheLocation?: CacheLocation | string;
    anonymousUrls?: string[];
}
export interface EnumerationTypeConfig {
    useOrder: boolean;
    listByCategory: boolean;
    isUniqueCodeRequired: boolean;
    completeTranslatedFields: boolean;
    showTag: boolean;
    enumerationTypeCategories?: EnumerationTypeCategory[];
    enumerationTypes?: {};
}
export interface AgGridConfig {
    administratorRoles?: number[];
    allowSharedView: boolean;
    defaultAdjustColumns: boolean;
    hasHyperlinkColumn: boolean;
    hyperlinkInNewTab: boolean;
    repeatViewVisibilityInListItem: boolean;
    separateViewsByVisibility: boolean;
    showSystemViewOnlyAsPublicView: boolean;
    showInFloatingBox: boolean;
    showFixedFilter: boolean;
    showFilterBox: boolean;
    showParametersViewBox: boolean;
    showUsedViewInList: boolean;
    showViewBox: boolean;
    showEmptyFieldsCheckbox: boolean;
    stringSeparatorAgGridFilter?: string;
    suppressMenu: boolean;
    sortColumnByHeaderName: boolean;
}
export interface ContainerConfig {
    AlertContainer?: Element;
    ToastContainer?: Element;
    DialogContainer?: ViewSlot & {
        anchor?: Element;
    };
    TaskbarContainer?: ViewSlot & {
        anchor?: Element;
    };
    FloatingContainer?: Element;
}
interface B2CConfig {
    clientId: string;
    redirectUri: string;
    names: {
        signUpSignIn: string;
    };
    authorities: {
        signin: string;
    };
    authorityDomain: string;
    scopes: Array<string>;
}
export interface PermissionSetting {
    action?: string | string[];
    resource?: string;
}
export interface RouteSettings extends PermissionSetting {
    group?: string;
    subGroup?: string;
    icon?: string;
    fontIconsClass?: string;
    isDefault?: boolean;
    parentName?: string;
    classes?: string;
    tab?: boolean;
    permissionSettings?: Array<PermissionSetting>;
    params?: {
        [key: string]: any;
    };
}
export interface ExtendedRouteConfig extends RouteConfig {
    settings?: RouteSettings;
}
export interface GlobalConfig {
    applicationTitle?: string;
    remoteServiceName?: string;
    remoteFileStorageServiceConfig?: RemoteFileStorage.IServiceConfig;
    remoteTinyMceController?: string;
    breezeControllerUri?: string;
    applicationSettingsTypeName?: string;
    resourceNames?: {};
    configureMetadataStore?: (metaDatastore: any, manager: any) => any;
    googleApiKey?: string;
    isAutomaticSmallDevice?: boolean;
    showPaginationBoundaryLinks?: boolean;
    defaultLocale: string;
    configuredLanguages?: Language[];
    uiBagdeDisplay: 'top' | 'bottom';
    showHistory: boolean;
    showChat: boolean;
    redirectionIfNotAuthorized: boolean;
    displayWeekPicker: boolean;
    defaultUIFilesColumnsInfo: Array<UIFilesColumnInfo>;
    keyboardShortcutFwBox: boolean;
    uiSelectFocusSearchWhenOpen: boolean;
    uiInputInputMode: string;
}
export interface MenuConfig {
    primaryColor: string;
    maxLevelVerticalNavbar: number;
}
export interface CommunicationConfig {
    showHistoryChatInButton: boolean;
    uINotificationAlertAutoCloseTimeInMilliseconds: number;
    allowChatCountFetch: boolean;
}
export declare abstract class Config {
    routes: ExtendedRouteConfig[];
    routesPrefix?: string;
    authConfig?: AuthConfig;
    b2cConfig?: B2CConfig;
    permissionsConfig?: PermissionsConfig;
    agGridConfig: AgGridConfig;
    globalConfig: GlobalConfig;
    defaultRichTextEditorOptions: RawEditorOptions;
    enumerationTypeConfig: EnumerationTypeConfig;
    menuConfig: MenuConfig;
    containerConfig: ContainerConfig;
    communicationConfig: CommunicationConfig;
    constructor(environment?: {
        remoteApiUrl?: string;
        auth?: AuthConfig;
    });
}
export {};
