@lifi/composer-sdk
Version:
Public Composer SDK for building and submitting flows
74 lines • 2.15 kB
JavaScript
import z from "zod";
const balanceEntrySchema = z.object({
token: z.string(),
owner: z.string(),
amount: z.string()
});
const simulateOkSchema = z.object({
status: z.literal("ok"),
block: z.number(),
timestamp: z.number(),
balancesBefore: z.array(balanceEntrySchema),
balancesAfter: z.array(balanceEntrySchema),
deltas: z.array(balanceEntrySchema),
gasUsed: z.string()
});
const simulateRevertDecodeResultSchema = z.object({
errorCandidates: z.array(
z.object({
decodedErrorSignature: z.string(),
decodedParams: z.array(z.string())
})
).optional(),
error: z.string().optional()
});
const simulateRevertSchema = z.object({
status: z.literal("revert"),
block: z.number(),
timestamp: z.number(),
revertReason: z.string().optional(),
code: z.number().optional(),
rawErrorBytes: z.string().optional(),
decodeResult: simulateRevertDecodeResultSchema.optional()
});
const simulateSetupErrorSchema = z.object({
status: z.literal("error"),
message: z.string()
});
const simulateResultSchema = z.discriminatedUnion("status", [
simulateOkSchema,
simulateRevertSchema,
simulateSetupErrorSchema
]);
const parseSimulateResult = (body) => {
const parsed = simulateResultSchema.safeParse(body);
if (!parsed.success) return null;
const result = parsed.data;
return result;
};
const compilePartialEnvelopeSchema = z.object({
data: z.record(z.string(), z.unknown()),
error: z.object({ kind: z.string(), message: z.string() })
});
const parseCompilePartialEnvelope = (body) => {
const parsed = compilePartialEnvelopeSchema.safeParse(body);
return parsed.success ? parsed.data : null;
};
const serverErrorBodySchema = z.object({
error: z.object({
kind: z.string().optional(),
message: z.string().optional(),
path: z.string().optional(),
details: z.custom().optional()
}).optional()
});
const parseServerErrorBody = (json) => {
const parsed = serverErrorBodySchema.safeParse(json);
return parsed.success ? parsed.data : null;
};
export {
parseCompilePartialEnvelope,
parseServerErrorBody,
parseSimulateResult
};
//# sourceMappingURL=responseSchemas.js.map