import type { Logger } from '@polka-codes/core';
/**
 * Resource limits configuration
 */
export interface ResourceLimits {
    maxExecutionTime?: number;
    maxMemory?: number;
    maxSessionTime?: number;
    maxFilesModified?: number;
}
/**
 * Resource limit exceeded event
 */
export interface ResourceLimitExceeded {
    limit: 'memory' | 'sessionTime' | 'execution-time' | 'files-modified';
    current: number;
    max: number;
    message?: string;
}
/**
 * Current resource usage
 */
export interface ResourceUsage {
    memoryMB: number;
    peakMemoryMB: number;
    sessionTimeMinutes: number;
    withinLimits: boolean;
}
/**
 * Monitors and enforces resource limits
 */
export declare class ResourceMonitor {
    #private;
    constructor(limits: ResourceLimits, logger: Logger, onLimitExceeded: (limit: ResourceLimitExceeded) => void | Promise<void>);
    /**
     * Start monitoring
     */
    start(checkIntervalMs?: number): void;
    /**
     * Stop monitoring
     */
    stop(): void;
    /**
     * Check resource usage
     */
    private check;
    /**
     * Get current resource usage
     */
    getCurrentUsage(): ResourceUsage;
    /**
     * Get memory usage percentage
     * @returns percentage (0-100) or undefined if no memory limit is set
     */
    getMemoryUsagePercentage(): number | undefined;
    /**
     * Get session time percentage
     * @returns percentage (0-100) or undefined if no session time limit is set
     */
    getSessionTimePercentage(): number | undefined;
}
//# sourceMappingURL=resource-monitor.d.ts.map