import { ProvidenType } from "../graphq-compose-typescript"; import { EnumTypeComposer, InputTypeComposer, Resolver, ObjectTypeComposer } from "graphql-compose"; import { ComposerInstanceCreator } from "./composer-creator"; import { GraphQLEnumType, GraphQLInterfaceType, GraphQLList, GraphQLObjectType, GraphQLScalarType, GraphQLUnionType } from "graphql"; declare class QueueItem { classType: ProvidenTypeSingular; composer: C; solved: boolean; constructor(classType: ProvidenTypeSingular, composer: C); } export declare class InputTypeQueueItem extends QueueItem { static create(classType: ProvidenTypeSingular, composer: InputTypeComposer): InputTypeQueueItem; } export declare class OutputTypeQueueItem extends QueueItem { static create(classType: ProvidenTypeSingular, composer: ObjectTypeComposer): OutputTypeQueueItem; } export interface QueueItemFactory { create(constructor: ProvidenTypeSingular, composer: C): QueueItem; } export declare type ProvidenTypeSingular = Exclude | EnumTypeComposer | GraphQLList | GraphQLScalarType | GraphQLEnumType | GraphQLObjectType | GraphQLInterfaceType | GraphQLUnionType | Resolver>; export declare class BaseQueue { protected instanceCreator: ComposerInstanceCreator; protected queueItemFactory: QueueItemFactory; constructor(instanceCreator: ComposerInstanceCreator, queueItemFactory: QueueItemFactory); protected queue: Map>; add(type: ProvidenTypeSingular): C; has(type: ProvidenTypeSingular): boolean; markSolved(type: ProvidenTypeSingular): void; hasUnresolved(): boolean; iterateUnsolved(): IterableIterator>; } export declare class Queue { protected input: BaseQueue; protected output: BaseQueue; constructor(input: BaseQueue, output: BaseQueue); markSolved(type: ProvidenTypeSingular): void; markInputSolved(type: ProvidenTypeSingular): void; iterateUnsolved(): IterableIterator>; protected hasUnresolved(): boolean; } export {};