///
import { Animated, StyleProp, TextStyle, ViewStyle } from 'react-native';
import { SafeAreaView } from '@react-navigation/native';
export declare type Route = {
key: string;
routeName: string;
};
export declare type Scene = {
key: string;
index: number;
isStale: boolean;
isActive: boolean;
route: Route;
descriptor: SceneDescriptor;
};
export declare type NavigationEventName = 'willFocus' | 'didFocus' | 'willBlur' | 'didBlur';
export declare type NavigationState = {
key: string;
index: number;
routes: Route[];
isTransitioning?: boolean;
params?: {
[key: string]: unknown;
};
};
export declare type NavigationProp = {
navigate(routeName: RouteName): void;
goBack(): void;
goBack(key: string | null): void;
addListener: (event: NavigationEventName, callback: () => void) => {
remove: () => void;
};
isFocused(): boolean;
state: NavigationState;
setParams(params: Params): void;
getParam(): Params;
dispatch(action: {
type: string;
}): void;
dangerouslyGetParent(): NavigationProp | undefined;
};
export declare type HeaderMode = 'float' | 'screen';
export declare type HeaderLayoutPreset = 'left' | 'center';
export declare type HeaderTransitionPreset = 'fade-in-place' | 'uikit';
export declare type HeaderBackgroundTransitionPreset = 'translate' | 'fade';
export declare type HeaderProps = {
mode: HeaderMode;
position: Animated.Value;
navigation: NavigationProp;
layout: TransitionerLayout;
scene: Scene;
scenes: Scene[];
layoutPreset: HeaderLayoutPreset;
transitionPreset?: HeaderTransitionPreset;
backTitleVisible?: boolean;
leftInterpolator: (props: SceneInterpolatorProps) => any;
titleInterpolator: (props: SceneInterpolatorProps) => any;
rightInterpolator: (props: SceneInterpolatorProps) => any;
backgroundInterpolator: (props: SceneInterpolatorProps) => any;
layoutInterpolator?: (props: SceneInterpolatorProps) => any;
isLandscape: boolean;
};
export declare type HeaderTransitionConfig = {
headerLeftInterpolator: SceneInterpolator;
headerLeftLabelInterpolator: SceneInterpolator;
headerLeftButtonInterpolator: SceneInterpolator;
headerTitleFromLeftInterpolator: SceneInterpolator;
headerTitleInterpolator: SceneInterpolator;
headerRightInterpolator: SceneInterpolator;
headerBackgroundInterpolator: SceneInterpolator;
headerLayoutInterpolator: SceneInterpolator;
};
export declare type NavigationStackOptions = {
title?: string;
header?: (props: HeaderProps) => React.ReactNode;
headerTitle?: string;
headerTitleStyle?: StyleProp;
headerTitleContainerStyle?: StyleProp;
headerTintColor?: string;
headerTitleAllowFontScaling?: boolean;
headerBackAllowFontScaling?: boolean;
headerBackTitle?: string;
headerBackTitleStyle?: StyleProp;
headerTruncatedBackTitle?: string;
headerLeft?: React.FunctionComponent;
headerLeftContainerStyle?: StyleProp;
headerRight?: (() => React.ReactNode) | React.ReactNode;
headerRightContainerStyle?: StyleProp;
headerBackImage?: React.FunctionComponent<{
tintColor: string;
title?: string | null;
}>;
headerPressColorAndroid?: string;
headerBackground?: string;
headerTransparent?: boolean;
headerStyle?: StyleProp;
headerForceInset?: React.ComponentProps['forceInset'];
gesturesEnabled?: boolean;
gestureDirection?: 'inverted' | 'normal';
gestureResponseDistance?: {
vertical: number;
horizontal: number;
};
disableKeyboardHandling?: boolean;
};
export declare type NavigationConfig = {
mode: 'card' | 'modal';
headerMode: HeaderMode;
headerLayoutPreset: HeaderLayoutPreset;
headerTransitionPreset: HeaderTransitionPreset;
headerBackgroundTransitionPreset: HeaderBackgroundTransitionPreset;
headerBackTitleVisible?: boolean;
cardShadowEnabled?: boolean;
cardOverlayEnabled?: boolean;
onTransitionStart?: () => void;
onTransitionEnd?: () => void;
transitionConfig: (transitionProps: TransitionProps, prevTransitionProps?: TransitionProps, isModal?: boolean) => HeaderTransitionConfig;
};
export declare type SceneDescriptor = {
key: string;
options: NavigationStackOptions;
navigation: NavigationProp;
getComponent(): React.ComponentType;
};
export declare type HeaderBackbuttonProps = {
disabled?: boolean;
onPress: () => void;
pressColorAndroid?: string;
tintColor: string;
backImage?: NavigationStackOptions['headerBackImage'];
title?: string | null;
truncatedTitle?: string | null;
backTitleVisible?: boolean;
allowFontScaling?: boolean;
titleStyle?: StyleProp;
layoutPreset: HeaderLayoutPreset;
width?: number;
scene: Scene;
};
export declare type SceneInterpolatorProps = {
mode?: HeaderMode;
layout: TransitionerLayout;
scene: Scene;
scenes: Scene[];
position: Animated.AnimatedInterpolation;
navigation: NavigationProp;
shadowEnabled?: boolean;
cardOverlayEnabled?: boolean;
};
export declare type SceneInterpolator = (props: SceneInterpolatorProps) => any;
export declare type TransitionerLayout = {
height: Animated.Value;
width: Animated.Value;
initHeight: number;
initWidth: number;
isMeasured: boolean;
};
export declare type TransitionProps = {
layout: TransitionerLayout;
navigation: NavigationProp;
position: Animated.Value;
scenes: Scene[];
scene: Scene;
index: number;
};
export declare type TransitionConfig = {
transitionSpec: {
timing: Function;
};
screenInterpolator: SceneInterpolator;
containerStyle?: StyleProp;
};
export declare type Screen = React.ComponentType & {
navigationOptions?: NavigationStackOptions & {
[key: string]: any;
};
};