@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.
236 lines (235 loc) • 9.06 kB
TypeScript
import { Address, Hex } from 'viem';
import { RPCMethod, GenericRPCMessage, RPCChannelStatus, RPCChannelUpdate, RPCNetworkInfo, RPCBalance, RPCLedgerEntry, RPCAppSession, RPCHistoryEntry, RPCAsset, RPCTransaction, RPCChannelUpdateWithWallet, RPCChannelOperation, RPCChannel, RPCSessionKey } from '.';
export interface AuthChallengeResponse extends GenericRPCMessage {
method: RPCMethod.AuthChallenge;
params: {
challengeMessage: string;
};
}
export interface ErrorResponse extends GenericRPCMessage {
method: RPCMethod.Error;
params: {
error: string;
};
}
export interface GetConfigResponse extends GenericRPCMessage {
method: RPCMethod.GetConfig;
params: {
brokerAddress: Address;
networks: RPCNetworkInfo[];
};
}
export interface GetLedgerBalancesResponse extends GenericRPCMessage {
method: RPCMethod.GetLedgerBalances;
params: {
ledgerBalances: RPCBalance[];
};
}
export interface GetLedgerEntriesResponse extends GenericRPCMessage {
method: RPCMethod.GetLedgerEntries;
params: {
ledgerEntries: RPCLedgerEntry[];
};
}
export interface GetLedgerTransactionsResponse extends GenericRPCMessage {
method: RPCMethod.GetLedgerTransactions;
params: {
ledgerTransactions: RPCTransaction[];
};
}
export interface GetUserTagResponse extends GenericRPCMessage {
method: RPCMethod.GetUserTag;
params: {
tag: string;
};
}
export interface GetSessionKeysResponse extends GenericRPCMessage {
method: RPCMethod.GetSessionKeys;
params: {
sessionKeys: RPCSessionKey[];
};
}
export interface RevokeSessionKeyResponse extends GenericRPCMessage {
method: RPCMethod.RevokeSessionKey;
params: {
sessionKey: Address;
};
}
export interface CreateAppSessionResponse extends GenericRPCMessage {
method: RPCMethod.CreateAppSession;
params: {
appSessionId: Hex;
version: number;
status: RPCChannelStatus;
};
}
export interface SubmitAppStateResponse extends GenericRPCMessage {
method: RPCMethod.SubmitAppState;
params: {
appSessionId: Hex;
version: number;
status: RPCChannelStatus;
};
}
export interface CloseAppSessionResponse extends GenericRPCMessage {
method: RPCMethod.CloseAppSession;
params: {
appSessionId: Hex;
version: number;
status: RPCChannelStatus;
};
}
export interface GetAppDefinitionResponse extends GenericRPCMessage {
method: RPCMethod.GetAppDefinition;
params: {
protocol: string;
participants: Address[];
weights: number[];
quorum: number;
challenge: number;
nonce: number;
};
}
export interface GetAppSessionsResponse extends GenericRPCMessage {
method: RPCMethod.GetAppSessions;
params: {
appSessions: RPCAppSession[];
};
}
export interface CreateChannelResponse extends GenericRPCMessage {
method: RPCMethod.CreateChannel;
params: RPCChannelOperation & {
channel: RPCChannel;
};
}
export interface ResizeChannelResponse extends GenericRPCMessage {
method: RPCMethod.ResizeChannel;
params: RPCChannelOperation;
}
export interface CloseChannelResponse extends GenericRPCMessage {
method: RPCMethod.CloseChannel;
params: RPCChannelOperation;
}
export interface GetChannelsResponse extends GenericRPCMessage {
method: RPCMethod.GetChannels;
params: {
channels: RPCChannelUpdateWithWallet[];
};
}
export interface GetRPCHistoryResponse extends GenericRPCMessage {
method: RPCMethod.GetRPCHistory;
params: {
rpcEntries: RPCHistoryEntry[];
};
}
export interface GetAssetsResponse extends GenericRPCMessage {
method: RPCMethod.GetAssets;
params: {
assets: RPCAsset[];
};
}
export interface AssetsResponse extends GenericRPCMessage {
method: RPCMethod.Assets;
params: {
assets: RPCAsset[];
};
}
export interface AuthVerifyResponse extends GenericRPCMessage {
method: RPCMethod.AuthVerify;
params: {
address: Address;
sessionKey: Address;
success: boolean;
jwtToken?: string;
};
}
export interface AuthRequestResponse extends GenericRPCMessage {
method: RPCMethod.AuthRequest;
params: {
challengeMessage: string;
};
}
export interface MessageResponse extends GenericRPCMessage {
method: RPCMethod.Message;
params: {};
}
export interface BalanceUpdateResponse extends GenericRPCMessage {
method: RPCMethod.BalanceUpdate;
params: {
balanceUpdates: RPCBalance[];
};
}
export interface ChannelsUpdateResponse extends GenericRPCMessage {
method: RPCMethod.ChannelsUpdate;
params: {
channels: RPCChannelUpdate[];
};
}
export interface ChannelUpdateResponse extends GenericRPCMessage {
method: RPCMethod.ChannelUpdate;
params: RPCChannelUpdate;
}
export interface PingResponse extends GenericRPCMessage {
method: RPCMethod.Ping;
params: {};
}
export interface PongResponse extends GenericRPCMessage {
method: RPCMethod.Pong;
params: {};
}
export interface TransferResponse extends GenericRPCMessage {
method: RPCMethod.Transfer;
params: {
transactions: RPCTransaction[];
};
}
export interface CleanupSessionKeyCacheResponse extends GenericRPCMessage {
method: RPCMethod.CleanupSessionKeyCache;
params: {};
}
export interface TransferNotificationResponse extends GenericRPCMessage {
method: RPCMethod.TransferNotification;
params: {
transactions: RPCTransaction[];
};
}
export type AuthChallengeResponseParams = AuthChallengeResponse['params'];
export type AuthVerifyResponseParams = AuthVerifyResponse['params'];
export type ErrorResponseParams = ErrorResponse['params'];
export type GetConfigResponseParams = GetConfigResponse['params'];
export type GetLedgerBalancesResponseParams = GetLedgerBalancesResponse['params'];
export type GetLedgerEntriesResponseParams = GetLedgerEntriesResponse['params'];
export type GetLedgerTransactionsResponseParams = GetLedgerTransactionsResponse['params'];
export type GetUserTagResponseParams = GetUserTagResponse['params'];
export type GetSessionKeysResponseParams = GetSessionKeysResponse['params'];
export type RevokeSessionKeyResponseParams = RevokeSessionKeyResponse['params'];
export type CreateAppSessionResponseParams = CreateAppSessionResponse['params'];
export type SubmitAppStateResponseParams = SubmitAppStateResponse['params'];
export type CloseAppSessionResponseParams = CloseAppSessionResponse['params'];
export type GetAppDefinitionResponseParams = GetAppDefinitionResponse['params'];
export type GetAppSessionsResponseParams = GetAppSessionsResponse['params'];
export type CreateChannelResponseParams = CreateChannelResponse['params'];
export type ResizeChannelResponseParams = ResizeChannelResponse['params'];
export type CloseChannelResponseParams = CloseChannelResponse['params'];
export type GetChannelsResponseParams = GetChannelsResponse['params'];
export type GetRPCHistoryResponseParams = GetRPCHistoryResponse['params'];
export type GetAssetsResponseParams = GetAssetsResponse['params'];
export type AssetsResponseParams = AssetsResponse['params'];
export type AuthRequestResponseParams = AuthRequestResponse['params'];
export type MessageResponseParams = MessageResponse['params'];
export type BalanceUpdateResponseParams = BalanceUpdateResponse['params'];
export type ChannelsUpdateResponseParams = ChannelsUpdateResponse['params'];
export type ChannelUpdateResponseParams = ChannelUpdateResponse['params'];
export type PingResponseParams = PingResponse['params'];
export type PongResponseParams = PongResponse['params'];
export type TransferResponseParams = TransferResponse['params'];
export type CleanupSessionKeyCacheResponseParams = CleanupSessionKeyCacheResponse['params'];
export type TransferNotificationResponseParams = TransferNotificationResponse['params'];
export type RPCResponse = AuthChallengeResponse | AuthVerifyResponse | AuthRequestResponse | ErrorResponse | GetConfigResponse | GetLedgerBalancesResponse | GetLedgerEntriesResponse | GetLedgerTransactionsResponse | GetUserTagResponse | GetSessionKeysResponse | RevokeSessionKeyResponse | CreateAppSessionResponse | SubmitAppStateResponse | CloseAppSessionResponse | GetAppDefinitionResponse | GetAppSessionsResponse | CreateChannelResponse | ResizeChannelResponse | CloseChannelResponse | GetChannelsResponse | GetRPCHistoryResponse | GetAssetsResponse | AssetsResponse | PingResponse | PongResponse | TransferResponse | CleanupSessionKeyCacheResponse | MessageResponse | BalanceUpdateResponse | ChannelsUpdateResponse | ChannelUpdateResponse | TransferNotificationResponse;
export type ExtractResponseByMethod<M extends RPCMethod> = Extract<RPCResponse, {
method: M;
}>;
export type RPCResponseParams = ExtractResponseByMethod<RPCMethod>['params'];
export type RPCResponseParamsByMethod = {
[M in RPCMethod]: ExtractResponseByMethod<M>['params'];
};