import { Application as FeathersApplication, Params as FeathersParams, HookContext, SetupMethod, ServiceMethods } from '@feathersjs/feathers'; import express from 'express'; declare const feathersExpress: FeathersExpress; export = feathersExpress; type Express = typeof express; interface FeathersExpress extends Express { (app: FeathersApplication): feathersExpress.Application; (app?: any): express.Express; default: FeathersExpress; rest: { (handler?: express.RequestHandler): () => void; formatter: express.RequestHandler; httpMethod: (verb: string, uris?: string | string[]) => (method: T) => T; }; original: Express; errorHandler (options?: { public?: string, logger?: { error: (msg: any) => void, info: (msg: any) => void }, html?: any, json?: any }): express.ErrorRequestHandler; notFound (): express.RequestHandler; parseAuthentication (...strategies: string[]): express.RequestHandler; authenticate (...strategies: string[]): express.RequestHandler; } declare namespace feathersExpress { type Application = express.Express & FeathersApplication; } declare module 'express-serve-static-core' { interface Request { feathers?: Partial; } interface Response { data?: any; hook?: HookContext; } type FeathersService = Partial & SetupMethod>; interface IRouterMatcher { // tslint:disable-next-line callable-types (Required for declaration merging)

( path: PathParams, ...handlers: (RequestHandler | FeathersService | Application)[] ): T; } }