@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.
132 lines (131 loc) • 3.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.miscParamsParsers = void 0;
const zod_1 = require("zod");
const types_1 = require("../types");
const common_1 = require("./common");
const NetworkInfoObjectSchema = zod_1.z
.object({
chain_id: zod_1.z.number(),
name: zod_1.z.string(),
custody_address: common_1.addressSchema,
adjudicator_address: common_1.addressSchema,
})
.transform((raw) => ({
chainId: raw.chain_id,
name: raw.name,
custodyAddress: raw.custody_address,
adjudicatorAddress: raw.adjudicator_address,
}));
const GetConfigParamsSchema = zod_1.z
.object({ broker_address: common_1.addressSchema, networks: zod_1.z.array(NetworkInfoObjectSchema) })
.strict()
.transform((raw) => ({
brokerAddress: raw.broker_address,
networks: raw.networks,
}));
const ErrorParamsSchema = zod_1.z
.object({ error: zod_1.z.string() })
.transform((raw) => raw);
const RPCEntryObjectSchema = zod_1.z
.object({
id: zod_1.z.number(),
sender: common_1.addressSchema,
req_id: zod_1.z.number(),
method: zod_1.z.string(),
params: zod_1.z.string(),
timestamp: zod_1.z.number(),
req_sig: zod_1.z.array(common_1.hexSchema),
res_sig: zod_1.z.array(common_1.hexSchema),
response: zod_1.z.string(),
})
.transform((raw) => ({
id: raw.id,
sender: raw.sender,
reqId: raw.req_id,
method: raw.method,
params: raw.params,
timestamp: raw.timestamp,
reqSig: raw.req_sig,
resSig: raw.res_sig,
response: raw.response,
}));
const GetRPCHistoryParamsSchema = zod_1.z
.object({
rpc_entries: zod_1.z.array(RPCEntryObjectSchema),
})
.transform((raw) => ({
rpcEntries: raw.rpc_entries,
}));
const GetUserTagParamsSchema = zod_1.z
.object({
tag: zod_1.z.string(),
})
.strict()
.transform((raw) => raw);
const AllowanceObjectSchema = zod_1.z
.object({
asset: zod_1.z.string(),
amount: zod_1.z.string(),
})
.transform((raw) => ({
asset: raw.asset,
amount: raw.amount,
}));
const AllowanceUsageObjectSchema = zod_1.z
.object({
asset: zod_1.z.string(),
allowance: zod_1.z.string(),
used: zod_1.z.string(),
})
.transform((raw) => ({
asset: raw.asset,
allowance: raw.allowance,
used: raw.used,
}));
const SessionKeyObjectSchema = zod_1.z
.object({
id: zod_1.z.number(),
session_key: common_1.addressSchema,
application: zod_1.z.string(),
allowances: zod_1.z.array(AllowanceUsageObjectSchema),
scope: zod_1.z.string().optional(),
expires_at: zod_1.z.string(),
created_at: zod_1.z.string(),
})
.transform((raw) => ({
id: raw.id,
sessionKey: raw.session_key,
application: raw.application,
allowances: raw.allowances,
scope: raw.scope,
expiresAt: new Date(raw.expires_at),
createdAt: new Date(raw.created_at),
}));
const GetSessionKeysParamsSchema = zod_1.z
.object({
session_keys: zod_1.z.array(SessionKeyObjectSchema),
})
.transform((raw) => ({
sessionKeys: raw.session_keys,
}));
const RevokeSessionKeyParamsSchema = zod_1.z
.object({
session_key: common_1.addressSchema,
})
.strict()
.transform((raw) => ({
sessionKey: raw.session_key,
}));
const parseMessageParams = (params) => {
return params;
};
exports.miscParamsParsers = {
[types_1.RPCMethod.GetConfig]: (params) => GetConfigParamsSchema.parse(params),
[types_1.RPCMethod.Error]: (params) => ErrorParamsSchema.parse(params),
[types_1.RPCMethod.GetRPCHistory]: (params) => GetRPCHistoryParamsSchema.parse(params),
[types_1.RPCMethod.GetUserTag]: (params) => GetUserTagParamsSchema.parse(params),
[types_1.RPCMethod.GetSessionKeys]: (params) => GetSessionKeysParamsSchema.parse(params),
[types_1.RPCMethod.RevokeSessionKey]: (params) => RevokeSessionKeyParamsSchema.parse(params),
[types_1.RPCMethod.Message]: parseMessageParams,
};