import { DiscoveryConfigData, Configs } from '@accelbyte/sdk';
import React, { ReactNode } from 'react';
import { RouteComponentProps } from 'react-router-dom';

declare function AccountRoutesWidget(): (false | JSX.Element)[];

declare function EcommerceRoutesWidget(): JSX.Element[];

declare function ErrorRoutesWidget(): JSX.Element[];

declare enum LogLevel {
    'DEBUG' = "DEBUG",
    'INFO' = "INFO"
}

interface SDKOptions {
    clientId: string;
    redirectURI: string;
    baseURL: string;
    namespace: string;
    cache?: boolean;
    loglevel?: keyof typeof LogLevel;
}

interface SdkWidgetProps {
    sdkOptions: SDKOptions;
    basePath?: string;
    pathname?: string;
    widgetOptions?: {
        discovery: DiscoveryConfigData;
        configs: Configs;
    };
    children?: ReactNode;
    onHistoryChange?: (path: string, search: string) => void;
}
interface State$1 {
    initialized: boolean;
}
declare class SdkWidget extends React.Component<SdkWidgetProps, State$1> {
    constructor(props: SdkWidgetProps);
    componentDidMount(): Promise<void>;
    componentDidUpdate(prevProps: Readonly<SdkWidgetProps>): void;
    render(): JSX.Element;
}

declare class AccountDeletionWidget extends React.Component {
    render(): JSX.Element;
}

declare class AccountOverviewWidget extends React.Component {
    render(): JSX.Element;
}

declare type isVisible = () => boolean | null;
interface NavLinkItem {
    type: 'link';
    key: string;
    to: string;
    label: string;
    isVisible?: isVisible;
}
interface NavLinkSeparator {
    type: 'separator';
    component?: () => JSX.Element;
}

interface Props$8 extends RouteComponentProps {
    children: React.ReactNode;
    backgroundImageUrl?: string;
    accountPageNav: (NavLinkItem | NavLinkSeparator)[];
}
declare class AccountPageLayoutWidget extends React.Component<Props$8> {
    render(): JSX.Element;
}

declare class ChangeEmailWidget extends React.Component {
    render(): JSX.Element;
}

declare class ChangePasswordWidget extends React.Component {
    render(): JSX.Element;
}

declare class LinkedAccountsWidget extends React.Component {
    render(): JSX.Element;
}

declare class OrderHistoryWidget extends React.Component<RouteComponentProps> {
    render(): JSX.Element;
}

declare class PaymentMethodsWidget extends React.Component {
    render(): JSX.Element;
}

declare class PersonalDataWidget extends React.Component<RouteComponentProps> {
    constructor(props: RouteComponentProps);
    componentDidMount(): void;
    render(): JSX.Element;
}

declare class PrivacyRecordsWidget extends React.Component {
    render(): JSX.Element;
}

declare class ProfileWidget extends React.Component<RouteComponentProps> {
    render(): JSX.Element;
}

declare class PurchasedItemsWidget extends React.Component {
    render(): JSX.Element;
}

declare class RedeemCodeWidget extends React.Component {
    render(): JSX.Element;
}

interface Props$7 {
    itemId: string;
}
declare class AppDetailWidget extends React.Component<Props$7> {
    constructor(props: Props$7);
    render(): JSX.Element;
}

interface Props$6 {
    itemId: string;
}
declare class BundleItemDetailWidget extends React.Component<Props$6> {
    constructor(props: Props$6);
    render(): JSX.Element;
}

interface Props$5 {
    itemId: string;
}
declare class CodeItemDetailWidget extends React.Component<Props$5> {
    constructor(props: Props$5);
    render(): JSX.Element;
}

interface Props$4 {
    itemId: string;
}
declare class DlcDetailWidget extends React.Component<Props$4> {
    constructor(props: Props$4);
    render(): JSX.Element;
}

interface Props$3 {
    itemId: string;
}
declare class IngameItemDetailWidget extends React.Component<Props$3> {
    constructor(props: Props$3);
    render(): JSX.Element;
}

interface Props$2 {
    itemId: string;
}
declare class OptionboxItemDetailWidget extends React.Component<Props$2> {
    constructor(props: Props$2);
    render(): JSX.Element;
}

declare class StoreWidget extends React.Component {
    render(): JSX.Element;
}

declare type Props$1 = {
    orderNo: string;
    redirectPath?: string;
};
declare class PaymentWidget extends React.Component<Props$1> {
    render(): JSX.Element;
}

interface Props {
    onLogout?: () => void;
    isDisableUsername?: boolean;
}
interface State {
    dropdownProfileOpen: boolean;
}
declare class LoginWidget extends React.Component<Props, State> {
    dropdownToggleProfileRef: React.RefObject<HTMLDivElement>;
    private userAppManager;
    constructor(props: Props);
    componentDidMount(): Promise<void>;
    componentWillUnmount(): void;
    onLoginClick: (returnPath?: string | null | undefined) => void;
    onLogoutClick: () => Promise<void>;
    toggleMenuOff: (event: MouseEvent) => void;
    toggleProfileMenu: () => void;
    render(): JSX.Element;
}

export { AccountDeletionWidget, AccountOverviewWidget, AccountPageLayoutWidget, AccountRoutesWidget, AppDetailWidget, BundleItemDetailWidget, ChangeEmailWidget, ChangePasswordWidget, CodeItemDetailWidget, DlcDetailWidget, EcommerceRoutesWidget, ErrorRoutesWidget, IngameItemDetailWidget, LinkedAccountsWidget, LoginWidget, NavLinkItem, NavLinkSeparator, OptionboxItemDetailWidget, OrderHistoryWidget, PaymentMethodsWidget, PaymentWidget, PersonalDataWidget, PrivacyRecordsWidget, ProfileWidget, PurchasedItemsWidget, RedeemCodeWidget, SdkWidget, StoreWidget };
