request destroy (destructor) {
}

request enable {
}

request disable {
}

request set_surrounding_text {
    text: str,
    cursor: i32,
    anchor: i32,
}

request set_text_change_cause {
    cause: u32,
}

request set_content_type {
    hint: u32,
    purpose: u32,
}

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

request commit {
}

event enter {
    surface: id(wl_surface),
}

event leave {
    surface: id(wl_surface),
}

event preedit_string {
    text: optstr,
    cursor_begin: i32,
    cursor_end: i32,
}

event commit_string {
    text: optstr,
}

event delete_surrounding_text {
    before_length: u32,
    after_length: u32,
}

event done {
    serial: u32,
}
