import { AccountChangeEventHandler } from '@starknet-io/get-starknet-core';
import { RequestFnCall, RpcMessage, RpcTypeToMessageMap, StarknetWindowObject } from '@starknet-io/types-js';
import { constants, AccountInterface, ProviderInterface, ProviderOptions } from 'starknet';
import { Connector, ConnectArgs, ConnectorData, ConnectorIcons } from '../../connector';
import { InjectedConnectorOptions } from '../../injected';
import { isInArgentMobileAppBrowser } from '../helpers';

export interface ArgentMobileConnectorOptions {
    dappName: string;
    projectId?: string;
    chainId?: constants.NetworkName;
    description?: string;
    url: string;
    icons?: string[];
    rpcUrl?: string;
    onlyQR?: boolean;
}
export declare class ArgentMobileBaseConnector extends Connector {
    private _wallet;
    private readonly _options;
    constructor(options: ArgentMobileConnectorOptions);
    available(): boolean;
    ready(): Promise<boolean>;
    get id(): string;
    get name(): string;
    get icon(): ConnectorIcons;
    get wallet(): StarknetWindowObject;
    connect(_args?: ConnectArgs): Promise<ConnectorData>;
    disconnect(): Promise<void>;
    account(provider: ProviderOptions | ProviderInterface): Promise<AccountInterface>;
    chainId(): Promise<bigint>;
    request<T extends RpcMessage["type"]>(call: RequestFnCall<T>): Promise<RpcTypeToMessageMap[T]["result"]>;
    initEventListener(accountChangeCb: AccountChangeEventHandler): Promise<void>;
    removeEventListener(accountChangeCb: AccountChangeEventHandler): Promise<void>;
    private ensureWallet;
}
export interface ArgentMobileConnectorInitParams {
    options: ArgentMobileConnectorOptions;
    inAppBrowserOptions?: Omit<InjectedConnectorOptions, "id">;
}
export declare class ArgentMobileConnector {
    static init({ options, inAppBrowserOptions, }: ArgentMobileConnectorInitParams): Connector;
}
export { isInArgentMobileAppBrowser };
