import type { WidgetLayoutCubicBezier, WidgetLayoutSize, WidgetLayoutSizeUpdate, WidgetLayoutTimedSizeUpdate } from "./widget-layout-size-update.js"; export type WidgetLayoutComparableSizeUpdate = WidgetLayoutSizeUpdate | WidgetLayoutTimedSizeUpdate; export type WidgetLayoutUnchangedTransitionPlan = { kind: "unchanged"; size: WidgetLayoutSize; update: Update; observedAtMs: number; }; export type WidgetLayoutInstantTransitionPlan = { kind: "instant"; size: WidgetLayoutSize; update: WidgetLayoutSizeUpdate; startedAtMs: number; settledAtMs: number; }; export type WidgetLayoutTimedTransitionPlan = { kind: "timed"; size: WidgetLayoutSize; update: WidgetLayoutTimedSizeUpdate; startedAtMs: number; settledAtMs: number; }; export type WidgetLayoutInstantOnlyTransitionPlan = WidgetLayoutUnchangedTransitionPlan | WidgetLayoutInstantTransitionPlan; export type WidgetLayoutTransitionPlan = WidgetLayoutInstantOnlyTransitionPlan; export type WidgetLayoutTimedCapableTransitionPlan = WidgetLayoutUnchangedTransitionPlan | WidgetLayoutInstantTransitionPlan | WidgetLayoutTimedTransitionPlan; export type WidgetLayoutInstantTransitionPolicy = { kind: "instant"; durationMs: 0; }; export type WidgetLayoutTimedTransitionPolicy = { kind: "timed"; durationMs: number; easing: WidgetLayoutCubicBezier; }; export type WidgetLayoutTransitionPolicy = WidgetLayoutInstantTransitionPolicy | WidgetLayoutTimedTransitionPolicy; /** * The default coordinated layout transition shared by host, View, and * authoring surfaces. Keep this policy in the protocol so each runtime uses * the same timeline and easing when it participates in a layout update. */ export declare const DEFAULT_WIDGET_LAYOUT_TRANSITION_DURATION_MS = 260; export declare const DEFAULT_WIDGET_LAYOUT_TRANSITION_EASING: readonly [0.22, 1, 0.36, 1]; export declare const DEFAULT_WIDGET_LAYOUT_TRANSITION_POLICY: Readonly<{ kind: "timed"; durationMs: 260; easing: readonly [0.22, 1, 0.36, 1]; }>; /** Internal timing for one coordinated host/View layout transaction. */ export type WidgetLayoutTransitionSchedule = { sequence: number; transactionId: string; startAtEpochMs: number; }; export declare const DEFAULT_WIDGET_LAYOUT_TRANSITION_LEAD_TIME_MS = 96; export declare function createWidgetLayoutTransitionSchedule(input: { sequence: number; transactionId: string; nowEpochMs: number; leadTimeMs?: number; }): WidgetLayoutTransitionSchedule; export declare function resolveWidgetLayoutTransitionDelayMs(schedule: WidgetLayoutTransitionSchedule | undefined, nowEpochMs: number): number; export declare function resolveWidgetLayoutTransitionExecution(input: { schedule?: WidgetLayoutTransitionSchedule; durationMs: number; nowEpochMs: number; }): { delayMs: number; durationMs: number; elapsedMs: number; isComplete: boolean; timelineOffsetMs: number; }; /** Resolves the output of a CSS cubic-bezier timing function at a time ratio. */ export declare function resolveWidgetLayoutCubicBezierProgress(easing: readonly [number, number, number, number], timeProgress: number): number; export declare function resolveWidgetLayoutResumedEasing(input: { easing: readonly [number, number, number, number]; elapsedProgress: number; remainingProgress: number; }): { initialProgress: number; progress: number; }; export declare const INSTANT_WIDGET_LAYOUT_TRANSITION_POLICY: WidgetLayoutInstantTransitionPolicy; export declare function getWidgetLayoutPlanNowMs(): number; export declare function areWidgetLayoutSizeUpdatesEqual(left: WidgetLayoutComparableSizeUpdate | undefined, right: WidgetLayoutComparableSizeUpdate): boolean; type WidgetLayoutInstantPolicyPlanInput = { previous?: WidgetLayoutComparableSizeUpdate; size: WidgetLayoutSize; nowMs: number; transitionPolicy?: WidgetLayoutInstantTransitionPolicy; }; type WidgetLayoutTimedCapablePolicyPlanInput = { previous?: WidgetLayoutComparableSizeUpdate; size: WidgetLayoutSize; nowMs: number; transitionPolicy: WidgetLayoutTimedTransitionPolicy; }; type WidgetLayoutOptionalPolicyPlanInput = { previous?: WidgetLayoutComparableSizeUpdate; size: WidgetLayoutSize; nowMs: number; transitionPolicy?: WidgetLayoutTransitionPolicy; }; export declare function planWidgetLayoutTransition(input: { previous?: WidgetLayoutSizeUpdate; next: WidgetLayoutSizeUpdate; nowMs: number; }): WidgetLayoutInstantOnlyTransitionPlan; export declare function planWidgetLayoutTransition(input: { previous?: WidgetLayoutComparableSizeUpdate; next: WidgetLayoutComparableSizeUpdate; nowMs: number; }): WidgetLayoutTimedCapableTransitionPlan; export declare function planWidgetLayoutTransition(input: WidgetLayoutInstantPolicyPlanInput): WidgetLayoutInstantOnlyTransitionPlan; export declare function planWidgetLayoutTransition(input: WidgetLayoutTimedCapablePolicyPlanInput): WidgetLayoutTimedCapableTransitionPlan; export declare function planWidgetLayoutTransition(input: WidgetLayoutOptionalPolicyPlanInput): WidgetLayoutTimedCapableTransitionPlan; export {}; //# sourceMappingURL=widget-layout-transition-plan.d.ts.map