import * as React from 'react';
import { WidgetRootDomProps } from './utils.cjs';
import { DirectoryType, DirectoryMetadata, DirectoryState } from '../api/endpoint.cjs';
import './elements.cjs';
import '@radix-ui/themes';
import '@radix-ui/themes/props';
import '../dialog-CGXwsXVe.cjs';
import '@radix-ui/themes/components/dialog';
import '../alert-dialog-BMbVcJfZ.cjs';
import '@radix-ui/themes/components/alert-dialog';
import '../dropdown-menu-BQ5LtvdR.cjs';
import '@radix-ui/themes/components/dropdown-menu';
import '../select-KR89Qnvm.cjs';
import '@radix-ui/themes/components/select';
import '@tanstack/react-query';
import '../api/widgets-api-client.cjs';

interface BaseDirectorySyncProps {
    type?: DirectoryType;
    metadata?: DirectoryMetadata;
    lastSyncAt?: string | null;
    link?: string | null;
    errorMessage?: never;
    userCount?: never;
    groupCount?: never;
    currentDate?: never;
    state: DirectoryState;
}
interface NotConfiguredProps extends BaseDirectorySyncProps {
    state: (typeof DirectoryState)["unlinked"];
}
interface SetupInProgressProps extends Omit<BaseDirectorySyncProps, "type"> {
    state: (typeof DirectoryState)["validating"];
    type: DirectoryType;
}
interface ErrorBeforeConfigProps extends Omit<BaseDirectorySyncProps, "type" | "errorMessage"> {
    state: DirectoryState;
    type: DirectoryType;
    errorMessage: React.ReactNode;
}
interface ValidatingProps extends Omit<BaseDirectorySyncProps, "type"> {
    state: (typeof DirectoryState)["validating"];
    type: DirectoryType;
}
interface ActiveProps extends Omit<BaseDirectorySyncProps, "type" | "lastSyncAt" | "currentDate" | "errorMessage"> {
    state: (typeof DirectoryState)["linked"];
    type: DirectoryType;
    lastSyncAt: string | null;
    currentDate?: Date | null;
    errorMessage?: React.ReactNode;
}
interface InvalidCredentialsProps extends Omit<BaseDirectorySyncProps, "type" | "errorMessage"> {
    state: (typeof DirectoryState)["invalid_credentials"];
    type: DirectoryType;
    errorMessage: React.ReactNode;
}
interface DeletingProps extends Omit<BaseDirectorySyncProps, "type"> {
    state: (typeof DirectoryState)["deleting"];
    type: DirectoryType;
}
type DirectorySyncStatusProps = NotConfiguredProps | SetupInProgressProps | ErrorBeforeConfigProps | ValidatingProps | ActiveProps | InvalidCredentialsProps | DeletingProps;
type DirectorySyncProps = WidgetRootDomProps & DirectorySyncStatusProps;
declare const DirectorySync: React.FC<DirectorySyncProps>;
interface DirectorySyncLoadingProps extends WidgetRootDomProps {
}
declare const DirectorySyncLoading: React.FC<DirectorySyncLoadingProps>;
interface DirectorySyncErrorProps extends WidgetRootDomProps {
    error: unknown;
}
declare const DirectorySyncError: React.FC<DirectorySyncErrorProps>;

export { DirectorySync, DirectorySyncError, type DirectorySyncErrorProps, DirectorySyncLoading, type DirectorySyncLoadingProps, type DirectorySyncProps, type DirectorySyncStatusProps };
