import { process } from 'gremlin'; import { NonEmpty } from './NonEmpty'; import { PrimitiveType } from './PropertiesDefinition'; declare type GraphTraversal = process.GraphTraversal; declare type Statics = process.Statics; export declare type GetStepFunc = (_: This) => Step; export declare type ExtractStepValue = S extends Step ? V : never; export declare type Order = keyof typeof process.order; export declare type OrderBy = [order: Order, by: GetStepFunc]; export default abstract class Step { readonly q: GraphTraversal; protected constructor(q: GraphTraversal); count(): NumberStep; dedup(): this; fold(): ListStep; coalesce, O>(...getSteps: NonEmpty<(_: this) => T>): T; union, O>(...getSteps: NonEmpty<(_: this) => T>): T; where, O>(getConditionStep: (_: this) => T): this; limit(n: number): this; order(...orderBys: [...OrderBy, ...OrderBy, ...OrderBy, ...OrderBy, ...OrderBy]): this; order(...orderBys: [...OrderBy, ...OrderBy, ...OrderBy, ...OrderBy]): this; order(...orderBys: [...OrderBy, ...OrderBy, ...OrderBy]): this; order(...orderBys: [...OrderBy, ...OrderBy]): this; order(...orderBys: OrderBy): this; abstract createContinuation(g: GraphTraversal): this; createNested(): this; abstract deserialize(v: unknown): Output; fetchOne(): Promise; fetchAll(): Promise; exec(): Promise; private getNestedSteps; } export declare class ListStep

, Output> extends Step { private readonly prevStep; protected constructor(q: GraphTraversal, prevStep: P); static fold

, Output>(q: GraphTraversal | Statics, prevStep: P): ListStep; unfold(): P; deserialize(v: unknown): Output[]; createContinuation(g: GraphTraversal): this; } export declare class NumberStep extends Step { protected constructor(q: GraphTraversal); static count(g: GraphTraversal | Statics): NumberStep; order(order: Order, by?: GetStepFunc): this; deserialize(v: unknown): number; createContinuation(g: GraphTraversal): this; } export {};