import { MatrixClient } from "matrix-js-sdk/src/matrix";
interface IOpts {
    labels?: string[];
    userText?: string;
    sendLogs?: boolean;
    progressCallback?: (s: string) => void;
    customApp?: string;
    customFields?: Record<string, string>;
}
/**
 * Exported only for testing.
 * @internal public for test
 */
export declare function collectBugReport(opts?: IOpts, gzipLogs?: boolean): Promise<FormData>;
/**
 * Collects labels to add to the report.
 */
export declare function collectLabels(client: MatrixClient | null, opts: IOpts, body: FormData): void;
/**
 * Collects some settings (lab flags and more) to add to the report.
 */
export declare function collectSettings(body: FormData): void;
/**
 * Send a bug report.
 *
 * @param {string} bugReportEndpoint HTTP url to send the report to
 *
 * @param {object} opts optional dictionary of options
 *
 * @param {string} opts.userText Any additional user input.
 *
 * @param {boolean} opts.sendLogs True to send logs
 *
 * @param {function(string)} opts.progressCallback Callback to call with progress updates
 *
 * @return {Promise<string>} URL returned by the rageshake server
 */
export default function sendBugReport(bugReportEndpoint?: string, opts?: IOpts): Promise<string>;
/**
 * Downloads the files from a bug report. This is the same as sendBugReport,
 * but instead causes the browser to download the files locally.
 *
 * @param {object} opts optional dictionary of options
 *
 * @param {string} opts.userText Any additional user input.
 *
 * @param {boolean} opts.sendLogs True to send logs
 *
 * @param {function(string)} opts.progressCallback Callback to call with progress updates
 *
 * @return {Promise} Resolved when the bug report is downloaded (or started).
 */
export declare function downloadBugReport(opts?: IOpts): Promise<void>;
export declare function submitFeedback(label: string | undefined, comment: string, canContact?: boolean, extraData?: Record<string, any>): Promise<void>;
export {};
