/* @flow */ declare module 'next' { declare type NextApp = { prepare(): Promise, getRequestHandler(): any, render(req: any, res: any, pathname: string, query: any): any, renderToHTML(req: any, res: any, pathname: string, query: string): string, renderError(err: Error, req: any, res: any, pathname: any, query: any): any, renderErrorToHTML(err: Error, req: any, res: any, pathname: string, query: any): string, }; declare module.exports: (...opts: any) => NextApp; } declare module 'next/head' { declare module.exports: Class>; } declare module 'next/link' { declare module.exports: Class>; } declare module 'next/error' { declare module.exports: Class>; } declare module 'next/router' { declare module.exports: { route: string, pathname: string, query: Object, onRouteChangeStart: ?(url: string) => void, onRouteChangeComplete: ?(url: string) => void, onRouteChangeError: ?(err: Error & { cancelled: boolean }, url: string) => void, push(url: string, as: ?string): Promise, replace(url: string, as: ?string): Promise, }; } declare module 'next/document' { declare export var Head: Class>; declare export var Main: Class>; declare export var NextScript: Class>; declare export default Class> & { getInitialProps: (ctx: { pathname: string, query: any, req?: any, res?: any, jsonPageRes?: any, err?: any, }) => Promise, renderPage(cb: Function): void, } }