/**
 * NavigatorSceneConfigFactory.ts
 *
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT license.
 *
 * NavigatorSceneConfigFactory creates an 'object' of type NavigatorSceneConfig,
 * which is consumed by the Navigator. This object contains properties to execute
 * spring animation for transition between scenes. NavigatorSceneConfigFactory and
 * NavigatorSceneConfig are both exported.
 */
import * as RX from 'reactxp';
import * as Types from '../common/Types';
export declare type Interpolator = (progress: number, dimension?: RX.Types.Dimensions) => number;
export declare type InterpolatorWrapper = (previousStyleSet: RX.Types.ViewStyleRuleSet, dimensions: RX.Types.Dimensions, progress: number) => boolean;
export interface TransitionStyle {
    translateX?: (progress: number, dimension: RX.Types.Dimensions) => string;
    translateY?: (progress: number, dimension: RX.Types.Dimensions) => string;
    translateZ?: (progress: number, dimension: RX.Types.Dimensions) => string;
    opacity?: ((progress: number) => number) | number;
    rotateX?: ((progress: number) => number) | number;
    rotateY?: ((progress: number) => number) | number;
    rotateZ?: ((progress: number) => number) | number;
    scaleX?: (progress: number) => number;
    scaleY?: (progress: number) => number;
    scaleZ?: (progress: number) => number;
}
export declare class NavigatorSceneConfig {
    springFriction: number;
    springTension: number;
    defaultTransitionVelocity: number;
    animationInterpolators: {
        into: InterpolatorWrapper;
        out: InterpolatorWrapper;
    };
    constructor(intoStyle: TransitionStyle, outStyle: TransitionStyle);
    private _styleInterpolator;
}
export declare class NavigatorSceneConfigFactory {
    static createConfig(configType: Types.NavigatorSceneConfigType): NavigatorSceneConfig;
}
