UNPKG

@riverfl0w/dune-client

Version:

A TypeScript client for querying the Dune API, designed to simplify the integration of Dune's powerful analytics into your projects.

54 lines (50 loc) 1.73 kB
import { z } from 'zod'; import ResultMetadata from './ResultMetadata.js'; const ExecutionStatusResponse = z .object({ execution_id: z.string(), query_id: z.number(), is_execution_finished: z.boolean(), }) .and( z.discriminatedUnion('state', [ z.object({ state: z.literal('QUERY_STATE_PENDING'), queue_position: z.number().int().nonnegative().optional(), submitted_at: z.string().datetime(), }), z.object({ state: z.literal('QUERY_STATE_EXECUTING'), submitted_at: z.string().datetime(), execution_started_at: z.string().datetime(), }), z.object({ state: z.literal('QUERY_STATE_FAILED'), submitted_at: z.string().datetime(), expires_at: z.string().datetime(), execution_started_at: z.string().datetime(), execution_ended_at: z.string().datetime(), }), z.object({ state: z.literal('QUERY_STATE_COMPLETED'), submitted_at: z.string().datetime(), expires_at: z.string().datetime(), execution_started_at: z.string().datetime(), execution_ended_at: z.string().datetime(), result_metadata: ResultMetadata, }), z.object({ state: z.literal('QUERY_STATE_CANCELLED'), submitted_at: z.string().datetime(), expires_at: z.string().datetime(), cancelled_at: z.string().datetime(), }), z.object({ state: z.literal('QUERY_STATE_EXPIRED'), // TODO: Add more fields }), ]), ); export type ExecutionStatusResponse = z.infer<typeof ExecutionStatusResponse>; export type ExecutionStatus = ExecutionStatusResponse['state']; export default ExecutionStatusResponse;