UNPKG

@erc7824/nitrolite

Version:

The Nitrolite SDK empowers developers to build high-performance, scalable web3 applications using state channels. It's designed to provide near-instant transactions and significantly improved user experiences by minimizing direct blockchain interactions.

104 lines (103 loc) 3.26 kB
import { Address, Hex } from 'viem'; import { RPCAllowance } from './common'; export * from './request'; export * from './response'; export * from './filters'; export * from './common'; export type RequestID = number; export type Timestamp = number; export type AccountID = Hex; export type RPCData = [RequestID, RPCMethod, object, Timestamp?]; export interface GenericRPCMessage { requestId?: RequestID; timestamp?: Timestamp; signatures?: Hex[]; } export interface NitroliteRPCMessage { req?: RPCData; res?: RPCData; sig?: Hex[]; } export interface ApplicationRPCMessage extends NitroliteRPCMessage { sid: Hex; } export declare enum NitroliteErrorCode { PARSE_ERROR = -32700, INVALID_REQUEST = -32600, METHOD_NOT_FOUND = -32601, INVALID_PARAMS = -32602, INTERNAL_ERROR = -32603, AUTHENTICATION_FAILED = -32000, INVALID_SIGNATURE = -32003, INVALID_TIMESTAMP = -32004, INVALID_REQUEST_ID = -32005, INSUFFICIENT_FUNDS = -32007, ACCOUNT_NOT_FOUND = -32008, APPLICATION_NOT_FOUND = -32009, INVALID_INTENT = -32010, INSUFFICIENT_SIGNATURES = -32006, CHALLENGE_EXPIRED = -32011, INVALID_CHALLENGE = -32012 } export type MessageSigner = (payload: RPCData) => Promise<Hex>; export type ChallengeStateSigner = (stateHash: Hex) => Promise<Hex>; export type SingleMessageVerifier = (payload: RPCData, signature: Hex, address: Address) => Promise<boolean>; export type MultiMessageVerifier = (payload: RPCData, signatures: Hex[], expectedSigners: Address[]) => Promise<boolean>; export interface PartialEIP712AuthMessage { scope: string; session_key: Address; expires_at: bigint; allowances: RPCAllowance[]; } export interface EIP712AuthMessage extends PartialEIP712AuthMessage { wallet: Address; challenge: string; } export interface EIP712AuthDomain { name: string; } export declare const EIP712AuthTypes: { Policy: { name: string; type: string; }[]; Allowance: { name: string; type: string; }[]; }; export declare enum RPCMethod { AuthRequest = "auth_request", AuthChallenge = "auth_challenge", AuthVerify = "auth_verify", Error = "error", GetConfig = "get_config", GetLedgerBalances = "get_ledger_balances", GetLedgerEntries = "get_ledger_entries", GetLedgerTransactions = "get_ledger_transactions", GetUserTag = "get_user_tag", GetSessionKeys = "get_session_keys", RevokeSessionKey = "revoke_session_key", CreateAppSession = "create_app_session", SubmitAppState = "submit_app_state", CloseAppSession = "close_app_session", GetAppDefinition = "get_app_definition", GetAppSessions = "get_app_sessions", CreateChannel = "create_channel", ResizeChannel = "resize_channel", CloseChannel = "close_channel", GetChannels = "get_channels", GetRPCHistory = "get_rpc_history", GetAssets = "get_assets", CleanupSessionKeyCache = "cleanup_session_key_cache", Assets = "assets", Message = "message", BalanceUpdate = "bu", ChannelsUpdate = "channels", ChannelUpdate = "cu", Ping = "ping", Pong = "pong", Transfer = "transfer", TransferNotification = "tr", AppSessionUpdate = "asu" }