import { EngineService } from '../engine';
import { TelemetryService } from '../telemetry';
import { ActivityData, ActivityMetadata, ActivityType, HookActivity } from '../../types/activity';
import { HookRule } from '../../types/hook';
import { JobState, JobStatus } from '../../types/job';
import { ProviderTransaction } from '../../types/provider';
import { StreamCode, StreamStatus } from '../../types/stream';
import { Activity } from './activity';
/**
 * Supports `signal hook`, `time hook`, and `cycle hook` patterns
 */
declare class Hook extends Activity {
    config: HookActivity;
    constructor(config: ActivityType, data: ActivityData, metadata: ActivityMetadata, hook: ActivityData | null, engine: EngineService, context?: JobState);
    process(): Promise<string>;
    /**
     * does this activity use a time-hook or web-hook
     */
    doesHook(): boolean;
    doHook(telemetry: TelemetryService): Promise<void>;
    doPassThrough(telemetry: TelemetryService): Promise<void>;
    getHookRule(topic: string): Promise<HookRule | undefined>;
    registerHook(transaction?: ProviderTransaction): Promise<string | void>;
    processWebHookEvent(status?: StreamStatus, code?: StreamCode): Promise<JobStatus | void>;
    processTimeHookEvent(jobId: string): Promise<JobStatus | void>;
}
export { Hook };
