import { DiscoveryConfigData, Configs } from '@accelbyte/sdk';
import { SDKOptions } from '@accelbyte/sdk/AccelbyteSDK';
import React, { ReactNode } from 'react';
import { NavLinkItem, NavLinkSeparator } from '@od-account/pages/AccountPageNav';
export { NavLinkItem, NavLinkSeparator } from '@od-account/pages/AccountPageNav';
import { RouteComponentProps } from 'react-router-dom';
import { AppUrlParamContext, APP_STATE_ERROR } from '@od-payment/app-state/app-state';

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

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

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

interface SdkWidgetProps {
    sdkOptions: SDKOptions;
    basePath?: string;
    pathname?: string;
    widgetOptions?: {
        discovery: DiscoveryConfigData;
        configs: Configs;
    };
    children?: ReactNode;
    onHistoryChange?: (path: string) => void;
}
interface State$2 {
    initialized: boolean;
}
declare class SdkWidget extends React.Component<SdkWidgetProps, State$2> {
    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;
}

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;
}

interface Props$1 {
    orderNo: string;
    redirectPath?: string;
}
declare class OrderWidget extends React.Component<Props$1> {
    constructor(props: Props$1);
    render(): JSX.Element;
}

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

interface State$1 {
    appUrlParam: AppUrlParamContext | null;
    appUrlParamError: keyof typeof APP_STATE_ERROR | null;
}
declare class PaymentWidget extends React.Component<{}, State$1> {
    constructor(props: any);
    componentDidMount(): void;
    componentWillUnmount(): void;
    initFromParam: () => void;
    listenMessageFromParent: (event: MessageEvent) => Promise<void>;
    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, OptionboxItemDetailWidget, OrderHistoryWidget, OrderWidget, PaymentMethodsWidget, PaymentWidget, PersonalDataWidget, PrivacyRecordsWidget, ProfileWidget, PurchasedItemsWidget, RedeemCodeWidget, SdkWidget, StoreWidget };
