import { ENV } from '../constants';
import { SignerType } from '../types';
import { ChannelFeedsOptions, ChannelInfoOptions, ChannelListOptions, ChannelOptions, ChannelSearchOptions, CreateChannelOptions, NotificationOptions, NotificationSettings } from './PushNotificationTypes';
import { Alias } from './alias';
import { Delegate } from './delegate';
import { Tags } from './tags';
import { PushNotificationBaseClass } from './pushNotificationBase';
export declare class Channel extends PushNotificationBaseClass {
    delegate: Delegate;
    alias: Alias;
    tags: Tags;
    constructor(signer?: SignerType, env?: ENV, account?: string);
    /**
     * @description - returns information about a channel
     * @param {string} [options.channel] - channel address in caip, defaults to eth caip address
     * @returns information about the channel if it exists
     */
    info: (channel?: string, options?: ChannelOptions) => Promise<any>;
    /**
     * @description - returns relevant information as per the query that was passed
     * @param {string} query - search query
     * @param {number} [options.page] -  page number. default is set to Constants.PAGINATION.INITIAL_PAGE
     * @param {number} [options.limit] - number of feeds per page. default is set to Constants.PAGINATION.LIMIT
     * @returns Array of results relevant to the serach query
     */
    search: (query: string, options?: ChannelSearchOptions) => Promise<any>;
    /**
     * @description - Get subscribers of a channell
     * @param {string} [options.channel] - channel in caip. defaults to account from signer with eth caip
     * @returns array of subscribers
     */
    subscribers: (options?: ChannelInfoOptions) => Promise<string[] | import("../types").Subscribers>;
    /**
     *
     * @param {string[]} recipients - Array of recipients. `['0x1'] -> TARGET`, `['0x1, 0x2'] -> SUBSET`, `['*'] -> BROADCAST`
     * @param {object} options - Notification options
     * @returns
     */
    send: (recipients: string[], options: NotificationOptions) => Promise<import("axios").AxiosResponse<any, any>>;
    create: (options: CreateChannelOptions) => Promise<{
        transactionHash: any;
    }>;
    update: (options: CreateChannelOptions) => Promise<{
        transactionHash: any;
    }>;
    /**
     * @description verifies a channel
     * @param {string} channelToBeVerified - address of the channel to be verified
     * @returns the transaction hash if the transaction is successful
     */
    verify: (channelToBeVerified: string) => Promise<{
        transactionHash: any;
    }>;
    setting: (configuration: NotificationSettings) => Promise<{
        transactionHash: any;
    }>;
    notifications: (account: string, options?: ChannelFeedsOptions) => Promise<any>;
    list: (options?: ChannelListOptions) => Promise<any>;
}
