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 '../contracts/StreamRegistry';
import { StreamDefinition } from '../types';
import { GroupKeyQueue } from './GroupKeyQueue';
import { ERC1271ContractFacade } from '../contracts/ERC1271ContractFacade';
export interface PublishMetadata {
    timestamp?: string | number | Date;
    partitionKey?: string | number;
    msgChainId?: string;
    /**
     * Publish a message on behalf of a contract implementing the [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271)
     * standard. The streamr client wallet address must be an authorized signer for the contract.
     */
    erc1271Contract?: 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;
    private readonly erc1271ContractFacade;
    constructor(node: NetworkNodeFacade, streamRegistry: StreamRegistry, groupKeyManager: GroupKeyManager, streamIdBuilder: StreamIDBuilder, authentication: Authentication, erc1271ContractFacade: ERC1271ContractFacade);
    publish(streamDefinition: StreamDefinition, content: unknown, metadata?: PublishMetadata): Promise<StreamMessage>;
    getGroupKeyQueue(streamId: StreamID): Promise<GroupKeyQueue>;
    private createMessageFactory;
}
