@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
TypeScript
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"
}