import { DomainEvent, EventHandler, IntegrationLink, LinkType, OutboxEvent, SubscriberDefinition } from '../types';
import { DomainEventPublisher, PublishDomainEventInput, PublishDomainEventOptions } from './domain-event.publisher';
import { EventSubscriberRegistry } from './event-subscriber.registry';
import { CreateIntegrationLinkDto, IntegrationLinkPersistenceClient, IntegrationLinkService } from './integration-link.service';
export interface IntegrationSubscriptionInput {
    eventName: string;
    consumerName: string;
    handler: EventHandler;
    priority?: number;
}
export interface IntegrationLinkQuery {
    module: string;
    entityType: string;
    entityId: string;
}
export declare class IntegrationDeveloperApiService {
    private readonly publisher;
    private readonly subscriberRegistry;
    private readonly linkService;
    constructor(publisher: DomainEventPublisher, subscriberRegistry: EventSubscriberRegistry, linkService: IntegrationLinkService);
    publishEvent(input: PublishDomainEventInput, options?: PublishDomainEventOptions): Promise<OutboxEvent>;
    publishEvents(events: Array<DomainEvent | PublishDomainEventInput>, options?: PublishDomainEventOptions): Promise<OutboxEvent[]>;
    subscribe(input: IntegrationSubscriptionInput): void;
    subscribeMany(definitions: SubscriberDefinition[]): void;
    createLink(dto: CreateIntegrationLinkDto, persistenceClient?: IntegrationLinkPersistenceClient): Promise<IntegrationLink>;
    findLinksBySource(query: IntegrationLinkQuery): Promise<IntegrationLink[]>;
    findLinksByTarget(query: IntegrationLinkQuery): Promise<IntegrationLink[]>;
    findLinksByType(linkType: LinkType): Promise<IntegrationLink[]>;
}
//# sourceMappingURL=integration-developer-api.service.d.ts.map