import { StarknetInjectedWallet } from '@starknet-io/get-starknet-core';
import { WalletAccount, AccountInterface } from 'starknet';
import { RequestFn, StarknetWindowObject, WalletEventListener } from '@starknet-io/types-js';

type PredeployedAccountsConnectorOptions = {
    id: string;
    name: string;
    rpc: string;
};
type WithAccount<T> = T & {
    account: PredeployedWalletAccount;
};
type PredeployedAccount = {
    id: string;
    name: string;
    account: PredeployedWalletAccount;
};
declare class PredeployedAccountsConnector extends StarknetInjectedWallet {
    private readonly options;
    constructor(options: WithAccount<PredeployedAccountsConnectorOptions>);
    available(): boolean;
    ready(): Promise<boolean>;
    connect(): Promise<{
        account: string;
        chainId: bigint;
    }>;
    disconnect(): Promise<void>;
    account(): Promise<AccountInterface>;
    chainId(): Promise<bigint>;
    get id(): string;
}
declare class PredeployedWalletAccount extends WalletAccount {
    private _inner;
    constructor(base: any, rpc: string);
    request: RequestFn;
    get wallet(): PredeployedWallet;
}
declare class PredeployedWallet implements StarknetWindowObject {
    id: string;
    name: string;
    private account;
    version: string;
    icon: {
        dark: string;
        light: string;
    };
    subscriptions: any;
    constructor(id: string, name: string, account: AccountInterface);
    request: RequestFn;
    on: WalletEventListener;
    off: WalletEventListener;
}
declare function predeployedAccounts(options: PredeployedAccountsConnectorOptions): Promise<PredeployedAccountsConnector[]>;

export { type PredeployedAccount, PredeployedAccountsConnector, type PredeployedAccountsConnectorOptions, type WithAccount, predeployedAccounts };
