/* @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; }; }