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.

232 lines (231 loc) 9.16 kB
import { Address, Hex } from 'viem'; import { RPCMethod, GenericRPCMessage, RPCAppDefinition, RPCChannelStatus, RPCTransferAllocation, RPCAppSessionAllocation, RPCAllowance, GetLedgerTransactionsFilters, RPCAppStateIntent, RPCProtocolVersion } from '.'; export interface AuthChallengeRequest extends GenericRPCMessage { method: RPCMethod.AuthChallenge; params: { challenge_message: string; }; } export interface AuthVerifyRequest extends GenericRPCMessage { method: RPCMethod.AuthVerify; params: { jwt: string; } | { challenge: string; }; } export interface GetConfigRequest extends GenericRPCMessage { method: RPCMethod.GetConfig; params: {}; } export interface GetLedgerBalancesRequest extends GenericRPCMessage { method: RPCMethod.GetLedgerBalances; params: { account_id?: string; }; } export interface GetLedgerEntriesRequest extends GenericRPCMessage { method: RPCMethod.GetLedgerEntries; params: { account_id?: string; asset?: string; wallet?: Address; }; } export interface GetLedgerTransactionsRequest extends GenericRPCMessage { method: RPCMethod.GetLedgerTransactions; params: GetLedgerTransactionsFilters & { account_id: string; }; } export interface GetUserTagRequest extends GenericRPCMessage { method: RPCMethod.GetUserTag; params: {}; } export interface GetSessionKeysRequest extends GenericRPCMessage { method: RPCMethod.GetSessionKeys; params: {}; } export interface RevokeSessionKeyRequest extends GenericRPCMessage { method: RPCMethod.RevokeSessionKey; params: { session_key: Address; }; } export interface CreateAppSessionRequest extends GenericRPCMessage { method: RPCMethod.CreateAppSession; params: { definition: RPCAppDefinition; allocations: RPCAppSessionAllocation[]; session_data?: string; }; } export interface SubmitAppStateRequest extends GenericRPCMessage { method: RPCMethod.SubmitAppState; params: SubmitAppStateRequestParamsV02 | SubmitAppStateRequestParamsV04; } export interface CloseAppSessionRequest extends GenericRPCMessage { method: RPCMethod.CloseAppSession; params: { app_session_id: Hex; allocations: RPCAppSessionAllocation[]; session_data?: string; }; } export interface GetAppDefinitionRequest extends GenericRPCMessage { method: RPCMethod.GetAppDefinition; params: { app_session_id: Hex; }; } export interface GetAppSessionsRequest extends GenericRPCMessage { method: RPCMethod.GetAppSessions; params: { participant?: Address; status?: RPCChannelStatus; }; } export interface CreateChannelRequest extends GenericRPCMessage { method: RPCMethod.CreateChannel; params: { chain_id: number; token: Address; }; } export interface ResizeChannelRequest extends GenericRPCMessage { method: RPCMethod.ResizeChannel; params: { channel_id: Hex; resize_amount?: bigint; allocate_amount?: bigint; funds_destination: Address; }; } export interface CloseChannelRequest extends GenericRPCMessage { method: RPCMethod.CloseChannel; params: { channel_id: Hex; funds_destination: Address; }; } export interface GetChannelsRequest extends GenericRPCMessage { method: RPCMethod.GetChannels; params: { participant?: Address; status?: RPCChannelStatus; }; } export interface GetRPCHistoryRequest extends GenericRPCMessage { method: RPCMethod.GetRPCHistory; params: {}; } export interface GetAssetsRequest extends GenericRPCMessage { method: RPCMethod.GetAssets; params: { chain_id?: number; }; } export interface AuthRequest extends GenericRPCMessage { method: RPCMethod.AuthRequest; params: { address: Address; session_key: Address; application: string; allowances: RPCAllowance[]; expires_at: bigint; scope: string; }; } export interface MessageRequest extends GenericRPCMessage { method: RPCMethod.Message; params: any; } export interface PingRequest extends GenericRPCMessage { method: RPCMethod.Ping; params: {}; } export interface PongRequest extends GenericRPCMessage { method: RPCMethod.Pong; params: {}; } export interface TransferRequest extends GenericRPCMessage { method: RPCMethod.Transfer; params: { destination?: Address; destination_user_tag?: string; allocations: RPCTransferAllocation[]; }; } export interface CleanupSessionKeyCacheRequest extends GenericRPCMessage { method: RPCMethod.CleanupSessionKeyCache; params: {}; } export type AuthChallengeRequestParams = AuthChallengeRequest['params']; export type AuthVerifyRequestParams = AuthVerifyRequest['params']; export type GetConfigRequestParams = GetConfigRequest['params']; export type GetLedgerBalancesRequestParams = GetLedgerBalancesRequest['params']; export type GetLedgerEntriesRequestParams = GetLedgerEntriesRequest['params']; export type GetLedgerTransactionsRequestParams = GetLedgerTransactionsRequest['params']; export type GetUserTagRequestParams = GetUserTagRequest['params']; export type GetSessionKeysRequestParams = GetSessionKeysRequest['params']; export type CreateAppSessionRequestParams = CreateAppSessionRequest['params']; export type SubmitAppStateRequestParamsV02 = { app_session_id: Hex; allocations: RPCAppSessionAllocation[]; session_data?: string; }; export type SubmitAppStateRequestParamsV04 = { app_session_id: Hex; intent: RPCAppStateIntent; version: number; allocations: RPCAppSessionAllocation[]; session_data?: string; }; export type SubmitAppStateParamsPerProtocol = { [RPCProtocolVersion.NitroRPC_0_2]: SubmitAppStateRequestParamsV02; [RPCProtocolVersion.NitroRPC_0_4]: SubmitAppStateRequestParamsV04; }; export type SubmitAppStateRequestParams = SubmitAppStateRequestParamsV02 | SubmitAppStateRequestParamsV04; export type CloseAppSessionRequestParams = CloseAppSessionRequest['params']; export type GetAppDefinitionRequestParams = GetAppDefinitionRequest['params']; export type GetAppSessionsRequestParams = GetAppSessionsRequest['params']; export type CreateChannelRequestParams = CreateChannelRequest['params']; export type ResizeChannelRequestParams = ResizeChannelRequest['params']; export type CloseChannelRequestParams = CloseChannelRequest['params']; export type GetChannelsRequestParams = GetChannelsRequest['params']; export type GetRPCHistoryParams = GetRPCHistoryRequest['params']; export type GetAssetsRequestParams = GetAssetsRequest['params']; export type AuthRequestParams = AuthRequest['params']; export type MessageRequestParams = MessageRequest['params']; export type PingRequestParams = PingRequest['params']; export type PongRequestParams = PongRequest['params']; export type TransferRequestParams = TransferRequest['params']; export type CleanupSessionKeyCacheRequestParams = CleanupSessionKeyCacheRequest['params']; export type RPCRequest = AuthChallengeRequest | AuthVerifyRequest | AuthRequest | GetConfigRequest | GetLedgerBalancesRequest | GetLedgerEntriesRequest | GetLedgerTransactionsRequest | GetUserTagRequest | GetSessionKeysRequest | RevokeSessionKeyRequest | CreateAppSessionRequest | SubmitAppStateRequest | CloseAppSessionRequest | GetAppDefinitionRequest | GetAppSessionsRequest | CreateChannelRequest | ResizeChannelRequest | CloseChannelRequest | GetChannelsRequest | GetRPCHistoryRequest | GetAssetsRequest | PingRequest | PongRequest | MessageRequest | TransferRequest | CleanupSessionKeyCacheRequest; export type RPCRequestParamsByMethod = { [RPCMethod.AuthChallenge]: AuthChallengeRequestParams; [RPCMethod.AuthVerify]: AuthVerifyRequestParams; [RPCMethod.AuthRequest]: AuthRequestParams; [RPCMethod.GetConfig]: GetConfigRequestParams; [RPCMethod.GetLedgerBalances]: GetLedgerBalancesRequestParams; [RPCMethod.GetLedgerEntries]: GetLedgerEntriesRequestParams; [RPCMethod.GetLedgerTransactions]: GetLedgerTransactionsRequestParams; [RPCMethod.GetUserTag]: GetUserTagRequestParams; [RPCMethod.GetSessionKeys]: GetSessionKeysRequestParams; [RPCMethod.CreateAppSession]: CreateAppSessionRequestParams; [RPCMethod.SubmitAppState]: SubmitAppStateRequestParams; [RPCMethod.CloseAppSession]: CloseAppSessionRequestParams; [RPCMethod.GetAppDefinition]: GetAppDefinitionRequestParams; [RPCMethod.GetAppSessions]: GetAppSessionsRequestParams; [RPCMethod.CreateChannel]: CreateChannelRequestParams; [RPCMethod.ResizeChannel]: ResizeChannelRequestParams; [RPCMethod.CloseChannel]: CloseChannelRequestParams; [RPCMethod.GetChannels]: GetChannelsRequestParams; [RPCMethod.GetRPCHistory]: GetRPCHistoryParams; [RPCMethod.GetAssets]: GetAssetsRequestParams; [RPCMethod.Ping]: PingRequestParams; [RPCMethod.Pong]: PongRequestParams; [RPCMethod.Message]: any; [RPCMethod.Transfer]: TransferRequestParams; [RPCMethod.CleanupSessionKeyCache]: CleanupSessionKeyCacheRequestParams; };