import { Type, Static } from '@sinclair/typebox'; import { RelayerTaskStatus } from './relayer'; import { ErrorJsonSchema } from './error'; import { TelemetryType } from './telemetry'; /// Shared API export const AdminSchema = Type.Object({ adminToken: Type.String(), additions: Type.Optional(Type.Any()), }); export type AdminRequest = Static; export const ClearCacheRequestSchema = AdminSchema; export type ClearCacheRequest = Static; /// Relayer API ------------------------------------------------------------------------------ export const RelayerApiFeeSchema = Type.Object({ chain: Type.Integer(), amount: Type.String(), token: Type.String(), }); export type RelayerApiFee = Static; export const RelayerApiPostTaskRequestParamsSchema = Type.Object({ to: Type.String(), data: Type.String(), fee: RelayerApiFeeSchema, apiKey: Type.String(), funcSig: Type.String(), }); export type RelayerApiPostTaskRequestParams = Static; export const RelayerApiPostTaskResponseSchema = Type.Object({ message: Type.String(), taskId: Type.String(), }); export type RelayerApiPostTaskResponse = Static; export const RelayerApiErrorResponseSchema = Type.Object({ message: Type.String(), error: Type.Optional(ErrorJsonSchema), }); export type RelayerApiErrorResponse = Static; export const RelayerApiStatusResponseSchema = Type.Object({ chain: Type.String(), taskId: Type.String(), status: Type.Enum(RelayerTaskStatus), error: Type.String(), }); export type RelayerApiStatusResponse = Static; export const TelemetryPostRequestSchema = Type.Object({ from: Type.String(), status: Type.Number(), type: Type.Enum(TelemetryType), message: Type.String(), data: Type.Any(), timestamp: Type.Number(), signed: Type.String(), }); export type TelemetryPostRequest = Static;