/**
 * vega-slimmer-types.d.ts — auto-generated by patch-slimmer-dist-types.js
 *
 * Self-contained type declarations for all vega-slimmer symbols used in
 * Stencil-generated type declarations. Placed inside dist/types/ so that
 * relative imports emitted by the Stencil compiler resolve correctly for
 * all downstream TypeScript consumers (including published-package users).
 *
 * Do not edit manually — this file is regenerated on every build.
 */

// Core base class
export declare abstract class VegaSlimmer {}

// Decorator functions
export declare function MapToComponentMethod(componentMethodName: string): PropertyDecorator;
export declare function MapToComponentField<T extends VegaSlimmer = any>(options?: {
	componentFieldName?: string;
	writable?: boolean;
	isOptional?: boolean;
}): PropertyDecorator;
export declare function InjectVegaSlimmer<T extends VegaSlimmer = any>(): PropertyDecorator;
export declare function InjectVegaTelemetrySlimmer<T extends VegaSlimmer = any>(): PropertyDecorator;
export declare function InjectVegaGlobalSlimmer(): PropertyDecorator;

// Unique symbols
export declare const SlimmerConsumedBy: unique symbol;
export declare const CurrentlyInvokedMethodName: unique symbol;

// Helper types
export type GlobalSlimmerConfig = {
	component: new (...args: unknown[]) => unknown;
};
export type GlobalSlimmers = {
	[key: string]: VegaSlimmer;
};
export declare class GlobalSlimmersRegistry {
	static globalSlimmers: (new (...args: unknown[]) => VegaSlimmer)[];
	static register(slimmers: (new (...args: unknown[]) => VegaSlimmer)[]): void;
}

// Dynamic slimmer helpers
export type DynamicFieldMapEntry<T = any, U = any> = {
	mapFrom: keyof T;
	mapTo: keyof U;
	componentFieldName?: string;
	writable?: boolean;
	isOptional?: boolean;
};
export type DynamicMethodMapEntry<T = any, U = any> = {
	mapFrom: keyof T;
	mapTo: keyof U;
};
export declare function createDynamicSlimmer<T = any, U extends VegaSlimmer = any>(
	mapFromClass: new (...args: unknown[]) => T,
	mapToClass: new (...args: unknown[]) => U,
	fieldsMap?: DynamicFieldMapEntry<T, U>[],
	methodsMap?: DynamicMethodMapEntry<T, U>[],
): U;
export declare function methodPlaceholder<T = unknown>(...args: unknown[]): T;
