import { type NumericLike, type PhpCallable, type PhpCallableArgs, type PhpCallableDescriptor, type PhpInput } from './_phpTypes.ts';
type CallbackValue = PhpInput;
interface CallbackResolverOptions {
    invalidMessage: string;
    missingScopeMessage?: (scopeName: string) => string;
}
interface ResolvedCallback<TArgs extends PhpCallableArgs = PhpCallableArgs, TResult = CallbackValue> {
    fn: PhpCallable<TArgs, TResult>;
    scope: CallbackValue;
}
export declare function resolvePhpCallable<TArgs extends PhpCallableArgs = PhpCallableArgs, TResult = CallbackValue>(callback: PhpCallableDescriptor<TArgs, TResult>, options: CallbackResolverOptions): ResolvedCallback<TArgs, TResult>;
export declare function resolveNumericComparator<TLeft extends CallbackValue = CallbackValue, TRight extends CallbackValue = CallbackValue>(callback: PhpCallableDescriptor<[TLeft, TRight], NumericLike>, invalidMessage: string): (left: TLeft, right: TRight) => number;
export {};
