// 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-animatable-interface

// TODO: We would like to be able to pass Element and PseudoElements around as
//       Animatable objects, but we don't currently have support in our parsing
//       system to support multiple inheritance between IDL files in order to
//       support this.  This IDL file exists currently as a placeholder for now,
//       as the object is created and destroyed purely within C++ currently.
interface Animatable {};
