import type {PhaseMetrics} from './softInputRuntime';
const EASINGS = ['linear', 'easeIn', 'easeOut', 'easeInOut', 'bounce'];
const TOL = 5;
export function judgeEasingMatrix(m: Record<string, PhaseMetrics>): Array<[string, boolean]> {
const sampled = EASINGS.every(k => m[k] !== undefined && m[k].quarterRatio >= 0 && m[k].midRatio >= 0 && m[k].last > 0);
if (!sampled) return [['五轮均完成上移动画并采到进度', false]];
const lin = m.linear;
const q = (k: string): number => m[k].quarterRatio;
const mid = (k: string): number => m[k].midRatio;
return [
['五轮均完成上移动画并采到进度', true],
['easeIn 四分位与中点均比 linear 低 5 个百分点以上', q('easeIn') < lin.quarterRatio - TOL && mid('easeIn') < lin.midRatio - TOL],
['easeOut 四分位与中点均比 linear 高 5 个百分点以上', q('easeOut') > lin.quarterRatio + TOL && mid('easeOut') > lin.midRatio + TOL],
['easeInOut 四分位比 linear 低 5 个百分点以上且中点与 linear 相差 ≤5', q('easeInOut') < lin.quarterRatio - TOL && Math.abs(mid('easeInOut') - lin.midRatio) <= TOL],
['bounce 兜底 linear:两项与 linear 相差 ≤5', Math.abs(q('bounce') - lin.quarterRatio) <= TOL && Math.abs(mid('bounce') - lin.midRatio) <= TOL],
];
}