/**
 * @module Theme
 * @author Alan Rodas Bonjour <alanrodas@gmail.com>
 */
import { CommentDisplayPart, ContainerReflection, DeclarationHierarchy, DeclarationReflection, DefaultTheme, DefaultThemeRenderContext, DocumentReflection, JSX, Options, PageEvent, ProjectReflection, Reflection, RenderTemplate, SignatureReflection, SomeType, Type, TypeParameterReflection } from 'typedoc';
import { IconRecord } from './Icons';
/**
 * The main context of the theme. This class contains the
 * basic behavior of how the theme should look on different scenarios,
 * that is, how it will render every part of the theme depending on
 * the reflection to render.
 */
export declare class GobstonesThemeContext extends DefaultThemeRenderContext {
    readonly theme: DefaultTheme;
    page: PageEvent<Reflection>;
    private _customRefIcons;
    defaultLayout: (template: RenderTemplate<PageEvent<Reflection>>, props: PageEvent<Reflection>) => JSX.Element;
    documentTemplate: (props: PageEvent<DocumentReflection>) => JSX.Element;
    hierarchyTemplate: (props: PageEvent<ProjectReflection>) => JSX.Element;
    indexTemplate: (props: PageEvent<ProjectReflection>) => JSX.Element;
    reflectionTemplate: (props: PageEvent<ContainerReflection>) => JSX.Element;
    toolbar: (props: PageEvent<Reflection>) => JSX.Element;
    footer: () => JSX.Element;
    sidebar: (props: PageEvent<Reflection>) => JSX.Element;
    pageSidebar: (props: PageEvent<Reflection>) => JSX.Element;
    sidebarLinks: () => JSX.Element | null;
    settings: () => JSX.Element;
    navigation: (props: PageEvent<Reflection>) => JSX.Element;
    pageNavigation: (props: PageEvent<Reflection>) => JSX.Element;
    header: (props: PageEvent<Reflection>) => JSX.Element;
    breadcrumb: (props: Reflection) => JSX.Element | undefined;
    commentShortSummary: (props: Reflection) => JSX.Element | undefined;
    commentSummary: (props: Reflection) => JSX.Element | undefined;
    commentTags: (props: Reflection) => JSX.Element | undefined;
    reflectionFlags: (props: Reflection) => JSX.Element;
    displayParts: (parts: readonly CommentDisplayPart[] | undefined) => JSX.Element | undefined;
    type: (typ: SomeType | undefined, options?: {
        topLevelLinks: boolean;
    }) => JSX.Element;
    typeAndParent: (props: Type) => JSX.Element;
    typeParameters: (typeParameters: TypeParameterReflection[]) => JSX.Element;
    typeDetails: (props: SomeType, renderAnchors: boolean) => JSX.Children;
    typeDetailsIfUseful: (props: SomeType | undefined) => JSX.Children;
    typeDeclaration: (props: SomeType) => JSX.Children;
    member: (props: DeclarationReflection | DocumentReflection) => JSX.Element;
    memberDeclaration: (props: DeclarationReflection) => JSX.Element;
    memberGetterSetter: (props: DeclarationReflection) => JSX.Element;
    memberSignatureBody: (props: SignatureReflection) => JSX.Element;
    memberSignatureTitle: (props: SignatureReflection) => JSX.Element;
    memberSignatures: (props: DeclarationReflection) => JSX.Element;
    memberSources: (props: SignatureReflection | DeclarationReflection) => JSX.Element;
    members: (props: ContainerReflection) => JSX.Element;
    /**
     * Rendered just after the description for a reflection.
     * This can be used to render a shortened type display of a reflection that the
     * rest of the page expands on.
     *
     * Note: Will not be called for variables/type aliases, as they are summarized
     * by their type declaration, which is already rendered by {@link GobstonesThemeContext.memberDeclaration}
     */
    reflectionPreview: (props: Reflection) => JSX.Element | undefined;
    moduleReflection: (mod: ProjectReflection | DeclarationReflection) => JSX.Element;
    hierarchy: (props: DeclarationHierarchy | undefined) => JSX.Element | undefined;
    index: (props: ContainerReflection) => JSX.Element;
    constructor(theme: DefaultTheme, page: PageEvent<Reflection>, options: Options);
    /**
     * Icons available for use within the page.
     */
    get icons(): Readonly<IconRecord>;
    markdown: (md: readonly CommentDisplayPart[] | string | undefined) => string;
}
//# sourceMappingURL=GobstonesThemeContext.d.ts.map