import { Observable } from 'rxjs/Observable';
export interface EventAsset {
    assetId: string;
    height: number;
    mimeType: string;
    width: number;
    size?: number;
}
export interface MessageLike {
    timestamp: number;
}
export interface MessageLikes {
    [personId: string]: MessageLike;
}
export declare enum ChannelMessageType {
    image = "image",
    text = "text"
}
export interface ChannelMessage {
    type: ChannelMessageType;
    creatorId: string;
    timestamp: number;
    commentCount?: number;
    likeCount?: number;
    likes?: MessageLikes;
}
export interface ChannelImageMessage extends ChannelMessage {
    caption?: string;
    asset: EventAsset;
}
export interface ChannelTextMessage extends ChannelMessage {
    caption?: string;
}
export declare type ChannelMessageId = string;
export interface IChannel {
    observeMessages$(): Observable<{
        [key: string]: ChannelMessage;
    }>;
}
export declare class Channel implements IChannel {
    private eventDataSource;
    private channelId;
    constructor(eventDataSource: any, channelId: string);
    observeMessages$(): any;
}
