import * as react_jsx_runtime from 'react/jsx-runtime';
import * as _orderly_network_types from '@orderly.network/types';
import { AccountStatusEnum, NetworkId } from '@orderly.network/types';
import * as react from 'react';
import { PropsWithChildren, ReactElement } from 'react';
import { ButtonProps, DataTableProps } from '@orderly.network/ui';

type WalletConnectContentProps = {
    initAccountState: AccountStatusEnum;
    signIn: () => Promise<any>;
    enableTrading: (remember: boolean) => Promise<any>;
    enableTradingComplted?: () => Promise<void>;
    onCompleted?: () => void;
    close?: () => void;
    refCode: string;
    setRefCode: React.Dispatch<React.SetStateAction<string>>;
    helpText?: string;
    showRefCodeInput: boolean;
};
declare const WalletConnectContent: (props: WalletConnectContentProps) => react_jsx_runtime.JSX.Element;

declare const WalletConnectorModalId: "walletConnector";
declare const WalletConnectorSheetId: "walletConnectorSheet";
declare const WalletConnectorWidget: (props: any) => react_jsx_runtime.JSX.Element;

declare const useWalletConnectorBuilder: () => {
    readonly enableTrading: (remember: boolean) => Promise<any>;
    readonly initAccountState: _orderly_network_types.AccountStatusEnum;
    readonly signIn: () => Promise<any>;
    readonly enableTradingComplted: () => void;
    readonly refCode: string;
    readonly setRefCode: react.Dispatch<react.SetStateAction<string>>;
    readonly helpText: string;
    readonly showRefCodeInput: boolean;
};

type alertMessages = {
    connectWallet?: string;
    switchChain?: string;
    enableTrading?: string;
    signin?: string;
};

type AuthGuardProps$2 = React.ButtonHTMLAttributes<HTMLButtonElement> & {
    fallback?: (props: {
        validating: boolean;
        status: AccountStatusEnum;
        wrongNetwork: boolean;
    }) => ReactElement;
    /**
     * Required state to be satisfied
     * @default AccountStatusEnum.EnableTrading
     */
    status?: AccountStatusEnum;
    bridgeLessOnly?: boolean;
    buttonProps?: ButtonProps;
    descriptions?: alertMessages;
    labels?: alertMessages;
    classNames?: {
        root?: string;
        description?: string;
    };
    networkId?: NetworkId;
};
declare const AuthGuard: {
    (props: PropsWithChildren<AuthGuardProps$2>): react_jsx_runtime.JSX.Element;
    displayName: string;
};

declare const AuthGuardDataTable: <RecordType extends unknown>(props: PropsWithChildren<DataTableProps<RecordType> & Omit<GuardViewProps, "status"> & {
    status?: AccountStatusEnum;
    classNames?: DataTableProps<RecordType>["classNames"] & {
        authGuardDescription?: string;
    };
}>) => react_jsx_runtime.JSX.Element;
type GuardViewProps = {
    status: AccountStatusEnum;
    description?: alertMessages;
    labels?: alertMessages;
    className?: string;
    visible?: boolean;
};

type AuthGuardProps$1 = {
    /** default value is
     * ```ts
     * {
     *   connectWallet: "Please connect wallet before starting to trade",
     *   signIn: "Please sign in before starting to trade",
     *   enableTrading: "Please sign in before starting to trade",
     *   wrongNetwork: "Please switch to a supported network to continue.",
     * }
     * ```
     */
    hint?: {
        connectWallet?: string;
        signIn?: string;
        enableTrading?: string;
        wrongNetwork?: string;
    };
    status?: AccountStatusEnum;
};
declare const AuthGuardEmpty: {
    (props: PropsWithChildren<AuthGuardProps$1>): react_jsx_runtime.JSX.Element;
    displayName: string;
};

type AuthGuardProps = {
    content?: string;
    align?: "center" | "end" | "start";
    alignOffset?: number;
    side?: "top" | "right" | "bottom" | "left";
    sideOffset?: number;
    opactiy?: number;
    tooltip?: {
        connectWallet?: string;
        signIn?: string;
        enableTrading?: string;
        wrongNetwork?: string;
    };
};
declare const AuthGuardTooltip: {
    (props: PropsWithChildren<AuthGuardProps>): react_jsx_runtime.JSX.Element;
    displayName: string;
};

export { AuthGuard, AuthGuardDataTable, AuthGuardEmpty, AuthGuardTooltip, WalletConnectContent, type WalletConnectContentProps, WalletConnectorModalId, WalletConnectorSheetId, WalletConnectorWidget, useWalletConnectorBuilder };
