import { AdoptedManager, GlobalManager, managerTypes, ScopedManager } from "./manager.ts"; interface Constructor< T, A extends any[] = any[] > { new (...args: A): T; } export interface StyledFn< Args extends any[], Return, Tag, Values > { (...args: Args): Return; [metadataSymbol]: StyledMetadata; } export interface StyledMetadata< Tag, Values > { tag: Tag; extends: { strings: TemplateStringsArray; values: Values; }[]; isStatic: boolean; } export type StyledPartValue = string | number | ((this: T, element: T) => string | number); export type NamedElement< K, T > = K extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[K] : T; type ApplyStyleOptions = { type?: "inline"; manager?: undefined; } | { type?: "scoped"; manager?: ScopedManager; } | ({ type?: "adopted"; manager?: AdoptedManager; } & Parameters[1]) | ({ type?: "global"; manager?: GlobalManager; } & Parameters[1]); declare const metadataSymbol: unique symbol; export declare class Powerstyl { createElement< E extends HTMLElement = HTMLElement, A extends any[] = any[], N extends string = string >(tag: N | Constructor | ((...args: A) => E), args: A): NamedElement; styled< E extends HTMLElement = HTMLElement, A extends any[] = any[], N extends string = string >(tag?: N | Constructor | ((...args: A) => E), options?: ApplyStyleOptions): (strings: TemplateStringsArray, ...values: StyledPartValue>[]) => StyledFn, typeof tag, StyledPartValue>[]>; applyStyle(element: HTMLElement, cssText: string, options?: ApplyStyleOptions): void; updateStyle(element: HTMLElement): void; transform(s: string): string; getManager(element: HTMLElement, type?: keyof typeof managerTypes): ScopedManager | GlobalManager | AdoptedManager | undefined; } export declare const mixin: any>(styler0: T, ...stylers: any[]) => T; export {};