// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

typedef (CSSNumericValue or CSSKeywordish) ScrollTimelineContainerBasedOffset;
typedef (ScrollTimelineContainerBasedOffset or ScrollTimelineElementBasedOffset) ScrollTimelineOffset;

// https://wicg.github.io/scroll-animations/#scrolltimeline-interface
[
    RuntimeEnabled=ScrollTimeline,
    Exposed=Window
] interface ScrollTimeline : AnimationTimeline {
    [CallWith=Document, RaisesException, MeasureAs=ScrollTimelineConstructor] constructor(optional ScrollTimelineOptions options = {});
    readonly attribute Element? scrollSource;
    readonly attribute ScrollDirection orientation;
    readonly attribute ScrollTimelineOffset startScrollOffset;
    readonly attribute ScrollTimelineOffset endScrollOffset;
    readonly attribute FrozenArray<ScrollTimelineOffset> scrollOffsets;
    readonly attribute (double or ScrollTimelineAutoKeyword) timeRange;
};
