export {
	getChannelValueAtTime,
	getDiscreteChannelValueAtTime,
	getScalarChannelValueAtTime,
	getScalarSegmentInterpolation,
	normalizeChannel,
} from "./interpolation";

export {
	clampAnimationsToDuration,
	cloneAnimations,
	getChannel,
	removeElementKeyframe,
	retimeElementKeyframe,
	setBindingComponentChannel,
	setChannel,
	splitAnimationsAtTime,
	updateScalarKeyframeCurve,
	upsertPathKeyframe,
} from "./keyframes";

export {
	getElementLocalTime,
	resolveAnimationPathValueAtTime,
} from "./resolve";

export {
	getElementKeyframes,
	getKeyframeById,
	getKeyframeAtTime,
	hasKeyframesForPath,
} from "./keyframe-query";

export {
	type EditableScalarChannels,
	getEditableScalarChannel,
	getEditableScalarChannels,
	getScalarKeyframeContext,
} from "./graph-channels";

export {
	getCurveHandlesForNormalizedCubicBezier,
	getNormalizedCubicBezierForScalarSegment,
} from "./curve-bridge";

export {
	buildGraphicParamPath,
	isGraphicParamPath,
	parseGraphicParamPath,
	resolveGraphicParamsAtTime,
} from "./graphic-param-channel";

export {
	buildEffectParamPath,
	isEffectParamPath,
	parseEffectParamPath,
	removeEffectParamKeyframe,
	resolveEffectParamsAtTime,
} from "./effect-param-channel";

export {
	getGroupKeyframesAtTime,
	hasGroupKeyframeAtTime,
	type GroupKeyframeRef,
} from "./property-groups";

export {
	type EasingMode,
	getEasingModeForKind,
} from "./binding-values";

export {
	isAnimationPath,
} from "./path";
