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