openvino-genai-sys 0.11.0

Low-level bindings for OpenVINO GenAI (use the `openvino-genai` crate for easier-to-use bindings).
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
use super::types::*;
use crate::link;
use openvino_sys::{ov_status_e, ov_tensor_t};
link! {

/* automatically generated by rust-bindgen 0.72.0 */

unsafe extern "C" {
    #[doc = " @brief Create ov_genai_generation_config.\n @param config A pointer to the newly created ov_genai_generation_config.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_create(
        config: *mut *mut ov_genai_generation_config,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Create ov_genai_generation_config from JSON file.\n @param json_path Path to a .json file containing the generation configuration to load.\n @param config A pointer to the newly created ov_genai_generation_config.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_create_from_json(
        json_path: *const ::std::os::raw::c_char,
        config: *mut *mut ov_genai_generation_config,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Release the memory allocated by ov_genai_generation_config.\n @param handle A pointer to the ov_genai_generation_config to free memory.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_free(handle: *mut ov_genai_generation_config);
}
unsafe extern "C" {
    #[doc = " @brief Set the maximum number of tokens to generate, excluding the number of tokens in the prompt. max_new_tokens\n has priority over max_length.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The maximum number of tokens to generate.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_max_new_tokens(
        handle: *mut ov_genai_generation_config,
        value: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the maximum length the generated tokens can have. Corresponds to the length of the input prompt +\n `max_new_tokens`. Its effect is overridden by `max_new_tokens`, if also set.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The maximum length the generated tokens can have.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_max_length(
        config: *mut ov_genai_generation_config,
        value: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set whether or not to ignore <eos> token\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value If set to true, then generation will not stop even if <eos> token is met.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_ignore_eos(
        config: *mut ov_genai_generation_config,
        value: bool,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the minimum number of tokens to generate.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The minimum number of tokens to generate.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_min_new_tokens(
        config: *mut ov_genai_generation_config,
        value: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set whether or not to include user prompt in the output.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value If set to true, output will include user prompt.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_echo(
        config: *mut ov_genai_generation_config,
        value: bool,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the number of top logprobs computed for each position,\nif set to 0, logprobs are not computed and value 0.0 is returned.\nCurrently only single top logprob can be returned, so any logprobs > 1 is treated as logprobs\n== 1.(default: 0).\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The number of top logprobs computed for each position.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_logprobs(
        config: *mut ov_genai_generation_config,
        value: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the set of strings that will cause pipeline to stop generating further tokens.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param strings An array of strings.\n @param count The number of strings in the array.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_stop_strings(
        config: *mut ov_genai_generation_config,
        strings: *mut *const ::std::os::raw::c_char,
        count: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set whether or not to include stop string that matched generation in the output.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value If set to true stop string that matched generation will be included in generation output (default:\n false).\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_include_stop_str_in_output(
        config: *mut ov_genai_generation_config,
        value: bool,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the set of tokens that will cause pipeline to stop generating further tokens.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param token_ids An array of token ids.\n @param token_ids_num The number of token ids in the array.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_stop_token_ids(
        config: *mut ov_genai_generation_config,
        token_ids: *const i64,
        token_ids_num: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the number of groups to divide `num_beams` into in order to ensure diversity among different groups of\n beams.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The number of beam groups.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_num_beam_groups(
        config: *mut ov_genai_generation_config,
        value: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the number of beams for beam search. 1 disables beam search.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The number of beams for beam search.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_num_beams(
        config: *mut ov_genai_generation_config,
        value: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the diversity penalty, this value is subtracted from a beam's score if it generates the same token as\n any beam from other group at a particular time.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The parameter for diversity penalty.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_diversity_penalty(
        config: *mut ov_genai_generation_config,
        value: f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the length penalty, exponential penalty to the length that is used with beam-based generation. It is\n applied as an exponent to the sequence length, which in turn is used to divide the score of the sequence. Since\n the score is the log likelihood of the sequence (i.e. negative), `length_penalty` > 0.0 promotes longer\n sequences, while `length_penalty` < 0.0 encourages shorter sequences.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The exponential penalty.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_length_penalty(
        config: *mut ov_genai_generation_config,
        value: f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the number of sequences to return for grouped beam search decoding per batch element.\n num_return_sequences must be less or equal to num_beams.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The number of sequences to return.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_num_return_sequences(
        config: *mut ov_genai_generation_config,
        value: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the no_repeat_ngram_size\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value If set to int > 0, all ngrams of that size can only occur once.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_no_repeat_ngram_size(
        config: *mut ov_genai_generation_config,
        value: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the stopping condition for grouped beam search. It accepts the following values:\n \"EARLY\", where the generation stops as soon as there are `num_beams` complete candidates; \"HEURISTIC\", where an\n \"HEURISTIC\" is applied when it is unlikely to find better candidates;\n \"NEVER\", where the generation stops when there cannot be better candidates.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The stopping condition for grouped beam search.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_stop_criteria(
        config: *mut ov_genai_generation_config,
        value: StopCriteria,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the temperature value used to modulate token probabilities for random sampling.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The value of temperature.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_temperature(
        config: *mut ov_genai_generation_config,
        value: f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the top_p value. If set to float < 1, only the smallest set of most probable tokens with probabilities\n that add up to top_p or higher are kept for generation.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The value of top_p.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_top_p(
        config: *mut ov_genai_generation_config,
        value: f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the top_k value. The number of highest probability vocabulary tokens to keep for top-k-filtering.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The value of top_k.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_top_k(
        config: *mut ov_genai_generation_config,
        value: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set whether or not to use multinomial random sampling that add up to `top_p` or higher are kept.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value If set to true, multinomial random sampling will be used.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_do_sample(
        config: *mut ov_genai_generation_config,
        value: bool,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the parameter for repetition penalty. 1.0 means no penalty.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The value of parameter for repetition penalty.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_repetition_penalty(
        config: *mut ov_genai_generation_config,
        value: f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the presence penalty, which reduces absolute log prob if the\n tokeov_genai_generation_config_set_presence_penaltyn was generated at least once.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The value of parameter for presence penalty.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_presence_penalty(
        config: *mut ov_genai_generation_config,
        value: f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the frequency penalty, which reduces absolute log prob as many times as the token was generated.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The value of parameter for frequency penalty.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_frequency_penalty(
        config: *mut ov_genai_generation_config,
        value: f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the seed to initialize random number generator.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The value of seed for random number generator.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_rng_seed(
        config: *mut ov_genai_generation_config,
        value: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the lower token probability of candidate to be validated by main model in case of dynamic strategy\n candidates number update.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The lower token probability of candidate to be validated by main model.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_assistant_confidence_threshold(
        config: *mut ov_genai_generation_config,
        value: f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the defined candidates number to be generated by draft model/prompt lookup in case of static strategy\n candidates number update.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The number of assistant tokens.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_num_assistant_tokens(
        config: *mut ov_genai_generation_config,
        value: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the maximum ngram to use when looking for matches in the prompt.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param value The maximum ngram size.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_max_ngram_size(
        config: *mut ov_genai_generation_config,
        value: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the token_id of <eos> (end of sentence)\n @param handle A pointer to the ov_genai_generation_config instance.\n @param id The eos token id.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_set_eos_token_id(
        config: *mut ov_genai_generation_config,
        id: i64,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the maximum number of tokens to generate, excluding the number of tokens in the prompt.\n @param handle A pointer to the ov_genai_generation_config instance.\n @param The maximum number of tokens to generate.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_get_max_new_tokens(
        config: *const ov_genai_generation_config,
        max_new_tokens: *mut usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Checks that are no conflicting parameters, e.g. do_sample=true and num_beams > 1.\n @param handle A pointer to the ov_genai_generation_config instance.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_generation_config_validate(
        config: *mut ov_genai_generation_config,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get load time from ov_genai_perf_metrics.\n @param metrics A pointer to the ov_genai_perf_metrics instance.\n @param load_time Load time in ms.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_perf_metrics_get_load_time(
        metrics: *const ov_genai_perf_metrics,
        load_time: *mut f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the number of generated tokens from ov_genai_perf_metrics.\n @param metrics A pointer to the ov_genai_perf_metrics instance.\n @param num_generation_tokens The number of generated tokens.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_perf_metrics_get_num_generation_tokens(
        metrics: *const ov_genai_perf_metrics,
        num_generation_tokens: *mut usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the number of input tokens from ov_genai_perf_metrics.\n @param metrics A pointer to the ov_genai_perf_metrics instance.\n @param num_input_tokens The number of input tokens.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_perf_metrics_get_num_input_tokens(
        metrics: *const ov_genai_perf_metrics,
        num_input_tokens: *mut usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the time to first token (in ms) from ov_genai_perf_metrics.\n @param metrics A pointer to the ov_genai_perf_metrics instance.\n @param mean Mean of time to first token.\n  @param std Standard deviation of time to first token.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_perf_metrics_get_ttft(
        metrics: *const ov_genai_perf_metrics,
        mean: *mut f32,
        std: *mut f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the time per output token (TPOT in ms) from ov_genai_perf_metrics.\n @param metrics A pointer to the ov_genai_perf_metrics instance.\n @param mean Mean of time per output token.\n @param std Standard deviation of time per output token.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_perf_metrics_get_tpot(
        metrics: *const ov_genai_perf_metrics,
        mean: *mut f32,
        std: *mut f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the inference time (in ms) per output token from ov_genai_perf_metrics.\n @param metrics A pointer to the ov_genai_perf_metrics instance.\n @param mean Mean of inference time per input token.\n @param std Standard deviation of inference time per input token.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_perf_metrics_get_ipot(
        metrics: *const ov_genai_perf_metrics,
        mean: *mut f32,
        std: *mut f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get tokens per second from ov_genai_perf_metrics.\n @param metrics A pointer to the ov_genai_perf_metrics instance.\n @param mean Mean of throughput.\n @param std Standard deviation of throughput.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_perf_metrics_get_throughput(
        metrics: *const ov_genai_perf_metrics,
        mean: *mut f32,
        std: *mut f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get inference duration (in ms) from ov_genai_perf_metrics.\n @param metrics A pointer to the ov_genai_perf_metrics instance.\n @param mean Mean of inference duration.\n @param std Standard deviation of inference duration.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_perf_metrics_get_inference_duration(
        metrics: *const ov_genai_perf_metrics,
        mean: *mut f32,
        std: *mut f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get generate duration (in ms) from ov_genai_perf_metrics.\n @param metrics A pointer to the ov_genai_perf_metrics instance.\n.* @param mean Mean of generate duration.\n @param std Standard deviation of generate duration.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_perf_metrics_get_generate_duration(
        metrics: *const ov_genai_perf_metrics,
        mean: *mut f32,
        std: *mut f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get tokenization duration (in ms) from ov_genai_perf_metrics.\n @param metrics A pointer to the ov_genai_perf_metrics instance.\n @param mean Mean of tokenization duration.\n @param std Standard deviation of tokenization duration.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_perf_metrics_get_tokenization_duration(
        metrics: *const ov_genai_perf_metrics,
        mean: *mut f32,
        std: *mut f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get detokenization duration (in ms) from ov_genai_perf_metrics.\n @param metrics A pointer to the ov_genai_perf_metrics instance.\n @param mean Mean of detokenization duration.\n @param std Standard deviation of detokenization duration.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_perf_metrics_get_detokenization_duration(
        metrics: *const ov_genai_perf_metrics,
        mean: *mut f32,
        std: *mut f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief C interface for PerfMetrics& operator+=(const PerfMetrics& right)\n\n This function adds the PerfMetrics from 'right' to 'left' in place. Equivalent to ov::genai::PerfMetrics&\n operator+=(const ov::genai::PerfMetrics&);\n\n @param left A pointer to the ov_genai_perf_metrics instance that will be updated.\n @param right A pointer to the ov_genai_perf_metrics instance whose metrics will be added to 'left'.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_perf_metrics_add_in_place(
        left: *mut ov_genai_perf_metrics,
        right: *const ov_genai_perf_metrics,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Create a new empty ChatHistory instance.\n @param history A pointer to the newly created ov_genai_chat_history.\n @return ov_genai_chat_history_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_chat_history_create(
        history: *mut *mut ov_genai_chat_history,
    ) -> ov_genai_chat_history_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Create a ChatHistory instance from a JsonContainer (array).\n @param history A pointer to the newly created ov_genai_chat_history.\n @param messages A JsonContainer containing an array of message objects.\n @return ov_genai_chat_history_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_chat_history_create_from_json_container(
        history: *mut *mut ov_genai_chat_history,
        messages: *const ov_genai_json_container,
    ) -> ov_genai_chat_history_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Release the memory allocated by ov_genai_chat_history.\n @param history A pointer to the ov_genai_chat_history to free memory."]
    pub fn ov_genai_chat_history_free(history: *mut ov_genai_chat_history);
}
unsafe extern "C" {
    #[doc = " @brief Add a message to the chat history from a JsonContainer.\n @param history A pointer to the ov_genai_chat_history instance.\n @param message A JsonContainer containing a message object (e.g., {\"role\": \"user\", \"content\": \"Hello\"}).\n @return ov_genai_chat_history_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_chat_history_push_back(
        history: *mut ov_genai_chat_history,
        message: *const ov_genai_json_container,
    ) -> ov_genai_chat_history_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Remove the last message from the chat history.\n @param history A pointer to the ov_genai_chat_history instance.\n @return ov_genai_chat_history_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_chat_history_pop_back(
        history: *mut ov_genai_chat_history,
    ) -> ov_genai_chat_history_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get all messages as a JsonContainer (array).\n @param history A pointer to the ov_genai_chat_history instance.\n @param messages A pointer to store the returned JsonContainer containing all messages.\n @return ov_genai_chat_history_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_chat_history_get_messages(
        history: *const ov_genai_chat_history,
        messages: *mut *mut ov_genai_json_container,
    ) -> ov_genai_chat_history_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get a message at a specific index as a JsonContainer.\n @param history A pointer to the ov_genai_chat_history instance.\n @param index The index of the message to retrieve.\n @param message A pointer to store the returned JsonContainer containing the message.\n @return ov_genai_chat_history_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_chat_history_get_message(
        history: *const ov_genai_chat_history,
        index: usize,
        message: *mut *mut ov_genai_json_container,
    ) -> ov_genai_chat_history_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the first message as a JsonContainer.\n @param history A pointer to the ov_genai_chat_history instance.\n @param message A pointer to store the returned JsonContainer containing the first message.\n @return ov_genai_chat_history_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_chat_history_get_first(
        history: *const ov_genai_chat_history,
        message: *mut *mut ov_genai_json_container,
    ) -> ov_genai_chat_history_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the last message as a JsonContainer.\n @param history A pointer to the ov_genai_chat_history instance.\n @param message A pointer to store the returned JsonContainer containing the last message.\n @return ov_genai_chat_history_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_chat_history_get_last(
        history: *const ov_genai_chat_history,
        message: *mut *mut ov_genai_json_container,
    ) -> ov_genai_chat_history_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Clear all messages from the chat history.\n @param history A pointer to the ov_genai_chat_history instance.\n @return ov_genai_chat_history_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_chat_history_clear(
        history: *mut ov_genai_chat_history,
    ) -> ov_genai_chat_history_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the number of messages in the chat history.\n @param history A pointer to the ov_genai_chat_history instance.\n @param size A pointer to store the size (number of messages).\n @return ov_genai_chat_history_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_chat_history_size(
        history: *const ov_genai_chat_history,
        size: *mut usize,
    ) -> ov_genai_chat_history_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Check if the chat history is empty.\n @param history A pointer to the ov_genai_chat_history instance.\n @param empty A pointer to store the boolean result (1 for empty, 0 for not empty).\n @return ov_genai_chat_history_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_chat_history_empty(
        history: *const ov_genai_chat_history,
        empty: *mut ::std::os::raw::c_int,
    ) -> ov_genai_chat_history_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set tools definitions (for function calling) as a JsonContainer (array).\n @param history A pointer to the ov_genai_chat_history instance.\n @param tools A JsonContainer containing an array of tool definitions.\n @return ov_genai_chat_history_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_chat_history_set_tools(
        history: *mut ov_genai_chat_history,
        tools: *const ov_genai_json_container,
    ) -> ov_genai_chat_history_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get tools definitions as a JsonContainer (array).\n @param history A pointer to the ov_genai_chat_history instance.\n @param tools A pointer to store the returned JsonContainer containing tools definitions.\n @return ov_genai_chat_history_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_chat_history_get_tools(
        history: *const ov_genai_chat_history,
        tools: *mut *mut ov_genai_json_container,
    ) -> ov_genai_chat_history_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set extra context (for custom template variables) as a JsonContainer (object).\n @param history A pointer to the ov_genai_chat_history instance.\n @param extra_context A JsonContainer containing an object with extra context.\n @return ov_genai_chat_history_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_chat_history_set_extra_context(
        history: *mut ov_genai_chat_history,
        extra_context: *const ov_genai_json_container,
    ) -> ov_genai_chat_history_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get extra context as a JsonContainer (object).\n @param history A pointer to the ov_genai_chat_history instance.\n @param extra_context A pointer to store the returned JsonContainer containing extra context.\n @return ov_genai_chat_history_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_chat_history_get_extra_context(
        history: *const ov_genai_chat_history,
        extra_context: *mut *mut ov_genai_json_container,
    ) -> ov_genai_chat_history_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Create DecodedResults\n @param results A pointer to the newly created ov_genai_decoded_results.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_decoded_results_create(
        results: *mut *mut ov_genai_decoded_results,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Release the memory allocated by ov_genai_decoded_results.\n @param model A pointer to the ov_genai_decoded_results to free memory."]
    pub fn ov_genai_decoded_results_free(results: *mut ov_genai_decoded_results);
}
unsafe extern "C" {
    #[doc = " @brief Get performance metrics from ov_genai_decoded_results.\n @param results A pointer to the ov_genai_decoded_results instance.\n @param metrics A pointer to the newly created ov_genai_perf_metrics.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_decoded_results_get_perf_metrics(
        results: *const ov_genai_decoded_results,
        metrics: *mut *mut ov_genai_perf_metrics,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Release the memory allocated by ov_genai_perf_metrics.\n @param model A pointer to the ov_genai_perf_metrics to free memory."]
    pub fn ov_genai_decoded_results_perf_metrics_free(metrics: *mut ov_genai_perf_metrics);
}
unsafe extern "C" {
    #[doc = " @brief Get string result from ov_genai_decoded_results.\n @param results A pointer to the ov_genai_decoded_results instance.\n @param output A pointer to the pre-allocated output string buffer. It can be set to NULL, in which case the\n *output_size will provide the needed buffer size. The user should then allocate the required buffer size and call\n this function again to obtain the entire output.\n @param output_size A Pointer to the size of the output string from the results, including the null terminator. If\n output is not NULL, *output_size should be greater than or equal to the result string size; otherwise, the function\n will return OUT_OF_BOUNDS(-6).\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_decoded_results_get_string(
        results: *const ov_genai_decoded_results,
        output: *mut ::std::os::raw::c_char,
        output_size: *mut usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Release the memory allocated by ov_genai_llm_pipeline.\n @param model A pointer to the ov_genai_llm_pipeline to free memory."]
    pub fn ov_genai_llm_pipeline_free(pipe: *mut ov_genai_llm_pipeline);
}
unsafe extern "C" {
    #[doc = " @brief Generate results by ov_genai_llm_pipeline\n @param pipe A pointer to the ov_genai_llm_pipeline instance.\n @param inputs A pointer to the input string.\n @param config A pointer to the ov_genai_generation_config, the pointer can be NULL.\n @param streamer A pointer to the stream callback. Set to NULL if no callback is needed. Either this or results must\n be non-NULL.\n @param results A pointer to the ov_genai_decoded_results, which retrieves the results of the generation. Either this\n or streamer must be non-NULL.\n @return Status code of the operation: OK(0) for success."]
    pub fn ov_genai_llm_pipeline_generate(
        pipe: *mut ov_genai_llm_pipeline,
        inputs: *const ::std::os::raw::c_char,
        config: *const ov_genai_generation_config,
        streamer: *const streamer_callback,
        results: *mut *mut ov_genai_decoded_results,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Generate results by ov_genai_llm_pipeline using ChatHistory\n @param pipe A pointer to the ov_genai_llm_pipeline instance.\n @param history A pointer to the ov_genai_chat_history instance.\n @param config A pointer to the ov_genai_generation_config, the pointer can be NULL.\n @param streamer A pointer to the stream callback. Set to NULL if no callback is needed. Either this or results must\n be non-NULL.\n @param results A pointer to the ov_genai_decoded_results, which retrieves the results of the generation. Either this\n or streamer must be non-NULL.\n @return Status code of the operation: OK(0) for success."]
    pub fn ov_genai_llm_pipeline_generate_with_history(
        pipe: *mut ov_genai_llm_pipeline,
        history: *const ov_genai_chat_history,
        config: *const ov_genai_generation_config,
        streamer: *const streamer_callback,
        results: *mut *mut ov_genai_decoded_results,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Start chat with keeping history in kv cache.\n @param pipe A pointer to the ov_genai_llm_pipeline instance.\n @return Status code of the operation: OK(0) for success."]
    pub fn ov_genai_llm_pipeline_start_chat(pipe: *mut ov_genai_llm_pipeline) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Finish chat and clear kv cache.\n @param pipe A pointer to the ov_genai_llm_pipeline instance.\n @return Status code of the operation: OK(0) for success."]
    pub fn ov_genai_llm_pipeline_finish_chat(pipe: *mut ov_genai_llm_pipeline) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the GenerationConfig from ov_genai_llm_pipeline.\n @param pipe A pointer to the ov_genai_llm_pipeline instance.\n @param ov_genai_generation_config A pointer to the newly created ov_genai_generation_config.\n @return Status code of the operation: OK(0) for success."]
    pub fn ov_genai_llm_pipeline_get_generation_config(
        pipe: *const ov_genai_llm_pipeline,
        config: *mut *mut ov_genai_generation_config,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the GenerationConfig to ov_genai_llm_pipeline.\n @param pipe A pointer to the ov_genai_llm_pipeline instance.\n @param config A pointer to the ov_genai_generation_config instance.\n @return Status code of the operation: OK(0) for success."]
    pub fn ov_genai_llm_pipeline_set_generation_config(
        pipe: *mut ov_genai_llm_pipeline,
        config: *mut ov_genai_generation_config,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Create VLMDecodedResults\n @param results A pointer to the newly created ov_genai_vlm_decoded_results.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_vlm_decoded_results_create(
        results: *mut *mut ov_genai_vlm_decoded_results,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Release the memory allocated by ov_genai_vlm_decoded_results.\n @param results A pointer to the ov_genai_vlm_decoded_results to free memory."]
    pub fn ov_genai_vlm_decoded_results_free(results: *mut ov_genai_vlm_decoded_results);
}
unsafe extern "C" {
    #[doc = " @brief Get performance metrics from ov_genai_vlm_decoded_results.\n @param results A pointer to the ov_genai_vlm_decoded_results instance.\n @param metrics A pointer to the newly created ov_genai_perf_metrics.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_vlm_decoded_results_get_perf_metrics(
        results: *const ov_genai_vlm_decoded_results,
        metrics: *mut *mut ov_genai_perf_metrics,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Release the memory allocated by ov_genai_perf_metrics.\n @param metrics A pointer to the ov_genai_perf_metrics to free memory."]
    pub fn ov_genai_vlm_decoded_results_perf_metrics_free(metrics: *mut ov_genai_perf_metrics);
}
unsafe extern "C" {
    #[doc = " @brief Get string result from ov_genai_vlm_decoded_results.\n @param results A pointer to the ov_genai_vlm_decoded_results instance.\n @param output A pointer to the pre-allocated output string buffer. It can be set to NULL, in which case the\n *output_size will provide the needed buffer size. The user should then allocate the required buffer size and call\n this function again to obtain the entire output.\n @param output_size A Pointer to the size of the output string from the results, including the null terminator. If\n output is not NULL, *output_size should be greater than or equal to the result string size; otherwise, the function\n will return OUT_OF_BOUNDS(-6).\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_vlm_decoded_results_get_string(
        results: *const ov_genai_vlm_decoded_results,
        output: *mut ::std::os::raw::c_char,
        output_size: *mut usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Release the memory allocated by ov_genai_vlm_pipeline.\n @param pipe A pointer to the ov_genai_vlm_pipeline to free memory."]
    pub fn ov_genai_vlm_pipeline_free(pipe: *mut ov_genai_vlm_pipeline);
}
unsafe extern "C" {
    #[doc = " @brief Generate results by ov_genai_vlm_pipeline with text and image inputs\n @param pipe A pointer to the ov_genai_vlm_pipeline instance.\n @param text_inputs A pointer to the input text string.\n @param rgbs A pointer to the array of ov_tensor_t containing image data.\n @param num_images Number of images in the rgbs array.\n @param config A pointer to the ov_genai_generation_config, the pointer can be NULL.\n @param streamer A pointer to the stream callback. Set to NULL if no callback is needed. Either this or results must\n be non-NULL.\n @param results A pointer to the ov_genai_vlm_decoded_results, which retrieves the results of the generation. Either this\n or streamer must be non-NULL.\n @return Status code of the operation: OK(0) for success."]
    pub fn ov_genai_vlm_pipeline_generate(
        pipe: *mut ov_genai_vlm_pipeline,
        text_inputs: *const ::std::os::raw::c_char,
        rgbs: *mut *const ov_tensor_t,
        num_images: usize,
        config: *const ov_genai_generation_config,
        streamer: *const streamer_callback,
        results: *mut *mut ov_genai_vlm_decoded_results,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Start chat with keeping history in kv cache.\n @param pipe A pointer to the ov_genai_vlm_pipeline instance.\n @return Status code of the operation: OK(0) for success."]
    pub fn ov_genai_vlm_pipeline_start_chat(pipe: *mut ov_genai_vlm_pipeline) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Finish chat and clear kv cache.\n @param pipe A pointer to the ov_genai_vlm_pipeline instance.\n @return Status code of the operation: OK(0) for success."]
    pub fn ov_genai_vlm_pipeline_finish_chat(pipe: *mut ov_genai_vlm_pipeline) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the GenerationConfig from ov_genai_vlm_pipeline.\n @param pipe A pointer to the ov_genai_vlm_pipeline instance.\n @param config A pointer to the newly created ov_genai_generation_config.\n @return Status code of the operation: OK(0) for success."]
    pub fn ov_genai_vlm_pipeline_get_generation_config(
        pipe: *const ov_genai_vlm_pipeline,
        config: *mut *mut ov_genai_generation_config,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the GenerationConfig to ov_genai_vlm_pipeline.\n @param pipe A pointer to the ov_genai_vlm_pipeline instance.\n @param config A pointer to the ov_genai_generation_config instance.\n @return Status code of the operation: OK(0) for success."]
    pub fn ov_genai_vlm_pipeline_set_generation_config(
        pipe: *mut ov_genai_vlm_pipeline,
        config: *mut ov_genai_generation_config,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Create ov_genai_whisper_generation_config.\n @param config A pointer to the newly created ov_genai_whisper_generation_config.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_create(
        config: *mut *mut ov_genai_whisper_generation_config,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Create ov_genai_whisper_generation_config from JSON file.\n @param json_path Path to a .json file containing the whisper generation configuration to load.\n @param config A pointer to the newly created ov_genai_whisper_generation_config.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_create_from_json(
        json_path: *const ::std::os::raw::c_char,
        config: *mut *mut ov_genai_whisper_generation_config,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Release the memory allocated by ov_genai_whisper_generation_config.\n @param config A pointer to the ov_genai_whisper_generation_config to free memory."]
    pub fn ov_genai_whisper_generation_config_free(config: *mut ov_genai_whisper_generation_config);
}
unsafe extern "C" {
    #[doc = " @brief Get the underlying GenerationConfig from ov_genai_whisper_generation_config.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param generation_config A pointer to the newly created ov_genai_generation_config.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_get_generation_config(
        config: *const ov_genai_whisper_generation_config,
        generation_config: *mut *mut ov_genai_generation_config,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the decoder start token id.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param token_id The decoder start token id (default: 50258).\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_set_decoder_start_token_id(
        config: *mut ov_genai_whisper_generation_config,
        token_id: i64,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the decoder start token id.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param token_id A pointer to the decoder start token id.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_get_decoder_start_token_id(
        config: *const ov_genai_whisper_generation_config,
        token_id: *mut i64,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the padding token id.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param token_id The padding token id (default: 50257).\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_set_pad_token_id(
        config: *mut ov_genai_whisper_generation_config,
        token_id: i64,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the padding token id.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param token_id A pointer to the padding token id.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_get_pad_token_id(
        config: *const ov_genai_whisper_generation_config,
        token_id: *mut i64,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the translate token id.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param token_id The translate token id (default: 50358).\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_set_translate_token_id(
        config: *mut ov_genai_whisper_generation_config,
        token_id: i64,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the translate token id.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param token_id A pointer to the translate token id.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_get_translate_token_id(
        config: *const ov_genai_whisper_generation_config,
        token_id: *mut i64,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the transcribe token id.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param token_id The transcribe token id (default: 50359).\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_set_transcribe_token_id(
        config: *mut ov_genai_whisper_generation_config,
        token_id: i64,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the transcribe token id.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param token_id A pointer to the transcribe token id.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_get_transcribe_token_id(
        config: *const ov_genai_whisper_generation_config,
        token_id: *mut i64,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the previous start of transcript token id.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param token_id The previous start of transcript token id (default: 50361).\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_set_prev_sot_token_id(
        config: *mut ov_genai_whisper_generation_config,
        token_id: i64,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the previous start of transcript token id.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param token_id A pointer to the previous start of transcript token id.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_get_prev_sot_token_id(
        config: *const ov_genai_whisper_generation_config,
        token_id: *mut i64,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the no timestamps token id.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param token_id The no timestamps token id (default: 50363).\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_set_no_timestamps_token_id(
        config: *mut ov_genai_whisper_generation_config,
        token_id: i64,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the no timestamps token id.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param token_id A pointer to the no timestamps token id.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_get_no_timestamps_token_id(
        config: *const ov_genai_whisper_generation_config,
        token_id: *mut i64,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the maximum initial timestamp index.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param index The maximum initial timestamp index (default: 50).\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_set_max_initial_timestamp_index(
        config: *mut ov_genai_whisper_generation_config,
        index: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the maximum initial timestamp index.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param index A pointer to the maximum initial timestamp index.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_get_max_initial_timestamp_index(
        config: *const ov_genai_whisper_generation_config,
        index: *mut usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set whether the model is multilingual.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param is_multilingual True if the model is multilingual (default: true).\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_set_is_multilingual(
        config: *mut ov_genai_whisper_generation_config,
        is_multilingual: bool,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get whether the model is multilingual.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param is_multilingual A pointer to the multilingual flag.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_get_is_multilingual(
        config: *const ov_genai_whisper_generation_config,
        is_multilingual: *mut bool,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the language for generation.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param language The language token (e.g., \"en\", \"fr\", \"de\"). Can be NULL to unset.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_set_language(
        config: *mut ov_genai_whisper_generation_config,
        language: *const ::std::os::raw::c_char,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the language for generation.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param language A pointer to the pre-allocated language buffer. It can be set to NULL, in which case the\n *language_size will provide the needed buffer size. The user should then allocate the required buffer size and call\n this function again to obtain the entire language.\n @param language_size A Pointer to the size of the language buffer, including the null terminator. If\n language is not NULL, *language_size should be greater than or equal to the language size; otherwise, the function\n will return OUT_OF_BOUNDS(-6).\n @return ov_status_e A status code, return OK(0) if successful. NOT_FOUND(-5) if language is not set."]
    pub fn ov_genai_whisper_generation_config_get_language(
        config: *const ov_genai_whisper_generation_config,
        language: *mut ::std::os::raw::c_char,
        language_size: *mut usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the task for generation.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param task The task (\"translate\" or \"transcribe\"). Can be NULL to unset.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_set_task(
        config: *mut ov_genai_whisper_generation_config,
        task: *const ::std::os::raw::c_char,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the task for generation.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param task A pointer to the pre-allocated task buffer. It can be set to NULL, in which case the\n *task_size will provide the needed buffer size. The user should then allocate the required buffer size and call\n this function again to obtain the entire task.\n @param task_size A Pointer to the size of the task buffer, including the null terminator. If\n task is not NULL, *task_size should be greater than or equal to the task size; otherwise, the function\n will return OUT_OF_BOUNDS(-6).\n @return ov_status_e A status code, return OK(0) if successful. NOT_FOUND(-5) if task is not set."]
    pub fn ov_genai_whisper_generation_config_get_task(
        config: *const ov_genai_whisper_generation_config,
        task: *mut ::std::os::raw::c_char,
        task_size: *mut usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set whether to return timestamps.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param return_timestamps True to return timestamps for segments (default: false).\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_set_return_timestamps(
        config: *mut ov_genai_whisper_generation_config,
        return_timestamps: bool,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get whether to return timestamps.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param return_timestamps A pointer to the return timestamps flag.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_get_return_timestamps(
        config: *const ov_genai_whisper_generation_config,
        return_timestamps: *mut bool,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the initial prompt for generation.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param initial_prompt The initial prompt text. Can be NULL to unset.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_set_initial_prompt(
        config: *mut ov_genai_whisper_generation_config,
        initial_prompt: *const ::std::os::raw::c_char,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the initial prompt for generation.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param initial_prompt A pointer to the pre-allocated initial prompt buffer. It can be set to NULL, in which case the\n *prompt_size will provide the needed buffer size. The user should then allocate the required buffer size and call\n this function again to obtain the entire initial prompt.\n @param prompt_size A Pointer to the size of the initial prompt buffer, including the null terminator. If\n initial_prompt is not NULL, *prompt_size should be greater than or equal to the prompt size; otherwise, the function\n will return OUT_OF_BOUNDS(-6).\n @return ov_status_e A status code, return OK(0) if successful. NOT_FOUND(-5) if initial prompt is not set."]
    pub fn ov_genai_whisper_generation_config_get_initial_prompt(
        config: *const ov_genai_whisper_generation_config,
        initial_prompt: *mut ::std::os::raw::c_char,
        prompt_size: *mut usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the hotwords for generation.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param hotwords The hotwords text. Can be NULL to unset.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_set_hotwords(
        config: *mut ov_genai_whisper_generation_config,
        hotwords: *const ::std::os::raw::c_char,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the hotwords for generation.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param hotwords A pointer to the pre-allocated hotwords buffer. It can be set to NULL, in which case the\n *hotwords_size will provide the needed buffer size. The user should then allocate the required buffer size and call\n this function again to obtain the entire hotwords.\n @param hotwords_size A Pointer to the size of the hotwords buffer, including the null terminator. If\n hotwords is not NULL, *hotwords_size should be greater than or equal to the hotwords size; otherwise, the function\n will return OUT_OF_BOUNDS(-6).\n @return ov_status_e A status code, return OK(0) if successful. NOT_FOUND(-5) if hotwords is not set."]
    pub fn ov_genai_whisper_generation_config_get_hotwords(
        config: *const ov_genai_whisper_generation_config,
        hotwords: *mut ::std::os::raw::c_char,
        hotwords_size: *mut usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the begin suppress tokens.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param tokens A pointer to the array of token ids to suppress at the beginning.\n @param tokens_count The number of tokens in the array.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_set_begin_suppress_tokens(
        config: *mut ov_genai_whisper_generation_config,
        tokens: *const i64,
        tokens_count: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the begin suppress tokens count.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param tokens_count A pointer to the number of begin suppress tokens.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_get_begin_suppress_tokens_count(
        config: *const ov_genai_whisper_generation_config,
        tokens_count: *mut usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the begin suppress tokens.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param tokens A pointer to the pre-allocated array of token ids. The array should be allocated with the size\n returned by ov_genai_whisper_generation_config_get_begin_suppress_tokens_count.\n @param tokens_count The size of the tokens array.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_get_begin_suppress_tokens(
        config: *const ov_genai_whisper_generation_config,
        tokens: *mut i64,
        tokens_count: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the suppress tokens.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param tokens A pointer to the array of token ids to suppress during generation.\n @param tokens_count The number of tokens in the array.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_set_suppress_tokens(
        config: *mut ov_genai_whisper_generation_config,
        tokens: *const i64,
        tokens_count: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the suppress tokens count.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param tokens_count A pointer to the number of suppress tokens.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_get_suppress_tokens_count(
        config: *const ov_genai_whisper_generation_config,
        tokens_count: *mut usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the suppress tokens.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @param tokens A pointer to the pre-allocated array of token ids. The array should be allocated with the size\n returned by ov_genai_whisper_generation_config_get_suppress_tokens_count.\n @param tokens_count The size of the tokens array.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_get_suppress_tokens(
        config: *const ov_genai_whisper_generation_config,
        tokens: *mut i64,
        tokens_count: usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Validate the whisper generation configuration.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_generation_config_validate(
        config: *mut ov_genai_whisper_generation_config,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Create WhisperDecodedResultChunk\n @param chunk A pointer to the newly created ov_genai_whisper_decoded_result_chunk.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_decoded_result_chunk_create(
        chunk: *mut *mut ov_genai_whisper_decoded_result_chunk,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Release the memory allocated by ov_genai_whisper_decoded_result_chunk.\n @param chunk A pointer to the ov_genai_whisper_decoded_result_chunk to free memory."]
    pub fn ov_genai_whisper_decoded_result_chunk_free(
        chunk: *mut ov_genai_whisper_decoded_result_chunk,
    );
}
unsafe extern "C" {
    #[doc = " @brief Get start timestamp from ov_genai_whisper_decoded_result_chunk.\n @param chunk A pointer to the ov_genai_whisper_decoded_result_chunk instance.\n @param start_ts A pointer to the start timestamp value.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_decoded_result_chunk_get_start_ts(
        chunk: *const ov_genai_whisper_decoded_result_chunk,
        start_ts: *mut f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get end timestamp from ov_genai_whisper_decoded_result_chunk.\n @param chunk A pointer to the ov_genai_whisper_decoded_result_chunk instance.\n @param end_ts A pointer to the end timestamp value.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_decoded_result_chunk_get_end_ts(
        chunk: *const ov_genai_whisper_decoded_result_chunk,
        end_ts: *mut f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get text from ov_genai_whisper_decoded_result_chunk.\n @param chunk A pointer to the ov_genai_whisper_decoded_result_chunk instance.\n @param text A pointer to the pre-allocated text buffer. It can be set to NULL, in which case the\n *text_size will provide the needed buffer size. The user should then allocate the required buffer size and call\n this function again to obtain the entire text.\n @param text_size A Pointer to the size of the text from the chunk, including the null terminator. If\n text is not NULL, *text_size should be greater than or equal to the text size; otherwise, the function\n will return OUT_OF_BOUNDS(-6).\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_decoded_result_chunk_get_text(
        chunk: *const ov_genai_whisper_decoded_result_chunk,
        text: *mut ::std::os::raw::c_char,
        text_size: *mut usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Create WhisperDecodedResults\n @param results A pointer to the newly created ov_genai_whisper_decoded_results.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_decoded_results_create(
        results: *mut *mut ov_genai_whisper_decoded_results,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Release the memory allocated by ov_genai_whisper_decoded_results.\n @param results A pointer to the ov_genai_whisper_decoded_results to free memory."]
    pub fn ov_genai_whisper_decoded_results_free(results: *mut ov_genai_whisper_decoded_results);
}
unsafe extern "C" {
    #[doc = " @brief Get performance metrics from ov_genai_whisper_decoded_results.\n @param results A pointer to the ov_genai_whisper_decoded_results instance.\n @param metrics A pointer to the newly created ov_genai_perf_metrics.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_decoded_results_get_perf_metrics(
        results: *const ov_genai_whisper_decoded_results,
        metrics: *mut *mut ov_genai_perf_metrics,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get number of text results from ov_genai_whisper_decoded_results.\n @param results A pointer to the ov_genai_whisper_decoded_results instance.\n @param count A pointer to the number of text results.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_decoded_results_get_texts_count(
        results: *const ov_genai_whisper_decoded_results,
        count: *mut usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get text result at specific index from ov_genai_whisper_decoded_results.\n @param results A pointer to the ov_genai_whisper_decoded_results instance.\n @param index The index of the text result to retrieve.\n @param text A pointer to the pre-allocated text buffer. It can be set to NULL, in which case the\n *text_size will provide the needed buffer size. The user should then allocate the required buffer size and call\n this function again to obtain the entire text.\n @param text_size A Pointer to the size of the text from the results, including the null terminator. If\n text is not NULL, *text_size should be greater than or equal to the text size; otherwise, the function\n will return OUT_OF_BOUNDS(-6).\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_decoded_results_get_text_at(
        results: *const ov_genai_whisper_decoded_results,
        index: usize,
        text: *mut ::std::os::raw::c_char,
        text_size: *mut usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get score at specific index from ov_genai_whisper_decoded_results.\n @param results A pointer to the ov_genai_whisper_decoded_results instance.\n @param index The index of the score to retrieve.\n @param score A pointer to the score value.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_decoded_results_get_score_at(
        results: *const ov_genai_whisper_decoded_results,
        index: usize,
        score: *mut f32,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Check if chunks are available from ov_genai_whisper_decoded_results.\n @param results A pointer to the ov_genai_whisper_decoded_results instance.\n @param has_chunks A pointer to the boolean indicating if chunks are available.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_decoded_results_has_chunks(
        results: *const ov_genai_whisper_decoded_results,
        has_chunks: *mut bool,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get number of chunks from ov_genai_whisper_decoded_results.\n @param results A pointer to the ov_genai_whisper_decoded_results instance.\n @param count A pointer to the number of chunks.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_decoded_results_get_chunks_count(
        results: *const ov_genai_whisper_decoded_results,
        count: *mut usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get chunk at specific index from ov_genai_whisper_decoded_results.\n @param results A pointer to the ov_genai_whisper_decoded_results instance.\n @param index The index of the chunk to retrieve.\n @param chunk A pointer to the newly created ov_genai_whisper_decoded_result_chunk.\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_decoded_results_get_chunk_at(
        results: *const ov_genai_whisper_decoded_results,
        index: usize,
        chunk: *mut *mut ov_genai_whisper_decoded_result_chunk,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get string representation from ov_genai_whisper_decoded_results.\n @param results A pointer to the ov_genai_whisper_decoded_results instance.\n @param output A pointer to the pre-allocated output string buffer. It can be set to NULL, in which case the\n *output_size will provide the needed buffer size. The user should then allocate the required buffer size and call\n this function again to obtain the entire output.\n @param output_size A Pointer to the size of the output string from the results, including the null terminator. If\n output is not NULL, *output_size should be greater than or equal to the result string size; otherwise, the function\n will return OUT_OF_BOUNDS(-6).\n @return ov_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_whisper_decoded_results_get_string(
        results: *const ov_genai_whisper_decoded_results,
        output: *mut ::std::os::raw::c_char,
        output_size: *mut usize,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Release the memory allocated by ov_genai_whisper_pipeline.\n @param pipeline A pointer to the ov_genai_whisper_pipeline to free memory."]
    pub fn ov_genai_whisper_pipeline_free(pipeline: *mut ov_genai_whisper_pipeline);
}
unsafe extern "C" {
    #[doc = " @brief Generate results by ov_genai_whisper_pipeline from raw speech input.\n @param pipeline A pointer to the ov_genai_whisper_pipeline instance.\n @param raw_speech A pointer to the raw speech input array (float values).\n @param raw_speech_size The size of the raw speech input array.\n @param config A pointer to the ov_genai_whisper_generation_config, the pointer can be NULL.\n @param results A pointer to the ov_genai_whisper_decoded_results, which retrieves the results of the generation.\n @return Status code of the operation: OK(0) for success."]
    pub fn ov_genai_whisper_pipeline_generate(
        pipeline: *mut ov_genai_whisper_pipeline,
        raw_speech: *const f32,
        raw_speech_size: usize,
        config: *const ov_genai_whisper_generation_config,
        results: *mut *mut ov_genai_whisper_decoded_results,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Get the WhisperGenerationConfig from ov_genai_whisper_pipeline.\n @param pipeline A pointer to the ov_genai_whisper_pipeline instance.\n @param config A pointer to the newly created ov_genai_whisper_generation_config.\n @return Status code of the operation: OK(0) for success."]
    pub fn ov_genai_whisper_pipeline_get_generation_config(
        pipeline: *const ov_genai_whisper_pipeline,
        config: *mut *mut ov_genai_whisper_generation_config,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Set the WhisperGenerationConfig to ov_genai_whisper_pipeline.\n @param pipeline A pointer to the ov_genai_whisper_pipeline instance.\n @param config A pointer to the ov_genai_whisper_generation_config instance.\n @return Status code of the operation: OK(0) for success."]
    pub fn ov_genai_whisper_pipeline_set_generation_config(
        pipeline: *mut ov_genai_whisper_pipeline,
        config: *mut ov_genai_whisper_generation_config,
    ) -> ov_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Create a new empty JsonContainer instance (as an object).\n @param container A pointer to the newly created ov_genai_json_container.\n @return ov_genai_json_container_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_json_container_create(
        container: *mut *mut ov_genai_json_container,
    ) -> ov_genai_json_container_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Create a JsonContainer instance from a JSON string.\n @param container A pointer to the newly created ov_genai_json_container.\n @param json_str A JSON string (object, array, or primitive).\n @return ov_genai_json_container_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_json_container_create_from_json_string(
        container: *mut *mut ov_genai_json_container,
        json_str: *const ::std::os::raw::c_char,
    ) -> ov_genai_json_container_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Create a JsonContainer instance as an empty JSON object.\n @param container A pointer to the newly created ov_genai_json_container.\n @return ov_genai_json_container_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_json_container_create_object(
        container: *mut *mut ov_genai_json_container,
    ) -> ov_genai_json_container_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Create a JsonContainer instance as an empty JSON array.\n @param container A pointer to the newly created ov_genai_json_container.\n @return ov_genai_json_container_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_json_container_create_array(
        container: *mut *mut ov_genai_json_container,
    ) -> ov_genai_json_container_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Release the memory allocated by ov_genai_json_container.\n @param container A pointer to the ov_genai_json_container to free memory."]
    pub fn ov_genai_json_container_free(container: *mut ov_genai_json_container);
}
unsafe extern "C" {
    #[doc = " @brief Convert JsonContainer to JSON string.\n @param container A pointer to the ov_genai_json_container instance.\n @param output A pointer to the pre-allocated output string buffer. It can be set to NULL, in which case the\n *output_size will provide the needed buffer size. The user should then allocate the required buffer size and call\n this function again to obtain the entire output.\n @param output_size A pointer to the size of the output string, including the null terminator. If output is not NULL,\n *output_size should be greater than or equal to the result string size; otherwise, the function will return\n OUT_OF_BOUNDS(-3).\n @return ov_genai_json_container_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_json_container_to_json_string(
        container: *const ov_genai_json_container,
        output: *mut ::std::os::raw::c_char,
        output_size: *mut usize,
    ) -> ov_genai_json_container_status_e;
}
unsafe extern "C" {
    #[doc = " @brief Create a copy of JsonContainer.\n @param source A pointer to the source ov_genai_json_container instance.\n @param target A pointer to store the copied ov_genai_json_container.\n @return ov_genai_json_container_status_e A status code, return OK(0) if successful."]
    pub fn ov_genai_json_container_copy(
        source: *const ov_genai_json_container,
        target: *mut *mut ov_genai_json_container,
    ) -> ov_genai_json_container_status_e;
}

}