get-starknet-core
Version:
[](https://www.npmjs.com/package/get-starknet)
91 lines (90 loc) • 2.96 kB
TypeScript
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;
}
}