import { ReactNode } from 'react'; import { MessageOptions } from './message.doc'; export declare type MessagePosition = 'top' | 'right-top' | 'right-bottom'; export interface MessageShowOptions extends MessageOptions { /** * Time(ms) before auto-dismiss, won't auto-dismiss if set to negative numbers */ duration?: number; /** * Defaults to `'right-bottom'`. */ position?: MessagePosition; } export interface MessageShowResult { /** * The corresponding promise. It is resolved when message is closed */ promise: Promise; /** * Function used to close message manually */ close(): void; } export interface IMessageService { /** * The container for rendering message DOM elements. */ readonly container: HTMLElement; /** * Messages to be rendered within root component, should be put under theme provider. * * @observable */ readonly messages: ReactNode; info(content: ReactNode, options?: MessageShowOptions): MessageShowResult; success(content: ReactNode, options?: MessageShowOptions): MessageShowResult; error(content: ReactNode, options?: MessageShowOptions): MessageShowResult; warning(content: ReactNode, options?: MessageShowOptions): MessageShowResult; confirm(content: ReactNode, options?: MessageShowOptions): MessageShowResult; /** * @param options * options.duration Defaults to `-1`, so it won't auto-dismiss. Call `close` in returned MessageShowResult to dismiss the message. */ loading(content: ReactNode, options?: MessageShowOptions): MessageShowResult; }