import { EventSignature, MercuryEventEmitter, SkillEventContract } from '@sprucelabs/mercury-types'; import { Skill, Log, HealthCheckItem, SkillContext } from '@sprucelabs/spruce-skill-utils'; import { EventSource } from '../utilities/buildEmitTargetAndPayloadSchema'; export type SkillMercuryEventEmitter = MercuryEventEmitter; export interface EventHealthCheckItem extends HealthCheckItem { listeners: Omit[]; contracts: { fullyQualifiedEventName: string; }[]; events: EventFeatureEvent[]; } export interface EventFeatureListener { eventName: string; eventNamespace: string; version: string; callback(event: SpruceEvent): Promise; isGlobal?: boolean; } export interface EventFeatureEvent { eventName: string; eventNamespace: string; version: string; } type OptionalPayload | undefined> = EmitPayload extends Record ? EmitPayload : {}; export type SpruceEvent | undefined = undefined> = { skill: Skill; log: Log; connectToApiAsSkill: () => Contract extends SkillEventContract ? Promise> : unknown; } & SkillContext & OptionalPayload & { source: EventSource; }; export type SpruceEventResponse = Promise; export interface NamedEventSignature { fullyQualifiedEventName: string; eventName: string; eventNamespace?: string; version: string; signature: EventSignature; } declare module '@sprucelabs/spruce-skill-utils/build/types/skill.types' { interface HealthCheckResults { event?: EventHealthCheckItem; } } export {};