/// <reference types="react" />
import type { Ng1StateDeclaration, Ng1ViewDeclaration, ParamDeclaration, UrlRouterProvider } from '@uirouter/angularjs';
import type { ParamTypeDefinition, ReactViewDeclaration } from '@uirouter/react';
import type { IServiceProvider } from 'angular';
import type { IFilterConfig } from '../filterModel/IFilterModel';
import type { StateHelper } from './stateHelper.provider';
import './navigation.less';
export interface IReactHybridIntermediate extends Ng1StateDeclaration {
    children?: INestedState[];
    component?: any;
    views?: {
        [key: string]: any;
    };
}
export interface INestedState extends IReactHybridIntermediate {
    children?: INestedState[];
    component?: React.ComponentType | string;
    views?: {
        [key: string]: ReactViewDeclaration | Ng1ViewDeclaration;
    };
}
export declare class StateConfigProvider implements IServiceProvider {
    private $urlRouterProvider;
    private stateHelperProvider;
    private root;
    static $inject: string[];
    constructor($urlRouterProvider: UrlRouterProvider, stateHelperProvider: StateHelper);
    /**
     * Adds a root state, e.g. /applications, /projects, /infrastructure
     * @param child the state to add
     */
    addToRootState(child: INestedState): void;
    /**
     * registers any states that have been added as children to an already-registered state
     * (really just called internally by #addToRootState and by the ApplicationStateProvider methods)
     */
    setStates(): void;
    /**
     * Configures a rewrite rule to automatically replace a base route
     * @param base, e.g. "/applications/{application}"
     * @param replacement, e.g. "/applications/{application}/clusters"
     */
    addRewriteRule(base: string | RegExp, replacement: string | Function): void;
    buildDynamicParams(paramConfig: IFilterConfig[]): {
        [key: string]: ParamDeclaration | any;
    };
    paramsToQuery(paramConfig: IFilterConfig[]): string;
    $get(): StateConfigProvider;
}
export declare const trueKeyObjectParamType: ParamTypeDefinition;
export declare const inverseBooleanParamType: ParamTypeDefinition;
export declare const booleanParamType: ParamTypeDefinition;
export declare const sortKeyParamType: ParamTypeDefinition;
export declare const STATE_CONFIG_PROVIDER = "spinnaker.core.navigation.state.config.provider";
