import { AnyExtensionDataRef, AppNode, ExtensionDataRef, ExtensionDefinition, ExtensionDefinitionParameters } from '@backstage/frontend-plugin-api';
/** @public */
export declare class ExtensionQuery<UOutput extends AnyExtensionDataRef> {
    #private;
    constructor(node: AppNode);
    get node(): AppNode;
    get instance(): import("@backstage/frontend-plugin-api").AppNodeInstance;
    get<TId extends UOutput['id']>(ref: ExtensionDataRef<any, TId, any>): UOutput extends ExtensionDataRef<infer IData, TId, infer IConfig> ? IConfig['optional'] extends true ? IData | undefined : IData : never;
}
/** @public */
export declare class ExtensionTester<UOutput extends AnyExtensionDataRef> {
    #private;
    add<T extends ExtensionDefinitionParameters>(extension: ExtensionDefinition<T>, options?: {
        config?: T['configInput'];
    }): ExtensionTester<UOutput>;
    get<TId extends UOutput['id']>(ref: ExtensionDataRef<any, TId, any>): UOutput extends ExtensionDataRef<infer IData, TId, infer IConfig> ? IConfig['optional'] extends true ? IData | undefined : IData : never;
    query<T extends ExtensionDefinitionParameters>(extension: ExtensionDefinition<T>): ExtensionQuery<NonNullable<T['output']>>;
    reactElement(): JSX.Element;
}
/** @public */
export declare function createExtensionTester<T extends ExtensionDefinitionParameters>(subject: ExtensionDefinition<T>, options?: {
    config?: T['configInput'];
}): ExtensionTester<NonNullable<T['output']>>;
