//@ts-ignore
import React, { Component } from 'react';
//@ts-ignore
import { ComboBoxProps } from '@grapecity/core-ui';
import { SharedAccessMode, UserAccess } from './types';
import { GcPdfViewer } from '../GcPdfViewer';
/// <reference path="../vendor/i18next.d.ts" />
//@ts-ignore

import { i18n } from 'i18next';
export type ShareDialogState = {
    accessMode: SharedAccessMode;
    enabled: boolean;
    fileName: string;
    showModal: boolean;
    userName: string;
    usersWithAccess?: UserAccess[] | null;
    allUserNames?: string[] | null;
};
export type ShareDialogProps = {
    title?: string;
};
/**
 * 'Share document' dialog box.
 * */
export declare class ShareDialog extends Component<ShareDialogProps, ShareDialogState> {
    private _hidePromise?;
    private _resolve?;
    private _viewer;
    state: {
        enabled: boolean;
        fileName: string;
        showModal: boolean;
        userName: string;
        accessMode: SharedAccessMode;
        usersWithAccess: null;
        allUserNames: null;
    };
    private _disallowUnknownUsers?;
    private _knownUserNames?;
    /**
     * Loads sharing settings. This method should be called
     * during initialization or after changing the 'sharing' option.
     * */
    readOptions(): void;
    /**
     * Shows the 'share document' dialog box.
     * @param viewer
     */
    show(viewer: GcPdfViewer): Promise<void>;
    /**
     * Hides the dialog
     * */
    hide(): void;
//@ts-ignore
//@ts-ignore
    render(): React.JSX.Element;
//@ts-ignore
    renderAccessModeMenuTrigger(u: UserAccess, enabled: boolean): JSX.Element;
    private _resolveHidePromise;
    private _loadUserAccessList;
    private _loadAllUserNames;
    get in17n(): i18n;
    /**
     * Remove access to the document for the user specified by the userName argument.
     * @param userName
     */
    unshareDocument(userName: string): Promise<boolean>;
    /**
     * Share document to user.
     * @param userName
     * @param accessMode
     */
    shareDocument(userName: string, accessMode: SharedAccessMode): Promise<boolean>;
    getAccessModeComboBoxProps(userName: string, accessMode: SharedAccessMode): ComboBoxProps;
    getUserNamesSuggestions(): string[];
    getUsersComboBoxProps(): ComboBoxProps;
}
//@ts-ignore
export declare function getAccessModeSvgIcon(accessMode: SharedAccessMode): JSX.Element;
export declare function getAccessModeDisplayText(accessMode: SharedAccessMode, in17n: i18n): string;
export declare function getAccessModeDescription(accessMode: SharedAccessMode, in17n: i18n): string;
