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.

122 lines (121 loc) 4.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.appParamsParsers = void 0; const zod_1 = require("zod"); const types_1 = require("../types"); const common_1 = require("./common"); const AppAllocationObject = zod_1.z.object({ participant: common_1.addressSchema, asset: zod_1.z.string(), amount: zod_1.z.string(), }); const AppSessionObject = zod_1.z.object({ app_session_id: common_1.hexSchema, application: zod_1.z.string(), status: common_1.statusEnum, participants: zod_1.z.array(common_1.addressSchema), protocol: common_1.protocolVersionEnum, challenge: zod_1.z.number(), weights: zod_1.z.array(zod_1.z.number()), quorum: zod_1.z.number(), version: zod_1.z.number(), nonce: zod_1.z.number(), created_at: common_1.dateSchema, updated_at: common_1.dateSchema, session_data: zod_1.z.string().optional(), }); const AppSessionObjectSchema = AppSessionObject .transform((raw) => ({ appSessionId: raw.app_session_id, application: raw.application, status: raw.status, participants: raw.participants, protocol: raw.protocol, challenge: raw.challenge, weights: raw.weights, quorum: raw.quorum, version: raw.version, nonce: raw.nonce, createdAt: raw.created_at, updatedAt: raw.updated_at, sessionData: raw.session_data, })); const CreateAppSessionParamsSchema = zod_1.z .object({ app_session_id: common_1.hexSchema, version: zod_1.z.number(), status: common_1.statusEnum }) .transform((raw) => ({ appSessionId: raw.app_session_id, version: raw.version, status: raw.status, })); const SubmitAppStateParamsSchema = zod_1.z .object({ app_session_id: common_1.hexSchema, version: zod_1.z.number(), status: common_1.statusEnum }) .transform((raw) => ({ appSessionId: raw.app_session_id, version: raw.version, status: raw.status, })); const CloseAppSessionParamsSchema = zod_1.z .object({ app_session_id: common_1.hexSchema, version: zod_1.z.number(), status: common_1.statusEnum }) .transform((raw) => ({ appSessionId: raw.app_session_id, version: raw.version, status: raw.status, })); const GetAppDefinitionParamsSchema = zod_1.z .object({ protocol: zod_1.z.string(), participants: zod_1.z.array(common_1.addressSchema), weights: zod_1.z.array(zod_1.z.number()), quorum: zod_1.z.number(), challenge: zod_1.z.number(), nonce: zod_1.z.number(), }) .transform((raw) => ({ protocol: raw.protocol, participants: raw.participants, weights: raw.weights, quorum: raw.quorum, challenge: raw.challenge, nonce: raw.nonce, })); const GetAppSessionsParamsSchema = zod_1.z .object({ app_sessions: zod_1.z.array(AppSessionObjectSchema), }) .transform((raw) => ({ appSessions: raw.app_sessions, })); const AppSessionUpdateObjectSchema = zod_1.z .object({ app_session: AppSessionObject, participant_allocations: zod_1.z.array(AppAllocationObject), }) .transform((raw) => ({ appSessionId: raw.app_session.app_session_id, application: raw.app_session.application, status: raw.app_session.status, participants: raw.app_session.participants, sessionData: raw.app_session.session_data, protocol: raw.app_session.protocol, challenge: raw.app_session.challenge, weights: raw.app_session.weights, quorum: raw.app_session.quorum, version: raw.app_session.version, nonce: raw.app_session.nonce, createdAt: raw.app_session.created_at, updatedAt: raw.app_session.updated_at, participantAllocations: raw.participant_allocations.map((a) => ({ participant: a.participant, asset: a.asset, amount: a.amount, })), })); const AppSessionUpdateParamsSchema = AppSessionUpdateObjectSchema; exports.appParamsParsers = { [types_1.RPCMethod.CreateAppSession]: (params) => CreateAppSessionParamsSchema.parse(params), [types_1.RPCMethod.SubmitAppState]: (params) => SubmitAppStateParamsSchema.parse(params), [types_1.RPCMethod.CloseAppSession]: (params) => CloseAppSessionParamsSchema.parse(params), [types_1.RPCMethod.GetAppDefinition]: (params) => GetAppDefinitionParamsSchema.parse(params), [types_1.RPCMethod.GetAppSessions]: (params) => GetAppSessionsParamsSchema.parse(params), [types_1.RPCMethod.AppSessionUpdate]: (params) => AppSessionUpdateParamsSchema.parse(params), };