diff --git a/src/index.tsx b/src/index.tsx index 0913e5a..e35d0ca 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -90,22 +90,43 @@ export type NavigatorArgs< }; }; +export type StandardNavigatorContent< + NavigatorOptions extends {}, + NavigatorEventMap extends NavigatorEventMapBase, + NavigatorProps extends object = {}, +> = React.ComponentType< + NavigatorArgs & + Omit> +>; + +export type StandardNavigator< + NavigatorOptions extends {}, + NavigatorEventMap extends NavigatorEventMapBase, + NavigatorProps extends object = {}, +> = { + readonly type: 'standard'; + readonly version: 1; + readonly NavigatorContent: StandardNavigatorContent< + NavigatorOptions, + NavigatorEventMap, + NavigatorProps + >; +}; + export function createStandardNavigator< NavigatorOptions extends {}, NavigatorEventMap extends NavigatorEventMapBase, NavigatorProps extends object = {}, >( - NavigatorContent: React.ComponentType< - NavigatorArgs & - Omit< - NavigatorProps, - keyof NavigatorArgs - > + NavigatorContent: StandardNavigatorContent< + NavigatorOptions, + NavigatorEventMap, + NavigatorProps >, -) { +): StandardNavigator { return { type: 'standard', version: 1, NavigatorContent, - } as const; + }; }