/**
 * External endpoint
 */
export type ExternalEndpoint = {
    /**
     * API endpoint
     */
    readonly endpoint: string;
    /**
     * Web url
     */
    readonly webUrl: string;
};
/**
 * External settings items
 */
export interface IExternalSettings extends ExternalEndpoint {
    /**
     * Message hub endpoint
     */
    readonly messageHub?: string;
    /**
     * App root url
     */
    readonly homepage: string;
    /**
     * Default hostname for substitution
     * 用于替换的默认主机名
     */
    hostname?: string;
    /**
     * Endpoints to other services
     */
    readonly endpoints?: Record<"platform" | "core" | "admin" | "finance" | "crm" | "oa" | "agile" | string, ExternalEndpoint>;
}
/**
 * External settings namespace
 */
export declare namespace ExternalSettings {
    /**
     * Sub domain match regular expression
     */
    let subDomainMatch: RegExp;
    /**
     * Create settings instance
     * @param settings Settings
     * @returns Result
     */
    function create<T extends IExternalSettings = IExternalSettings>(settings?: unknown, hostname?: string): T;
    /**
     * Format the app
     * @param hostname Hostname
     * @param app App key
     * @param endpoint Endpoint
     * @returns Result
     */
    function formatApp(hostname: string, app: string, endpoint: string): string;
    /**
     * Format the host
     * @param setting Setting
     * @param hostname Hostname
     * @returns Result
     */
    function formatHost(setting: string, hostname: string): string;
    function formatHost(setting: Record<string, ExternalEndpoint>, hostname?: string | null): Record<string, ExternalEndpoint>;
}
