import type { Simplify, UnionToIntersection } from "../_deps/utils/index.js";
import { ClientCache } from "./cache.js";
import type { Experimental_CoreClient } from "./core.js";
import type { ClientWithExtensions, Experimental_WowClientTypes, WowClientRegistration } from "./types.js";
export declare abstract class Experimental_BaseClient {
    network: Experimental_WowClientTypes.Network;
    cache: ClientCache;
    base: Experimental_BaseClient;
    constructor({ network, base, cache, }: Experimental_WowClientTypes.WowClientOptions);
    abstract core: Experimental_CoreClient;
    $extend<const Registrations extends WowClientRegistration<this>[]>(...registrations: Registrations): ClientWithExtensions<Simplify<UnionToIntersection<{ [K in keyof Registrations]: Registrations[K] extends WowClientRegistration<this, infer Name extends string, infer Extension> ? { [K2 in Name]: Extension; } : never; }[number]>>, this>;
}
