// Type definitions for react-helmet 5.0 // Project: https://github.com/nfl/react-helmet // Definitions by: Evan Bremer // Isman Usoh // François Nguyen // Kok Sam // Yui T. // Yamagishi Kazutoshi // Justin Hall // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.8 import * as React from 'react'; interface OtherElementAttributes { [key: string]: string | number | boolean | null | undefined; } type HtmlProps = JSX.IntrinsicElements['html'] & OtherElementAttributes; type BodyProps = JSX.IntrinsicElements['body'] & OtherElementAttributes; type LinkProps = JSX.IntrinsicElements['link']; type MetaProps = JSX.IntrinsicElements['meta']; export interface HelmetTags { baseTag: Array; linkTags: Array; metaTags: Array; noscriptTags: Array; scriptTags: Array; styleTags: Array; } export interface HelmetProps { async?: boolean | undefined; base?: any; bodyAttributes?: BodyProps | undefined; defaultTitle?: string | undefined; defer?: boolean | undefined; encodeSpecialCharacters?: boolean | undefined; htmlAttributes?: HtmlProps | undefined; onChangeClientState?: ((newState: any, addedTags: HelmetTags, removedTags: HelmetTags) => void) | undefined; link?: LinkProps[] | undefined; meta?: MetaProps[] | undefined; noscript?: Array | undefined; script?: Array | undefined; style?: Array | undefined; title?: string | undefined; titleAttributes?: Object | undefined; titleTemplate?: string | undefined; } export class Helmet extends React.Component { static peek(): HelmetData; static rewind(): HelmetData; static renderStatic(): HelmetData; static canUseDOM: boolean; } export interface HelmetData { base: HelmetDatum; bodyAttributes: HelmetHTMLBodyDatum; htmlAttributes: HelmetHTMLElementDatum; link: HelmetDatum; meta: HelmetDatum; noscript: HelmetDatum; script: HelmetDatum; style: HelmetDatum; title: HelmetDatum; titleAttributes: HelmetDatum; } export interface HelmetDatum { toString(): string; toComponent(): React.Component; } export interface HelmetHTMLBodyDatum { toString(): string; toComponent(): React.HTMLAttributes; } export interface HelmetHTMLElementDatum { toString(): string; toComponent(): React.HTMLAttributes; } export const peek: () => HelmetData; export const rewind: () => HelmetData; export const renderStatic: () => HelmetData; export const canUseDOM: boolean; export default Helmet;