import { Addon } from './shared.js';
interface HerokuClient {
    get(path: string, options?: any): Promise<any>;
    post(path: string, options?: any): Promise<any>;
    request(url: string, options?: any): Promise<any>;
}
interface Context {
    [key: string]: any;
    app: string;
}
interface WaitStatus {
    'deprovisioned?'?: boolean;
    'error?'?: boolean;
    'healthy?': boolean;
    message: string;
    'missing?'?: boolean;
    'waiting?': boolean;
}
interface RequestParams {
    [key: string]: any;
    accept?: string;
    body?: any;
    host?: string;
    method?: string;
    path?: string;
}
declare class HerokuKafkaClusters {
    app: string;
    context: Context;
    env: any;
    heroku: HerokuClient;
    constructor(heroku: HerokuClient, env: any, context: Context);
    request(params: RequestParams): Promise<any>;
    waitStatus(addon: Addon | null): Promise<WaitStatus | null>;
}
declare function withCluster(heroku: HerokuClient, app: string, cluster: string | undefined, fn: (addon: Addon) => Promise<any>): Promise<any>;
declare function topicConfig(heroku: HerokuClient, addonId: string, topic: string): Promise<any>;
declare function fetchProvisionedInfo(heroku: HerokuClient, addon: Addon): Promise<any>;
declare function request(heroku: HerokuClient, params: RequestParams): Promise<any>;
export { fetchProvisionedInfo, HerokuKafkaClusters, request, topicConfig, withCluster, };
