#pragma once

#include <AK/Error.h>
#include <Compositor/WebGLObjectMap.h>
#include <Compositor/OpenGLContext.h>
#include <LibWeb/WebGL/WebGLCommandList.h>

namespace Compositor {
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::ActiveTexture const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::AttachShader const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BeginQuery const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BeginTransformFeedback const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BindAttribLocation const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BindBuffer const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BindBufferBase const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BindBufferRange const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BindFramebuffer const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BindRenderbuffer const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BindSampler const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BindTexture const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BindTransformFeedback const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BindVertexArray const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BindVertexArrayOES const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BlendColor const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BlendEquation const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BlendEquationSeparate const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BlendFunc const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BlendFuncSeparate const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BlitFramebuffer const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BufferData const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::BufferSubData const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Clear const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::ClearBufferfi const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::ClearBufferfv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::ClearBufferiv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::ClearBufferuiv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::ClearColor const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::ClearDepthf const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::ClearStencil const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::ColorMask const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::CompileShader const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::CompressedTexImage2DRobustANGLE const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::CompressedTexImage3DRobustANGLE const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::CompressedTexSubImage2DRobustANGLE const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::CompressedTexSubImage3DRobustANGLE const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::CopyBufferSubData const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::CopyTexImage2D const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::CopyTexSubImage2D const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::CreateProgram const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::CreateShader const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::CullFace const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DeleteBuffers const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DeleteFramebuffers const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DeleteProgram const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DeleteQueries const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DeleteRenderbuffers const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DeleteSamplers const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DeleteShader const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DeleteSync const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DeleteTextures const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DeleteTransformFeedbacks const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DeleteVertexArrays const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DeleteVertexArraysOES const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DepthFunc const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DepthMask const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DepthRangef const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DetachShader const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Disable const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DisableVertexAttribArray const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DrawArrays const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DrawArraysInstanced const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DrawArraysInstancedANGLE const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DrawBuffers const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DrawBuffersEXT const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DrawElements const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DrawElementsInstanced const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DrawElementsInstancedANGLE const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::DrawRangeElements const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Enable const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::EnableVertexAttribArray const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::EndQuery const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::EndTransformFeedback const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::FenceSync const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Flush const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::FramebufferRenderbuffer const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::FramebufferTexture2D const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::FramebufferTextureLayer const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::FrontFace const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::GenBuffers const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::GenFramebuffers const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::GenQueries const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::GenRenderbuffers const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::GenSamplers const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::GenTextures const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::GenTransformFeedbacks const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::GenVertexArrays const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::GenVertexArraysOES const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::GenerateMipmap const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Hint const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::InvalidateFramebuffer const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::InvalidateSubFramebuffer const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::LineWidth const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::LinkProgram const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::PauseTransformFeedback const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::PixelStorei const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::PolygonOffset const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::ReadBuffer const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::RenderbufferStorage const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::RenderbufferStorageMultisample const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::RequestExtensionANGLE const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::ResumeTransformFeedback const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::SampleCoverage const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::SamplerParameterf const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::SamplerParameteri const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Scissor const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::StencilFunc const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::StencilFuncSeparate const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::StencilMask const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::StencilMaskSeparate const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::StencilOp const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::StencilOpSeparate const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::TexImage2DRobustANGLE const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::TexImage3DRobustANGLE const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::TexParameterf const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::TexParameteri const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::TexStorage2D const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::TexStorage3D const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::TexSubImage2DRobustANGLE const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::TexSubImage3DRobustANGLE const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform1f const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform1fv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform1i const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform1iv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform1ui const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform1uiv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform2f const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform2fv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform2i const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform2iv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform2ui const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform2uiv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform3f const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform3fv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform3i const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform3iv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform3ui const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform3uiv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform4f const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform4fv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform4i const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform4iv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform4ui const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Uniform4uiv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::UniformBlockBinding const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::UniformMatrix2fv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::UniformMatrix2x3fv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::UniformMatrix2x4fv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::UniformMatrix3fv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::UniformMatrix3x2fv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::UniformMatrix3x4fv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::UniformMatrix4fv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::UniformMatrix4x2fv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::UniformMatrix4x3fv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::UseProgram const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::ValidateProgram const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::VertexAttrib1f const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::VertexAttrib1fv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::VertexAttrib2f const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::VertexAttrib2fv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::VertexAttrib3f const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::VertexAttrib3fv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::VertexAttrib4f const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::VertexAttrib4fv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::VertexAttribDivisor const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::VertexAttribDivisorANGLE const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::VertexAttribI4i const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::VertexAttribI4iv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::VertexAttribI4ui const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::VertexAttribI4uiv const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::VertexAttribIPointer const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::VertexAttribPointer const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::Viewport const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::WaitSync const&, ReadonlyBytes);

// Wire-specified ops; defined manually in HostWebGLContext.cpp. Builtin commands carry
// host-level semantics (presenting, resizing) and are dispatched by the host itself
// rather than through replay_webgl_command.
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::ShaderSource const&, ReadonlyBytes);
ErrorOr<void> replay_webgl_command(OpenGLContext&, WebGLObjectMap&, Web::WebGL::Commands::TransformFeedbackVaryings const&, ReadonlyBytes);
ErrorOr<ByteBuffer> handle_one(OpenGLContext&, WebGLObjectMap&, Web::WebGL::SyncCalls::GetString::Request const&, ReadonlyBytes);
ErrorOr<ByteBuffer> handle_one(OpenGLContext&, WebGLObjectMap&, Web::WebGL::SyncCalls::GetUniformIndices::Request const&, ReadonlyBytes);
ErrorOr<ByteBuffer> handle_one(OpenGLContext&, WebGLObjectMap&, Web::WebGL::SyncCalls::GetVertexAttribPointervRobustANGLE::Request const&, ReadonlyBytes);

ErrorOr<ByteBuffer> handle_webgl_sync_call(OpenGLContext&, WebGLObjectMap&, ReadonlyBytes request);

}
