request destroy (destructor) {
}

request attach {
    buffer: id(wl_buffer),
    x: i32,
    y: i32,
}

request damage {
    x: i32,
    y: i32,
    width: i32,
    height: i32,
}

request frame {
    callback: id(wl_callback) (new),
}

request set_opaque_region {
    region: id(wl_region),
}

request set_input_region {
    region: id(wl_region),
}

request commit {
}

event enter {
    output: id(wl_output),
}

event leave {
    output: id(wl_output),
}

request set_buffer_transform (since = 2) {
    transform: i32,
}

request set_buffer_scale (since = 3) {
    scale: i32,
}

request damage_buffer (since = 4) {
    x: i32,
    y: i32,
    width: i32,
    height: i32,
}

request offset (since = 5) {
    x: i32,
    y: i32,
}

event preferred_buffer_scale (since = 6) {
    factor: i32,
}

event preferred_buffer_transform (since = 6) {
    transform: u32,
}

request get_release (since = 7) {
    callback: id(wl_callback) (new),
}
