/**
 * Decorator Type Definitions
 * Type definitions for handler decorators
 */

/**
 * Schedule configuration for operations
 */
export interface ScheduleConfig {
  cronPattern: string;
  priority?: number;
  immediately?: boolean;
  description?: string;
}

/**
 * Decorator metadata stored on classes
 */
export interface DecoratorMetadata {
  handlerName?: string;
  operations?: Array<{
    name: string;
    methodName: string;
    schedules?: ScheduleConfig[];
  }>;
  disabled?: boolean;
}

/**
 * Type for decorator factories
 */
export type DecoratorFactory<T = any> = (target: T, context?: any) => T | void;

/**
 * Type for method decorators
 */
export type MethodDecoratorFactory = (
  target: any,
  propertyKey: string,
  descriptor?: PropertyDescriptor
) => any;
