import { KeyStoreParams, KeyType } from '../../../../modules/key';
import { ILogger } from '../../../logger';
import { SubService } from '../../index';
import { SubscriptionCallback } from '../../../../types/quorum';
import { NatsClientType } from '../../../../types/nats';
import { ProviderClient, ProviderTransaction } from '../../../../types/provider';
declare class NatsSubService extends SubService<NatsClientType & ProviderClient> {
    private subscriptions;
    constructor(eventClient: NatsClientType, storeClient: NatsClientType);
    init(namespace: string, appId: string, engineId: string, logger: ILogger): Promise<void>;
    transact(): ProviderTransaction;
    mintKey(type: KeyType, params: KeyStoreParams): string;
    subscribe(keyType: KeyType.QUORUM, callback: SubscriptionCallback, appId: string, topic?: string): Promise<void>;
    unsubscribe(keyType: KeyType.QUORUM, appId: string, engineId?: string): Promise<void>;
    psubscribe(keyType: KeyType.QUORUM, callback: SubscriptionCallback, appId: string, topic?: string): Promise<void>;
    punsubscribe(keyType: KeyType.QUORUM, appId: string, topic?: string): Promise<void>;
    publish(keyType: KeyType.QUORUM, message: Record<string, any>, appId: string, topic?: string): Promise<boolean>;
}
export { NatsSubService };
