declare global {
    interface Window {
        BASE_PATH: string;
    }
}
export declare enum QueryParams {
    USER = "user",
    FILTERS = "filters",
    SORT_BY = "sort",
    ORDER_BY = "order",
    IMPERSONATION_USER = "impersonationUsername",
    IMPERSONATION_GROUPS = "impersonationGroups"
}
export declare enum PathParams {
    RUNTIME_URL = "runtimeUrl",
    PROCESS_INSTANCE_ID = "processInstanceId",
    TASK_ID = "taskId",
    PROCESS_NAME = "processName"
}
export declare class Route<T extends {
    pathParams?: any;
    queryParams?: any;
}> {
    private readonly pathDelegate;
    constructor(pathDelegate: (pathParams: {
        [k in T["pathParams"]]: string;
    }) => string);
    url(args: {
        base?: string;
        static?: boolean;
        pathParams: {
            [k in T["pathParams"]]: string;
        };
        queryParams?: Partial<{
            [k in T["queryParams"]]: string;
        }>;
    }): string;
    queryString(queryParams: Partial<{
        [k in T["queryParams"]]: string;
    }>): string;
    queryArgs(queryString: QueryParamsImpl<string>): QueryParamsImpl<T["queryParams"]>;
    path(pathParams: {
        [k in T["pathParams"]]: string;
    }): string;
}
export interface QueryParamsImpl<Q extends string> {
    has(name: Q): boolean;
    get(name: Q): string | undefined;
    with(name: Q, value: string | undefined): QueryParamsImpl<Q>;
    without(name: Q): QueryParamsImpl<Q>;
    toString(): string;
}
export declare function newQueryParamsImpl<Q extends string>(queryString: string): QueryParamsImpl<Q>;
export declare const routes: {
    readonly home: Route<{}>;
    readonly runtime: {
        readonly context: Route<{
            queryParams: QueryParams.USER;
        }>;
        readonly processes: Route<{
            pathParams: PathParams.RUNTIME_URL;
            queryParams: QueryParams.USER | QueryParams.FILTERS | QueryParams.SORT_BY;
        }>;
        readonly processDetails: Route<{
            pathParams: PathParams.RUNTIME_URL | PathParams.PROCESS_INSTANCE_ID;
            queryParams: QueryParams.USER;
        }>;
        readonly processDefinitions: Route<{
            pathParams: PathParams.RUNTIME_URL;
            queryParams: QueryParams.USER | QueryParams.FILTERS;
        }>;
        readonly processDefinitionForm: Route<{
            pathParams: PathParams.RUNTIME_URL | PathParams.PROCESS_NAME;
            queryParams: QueryParams.USER;
        }>;
        readonly jobs: Route<{
            pathParams: PathParams.RUNTIME_URL;
            queryParams: QueryParams.USER | QueryParams.FILTERS | QueryParams.ORDER_BY;
        }>;
        readonly tasks: Route<{
            pathParams: PathParams.RUNTIME_URL;
            queryParams: QueryParams.USER | QueryParams.FILTERS | QueryParams.SORT_BY | QueryParams.IMPERSONATION_USER | QueryParams.IMPERSONATION_GROUPS;
        }>;
        readonly taskDetails: Route<{
            pathParams: PathParams.RUNTIME_URL | PathParams.TASK_ID;
            queryParams: QueryParams.USER | QueryParams.IMPERSONATION_USER | QueryParams.IMPERSONATION_GROUPS;
        }>;
    };
    readonly login: Route<{}>;
    readonly static: {
        readonly images: {
            readonly appLogoDefault: Route<{}>;
            readonly appLogoReverse: Route<{}>;
        };
    };
};
export declare function buildRouteUrl<T extends {
    pathParams: any;
    queryParams: any;
}>(route: Route<T>, pathParams?: {
    [k in T["pathParams"]]: string;
}, queryParams?: Partial<{
    [k in T["queryParams"]]: string;
}>, extraQueryParams?: Record<string, string>): {
    pathname: string;
    search: string;
};
//# sourceMappingURL=Routes.d.ts.map