import { type ChildPart, type TemplateResult } from 'lit';
import { Directive, type DirectiveParameters, type PartInfo } from 'lit/directive.js';
declare class UpdateHostDirective extends Directive {
    constructor(partInfo: PartInfo);
    render(host: EventTarget, template: TemplateResult): TemplateResult;
    update(containerPart: ChildPart, [host, v]: DirectiveParameters<this>): TemplateResult;
}
/**
 * A directive to be used to update the `host` property on the
 * lit template. This can be used when the rendering happens outside
 * the main template (in another class). In such case instead of
 * calling `.listener.bind(this)` whenever using a listener you can
 * use this directive to render entire template belonging to another host.
 *
 * ```typescript
 * class NonLitHtmlContext {
 *   handleButton(): void {
 *     console.log(this); // -> NonLitHtmlContext
 *   }
 *
 *   render(): TemplateRest {
 *     const content = this.renderUi();
 *     return html`${retargetHost(this, content)}`;
 *   }
 *
 *   renderUi(): TemplateRest {
 *     return html`<button \@click="${this.handleButton}"></button>`;
 *   }
 * }
 *
 * class LitElementInstance extends LitElement {
 *   ui = new NonLitHtmlContext();
 *   render(): TemplateResult {
 *     return this.ui.render();
 *   }
 * }
 * ```
 */
export declare const retargetHost: (host: EventTarget, template: TemplateResult) => import("lit-html/directive.js").DirectiveResult<typeof UpdateHostDirective>;
export {};
//# sourceMappingURL=retargetHost.d.ts.map