UNPKG

get-starknet-core

Version:

[![npm](https://img.shields.io/npm/v/get-starknet.svg)](https://www.npmjs.com/package/get-starknet)

91 lines (90 loc) 2.96 kB
import type { AccountInterface, ProviderInterface } from "starknet"; import type { AccountInterface as AccountInterfaceV4, ProviderInterface as ProviderInterfaceV4 } from "starknet4"; export declare type AccountChangeEventHandler = (accounts: string[]) => void; export declare type NetworkChangeEventHandler = (network?: string) => void; export declare type WalletEvents = { type: "accountsChanged"; handler: AccountChangeEventHandler; } | { type: "networkChanged"; handler: NetworkChangeEventHandler; }; export interface WatchAssetParameters { type: "ERC20"; options: { address: string; symbol?: string; decimals?: number; image?: string; name?: string; }; } export interface AddStarknetChainParameters { id: string; chainId: string; chainName: string; baseUrl: string; rpcUrls?: string[]; blockExplorerUrls?: string[]; nativeCurrency?: { address: string; name: string; symbol: string; decimals: number; }; iconUrls?: string[]; } export interface SwitchStarknetChainParameter { chainId: string; } export declare type RpcMessage = { type: "wallet_watchAsset"; params: WatchAssetParameters; result: boolean; } | { type: "wallet_addStarknetChain"; params: AddStarknetChainParameters; result: boolean; } | { type: "wallet_switchStarknetChain"; params: SwitchStarknetChainParameter; result: boolean; }; export interface IStarknetWindowObject { id: string; name: string; version: string; icon: string; request: <T extends RpcMessage>(call: Omit<T, "result">) => Promise<T["result"]>; enable: (options?: { starknetVersion?: "v4" | "v5"; }) => Promise<string[]>; isPreauthorized: () => Promise<boolean>; on: <E extends WalletEvents>(event: E["type"], handleEvent: E["handler"]) => void; off: <E extends WalletEvents>(event: E["type"], handleEvent: E["handler"]) => void; account?: AccountInterface | AccountInterfaceV4; provider?: ProviderInterface | ProviderInterfaceV4; selectedAddress?: string; chainId?: string; isConnected: boolean; } export interface ConnectedStarknetWindowObject extends IStarknetWindowObject { isConnected: true; account: AccountInterface | AccountInterfaceV4; provider: ProviderInterface | ProviderInterfaceV4; selectedAddress: string; chainId: string; } export interface DisconnectedStarknetWindowObject extends IStarknetWindowObject { isConnected: false; } export declare type StarknetWindowObject = ConnectedStarknetWindowObject | DisconnectedStarknetWindowObject; declare global { interface Window { starknet?: StarknetWindowObject; starknet_braavos?: StarknetWindowObject; starknet_argentX?: StarknetWindowObject; starknet_metamask?: StarknetWindowObject; [key: `starknet_${string}`]: StarknetWindowObject | undefined; } }