// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
//
// Generated from Web IDL definitions.

import 'dart:js_interop';

import 'webgl1.dart';

@JS('WEBGL_compressed_texture_pvrtc')
@staticInterop
class WEBGL_compressed_texture_pvrtc {
  external static GLenum get COMPRESSED_RGB_PVRTC_4BPPV1_IMG;
  external static GLenum get COMPRESSED_RGB_PVRTC_2BPPV1_IMG;
  external static GLenum get COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
  external static GLenum get COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;
}
