@ponziland/account
Version:
Account management library for Starknet with wallet modal and connection state
60 lines (59 loc) • 2.15 kB
TypeScript
import { type AccountConfig } from '../consts.js';
import { Provider as StarknetProvider } from 'starknet';
import { WALLET_API } from '@starknet-io/types-js';
import { type AccountInterface } from 'starknet';
export declare const WalletWeights: Record<string, number>;
export type AccountProvider = {
connect(): Promise<any>;
setupSession(): Promise<StoredSession | void>;
loadSession(storage: StoredSession): Promise<void>;
getAccount(): AccountInterface | undefined;
getWalletAccount(): AccountInterface | undefined;
supportsSession(): boolean;
disconnect(): Promise<void>;
};
export type ConnectedEvent = {
type: 'connected';
provider: AccountProvider;
};
export type DisconnectedEvent = {
type: 'disconnected';
};
export type ChainChangedEvent = {
type: 'chain_change';
chainId: string;
};
export type Event = ConnectedEvent | DisconnectedEvent | ChainChangedEvent;
export type EventListener = (event: Event) => void;
export declare function Provider(wallet: WALLET_API.StarknetWindowObject): Promise<AccountProvider | null>;
export interface StoredSession {
address: string;
privateKey: string;
expiry: Date;
}
export declare class AccountManager {
private _provider?;
private _walletObject?;
private _setup;
private _setupPromise;
private _listeners;
constructor();
listen(listener: EventListener): () => void;
wait(): Promise<AccountManager>;
private setup;
getStarknetProvider(): StarknetProvider;
selectAndLogin(providerId: string): Promise<void>;
switchChain(chainId: string): Promise<void>;
getProviderName(): string | undefined;
getChainId(): Promise<string>;
disconnect(): void;
getProvider(): AccountProvider | undefined;
setupSession(): Promise<void>;
getAvailableWallets(): WALLET_API.StarknetWindowObject[];
promptForLogin(): Promise<void>;
private getSessionFromStorage;
private onWalletChanged;
private onNetworkChanged;
}
export declare function setupAccount(config?: Partial<AccountConfig>): Promise<AccountManager>;
export declare function useAccount(): AccountManager | null;