/** @packageDocumentation
 * @module Tiles
 */
import { IModelConnection } from "../IModelConnection";
import { IModelTile, IModelTileRequestChannels, TileRequestChannel, TileRequestChannelStatistics } from "./internal";
/** A set of named [[TileRequestChannel]]s via which content for [[Tile]]s can be requested.
 * @see [[TileAdmin.channels]] for the channels configured for use with the iTwin.js display system.
 * @see [[TileRequestChannels.getForHttp]] for the most typical way of obtaining or registering a channel.
 * @public
 * @extensions
 */
export declare class TileRequestChannels {
    /** @internal */
    readonly iModelChannels: IModelTileRequestChannels;
    /** The channel over which [[TileAdmin.requestElementGraphics]] executes. If you implement a [[TiledGraphicsProvider]] or [[TileTree]] that obtains its
     * content from `requestElementGraphics`, use this channel.
     */
    readonly elementGraphicsRpc: TileRequestChannel;
    /** The maximum number of active requests for a channel that uses HTTP to request content. */
    readonly httpConcurrency = 6;
    private _rpcConcurrency;
    private readonly _channels;
    /** `rpcConcurrency` is defined if [[IpcApp.isValid]]; otherwise RPC requests are made over HTTP and use the same limits.
     * @internal
     */
    constructor(rpcConcurrency: number | undefined, cacheMetadata: boolean);
    /** The number of registered channels. */
    get size(): number;
    /** Look up a registered channel by its name. */
    get(name: string): TileRequestChannel | undefined;
    /** Return whether the specified channel has been registered. Primarily for debugging. */
    has(channel: TileRequestChannel): boolean;
    /** Add a new channel.
     * @throws Error if a channel by the same name has already been registered.
     */
    add(channel: TileRequestChannel): void;
    /** Extract the host name from a URL for use as the name of the corresponding [[TileRequestChannel]].
     * @throws TypeError if `url` is a string and does not represent a valid URL.
     * @see [[getForHttp]] to obtain or register a channel for the host name.
     */
    static getNameFromUrl(url: URL | string): string;
    /** Obtain a channel that requests content over HTTP using HTTP 1.1 limits on simultaneous connections.
     * If a channel with the specified name does not already exist, it will be created and registered.
     * @see [[getNameFromUrl]] to obtain a channel name corresponding to a hostname.
     */
    getForHttp(name: string): TileRequestChannel;
    /** Iterator over all of the channels. */
    [Symbol.iterator](): Iterator<TileRequestChannel>;
    /** The maximum number of active requests for a channel that uses an RpcInterface to satisfy its requests.
     * For web-based applications, this is the same as [[httpConcurrency]], but for [[IpcApp]]s it is determined by the number of workers threads allocated by the backend.
     */
    get rpcConcurrency(): number;
    /** @internal */
    getIModelTileChannel(tile: IModelTile): TileRequestChannel;
    /** Chiefly for debugging.
     * @internal
     */
    setRpcConcurrency(concurrency: number): void;
    /** Statistics intended primarily for debugging. */
    get statistics(): TileRequestChannelStatistics;
    /** Reset all [[statistics]] to zero. */
    resetStatistics(): void;
    /** Invoked by [[TileAdmin.processQueue]] when it is about to start enqueuing new requests.
     * @internal
     */
    swapPending(): void;
    /** Invoked by [[TileAdmin.processQueue]] when it is about to start enqueuing new requests.
     * @internal
     */
    process(): void;
    /** Invoked by [[TileAdmin.onIModelClosed]].
     * @internal
     */
    onIModelClosed(iModel: IModelConnection): void;
    /** Invoked by [[TileAdmin.onShutDown]].
     * @internal
     */
    onShutDown(): void;
}
//# sourceMappingURL=TileRequestChannels.d.ts.map