import * as React from 'react'; import { RouteProps } from 'react-router'; type authorityFN = () => string; type authority = string | Array | authorityFN | Promise; export type IReactComponent

= | React.StatelessComponent

| React.ComponentClass

| React.ClassicComponentClass

; interface Secured { (authority: authority, error?: React.ReactNode): ( target: T, ) => T; } export interface AuthorizedRouteProps extends RouteProps { authority: authority; } export class AuthorizedRoute extends React.Component< AuthorizedRouteProps, any > {} interface check { ( authority: authority, target: T, Exception: S, ): T | S; } interface AuthorizedProps { authority: authority; noMatch?: React.ReactNode; } export class Authorized extends React.Component { static Secured: Secured; static AuthorizedRoute: typeof AuthorizedRoute; static check: check; } declare function renderAuthorize(currentAuthority: string): typeof Authorized; export default renderAuthorize;