// Copyright 2015 The Cobalt Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// https://www.w3.org/TR/2015/WD-web-animations-1-20150707/#the-animation-interface

[Constructor (optional AnimationEffectReadOnly? effect = null,
              optional AnimationTimeline? timeline = null)]
interface Animation {
  attribute AnimationEffectReadOnly? effect;
  attribute AnimationTimeline? timeline;
  attribute double? startTime;
  attribute double? currentTime;
  attribute double playbackRate;
  void cancel();
  void finish();
  void play();
  void pause();
  void reverse();
};
