import { IPFSContentMaybe, IpfsContentSource } from '../ipfs/ipfs';
import { LinkDbEntity } from '../CozoDb/types/entities';
import { LinkDto } from '../CozoDb/types/dto';

/* eslint-disable import/no-unused-modules */
export type QueueItemStatus =
  | 'pending'
  | 'executing'
  | 'timeout'
  | 'completed'
  | 'cancelled'
  | 'error'
  | 'not_found';

export type QueueSourceSettings = {
  timeout: number;
  maxConcurrentExecutions: number;
};

export type QueueSource = IpfsContentSource;

export type QueueSettings = Record<QueueSource, QueueSourceSettings>;

export interface IQueueStrategy {
  settings: QueueSettings;
  order: QueueSource[];
  getNextSource(source: QueueSource): QueueSource | undefined;
}

export type QueueStats = {
  status: QueueItemStatus;
  count: number;
};

export enum QueuePriority {
  ZERO = 0,
  LOW = 0.1,
  MEDIUM = 0.5,
  HIGH = 0.9,
  URGENT = 1,
}
export type QueueItemOptions = {
  parent?: string;
  priority?: QueuePriority | number;
  viewPortPriority?: number;
  initialSource?: QueueSource;
  postProcessing?: boolean;
};

export type QueueItemCallback = (
  cid: string,
  status: QueueItemStatus,
  source: QueueSource,
  result?: IPFSContentMaybe
) => void;

export type QueueItem = {
  cid: string;
  source: QueueSource;
  status: QueueItemStatus;
  callbacks: QueueItemCallback[];
  controller?: AbortController;
  executionTime?: number;
} & Omit<QueueItemOptions, 'initialSource'>;

export type QueueItemResult = {
  item: QueueItem;
  status: QueueItemStatus;
  source: QueueSource;
  result?: IPFSContentMaybe;
};

export type QueueItemAsyncResult = Omit<QueueItemResult, 'item'>;

export type QueueItemPostProcessor = (
  content: IPFSContentMaybe
) => Promise<IPFSContentMaybe>;

export interface IDeferredDbSaver {
  // postProcess: (content: IPFSContentMaybe) => Promise<IPFSContentMaybe>;
  enqueueIpfsContent: (content: IPFSContentMaybe) => void;
  enqueueLinks: (links: LinkDto[]) => void;
}

export type FetchParticleAsync = (
  cid: string,
  options?: QueueItemOptions
) => Promise<QueueItemAsyncResult>;

Synonyms

soft3.js/src/types.ts
pussy-ts/src/soft.js/types.ts
cyb/src/services/soft.js/types.ts
cyber-ts/packages/cyber-ts/src/types.ts
cyb/src/pages/Keys/types.ts
cyb/src/services/scripting/types.ts
pussy-ts/src/utils/logging/types.ts
cyb/src/containers/mint/types.ts
cyb/src/services/ipfs/types.ts
cyb/src/utils/logging/types.ts
pussy-ts/src/components/containerGradient/types.ts
cyb/src/containers/Search/types.ts
pussy-ts/src/containers/Search/types.ts
cyb/src/features/cybernet/types.ts
cyb/src/services/QueueManager/types.ts
cyb/src/components/containerGradient/types.ts
bostrom.network/src/integrations/supabase/types.ts
pussy-ts/src/features/sense/ui/types.ts
cyb/src/features/ibc-history/tx/types.ts
cyb/src/services/CozoDb/types/types.ts
cyb/src/pages/Keys/ActionBar/types.ts
pussy-ts/src/services/ibc-history/tx/types.ts
pussy-landing/src/components/xp/containerGradient/types.ts
cyb/src/features/sense/ui/types.ts
pussy-ts/src/services/CozoDb/types/types.ts
soft3.js/src/codec/cyber/resources/v1beta1/types.ts
cyb/src/services/backend/workers/db/types.ts
soft3.js/src/codec/cyber/graph/v1beta1/types.ts
pussy-ts/src/services/backend/services/lcd/types.ts
pussy-ts/src/services/backend/services/sync/types.ts
pussy-ts/src/services/backend/services/indexer/types.ts
cyb/src/services/backend/services/indexer/types.ts
pussy-ts/src/services/backend/workers/db/types.ts
soft3.js/src/codec/cyber/bandwidth/v1beta1/types.ts
soft3.js/src/codec/cyber/grid/v1beta1/types.ts
cyber-ts/packages/cyber-ts/src/tendermint/p2p/types.ts
cyber-ts/packages/cyber-ts/src/tendermint/version/types.ts
cyb/src/services/backend/services/sync/types.ts
cyb/src/services/backend/channels/BackendQueueChannel/types.ts
soft3.js/src/codec/cyber/rank/v1beta1/types.ts
cyber-ts/packages/cyber-ts/src/tendermint/abci/types.ts
cyber-ts/packages/cyber-ts/src/tendermint/types/types.ts
cyber-ts/packages/cyber-ts/src/tendermint/libs/bits/types.ts
cyber-ts/packages/cyber-ts/src/cyber/dmn/v1beta1/types.ts
cyber-ts/packages/cyber-ts/src/cyber/bandwidth/v1beta1/types.ts
pussy-ts/src/services/backend/services/sync/services/types.ts
cyber-ts/packages/cyber-ts/src/cosmwasm/wasm/v1/types.ts
cyber-ts/packages/cyber-ts/src/cyber/rank/v1beta1/types.ts
cyber-ts/packages/cyber-ts/src/cyber/resources/v1beta1/types.ts
cyber-ts/packages/cyber-ts/src/cyber/graph/v1beta1/types.ts
cyb/src/services/backend/services/sync/services/types.ts
cyber-ts/packages/cyber-ts/src/cyber/grid/v1beta1/types.ts
pussy-ts/src/services/backend/services/sync/services/ParticlesResolverQueue/types.ts
cyb/src/services/backend/services/sync/services/ParticlesResolverQueue/types.ts

Neighbours