1#![deny(missing_docs)]
2#![doc = include_str!("../README.md")]
3
4use std::ffi::c_void;
5
6#[repr(C)]
8#[allow(missing_docs)]
9pub struct AllocatedString {
10 pub pointer: *mut u8,
11 pub len: usize,
12}
13
14#[link(name = "afia_component")]
16#[allow(missing_docs)]
17extern "C" {
18 pub fn new_emulated_imports() -> *mut std::ffi::c_void;
19 pub fn free_emulated_imports(testable_imports: *mut std::ffi::c_void);
20
21 pub fn emulated_imports_dom_outer_html(
22 testable_component_imports: *mut std::ffi::c_void,
23 dom_node_handle: i64,
24 ) -> AllocatedString;
25
26 pub fn emulated_imports_set_event_handler(
27 imports: *mut c_void,
28 handle_event: extern "C" fn(event_handle: i64, ctx: *mut c_void),
29 );
30
31 pub fn free_emulated_component_imports(testable_component_imports: *mut std::ffi::c_void);
32}
33
34#[allow(missing_docs)]
36extern "C" {
37 pub fn free_allocated_string(allocated_string: AllocatedString);
38}
39
40#[link(name = "afia_component")]
42#[allow(missing_docs)]
43extern "C" {
44 pub fn output_may_have_changed(imports: *const c_void, output_id: i32);
45
46 pub fn create_element(
47 imports: *const c_void,
48 tag_name_ptr: *const u8,
49 tag_name_len: usize,
50 ) -> i64;
51 pub fn create_text(imports: *const c_void, text_ptr: *const u8, text_len: usize) -> i64;
52
53 pub fn dom_element_set_attribute(
54 imports: *const c_void,
55 elem: i64,
56 key_ptr: *const u8,
57 key_len: usize,
58 val_ptr: *const u8,
59 val_len: usize,
60 );
61 pub fn element_get_attribute(
62 imports: *const c_void,
63 elem: i64,
64 key_ptr: *const u8,
65 key_len: usize,
66 out_ptr: *mut u8,
67 out_len: usize,
68 ) -> i32;
69 pub fn dom_element_remove_attribute(
70 imports: *const c_void,
71 elem: i64,
72 key_ptr: *const u8,
73 key_len: usize,
74 );
75
76 pub fn dom_element_append_child(imports: *const c_void, parent: i64, child: i64);
77
78 pub fn input_element_value(
79 imports: *const c_void,
80 elem: i64,
81 out_ptr: *mut u8,
82 out_len: usize,
83 ) -> i32;
84
85 pub fn dialog_element_show_modal(imports: *const c_void, elem: i64);
86
87 pub fn dialog_element_close(imports: *const c_void, elem: i64);
88
89 pub fn dom_node_get_property_string(
90 imports: *const c_void,
91 node: i64,
92 key_ptr: *const u8,
93 key_len: usize,
94 out_ptr: *mut u8,
95 out_size: usize,
96 ) -> i32;
97 pub fn dom_node_get_property_bool(
98 imports: *const c_void,
99 node: i64,
100 key_ptr: *const u8,
101 key_len: usize,
102 ) -> i32;
103 pub fn dom_node_set_property_string(
104 imports: *const c_void,
105 node: i64,
106 key_ptr: *const u8,
107 key_len: usize,
108 val_ptr: *const u8,
109 val_len: usize,
110 );
111 pub fn dom_node_set_property_bool(
112 imports: *const c_void,
113 node: i64,
114 key_ptr: *const u8,
115 key_len: usize,
116 value: i32,
117 ) -> i32;
118
119 pub fn dom_element_set_text_content(
120 imports: *const c_void,
121 element: i64,
122 text_ptr: *const u8,
123 text_len: usize,
124 );
125
126 pub fn dom_element_previous_element_sibling(imports: *const c_void, element: i64) -> i64;
127 pub fn dom_element_next_element_sibling(imports: *const c_void, element: i64) -> i64;
128
129 pub fn dom_element_add_event_listener(
130 imports: *const c_void,
131 element: i64,
132 event_name_ptr: *const u8,
133 event_name_len: usize,
134 ctx: isize,
135 ) -> i64;
136
137 pub fn dom_event_prevent_default(imports: *const c_void, event_handle: i64);
138 pub fn dom_event_target(imports: *const c_void, event_handle: i64) -> i64;
139
140 pub fn local_storage_get_item(
141 imports: *const c_void,
142 key_ptr: *const u8,
143 key_len: usize,
144 out_ptr: *mut u8,
145 out_size: usize,
146 ) -> i32;
147 pub fn local_storage_set_item(
148 imports: *const c_void,
149 key_ptr: *const u8,
150 key_len: usize,
151 value_ptr: *const u8,
152 value_size: usize,
153 );
154
155 pub fn element_tag_name(
156 imports: *const c_void,
157 element: i64,
158 out_ptr: *mut u8,
159 out_len: usize,
160 ) -> i32;
161
162 pub fn element_inner_text(
163 imports: *const c_void,
164 element: i64,
165 out_ptr: *mut u8,
166 out_len: usize,
167 ) -> i32;
168
169 pub fn element_click(imports: *const c_void, element: i64);
170
171 pub fn element_child_nodes(imports: *const c_void, element: i64) -> i64;
172 pub fn node_list_item(imports: *const c_void, node_list: i64, item_idx: i32) -> i64;
173
174 pub fn node_type(imports: *const c_void, node: i64) -> i32;
175 pub fn parent_node(imports: *const c_void, node: i64) -> i64;
176
177 pub fn initialize_stripe(imports: *const std::ffi::c_void, context: isize);
178 pub fn create_stripe_elements(
179 imports: *const std::ffi::c_void,
180 stripe_js_instance_handle: i64,
181 amount: u32,
182 ) -> i64;
183 pub fn submit_stripe_elements(
184 imports: *const std::ffi::c_void,
185 stripe_elements_handle: i64,
186 context: isize,
187 );
188}