import { StreamID, StreamMessage } from '@streamr/protocol';
import { Authentication } from '../Authentication';
import { NetworkNodeFacade } from '../NetworkNodeFacade';
import { StreamIDBuilder } from '../StreamIDBuilder';
import { GroupKeyManager } from '../encryption/GroupKeyManager';
import { StreamRegistry } from '../registry/StreamRegistry';
import { StreamDefinition } from '../types';
import { GroupKeyQueue } from './GroupKeyQueue';
export interface PublishMetadata {
    timestamp?: string | number | Date;
    partitionKey?: string | number;
    msgChainId?: string;
}
export declare class Publisher {
    private readonly messageFactories;
    private readonly groupKeyQueues;
    private readonly concurrencyLimit;
    private readonly node;
    private readonly streamRegistry;
    private readonly streamIdBuilder;
    private readonly authentication;
    constructor(node: NetworkNodeFacade, streamRegistry: StreamRegistry, groupKeyManager: GroupKeyManager, streamIdBuilder: StreamIDBuilder, authentication: Authentication);
    publish(streamDefinition: StreamDefinition, content: unknown, metadata?: PublishMetadata): Promise<StreamMessage>;
    getGroupKeyQueue(streamId: StreamID): Promise<GroupKeyQueue>;
    private createMessageFactory;
}
