///
import { Router } from './router.js';
import { EventEmitter } from 'events';
import './controls/part.js';
import { Template } from './template.js';
import { IScope } from './scope.js';
import { LocationService as Location } from './locationService.js';
import { IControlInstance } from './controls/control.js';
export type PartInstance = {
scope: IScope;
element: HTMLElement;
controlsInPart?: IControlInstance[];
};
export declare class Part extends EventEmitter {
private template;
private location;
private routers;
constructor(template: Template, router: Router, location: Location);
private parts;
register(partName: string, control: PartInstance): void;
apply>(partInstance: () => PartInstance, part: PartDefinition, params: unknown): Promise;
use(url: string): Part;
use>(url: string, partName: string, part: PartDefinition): void;
}
export interface PartDefinition> {
template?: string | Promise;
controller?(scope: TScope, element: Element, params: unknown): Promise;
}