UNPKG

@starknet-io/types-js

Version:

Shared TypeScript definitions for Starknet projects

139 lines 5.87 kB
import { Permission } from './constants.js'; import type { TypedData } from './typedData.js'; import * as Errors from './errors.js'; import type { API_VERSION, AccountDeploymentData, AddDeclareTransactionParameters, AddDeclareTransactionResult, AddInvokeTransactionParameters, AddInvokeTransactionResult, AddStarknetChainParameters, Address, ApiVersionRequest, RequestAccountsParameters, Signature, SpecVersion, SwitchStarknetChainParameters, WatchAssetParameters } from './components.js'; import type { ChainId } from '../api/index.js'; /** * Maps each RPC message type to its corresponding parameters and result type. */ export interface RpcTypeToMessageMap { /** * Get permissions from the wallet. * @returns An array of permissions. */ wallet_getPermissions: { params?: ApiVersionRequest; result: Permission[] | []; errors: Errors.API_VERSION_NOT_SUPPORTED | Errors.UNKNOWN_ERROR; }; /** * Request active accounts from the wallet. * @param params Optional parameters for requesting accounts. * @returns An array of account addresses as strings. */ wallet_requestAccounts: { params?: RequestAccountsParameters & ApiVersionRequest; result: Address[]; errors: Errors.API_VERSION_NOT_SUPPORTED | Errors.UNKNOWN_ERROR; }; /** * Watch an asset in the wallet. * @param params The parameters required to watch an asset. * @returns A boolean indicating if the operation was successful. */ wallet_watchAsset: { params: WatchAssetParameters & ApiVersionRequest; result: boolean; errors: Errors.NOT_ERC20 | Errors.INVALID_REQUEST_PAYLOAD | Errors.USER_REFUSED_OP | Errors.API_VERSION_NOT_SUPPORTED | Errors.UNKNOWN_ERROR; }; /** * Add a new Starknet chain to the wallet. * @param params The parameters required to add a new chain. * @returns A boolean indicating if the operation was successful. */ wallet_addStarknetChain: { params: AddStarknetChainParameters & ApiVersionRequest; result: boolean; errors: Errors.INVALID_REQUEST_PAYLOAD | Errors.USER_REFUSED_OP | Errors.API_VERSION_NOT_SUPPORTED | Errors.UNKNOWN_ERROR; }; /** * Switch the current Starknet chain in the wallet. * @param params The parameters required to switch chains. * @returns A boolean indicating if the operation was successful. */ wallet_switchStarknetChain: { params: SwitchStarknetChainParameters & ApiVersionRequest; result: boolean; errors: Errors.UNLISTED_NETWORK | Errors.USER_REFUSED_OP | Errors.API_VERSION_NOT_SUPPORTED | Errors.UNKNOWN_ERROR; }; /** * Request the current chain ID from the wallet. * @returns The current Starknet chain ID. */ wallet_requestChainId: { params?: ApiVersionRequest; result: ChainId; errors: Errors.API_VERSION_NOT_SUPPORTED | Errors.UNKNOWN_ERROR; }; /** * Get deployment data for a contract. * @returns The deployment data result. */ wallet_deploymentData: { params?: ApiVersionRequest; result: AccountDeploymentData; errors: Errors.ACCOUNT_ALREADY_DEPLOYED | Errors.API_VERSION_NOT_SUPPORTED | Errors.UNKNOWN_ERROR; }; /** * Add an invoke transaction to the wallet. * @param params The parameters required for the invoke transaction. * @returns The result of adding the invoke transaction. */ wallet_addInvokeTransaction: { params: AddInvokeTransactionParameters & ApiVersionRequest; result: AddInvokeTransactionResult; errors: Errors.INVALID_REQUEST_PAYLOAD | Errors.USER_REFUSED_OP | Errors.API_VERSION_NOT_SUPPORTED | Errors.UNKNOWN_ERROR; }; /** * Add a declare transaction to the wallet. * @param params The parameters required for the declare transaction. * @returns The result of adding the declare transaction. */ wallet_addDeclareTransaction: { params: AddDeclareTransactionParameters & ApiVersionRequest; result: AddDeclareTransactionResult; errors: Errors.INVALID_REQUEST_PAYLOAD | Errors.USER_REFUSED_OP | Errors.API_VERSION_NOT_SUPPORTED | Errors.UNKNOWN_ERROR; }; /** * Sign typed data using the wallet. * @param params The typed data to sign. * @returns An array of signatures as strings. */ wallet_signTypedData: { params: TypedData & ApiVersionRequest; result: Signature; errors: Errors.INVALID_REQUEST_PAYLOAD | Errors.USER_REFUSED_OP | Errors.API_VERSION_NOT_SUPPORTED | Errors.UNKNOWN_ERROR; }; /** * Get the list of supported RPC specification versions. * @returns An array of supported specification strings. */ wallet_supportedSpecs: { params?: never; result: SpecVersion[]; }; /** * Returns a list of wallet api versions compatible with the wallet. * Notice this might be different from Starknet JSON-RPC spec * @returns An array of supported wallet api versions. */ wallet_supportedWalletApi: { params?: never; result: API_VERSION[]; }; } export type RpcMessage = { [K in keyof RpcTypeToMessageMap]: { type: K; } & RpcTypeToMessageMap[K]; }[keyof RpcTypeToMessageMap]; export type IsParamsOptional<T extends keyof RpcTypeToMessageMap> = undefined extends RpcTypeToMessageMap[T]['params'] ? true : false; export type RequestFnCall<T extends RpcMessage['type']> = { type: T; } & (IsParamsOptional<T> extends true ? { params?: RpcTypeToMessageMap[T]['params']; } : { params: RpcTypeToMessageMap[T]['params']; }); export type RequestFn = <T extends RpcMessage['type']>(call: RequestFnCall<T>) => Promise<RpcTypeToMessageMap[T]['result']>; //# sourceMappingURL=methods.d.ts.map