@walletconnect/react-native-compat 2.17.2-canary-ca-1 → 2.17.2-canary-ca-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2382 +0,0 @@
1
- // This file was autogenerated by some hot garbage in the `uniffi` crate.
2
- // Trust me, you don't want to mess with it!
3
-
4
- @file:Suppress("NAME_SHADOWING")
5
-
6
- package uniffi.uniffi_yttrium
7
-
8
- // Common helper code.
9
- //
10
- // Ideally this would live in a separate .kt file where it can be unittested etc
11
- // in isolation, and perhaps even published as a re-useable package.
12
- //
13
- // However, it's important that the details of how this helper code works (e.g. the
14
- // way that different builtin types are passed across the FFI) exactly match what's
15
- // expected by the Rust code on the other side of the interface. In practice right
16
- // now that means coming from the exact some version of `uniffi` that was used to
17
- // compile the Rust component. The easiest way to ensure this is to bundle the Kotlin
18
- // helpers directly inline like we're doing here.
19
-
20
- import com.sun.jna.Library
21
- import com.sun.jna.IntegerType
22
- import com.sun.jna.Native
23
- import com.sun.jna.Pointer
24
- import com.sun.jna.Structure
25
- import com.sun.jna.Callback
26
- import com.sun.jna.ptr.*
27
- import java.nio.ByteBuffer
28
- import java.nio.ByteOrder
29
- import java.nio.CharBuffer
30
- import java.nio.charset.CodingErrorAction
31
- import java.util.concurrent.atomic.AtomicLong
32
- import java.util.concurrent.ConcurrentHashMap
33
- import android.os.Build
34
- import androidx.annotation.RequiresApi
35
- import java.util.concurrent.atomic.AtomicBoolean
36
- import kotlin.coroutines.resume
37
- import kotlinx.coroutines.CancellableContinuation
38
- import kotlinx.coroutines.DelicateCoroutinesApi
39
- import kotlinx.coroutines.GlobalScope
40
- import kotlinx.coroutines.Job
41
- import kotlinx.coroutines.launch
42
- import kotlinx.coroutines.suspendCancellableCoroutine
43
- import uniffi.yttrium.Config
44
- import uniffi.yttrium.FfiConverterTypeConfig
45
- import uniffi.yttrium.FfiConverterTypeRouteResponse
46
- import uniffi.yttrium.FfiConverterTypeStatusResponse
47
- import uniffi.yttrium.FfiConverterTypeStatusResponseCompleted
48
- import uniffi.yttrium.RouteResponse
49
- import uniffi.yttrium.StatusResponse
50
- import uniffi.yttrium.StatusResponseCompleted
51
- import uniffi.yttrium.RustBuffer as RustBufferConfig
52
- import uniffi.yttrium.RustBuffer as RustBufferRouteResponse
53
- import uniffi.yttrium.RustBuffer as RustBufferStatusResponse
54
- import uniffi.yttrium.RustBuffer as RustBufferStatusResponseCompleted
55
-
56
- // This is a helper for safely working with byte buffers returned from the Rust code.
57
- // A rust-owned buffer is represented by its capacity, its current length, and a
58
- // pointer to the underlying data.
59
-
60
- /**
61
- * @suppress
62
- */
63
- @Structure.FieldOrder("capacity", "len", "data")
64
- open class RustBuffer : Structure() {
65
- // Note: `capacity` and `len` are actually `ULong` values, but JVM only supports signed values.
66
- // When dealing with these fields, make sure to call `toULong()`.
67
- @JvmField var capacity: Long = 0
68
- @JvmField var len: Long = 0
69
- @JvmField var data: Pointer? = null
70
-
71
- class ByValue: RustBuffer(), Structure.ByValue
72
- class ByReference: RustBuffer(), Structure.ByReference
73
-
74
- internal fun setValue(other: RustBuffer) {
75
- capacity = other.capacity
76
- len = other.len
77
- data = other.data
78
- }
79
-
80
- companion object {
81
- internal fun alloc(size: ULong = 0UL) = uniffiRustCall() { status ->
82
- // Note: need to convert the size to a `Long` value to make this work with JVM.
83
- UniffiLib.INSTANCE.ffi_uniffi_yttrium_rustbuffer_alloc(size.toLong(), status)
84
- }.also {
85
- if(it.data == null) {
86
- throw RuntimeException("RustBuffer.alloc() returned null data pointer (size=${size})")
87
- }
88
- }
89
-
90
- internal fun create(capacity: ULong, len: ULong, data: Pointer?): RustBuffer.ByValue {
91
- var buf = RustBuffer.ByValue()
92
- buf.capacity = capacity.toLong()
93
- buf.len = len.toLong()
94
- buf.data = data
95
- return buf
96
- }
97
-
98
- internal fun free(buf: RustBuffer.ByValue) = uniffiRustCall() { status ->
99
- UniffiLib.INSTANCE.ffi_uniffi_yttrium_rustbuffer_free(buf, status)
100
- }
101
- }
102
-
103
- @Suppress("TooGenericExceptionThrown")
104
- fun asByteBuffer() =
105
- this.data?.getByteBuffer(0, this.len.toLong())?.also {
106
- it.order(ByteOrder.BIG_ENDIAN)
107
- }
108
- }
109
-
110
- /**
111
- * The equivalent of the `*mut RustBuffer` type.
112
- * Required for callbacks taking in an out pointer.
113
- *
114
- * Size is the sum of all values in the struct.
115
- *
116
- * @suppress
117
- */
118
- class RustBufferByReference : ByReference(16) {
119
- /**
120
- * Set the pointed-to `RustBuffer` to the given value.
121
- */
122
- fun setValue(value: RustBuffer.ByValue) {
123
- // NOTE: The offsets are as they are in the C-like struct.
124
- val pointer = getPointer()
125
- pointer.setLong(0, value.capacity)
126
- pointer.setLong(8, value.len)
127
- pointer.setPointer(16, value.data)
128
- }
129
-
130
- /**
131
- * Get a `RustBuffer.ByValue` from this reference.
132
- */
133
- fun getValue(): RustBuffer.ByValue {
134
- val pointer = getPointer()
135
- val value = RustBuffer.ByValue()
136
- value.writeField("capacity", pointer.getLong(0))
137
- value.writeField("len", pointer.getLong(8))
138
- value.writeField("data", pointer.getLong(16))
139
-
140
- return value
141
- }
142
- }
143
-
144
- // This is a helper for safely passing byte references into the rust code.
145
- // It's not actually used at the moment, because there aren't many things that you
146
- // can take a direct pointer to in the JVM, and if we're going to copy something
147
- // then we might as well copy it into a `RustBuffer`. But it's here for API
148
- // completeness.
149
-
150
- @Structure.FieldOrder("len", "data")
151
- internal open class ForeignBytes : Structure() {
152
- @JvmField var len: Int = 0
153
- @JvmField var data: Pointer? = null
154
-
155
- class ByValue : ForeignBytes(), Structure.ByValue
156
- }
157
- /**
158
- * The FfiConverter interface handles converter types to and from the FFI
159
- *
160
- * All implementing objects should be public to support external types. When a
161
- * type is external we need to import it's FfiConverter.
162
- *
163
- * @suppress
164
- */
165
- public interface FfiConverter<KotlinType, FfiType> {
166
- // Convert an FFI type to a Kotlin type
167
- fun lift(value: FfiType): KotlinType
168
-
169
- // Convert an Kotlin type to an FFI type
170
- fun lower(value: KotlinType): FfiType
171
-
172
- // Read a Kotlin type from a `ByteBuffer`
173
- fun read(buf: ByteBuffer): KotlinType
174
-
175
- // Calculate bytes to allocate when creating a `RustBuffer`
176
- //
177
- // This must return at least as many bytes as the write() function will
178
- // write. It can return more bytes than needed, for example when writing
179
- // Strings we can't know the exact bytes needed until we the UTF-8
180
- // encoding, so we pessimistically allocate the largest size possible (3
181
- // bytes per codepoint). Allocating extra bytes is not really a big deal
182
- // because the `RustBuffer` is short-lived.
183
- fun allocationSize(value: KotlinType): ULong
184
-
185
- // Write a Kotlin type to a `ByteBuffer`
186
- fun write(value: KotlinType, buf: ByteBuffer)
187
-
188
- // Lower a value into a `RustBuffer`
189
- //
190
- // This method lowers a value into a `RustBuffer` rather than the normal
191
- // FfiType. It's used by the callback interface code. Callback interface
192
- // returns are always serialized into a `RustBuffer` regardless of their
193
- // normal FFI type.
194
- fun lowerIntoRustBuffer(value: KotlinType): RustBuffer.ByValue {
195
- val rbuf = RustBuffer.alloc(allocationSize(value))
196
- try {
197
- val bbuf = rbuf.data!!.getByteBuffer(0, rbuf.capacity).also {
198
- it.order(ByteOrder.BIG_ENDIAN)
199
- }
200
- write(value, bbuf)
201
- rbuf.writeField("len", bbuf.position().toLong())
202
- return rbuf
203
- } catch (e: Throwable) {
204
- RustBuffer.free(rbuf)
205
- throw e
206
- }
207
- }
208
-
209
- // Lift a value from a `RustBuffer`.
210
- //
211
- // This here mostly because of the symmetry with `lowerIntoRustBuffer()`.
212
- // It's currently only used by the `FfiConverterRustBuffer` class below.
213
- fun liftFromRustBuffer(rbuf: RustBuffer.ByValue): KotlinType {
214
- val byteBuf = rbuf.asByteBuffer()!!
215
- try {
216
- val item = read(byteBuf)
217
- if (byteBuf.hasRemaining()) {
218
- throw RuntimeException("junk remaining in buffer after lifting, something is very wrong!!")
219
- }
220
- return item
221
- } finally {
222
- RustBuffer.free(rbuf)
223
- }
224
- }
225
- }
226
-
227
- /**
228
- * FfiConverter that uses `RustBuffer` as the FfiType
229
- *
230
- * @suppress
231
- */
232
- public interface FfiConverterRustBuffer<KotlinType>: FfiConverter<KotlinType, RustBuffer.ByValue> {
233
- override fun lift(value: RustBuffer.ByValue) = liftFromRustBuffer(value)
234
- override fun lower(value: KotlinType) = lowerIntoRustBuffer(value)
235
- }
236
- // A handful of classes and functions to support the generated data structures.
237
- // This would be a good candidate for isolating in its own ffi-support lib.
238
-
239
- internal const val UNIFFI_CALL_SUCCESS = 0.toByte()
240
- internal const val UNIFFI_CALL_ERROR = 1.toByte()
241
- internal const val UNIFFI_CALL_UNEXPECTED_ERROR = 2.toByte()
242
-
243
- @Structure.FieldOrder("code", "error_buf")
244
- internal open class UniffiRustCallStatus : Structure() {
245
- @JvmField var code: Byte = 0
246
- @JvmField var error_buf: RustBuffer.ByValue = RustBuffer.ByValue()
247
-
248
- class ByValue: UniffiRustCallStatus(), Structure.ByValue
249
-
250
- fun isSuccess(): Boolean {
251
- return code == UNIFFI_CALL_SUCCESS
252
- }
253
-
254
- fun isError(): Boolean {
255
- return code == UNIFFI_CALL_ERROR
256
- }
257
-
258
- fun isPanic(): Boolean {
259
- return code == UNIFFI_CALL_UNEXPECTED_ERROR
260
- }
261
-
262
- companion object {
263
- fun create(code: Byte, errorBuf: RustBuffer.ByValue): UniffiRustCallStatus.ByValue {
264
- val callStatus = UniffiRustCallStatus.ByValue()
265
- callStatus.code = code
266
- callStatus.error_buf = errorBuf
267
- return callStatus
268
- }
269
- }
270
- }
271
-
272
- class InternalException(message: String) : kotlin.Exception(message)
273
-
274
- /**
275
- * Each top-level error class has a companion object that can lift the error from the call status's rust buffer
276
- *
277
- * @suppress
278
- */
279
- interface UniffiRustCallStatusErrorHandler<E> {
280
- fun lift(error_buf: RustBuffer.ByValue): E;
281
- }
282
-
283
- // Helpers for calling Rust
284
- // In practice we usually need to be synchronized to call this safely, so it doesn't
285
- // synchronize itself
286
-
287
- // Call a rust function that returns a Result<>. Pass in the Error class companion that corresponds to the Err
288
- private inline fun <U, E: kotlin.Exception> uniffiRustCallWithError(errorHandler: UniffiRustCallStatusErrorHandler<E>, callback: (UniffiRustCallStatus) -> U): U {
289
- var status = UniffiRustCallStatus()
290
- val return_value = callback(status)
291
- uniffiCheckCallStatus(errorHandler, status)
292
- return return_value
293
- }
294
-
295
- // Check UniffiRustCallStatus and throw an error if the call wasn't successful
296
- private fun<E: kotlin.Exception> uniffiCheckCallStatus(errorHandler: UniffiRustCallStatusErrorHandler<E>, status: UniffiRustCallStatus) {
297
- if (status.isSuccess()) {
298
- return
299
- } else if (status.isError()) {
300
- throw errorHandler.lift(status.error_buf)
301
- } else if (status.isPanic()) {
302
- // when the rust code sees a panic, it tries to construct a rustbuffer
303
- // with the message. but if that code panics, then it just sends back
304
- // an empty buffer.
305
- if (status.error_buf.len > 0) {
306
- throw InternalException(FfiConverterString.lift(status.error_buf))
307
- } else {
308
- throw InternalException("Rust panic")
309
- }
310
- } else {
311
- throw InternalException("Unknown rust call status: $status.code")
312
- }
313
- }
314
-
315
- /**
316
- * UniffiRustCallStatusErrorHandler implementation for times when we don't expect a CALL_ERROR
317
- *
318
- * @suppress
319
- */
320
- object UniffiNullRustCallStatusErrorHandler: UniffiRustCallStatusErrorHandler<InternalException> {
321
- override fun lift(error_buf: RustBuffer.ByValue): InternalException {
322
- RustBuffer.free(error_buf)
323
- return InternalException("Unexpected CALL_ERROR")
324
- }
325
- }
326
-
327
- // Call a rust function that returns a plain value
328
- private inline fun <U> uniffiRustCall(callback: (UniffiRustCallStatus) -> U): U {
329
- return uniffiRustCallWithError(UniffiNullRustCallStatusErrorHandler, callback)
330
- }
331
-
332
- internal inline fun<T> uniffiTraitInterfaceCall(
333
- callStatus: UniffiRustCallStatus,
334
- makeCall: () -> T,
335
- writeReturn: (T) -> Unit,
336
- ) {
337
- try {
338
- writeReturn(makeCall())
339
- } catch(e: kotlin.Exception) {
340
- callStatus.code = UNIFFI_CALL_UNEXPECTED_ERROR
341
- callStatus.error_buf = FfiConverterString.lower(e.toString())
342
- }
343
- }
344
-
345
- internal inline fun<T, reified E: Throwable> uniffiTraitInterfaceCallWithError(
346
- callStatus: UniffiRustCallStatus,
347
- makeCall: () -> T,
348
- writeReturn: (T) -> Unit,
349
- lowerError: (E) -> RustBuffer.ByValue
350
- ) {
351
- try {
352
- writeReturn(makeCall())
353
- } catch(e: kotlin.Exception) {
354
- if (e is E) {
355
- callStatus.code = UNIFFI_CALL_ERROR
356
- callStatus.error_buf = lowerError(e)
357
- } else {
358
- callStatus.code = UNIFFI_CALL_UNEXPECTED_ERROR
359
- callStatus.error_buf = FfiConverterString.lower(e.toString())
360
- }
361
- }
362
- }
363
- // Map handles to objects
364
- //
365
- // This is used pass an opaque 64-bit handle representing a foreign object to the Rust code.
366
- internal class UniffiHandleMap<T: Any> {
367
- private val map = ConcurrentHashMap<Long, T>()
368
- private val counter = java.util.concurrent.atomic.AtomicLong(0)
369
-
370
- val size: Int
371
- get() = map.size
372
-
373
- // Insert a new object into the handle map and get a handle for it
374
- fun insert(obj: T): Long {
375
- val handle = counter.getAndAdd(1)
376
- map.put(handle, obj)
377
- return handle
378
- }
379
-
380
- // Get an object from the handle map
381
- fun get(handle: Long): T {
382
- return map.get(handle) ?: throw InternalException("UniffiHandleMap.get: Invalid handle")
383
- }
384
-
385
- // Remove an entry from the handlemap and get the Kotlin object back
386
- fun remove(handle: Long): T {
387
- return map.remove(handle) ?: throw InternalException("UniffiHandleMap: Invalid handle")
388
- }
389
- }
390
-
391
- // Contains loading, initialization code,
392
- // and the FFI Function declarations in a com.sun.jna.Library.
393
- @Synchronized
394
- private fun findLibraryName(componentName: String): String {
395
- val libOverride = System.getProperty("uniffi.component.$componentName.libraryOverride")
396
- if (libOverride != null) {
397
- return libOverride
398
- }
399
- return "uniffi_yttrium"
400
- }
401
-
402
- private inline fun <reified Lib : Library> loadIndirect(
403
- componentName: String
404
- ): Lib {
405
- return Native.load<Lib>(findLibraryName(componentName), Lib::class.java)
406
- }
407
-
408
- // Define FFI callback types
409
- internal interface UniffiRustFutureContinuationCallback : com.sun.jna.Callback {
410
- fun callback(`data`: Long,`pollResult`: Byte,)
411
- }
412
- internal interface UniffiForeignFutureFree : com.sun.jna.Callback {
413
- fun callback(`handle`: Long,)
414
- }
415
- internal interface UniffiCallbackInterfaceFree : com.sun.jna.Callback {
416
- fun callback(`handle`: Long,)
417
- }
418
- @Structure.FieldOrder("handle", "free")
419
- internal open class UniffiForeignFuture(
420
- @JvmField internal var `handle`: Long = 0.toLong(),
421
- @JvmField internal var `free`: UniffiForeignFutureFree? = null,
422
- ) : Structure() {
423
- class UniffiByValue(
424
- `handle`: Long = 0.toLong(),
425
- `free`: UniffiForeignFutureFree? = null,
426
- ): UniffiForeignFuture(`handle`,`free`,), Structure.ByValue
427
-
428
- internal fun uniffiSetValue(other: UniffiForeignFuture) {
429
- `handle` = other.`handle`
430
- `free` = other.`free`
431
- }
432
-
433
- }
434
- @Structure.FieldOrder("returnValue", "callStatus")
435
- internal open class UniffiForeignFutureStructU8(
436
- @JvmField internal var `returnValue`: Byte = 0.toByte(),
437
- @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
438
- ) : Structure() {
439
- class UniffiByValue(
440
- `returnValue`: Byte = 0.toByte(),
441
- `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
442
- ): UniffiForeignFutureStructU8(`returnValue`,`callStatus`,), Structure.ByValue
443
-
444
- internal fun uniffiSetValue(other: UniffiForeignFutureStructU8) {
445
- `returnValue` = other.`returnValue`
446
- `callStatus` = other.`callStatus`
447
- }
448
-
449
- }
450
- internal interface UniffiForeignFutureCompleteU8 : com.sun.jna.Callback {
451
- fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU8.UniffiByValue,)
452
- }
453
- @Structure.FieldOrder("returnValue", "callStatus")
454
- internal open class UniffiForeignFutureStructI8(
455
- @JvmField internal var `returnValue`: Byte = 0.toByte(),
456
- @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
457
- ) : Structure() {
458
- class UniffiByValue(
459
- `returnValue`: Byte = 0.toByte(),
460
- `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
461
- ): UniffiForeignFutureStructI8(`returnValue`,`callStatus`,), Structure.ByValue
462
-
463
- internal fun uniffiSetValue(other: UniffiForeignFutureStructI8) {
464
- `returnValue` = other.`returnValue`
465
- `callStatus` = other.`callStatus`
466
- }
467
-
468
- }
469
- internal interface UniffiForeignFutureCompleteI8 : com.sun.jna.Callback {
470
- fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI8.UniffiByValue,)
471
- }
472
- @Structure.FieldOrder("returnValue", "callStatus")
473
- internal open class UniffiForeignFutureStructU16(
474
- @JvmField internal var `returnValue`: Short = 0.toShort(),
475
- @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
476
- ) : Structure() {
477
- class UniffiByValue(
478
- `returnValue`: Short = 0.toShort(),
479
- `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
480
- ): UniffiForeignFutureStructU16(`returnValue`,`callStatus`,), Structure.ByValue
481
-
482
- internal fun uniffiSetValue(other: UniffiForeignFutureStructU16) {
483
- `returnValue` = other.`returnValue`
484
- `callStatus` = other.`callStatus`
485
- }
486
-
487
- }
488
- internal interface UniffiForeignFutureCompleteU16 : com.sun.jna.Callback {
489
- fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU16.UniffiByValue,)
490
- }
491
- @Structure.FieldOrder("returnValue", "callStatus")
492
- internal open class UniffiForeignFutureStructI16(
493
- @JvmField internal var `returnValue`: Short = 0.toShort(),
494
- @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
495
- ) : Structure() {
496
- class UniffiByValue(
497
- `returnValue`: Short = 0.toShort(),
498
- `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
499
- ): UniffiForeignFutureStructI16(`returnValue`,`callStatus`,), Structure.ByValue
500
-
501
- internal fun uniffiSetValue(other: UniffiForeignFutureStructI16) {
502
- `returnValue` = other.`returnValue`
503
- `callStatus` = other.`callStatus`
504
- }
505
-
506
- }
507
- internal interface UniffiForeignFutureCompleteI16 : com.sun.jna.Callback {
508
- fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI16.UniffiByValue,)
509
- }
510
- @Structure.FieldOrder("returnValue", "callStatus")
511
- internal open class UniffiForeignFutureStructU32(
512
- @JvmField internal var `returnValue`: Int = 0,
513
- @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
514
- ) : Structure() {
515
- class UniffiByValue(
516
- `returnValue`: Int = 0,
517
- `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
518
- ): UniffiForeignFutureStructU32(`returnValue`,`callStatus`,), Structure.ByValue
519
-
520
- internal fun uniffiSetValue(other: UniffiForeignFutureStructU32) {
521
- `returnValue` = other.`returnValue`
522
- `callStatus` = other.`callStatus`
523
- }
524
-
525
- }
526
- internal interface UniffiForeignFutureCompleteU32 : com.sun.jna.Callback {
527
- fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU32.UniffiByValue,)
528
- }
529
- @Structure.FieldOrder("returnValue", "callStatus")
530
- internal open class UniffiForeignFutureStructI32(
531
- @JvmField internal var `returnValue`: Int = 0,
532
- @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
533
- ) : Structure() {
534
- class UniffiByValue(
535
- `returnValue`: Int = 0,
536
- `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
537
- ): UniffiForeignFutureStructI32(`returnValue`,`callStatus`,), Structure.ByValue
538
-
539
- internal fun uniffiSetValue(other: UniffiForeignFutureStructI32) {
540
- `returnValue` = other.`returnValue`
541
- `callStatus` = other.`callStatus`
542
- }
543
-
544
- }
545
- internal interface UniffiForeignFutureCompleteI32 : com.sun.jna.Callback {
546
- fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI32.UniffiByValue,)
547
- }
548
- @Structure.FieldOrder("returnValue", "callStatus")
549
- internal open class UniffiForeignFutureStructU64(
550
- @JvmField internal var `returnValue`: Long = 0.toLong(),
551
- @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
552
- ) : Structure() {
553
- class UniffiByValue(
554
- `returnValue`: Long = 0.toLong(),
555
- `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
556
- ): UniffiForeignFutureStructU64(`returnValue`,`callStatus`,), Structure.ByValue
557
-
558
- internal fun uniffiSetValue(other: UniffiForeignFutureStructU64) {
559
- `returnValue` = other.`returnValue`
560
- `callStatus` = other.`callStatus`
561
- }
562
-
563
- }
564
- internal interface UniffiForeignFutureCompleteU64 : com.sun.jna.Callback {
565
- fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU64.UniffiByValue,)
566
- }
567
- @Structure.FieldOrder("returnValue", "callStatus")
568
- internal open class UniffiForeignFutureStructI64(
569
- @JvmField internal var `returnValue`: Long = 0.toLong(),
570
- @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
571
- ) : Structure() {
572
- class UniffiByValue(
573
- `returnValue`: Long = 0.toLong(),
574
- `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
575
- ): UniffiForeignFutureStructI64(`returnValue`,`callStatus`,), Structure.ByValue
576
-
577
- internal fun uniffiSetValue(other: UniffiForeignFutureStructI64) {
578
- `returnValue` = other.`returnValue`
579
- `callStatus` = other.`callStatus`
580
- }
581
-
582
- }
583
- internal interface UniffiForeignFutureCompleteI64 : com.sun.jna.Callback {
584
- fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI64.UniffiByValue,)
585
- }
586
- @Structure.FieldOrder("returnValue", "callStatus")
587
- internal open class UniffiForeignFutureStructF32(
588
- @JvmField internal var `returnValue`: Float = 0.0f,
589
- @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
590
- ) : Structure() {
591
- class UniffiByValue(
592
- `returnValue`: Float = 0.0f,
593
- `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
594
- ): UniffiForeignFutureStructF32(`returnValue`,`callStatus`,), Structure.ByValue
595
-
596
- internal fun uniffiSetValue(other: UniffiForeignFutureStructF32) {
597
- `returnValue` = other.`returnValue`
598
- `callStatus` = other.`callStatus`
599
- }
600
-
601
- }
602
- internal interface UniffiForeignFutureCompleteF32 : com.sun.jna.Callback {
603
- fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructF32.UniffiByValue,)
604
- }
605
- @Structure.FieldOrder("returnValue", "callStatus")
606
- internal open class UniffiForeignFutureStructF64(
607
- @JvmField internal var `returnValue`: Double = 0.0,
608
- @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
609
- ) : Structure() {
610
- class UniffiByValue(
611
- `returnValue`: Double = 0.0,
612
- `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
613
- ): UniffiForeignFutureStructF64(`returnValue`,`callStatus`,), Structure.ByValue
614
-
615
- internal fun uniffiSetValue(other: UniffiForeignFutureStructF64) {
616
- `returnValue` = other.`returnValue`
617
- `callStatus` = other.`callStatus`
618
- }
619
-
620
- }
621
- internal interface UniffiForeignFutureCompleteF64 : com.sun.jna.Callback {
622
- fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructF64.UniffiByValue,)
623
- }
624
- @Structure.FieldOrder("returnValue", "callStatus")
625
- internal open class UniffiForeignFutureStructPointer(
626
- @JvmField internal var `returnValue`: Pointer = Pointer.NULL,
627
- @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
628
- ) : Structure() {
629
- class UniffiByValue(
630
- `returnValue`: Pointer = Pointer.NULL,
631
- `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
632
- ): UniffiForeignFutureStructPointer(`returnValue`,`callStatus`,), Structure.ByValue
633
-
634
- internal fun uniffiSetValue(other: UniffiForeignFutureStructPointer) {
635
- `returnValue` = other.`returnValue`
636
- `callStatus` = other.`callStatus`
637
- }
638
-
639
- }
640
- internal interface UniffiForeignFutureCompletePointer : com.sun.jna.Callback {
641
- fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructPointer.UniffiByValue,)
642
- }
643
- @Structure.FieldOrder("returnValue", "callStatus")
644
- internal open class UniffiForeignFutureStructRustBuffer(
645
- @JvmField internal var `returnValue`: RustBuffer.ByValue = RustBuffer.ByValue(),
646
- @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
647
- ) : Structure() {
648
- class UniffiByValue(
649
- `returnValue`: RustBuffer.ByValue = RustBuffer.ByValue(),
650
- `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
651
- ): UniffiForeignFutureStructRustBuffer(`returnValue`,`callStatus`,), Structure.ByValue
652
-
653
- internal fun uniffiSetValue(other: UniffiForeignFutureStructRustBuffer) {
654
- `returnValue` = other.`returnValue`
655
- `callStatus` = other.`callStatus`
656
- }
657
-
658
- }
659
- internal interface UniffiForeignFutureCompleteRustBuffer : com.sun.jna.Callback {
660
- fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructRustBuffer.UniffiByValue,)
661
- }
662
- @Structure.FieldOrder("callStatus")
663
- internal open class UniffiForeignFutureStructVoid(
664
- @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
665
- ) : Structure() {
666
- class UniffiByValue(
667
- `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(),
668
- ): UniffiForeignFutureStructVoid(`callStatus`,), Structure.ByValue
669
-
670
- internal fun uniffiSetValue(other: UniffiForeignFutureStructVoid) {
671
- `callStatus` = other.`callStatus`
672
- }
673
-
674
- }
675
- internal interface UniffiForeignFutureCompleteVoid : com.sun.jna.Callback {
676
- fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructVoid.UniffiByValue,)
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
- // A JNA Library to expose the extern-C FFI definitions.
767
- // This is an implementation detail which will be called internally by the public API.
768
-
769
- internal interface UniffiLib : Library {
770
- companion object {
771
- internal val INSTANCE: UniffiLib by lazy {
772
- loadIndirect<UniffiLib>(componentName = "uniffi_yttrium")
773
- .also { lib: UniffiLib ->
774
- uniffiCheckContractApiVersion(lib)
775
- uniffiCheckApiChecksums(lib)
776
- }
777
- }
778
-
779
- // The Cleaner for the whole library
780
- internal val CLEANER: UniffiCleaner by lazy {
781
- UniffiCleaner.create()
782
- }
783
- }
784
-
785
- fun uniffi_uniffi_yttrium_fn_clone_chainabstractionclient(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus,
786
- ): Pointer
787
- fun uniffi_uniffi_yttrium_fn_free_chainabstractionclient(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus,
788
- ): Unit
789
- fun uniffi_uniffi_yttrium_fn_constructor_chainabstractionclient_new(`projectId`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus,
790
- ): Pointer
791
- fun uniffi_uniffi_yttrium_fn_method_chainabstractionclient_estimate_fees(`ptr`: Pointer,`chainId`: RustBuffer.ByValue,
792
- ): Long
793
- fun uniffi_uniffi_yttrium_fn_method_chainabstractionclient_route(`ptr`: Pointer,`transaction`: RustBuffer.ByValue,
794
- ): Long
795
- fun uniffi_uniffi_yttrium_fn_method_chainabstractionclient_status(`ptr`: Pointer,`orchestrationId`: RustBuffer.ByValue,
796
- ): Long
797
- fun uniffi_uniffi_yttrium_fn_method_chainabstractionclient_wait_for_success_with_timeout(`ptr`: Pointer,`orchestrationId`: RustBuffer.ByValue,`checkIn`: Long,`timeout`: Long,
798
- ): Long
799
- fun uniffi_uniffi_yttrium_fn_clone_ffiaccountclient(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus,
800
- ): Pointer
801
- fun uniffi_uniffi_yttrium_fn_free_ffiaccountclient(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus,
802
- ): Unit
803
- fun uniffi_uniffi_yttrium_fn_constructor_ffiaccountclient_new(`config`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus,
804
- ): Pointer
805
- fun uniffi_uniffi_yttrium_fn_method_ffiaccountclient_chain_id(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus,
806
- ): Long
807
- fun uniffi_uniffi_yttrium_fn_method_ffiaccountclient_do_send_transactions(`ptr`: Pointer,`signatures`: RustBuffer.ByValue,`doSendTransactionParams`: RustBuffer.ByValue,
808
- ): Long
809
- fun uniffi_uniffi_yttrium_fn_method_ffiaccountclient_get_address(`ptr`: Pointer,
810
- ): Long
811
- fun uniffi_uniffi_yttrium_fn_method_ffiaccountclient_prepare_send_transactions(`ptr`: Pointer,`transactions`: RustBuffer.ByValue,
812
- ): Long
813
- fun uniffi_uniffi_yttrium_fn_method_ffiaccountclient_send_transactions(`ptr`: Pointer,`transactions`: RustBuffer.ByValue,
814
- ): Long
815
- fun uniffi_uniffi_yttrium_fn_method_ffiaccountclient_sign_message_with_mnemonic(`ptr`: Pointer,`message`: RustBuffer.ByValue,`mnemonic`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus,
816
- ): RustBuffer.ByValue
817
- fun uniffi_uniffi_yttrium_fn_method_ffiaccountclient_wait_for_user_operation_receipt(`ptr`: Pointer,`userOperationHash`: RustBuffer.ByValue,
818
- ): Long
819
- fun ffi_uniffi_yttrium_rustbuffer_alloc(`size`: Long,uniffi_out_err: UniffiRustCallStatus,
820
- ): RustBuffer.ByValue
821
- fun ffi_uniffi_yttrium_rustbuffer_from_bytes(`bytes`: ForeignBytes.ByValue,uniffi_out_err: UniffiRustCallStatus,
822
- ): RustBuffer.ByValue
823
- fun ffi_uniffi_yttrium_rustbuffer_free(`buf`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus,
824
- ): Unit
825
- fun ffi_uniffi_yttrium_rustbuffer_reserve(`buf`: RustBuffer.ByValue,`additional`: Long,uniffi_out_err: UniffiRustCallStatus,
826
- ): RustBuffer.ByValue
827
- fun ffi_uniffi_yttrium_rust_future_poll_u8(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long,
828
- ): Unit
829
- fun ffi_uniffi_yttrium_rust_future_cancel_u8(`handle`: Long,
830
- ): Unit
831
- fun ffi_uniffi_yttrium_rust_future_free_u8(`handle`: Long,
832
- ): Unit
833
- fun ffi_uniffi_yttrium_rust_future_complete_u8(`handle`: Long,uniffi_out_err: UniffiRustCallStatus,
834
- ): Byte
835
- fun ffi_uniffi_yttrium_rust_future_poll_i8(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long,
836
- ): Unit
837
- fun ffi_uniffi_yttrium_rust_future_cancel_i8(`handle`: Long,
838
- ): Unit
839
- fun ffi_uniffi_yttrium_rust_future_free_i8(`handle`: Long,
840
- ): Unit
841
- fun ffi_uniffi_yttrium_rust_future_complete_i8(`handle`: Long,uniffi_out_err: UniffiRustCallStatus,
842
- ): Byte
843
- fun ffi_uniffi_yttrium_rust_future_poll_u16(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long,
844
- ): Unit
845
- fun ffi_uniffi_yttrium_rust_future_cancel_u16(`handle`: Long,
846
- ): Unit
847
- fun ffi_uniffi_yttrium_rust_future_free_u16(`handle`: Long,
848
- ): Unit
849
- fun ffi_uniffi_yttrium_rust_future_complete_u16(`handle`: Long,uniffi_out_err: UniffiRustCallStatus,
850
- ): Short
851
- fun ffi_uniffi_yttrium_rust_future_poll_i16(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long,
852
- ): Unit
853
- fun ffi_uniffi_yttrium_rust_future_cancel_i16(`handle`: Long,
854
- ): Unit
855
- fun ffi_uniffi_yttrium_rust_future_free_i16(`handle`: Long,
856
- ): Unit
857
- fun ffi_uniffi_yttrium_rust_future_complete_i16(`handle`: Long,uniffi_out_err: UniffiRustCallStatus,
858
- ): Short
859
- fun ffi_uniffi_yttrium_rust_future_poll_u32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long,
860
- ): Unit
861
- fun ffi_uniffi_yttrium_rust_future_cancel_u32(`handle`: Long,
862
- ): Unit
863
- fun ffi_uniffi_yttrium_rust_future_free_u32(`handle`: Long,
864
- ): Unit
865
- fun ffi_uniffi_yttrium_rust_future_complete_u32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus,
866
- ): Int
867
- fun ffi_uniffi_yttrium_rust_future_poll_i32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long,
868
- ): Unit
869
- fun ffi_uniffi_yttrium_rust_future_cancel_i32(`handle`: Long,
870
- ): Unit
871
- fun ffi_uniffi_yttrium_rust_future_free_i32(`handle`: Long,
872
- ): Unit
873
- fun ffi_uniffi_yttrium_rust_future_complete_i32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus,
874
- ): Int
875
- fun ffi_uniffi_yttrium_rust_future_poll_u64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long,
876
- ): Unit
877
- fun ffi_uniffi_yttrium_rust_future_cancel_u64(`handle`: Long,
878
- ): Unit
879
- fun ffi_uniffi_yttrium_rust_future_free_u64(`handle`: Long,
880
- ): Unit
881
- fun ffi_uniffi_yttrium_rust_future_complete_u64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus,
882
- ): Long
883
- fun ffi_uniffi_yttrium_rust_future_poll_i64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long,
884
- ): Unit
885
- fun ffi_uniffi_yttrium_rust_future_cancel_i64(`handle`: Long,
886
- ): Unit
887
- fun ffi_uniffi_yttrium_rust_future_free_i64(`handle`: Long,
888
- ): Unit
889
- fun ffi_uniffi_yttrium_rust_future_complete_i64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus,
890
- ): Long
891
- fun ffi_uniffi_yttrium_rust_future_poll_f32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long,
892
- ): Unit
893
- fun ffi_uniffi_yttrium_rust_future_cancel_f32(`handle`: Long,
894
- ): Unit
895
- fun ffi_uniffi_yttrium_rust_future_free_f32(`handle`: Long,
896
- ): Unit
897
- fun ffi_uniffi_yttrium_rust_future_complete_f32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus,
898
- ): Float
899
- fun ffi_uniffi_yttrium_rust_future_poll_f64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long,
900
- ): Unit
901
- fun ffi_uniffi_yttrium_rust_future_cancel_f64(`handle`: Long,
902
- ): Unit
903
- fun ffi_uniffi_yttrium_rust_future_free_f64(`handle`: Long,
904
- ): Unit
905
- fun ffi_uniffi_yttrium_rust_future_complete_f64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus,
906
- ): Double
907
- fun ffi_uniffi_yttrium_rust_future_poll_pointer(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long,
908
- ): Unit
909
- fun ffi_uniffi_yttrium_rust_future_cancel_pointer(`handle`: Long,
910
- ): Unit
911
- fun ffi_uniffi_yttrium_rust_future_free_pointer(`handle`: Long,
912
- ): Unit
913
- fun ffi_uniffi_yttrium_rust_future_complete_pointer(`handle`: Long,uniffi_out_err: UniffiRustCallStatus,
914
- ): Pointer
915
- fun ffi_uniffi_yttrium_rust_future_poll_rust_buffer(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long,
916
- ): Unit
917
- fun ffi_uniffi_yttrium_rust_future_cancel_rust_buffer(`handle`: Long,
918
- ): Unit
919
- fun ffi_uniffi_yttrium_rust_future_free_rust_buffer(`handle`: Long,
920
- ): Unit
921
- fun ffi_uniffi_yttrium_rust_future_complete_rust_buffer(`handle`: Long,uniffi_out_err: UniffiRustCallStatus,
922
- ): RustBuffer.ByValue
923
- fun ffi_uniffi_yttrium_rust_future_poll_void(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long,
924
- ): Unit
925
- fun ffi_uniffi_yttrium_rust_future_cancel_void(`handle`: Long,
926
- ): Unit
927
- fun ffi_uniffi_yttrium_rust_future_free_void(`handle`: Long,
928
- ): Unit
929
- fun ffi_uniffi_yttrium_rust_future_complete_void(`handle`: Long,uniffi_out_err: UniffiRustCallStatus,
930
- ): Unit
931
- fun uniffi_uniffi_yttrium_checksum_method_chainabstractionclient_estimate_fees(
932
- ): Short
933
- fun uniffi_uniffi_yttrium_checksum_method_chainabstractionclient_route(
934
- ): Short
935
- fun uniffi_uniffi_yttrium_checksum_method_chainabstractionclient_status(
936
- ): Short
937
- fun uniffi_uniffi_yttrium_checksum_method_chainabstractionclient_wait_for_success_with_timeout(
938
- ): Short
939
- fun uniffi_uniffi_yttrium_checksum_method_ffiaccountclient_chain_id(
940
- ): Short
941
- fun uniffi_uniffi_yttrium_checksum_method_ffiaccountclient_do_send_transactions(
942
- ): Short
943
- fun uniffi_uniffi_yttrium_checksum_method_ffiaccountclient_get_address(
944
- ): Short
945
- fun uniffi_uniffi_yttrium_checksum_method_ffiaccountclient_prepare_send_transactions(
946
- ): Short
947
- fun uniffi_uniffi_yttrium_checksum_method_ffiaccountclient_send_transactions(
948
- ): Short
949
- fun uniffi_uniffi_yttrium_checksum_method_ffiaccountclient_sign_message_with_mnemonic(
950
- ): Short
951
- fun uniffi_uniffi_yttrium_checksum_method_ffiaccountclient_wait_for_user_operation_receipt(
952
- ): Short
953
- fun uniffi_uniffi_yttrium_checksum_constructor_chainabstractionclient_new(
954
- ): Short
955
- fun uniffi_uniffi_yttrium_checksum_constructor_ffiaccountclient_new(
956
- ): Short
957
- fun ffi_uniffi_yttrium_uniffi_contract_version(
958
- ): Int
959
-
960
- }
961
-
962
- private fun uniffiCheckContractApiVersion(lib: UniffiLib) {
963
- // Get the bindings contract version from our ComponentInterface
964
- val bindings_contract_version = 29
965
- // Get the scaffolding contract version by calling the into the dylib
966
- val scaffolding_contract_version = lib.ffi_uniffi_yttrium_uniffi_contract_version()
967
- if (bindings_contract_version != scaffolding_contract_version) {
968
- throw RuntimeException("UniFFI contract version mismatch: try cleaning and rebuilding your project")
969
- }
970
- }
971
-
972
- @Suppress("UNUSED_PARAMETER")
973
- private fun uniffiCheckApiChecksums(lib: UniffiLib) {
974
- if (lib.uniffi_uniffi_yttrium_checksum_method_chainabstractionclient_estimate_fees() != 51281.toShort()) {
975
- throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
976
- }
977
- if (lib.uniffi_uniffi_yttrium_checksum_method_chainabstractionclient_route() != 214.toShort()) {
978
- throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
979
- }
980
- if (lib.uniffi_uniffi_yttrium_checksum_method_chainabstractionclient_status() != 15758.toShort()) {
981
- throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
982
- }
983
- if (lib.uniffi_uniffi_yttrium_checksum_method_chainabstractionclient_wait_for_success_with_timeout() != 16595.toShort()) {
984
- throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
985
- }
986
- if (lib.uniffi_uniffi_yttrium_checksum_method_ffiaccountclient_chain_id() != 40865.toShort()) {
987
- throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
988
- }
989
- if (lib.uniffi_uniffi_yttrium_checksum_method_ffiaccountclient_do_send_transactions() != 33638.toShort()) {
990
- throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
991
- }
992
- if (lib.uniffi_uniffi_yttrium_checksum_method_ffiaccountclient_get_address() != 38899.toShort()) {
993
- throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
994
- }
995
- if (lib.uniffi_uniffi_yttrium_checksum_method_ffiaccountclient_prepare_send_transactions() != 33465.toShort()) {
996
- throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
997
- }
998
- if (lib.uniffi_uniffi_yttrium_checksum_method_ffiaccountclient_send_transactions() != 46699.toShort()) {
999
- throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
1000
- }
1001
- if (lib.uniffi_uniffi_yttrium_checksum_method_ffiaccountclient_sign_message_with_mnemonic() != 60647.toShort()) {
1002
- throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
1003
- }
1004
- if (lib.uniffi_uniffi_yttrium_checksum_method_ffiaccountclient_wait_for_user_operation_receipt() != 13654.toShort()) {
1005
- throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
1006
- }
1007
- if (lib.uniffi_uniffi_yttrium_checksum_constructor_chainabstractionclient_new() != 39164.toShort()) {
1008
- throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
1009
- }
1010
- if (lib.uniffi_uniffi_yttrium_checksum_constructor_ffiaccountclient_new() != 64773.toShort()) {
1011
- throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
1012
- }
1013
- }
1014
-
1015
- // Async support
1016
- // Async return type handlers
1017
-
1018
- internal const val UNIFFI_RUST_FUTURE_POLL_READY = 0.toByte()
1019
- internal const val UNIFFI_RUST_FUTURE_POLL_MAYBE_READY = 1.toByte()
1020
-
1021
- internal val uniffiContinuationHandleMap = UniffiHandleMap<CancellableContinuation<Byte>>()
1022
-
1023
- // FFI type for Rust future continuations
1024
- internal object uniffiRustFutureContinuationCallbackImpl: UniffiRustFutureContinuationCallback {
1025
- override fun callback(data: Long, pollResult: Byte) {
1026
- uniffiContinuationHandleMap.remove(data).resume(pollResult)
1027
- }
1028
- }
1029
-
1030
- internal suspend fun<T, F, E: kotlin.Exception> uniffiRustCallAsync(
1031
- rustFuture: Long,
1032
- pollFunc: (Long, UniffiRustFutureContinuationCallback, Long) -> Unit,
1033
- completeFunc: (Long, UniffiRustCallStatus) -> F,
1034
- freeFunc: (Long) -> Unit,
1035
- liftFunc: (F) -> T,
1036
- errorHandler: UniffiRustCallStatusErrorHandler<E>
1037
- ): T {
1038
- try {
1039
- do {
1040
- val pollResult = suspendCancellableCoroutine<Byte> { continuation ->
1041
- pollFunc(
1042
- rustFuture,
1043
- uniffiRustFutureContinuationCallbackImpl,
1044
- uniffiContinuationHandleMap.insert(continuation)
1045
- )
1046
- }
1047
- } while (pollResult != UNIFFI_RUST_FUTURE_POLL_READY);
1048
-
1049
- return liftFunc(
1050
- uniffiRustCallWithError(errorHandler, { status -> completeFunc(rustFuture, status) })
1051
- )
1052
- } finally {
1053
- freeFunc(rustFuture)
1054
- }
1055
- }
1056
-
1057
- // Public interface members begin here.
1058
-
1059
-
1060
- // Interface implemented by anything that can contain an object reference.
1061
- //
1062
- // Such types expose a `destroy()` method that must be called to cleanly
1063
- // dispose of the contained objects. Failure to call this method may result
1064
- // in memory leaks.
1065
- //
1066
- // The easiest way to ensure this method is called is to use the `.use`
1067
- // helper method to execute a block and destroy the object at the end.
1068
- interface Disposable {
1069
- fun destroy()
1070
- companion object {
1071
- fun destroy(vararg args: Any?) {
1072
- args.filterIsInstance<Disposable>()
1073
- .forEach(Disposable::destroy)
1074
- }
1075
- }
1076
- }
1077
-
1078
- /**
1079
- * @suppress
1080
- */
1081
- inline fun <T : Disposable?, R> T.use(block: (T) -> R) =
1082
- try {
1083
- block(this)
1084
- } finally {
1085
- try {
1086
- // N.B. our implementation is on the nullable type `Disposable?`.
1087
- this?.destroy()
1088
- } catch (e: Throwable) {
1089
- // swallow
1090
- }
1091
- }
1092
-
1093
- /**
1094
- * Used to instantiate an interface without an actual pointer, for fakes in tests, mostly.
1095
- *
1096
- * @suppress
1097
- * */
1098
- object NoPointer
1099
-
1100
- /**
1101
- * @suppress
1102
- */
1103
- public object FfiConverterULong: FfiConverter<ULong, Long> {
1104
- override fun lift(value: Long): ULong {
1105
- return value.toULong()
1106
- }
1107
-
1108
- override fun read(buf: ByteBuffer): ULong {
1109
- return lift(buf.getLong())
1110
- }
1111
-
1112
- override fun lower(value: ULong): Long {
1113
- return value.toLong()
1114
- }
1115
-
1116
- override fun allocationSize(value: ULong) = 8UL
1117
-
1118
- override fun write(value: ULong, buf: ByteBuffer) {
1119
- buf.putLong(value.toLong())
1120
- }
1121
- }
1122
-
1123
- /**
1124
- * @suppress
1125
- */
1126
- public object FfiConverterBoolean: FfiConverter<Boolean, Byte> {
1127
- override fun lift(value: Byte): Boolean {
1128
- return value.toInt() != 0
1129
- }
1130
-
1131
- override fun read(buf: ByteBuffer): Boolean {
1132
- return lift(buf.get())
1133
- }
1134
-
1135
- override fun lower(value: Boolean): Byte {
1136
- return if (value) 1.toByte() else 0.toByte()
1137
- }
1138
-
1139
- override fun allocationSize(value: Boolean) = 1UL
1140
-
1141
- override fun write(value: Boolean, buf: ByteBuffer) {
1142
- buf.put(lower(value))
1143
- }
1144
- }
1145
-
1146
- /**
1147
- * @suppress
1148
- */
1149
- public object FfiConverterString: FfiConverter<String, RustBuffer.ByValue> {
1150
- // Note: we don't inherit from FfiConverterRustBuffer, because we use a
1151
- // special encoding when lowering/lifting. We can use `RustBuffer.len` to
1152
- // store our length and avoid writing it out to the buffer.
1153
- override fun lift(value: RustBuffer.ByValue): String {
1154
- try {
1155
- val byteArr = ByteArray(value.len.toInt())
1156
- value.asByteBuffer()!!.get(byteArr)
1157
- return byteArr.toString(Charsets.UTF_8)
1158
- } finally {
1159
- RustBuffer.free(value)
1160
- }
1161
- }
1162
-
1163
- override fun read(buf: ByteBuffer): String {
1164
- val len = buf.getInt()
1165
- val byteArr = ByteArray(len)
1166
- buf.get(byteArr)
1167
- return byteArr.toString(Charsets.UTF_8)
1168
- }
1169
-
1170
- fun toUtf8(value: String): ByteBuffer {
1171
- // Make sure we don't have invalid UTF-16, check for lone surrogates.
1172
- return Charsets.UTF_8.newEncoder().run {
1173
- onMalformedInput(CodingErrorAction.REPORT)
1174
- encode(CharBuffer.wrap(value))
1175
- }
1176
- }
1177
-
1178
- override fun lower(value: String): RustBuffer.ByValue {
1179
- val byteBuf = toUtf8(value)
1180
- // Ideally we'd pass these bytes to `ffi_bytebuffer_from_bytes`, but doing so would require us
1181
- // to copy them into a JNA `Memory`. So we might as well directly copy them into a `RustBuffer`.
1182
- val rbuf = RustBuffer.alloc(byteBuf.limit().toULong())
1183
- rbuf.asByteBuffer()!!.put(byteBuf)
1184
- return rbuf
1185
- }
1186
-
1187
- // We aren't sure exactly how many bytes our string will be once it's UTF-8
1188
- // encoded. Allocate 3 bytes per UTF-16 code unit which will always be
1189
- // enough.
1190
- override fun allocationSize(value: String): ULong {
1191
- val sizeForLength = 4UL
1192
- val sizeForString = value.length.toULong() * 3UL
1193
- return sizeForLength + sizeForString
1194
- }
1195
-
1196
- override fun write(value: String, buf: ByteBuffer) {
1197
- val byteBuf = toUtf8(value)
1198
- buf.putInt(byteBuf.limit())
1199
- buf.put(byteBuf)
1200
- }
1201
- }
1202
-
1203
-
1204
- // This template implements a class for working with a Rust struct via a Pointer/Arc<T>
1205
- // to the live Rust struct on the other side of the FFI.
1206
- //
1207
- // Each instance implements core operations for working with the Rust `Arc<T>` and the
1208
- // Kotlin Pointer to work with the live Rust struct on the other side of the FFI.
1209
- //
1210
- // There's some subtlety here, because we have to be careful not to operate on a Rust
1211
- // struct after it has been dropped, and because we must expose a public API for freeing
1212
- // theq Kotlin wrapper object in lieu of reliable finalizers. The core requirements are:
1213
- //
1214
- // * Each instance holds an opaque pointer to the underlying Rust struct.
1215
- // Method calls need to read this pointer from the object's state and pass it in to
1216
- // the Rust FFI.
1217
- //
1218
- // * When an instance is no longer needed, its pointer should be passed to a
1219
- // special destructor function provided by the Rust FFI, which will drop the
1220
- // underlying Rust struct.
1221
- //
1222
- // * Given an instance, calling code is expected to call the special
1223
- // `destroy` method in order to free it after use, either by calling it explicitly
1224
- // or by using a higher-level helper like the `use` method. Failing to do so risks
1225
- // leaking the underlying Rust struct.
1226
- //
1227
- // * We can't assume that calling code will do the right thing, and must be prepared
1228
- // to handle Kotlin method calls executing concurrently with or even after a call to
1229
- // `destroy`, and to handle multiple (possibly concurrent!) calls to `destroy`.
1230
- //
1231
- // * We must never allow Rust code to operate on the underlying Rust struct after
1232
- // the destructor has been called, and must never call the destructor more than once.
1233
- // Doing so may trigger memory unsafety.
1234
- //
1235
- // * To mitigate many of the risks of leaking memory and use-after-free unsafety, a `Cleaner`
1236
- // is implemented to call the destructor when the Kotlin object becomes unreachable.
1237
- // This is done in a background thread. This is not a panacea, and client code should be aware that
1238
- // 1. the thread may starve if some there are objects that have poorly performing
1239
- // `drop` methods or do significant work in their `drop` methods.
1240
- // 2. the thread is shared across the whole library. This can be tuned by using `android_cleaner = true`,
1241
- // or `android = true` in the [`kotlin` section of the `uniffi.toml` file](https://mozilla.github.io/uniffi-rs/kotlin/configuration.html).
1242
- //
1243
- // If we try to implement this with mutual exclusion on access to the pointer, there is the
1244
- // possibility of a race between a method call and a concurrent call to `destroy`:
1245
- //
1246
- // * Thread A starts a method call, reads the value of the pointer, but is interrupted
1247
- // before it can pass the pointer over the FFI to Rust.
1248
- // * Thread B calls `destroy` and frees the underlying Rust struct.
1249
- // * Thread A resumes, passing the already-read pointer value to Rust and triggering
1250
- // a use-after-free.
1251
- //
1252
- // One possible solution would be to use a `ReadWriteLock`, with each method call taking
1253
- // a read lock (and thus allowed to run concurrently) and the special `destroy` method
1254
- // taking a write lock (and thus blocking on live method calls). However, we aim not to
1255
- // generate methods with any hidden blocking semantics, and a `destroy` method that might
1256
- // block if called incorrectly seems to meet that bar.
1257
- //
1258
- // So, we achieve our goals by giving each instance an associated `AtomicLong` counter to track
1259
- // the number of in-flight method calls, and an `AtomicBoolean` flag to indicate whether `destroy`
1260
- // has been called. These are updated according to the following rules:
1261
- //
1262
- // * The initial value of the counter is 1, indicating a live object with no in-flight calls.
1263
- // The initial value for the flag is false.
1264
- //
1265
- // * At the start of each method call, we atomically check the counter.
1266
- // If it is 0 then the underlying Rust struct has already been destroyed and the call is aborted.
1267
- // If it is nonzero them we atomically increment it by 1 and proceed with the method call.
1268
- //
1269
- // * At the end of each method call, we atomically decrement and check the counter.
1270
- // If it has reached zero then we destroy the underlying Rust struct.
1271
- //
1272
- // * When `destroy` is called, we atomically flip the flag from false to true.
1273
- // If the flag was already true we silently fail.
1274
- // Otherwise we atomically decrement and check the counter.
1275
- // If it has reached zero then we destroy the underlying Rust struct.
1276
- //
1277
- // Astute readers may observe that this all sounds very similar to the way that Rust's `Arc<T>` works,
1278
- // and indeed it is, with the addition of a flag to guard against multiple calls to `destroy`.
1279
- //
1280
- // The overall effect is that the underlying Rust struct is destroyed only when `destroy` has been
1281
- // called *and* all in-flight method calls have completed, avoiding violating any of the expectations
1282
- // of the underlying Rust code.
1283
- //
1284
- // This makes a cleaner a better alternative to _not_ calling `destroy()` as
1285
- // and when the object is finished with, but the abstraction is not perfect: if the Rust object's `drop`
1286
- // method is slow, and/or there are many objects to cleanup, and it's on a low end Android device, then the cleaner
1287
- // thread may be starved, and the app will leak memory.
1288
- //
1289
- // In this case, `destroy`ing manually may be a better solution.
1290
- //
1291
- // The cleaner can live side by side with the manual calling of `destroy`. In the order of responsiveness, uniffi objects
1292
- // with Rust peers are reclaimed:
1293
- //
1294
- // 1. By calling the `destroy` method of the object, which calls `rustObject.free()`. If that doesn't happen:
1295
- // 2. When the object becomes unreachable, AND the Cleaner thread gets to call `rustObject.free()`. If the thread is starved then:
1296
- // 3. The memory is reclaimed when the process terminates.
1297
- //
1298
- // [1] https://stackoverflow.com/questions/24376768/can-java-finalize-an-object-when-it-is-still-in-scope/24380219
1299
- //
1300
-
1301
-
1302
- /**
1303
- * The cleaner interface for Object finalization code to run.
1304
- * This is the entry point to any implementation that we're using.
1305
- *
1306
- * The cleaner registers objects and returns cleanables, so now we are
1307
- * defining a `UniffiCleaner` with a `UniffiClenaer.Cleanable` to abstract the
1308
- * different implmentations available at compile time.
1309
- *
1310
- * @suppress
1311
- */
1312
- interface UniffiCleaner {
1313
- interface Cleanable {
1314
- fun clean()
1315
- }
1316
-
1317
- fun register(value: Any, cleanUpTask: Runnable): UniffiCleaner.Cleanable
1318
-
1319
- companion object
1320
- }
1321
-
1322
- // The fallback Jna cleaner, which is available for both Android, and the JVM.
1323
- private class UniffiJnaCleaner : UniffiCleaner {
1324
- private val cleaner = com.sun.jna.internal.Cleaner.getCleaner()
1325
-
1326
- override fun register(value: Any, cleanUpTask: Runnable): UniffiCleaner.Cleanable =
1327
- UniffiJnaCleanable(cleaner.register(value, cleanUpTask))
1328
- }
1329
-
1330
- private class UniffiJnaCleanable(
1331
- private val cleanable: com.sun.jna.internal.Cleaner.Cleanable,
1332
- ) : UniffiCleaner.Cleanable {
1333
- override fun clean() = cleanable.clean()
1334
- }
1335
-
1336
- // We decide at uniffi binding generation time whether we were
1337
- // using Android or not.
1338
- // There are further runtime checks to chose the correct implementation
1339
- // of the cleaner.
1340
-
1341
-
1342
- private fun UniffiCleaner.Companion.create(): UniffiCleaner =
1343
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
1344
- AndroidSystemCleaner()
1345
- } else {
1346
- UniffiJnaCleaner()
1347
- }
1348
-
1349
- // The SystemCleaner, available from API Level 33.
1350
- // Some API Level 33 OSes do not support using it, so we require API Level 34.
1351
- @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
1352
- private class AndroidSystemCleaner : UniffiCleaner {
1353
- val cleaner = android.system.SystemCleaner.cleaner()
1354
-
1355
- override fun register(value: Any, cleanUpTask: Runnable): UniffiCleaner.Cleanable =
1356
- AndroidSystemCleanable(cleaner.register(value, cleanUpTask))
1357
- }
1358
-
1359
- @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
1360
- private class AndroidSystemCleanable(
1361
- private val cleanable: java.lang.ref.Cleaner.Cleanable,
1362
- ) : UniffiCleaner.Cleanable {
1363
- override fun clean() = cleanable.clean()
1364
- }
1365
- public interface ChainAbstractionClientInterface {
1366
-
1367
- suspend fun `estimateFees`(`chainId`: kotlin.String): Eip1559Estimation
1368
-
1369
- suspend fun `route`(`transaction`: InitTransaction): RouteResponse
1370
-
1371
- suspend fun `status`(`orchestrationId`: kotlin.String): StatusResponse
1372
-
1373
- suspend fun `waitForSuccessWithTimeout`(`orchestrationId`: kotlin.String, `checkIn`: kotlin.ULong, `timeout`: kotlin.ULong): StatusResponseCompleted
1374
-
1375
- companion object
1376
- }
1377
-
1378
- open class ChainAbstractionClient: Disposable, AutoCloseable, ChainAbstractionClientInterface
1379
- {
1380
-
1381
- constructor(pointer: Pointer) {
1382
- this.pointer = pointer
1383
- this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer))
1384
- }
1385
-
1386
- /**
1387
- * This constructor can be used to instantiate a fake object. Only used for tests. Any
1388
- * attempt to actually use an object constructed this way will fail as there is no
1389
- * connected Rust object.
1390
- */
1391
- @Suppress("UNUSED_PARAMETER")
1392
- constructor(noPointer: NoPointer) {
1393
- this.pointer = null
1394
- this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer))
1395
- }
1396
- constructor(`projectId`: kotlin.String) :
1397
- this(
1398
- uniffiRustCall() { _status ->
1399
- UniffiLib.INSTANCE.uniffi_uniffi_yttrium_fn_constructor_chainabstractionclient_new(
1400
- FfiConverterString.lower(`projectId`),_status)
1401
- }
1402
- )
1403
-
1404
- protected val pointer: Pointer?
1405
- protected val cleanable: UniffiCleaner.Cleanable
1406
-
1407
- private val wasDestroyed = AtomicBoolean(false)
1408
- private val callCounter = AtomicLong(1)
1409
-
1410
- override fun destroy() {
1411
- // Only allow a single call to this method.
1412
- // TODO: maybe we should log a warning if called more than once?
1413
- if (this.wasDestroyed.compareAndSet(false, true)) {
1414
- // This decrement always matches the initial count of 1 given at creation time.
1415
- if (this.callCounter.decrementAndGet() == 0L) {
1416
- cleanable.clean()
1417
- }
1418
- }
1419
- }
1420
-
1421
- @Synchronized
1422
- override fun close() {
1423
- this.destroy()
1424
- }
1425
-
1426
- internal inline fun <R> callWithPointer(block: (ptr: Pointer) -> R): R {
1427
- // Check and increment the call counter, to keep the object alive.
1428
- // This needs a compare-and-set retry loop in case of concurrent updates.
1429
- do {
1430
- val c = this.callCounter.get()
1431
- if (c == 0L) {
1432
- throw IllegalStateException("${this.javaClass.simpleName} object has already been destroyed")
1433
- }
1434
- if (c == Long.MAX_VALUE) {
1435
- throw IllegalStateException("${this.javaClass.simpleName} call counter would overflow")
1436
- }
1437
- } while (! this.callCounter.compareAndSet(c, c + 1L))
1438
- // Now we can safely do the method call without the pointer being freed concurrently.
1439
- try {
1440
- return block(this.uniffiClonePointer())
1441
- } finally {
1442
- // This decrement always matches the increment we performed above.
1443
- if (this.callCounter.decrementAndGet() == 0L) {
1444
- cleanable.clean()
1445
- }
1446
- }
1447
- }
1448
-
1449
- // Use a static inner class instead of a closure so as not to accidentally
1450
- // capture `this` as part of the cleanable's action.
1451
- private class UniffiCleanAction(private val pointer: Pointer?) : Runnable {
1452
- override fun run() {
1453
- pointer?.let { ptr ->
1454
- uniffiRustCall { status ->
1455
- UniffiLib.INSTANCE.uniffi_uniffi_yttrium_fn_free_chainabstractionclient(ptr, status)
1456
- }
1457
- }
1458
- }
1459
- }
1460
-
1461
- fun uniffiClonePointer(): Pointer {
1462
- return uniffiRustCall() { status ->
1463
- UniffiLib.INSTANCE.uniffi_uniffi_yttrium_fn_clone_chainabstractionclient(pointer!!, status)
1464
- }
1465
- }
1466
-
1467
-
1468
- @Throws(FfiException::class)
1469
- @Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
1470
- override suspend fun `estimateFees`(`chainId`: kotlin.String) : Eip1559Estimation {
1471
- return uniffiRustCallAsync(
1472
- callWithPointer { thisPtr ->
1473
- UniffiLib.INSTANCE.uniffi_uniffi_yttrium_fn_method_chainabstractionclient_estimate_fees(
1474
- thisPtr,
1475
- FfiConverterString.lower(`chainId`),
1476
- )
1477
- },
1478
- { future, callback, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_poll_rust_buffer(future, callback, continuation) },
1479
- { future, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_complete_rust_buffer(future, continuation) },
1480
- { future -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_free_rust_buffer(future) },
1481
- // lift function
1482
- { FfiConverterTypeEip1559Estimation.lift(it) },
1483
- // Error FFI converter
1484
- FfiException.ErrorHandler,
1485
- )
1486
- }
1487
-
1488
-
1489
- @Throws(FfiException::class)
1490
- @Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
1491
- override suspend fun `route`(`transaction`: InitTransaction) : RouteResponse {
1492
- return uniffiRustCallAsync(
1493
- callWithPointer { thisPtr ->
1494
- UniffiLib.INSTANCE.uniffi_uniffi_yttrium_fn_method_chainabstractionclient_route(
1495
- thisPtr,
1496
- FfiConverterTypeInitTransaction.lower(`transaction`),
1497
- )
1498
- },
1499
- { future, callback, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_poll_rust_buffer(future, callback, continuation) },
1500
- { future, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_complete_rust_buffer(future, continuation).let { RustBufferRouteResponse.create(it.capacity.toULong(), it.len.toULong(), it.data) } },
1501
- { future -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_free_rust_buffer(future) },
1502
- // lift function
1503
- { FfiConverterTypeRouteResponse.lift(it) },
1504
- // Error FFI converter
1505
- FfiException.ErrorHandler,
1506
- )
1507
- }
1508
-
1509
-
1510
- @Throws(FfiException::class)
1511
- @Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
1512
- override suspend fun `status`(`orchestrationId`: kotlin.String) : StatusResponse {
1513
- return uniffiRustCallAsync(
1514
- callWithPointer { thisPtr ->
1515
- UniffiLib.INSTANCE.uniffi_uniffi_yttrium_fn_method_chainabstractionclient_status(
1516
- thisPtr,
1517
- FfiConverterString.lower(`orchestrationId`),
1518
- )
1519
- },
1520
- { future, callback, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_poll_rust_buffer(future, callback, continuation) },
1521
- { future, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_complete_rust_buffer(future, continuation).let { RustBufferStatusResponse.create(it.capacity.toULong(), it.len.toULong(), it.data) } },
1522
- { future -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_free_rust_buffer(future) },
1523
- // lift function
1524
- { FfiConverterTypeStatusResponse.lift(it) },
1525
- // Error FFI converter
1526
- FfiException.ErrorHandler,
1527
- )
1528
- }
1529
-
1530
-
1531
- @Throws(FfiException::class)
1532
- @Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
1533
- override suspend fun `waitForSuccessWithTimeout`(`orchestrationId`: kotlin.String, `checkIn`: kotlin.ULong, `timeout`: kotlin.ULong) : StatusResponseCompleted {
1534
- return uniffiRustCallAsync(
1535
- callWithPointer { thisPtr ->
1536
- UniffiLib.INSTANCE.uniffi_uniffi_yttrium_fn_method_chainabstractionclient_wait_for_success_with_timeout(
1537
- thisPtr,
1538
- FfiConverterString.lower(`orchestrationId`),FfiConverterULong.lower(`checkIn`),FfiConverterULong.lower(`timeout`),
1539
- )
1540
- },
1541
- { future, callback, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_poll_rust_buffer(future, callback, continuation) },
1542
- { future, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_complete_rust_buffer(future, continuation).let { RustBufferStatusResponseCompleted.create(it.capacity.toULong(), it.len.toULong(), it.data) } },
1543
- { future -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_free_rust_buffer(future) },
1544
- // lift function
1545
- { FfiConverterTypeStatusResponseCompleted.lift(it) },
1546
- // Error FFI converter
1547
- FfiException.ErrorHandler,
1548
- )
1549
- }
1550
-
1551
-
1552
-
1553
-
1554
-
1555
- companion object
1556
-
1557
- }
1558
-
1559
- /**
1560
- * @suppress
1561
- */
1562
- public object FfiConverterTypeChainAbstractionClient: FfiConverter<ChainAbstractionClient, Pointer> {
1563
-
1564
- override fun lower(value: ChainAbstractionClient): Pointer {
1565
- return value.uniffiClonePointer()
1566
- }
1567
-
1568
- override fun lift(value: Pointer): ChainAbstractionClient {
1569
- return ChainAbstractionClient(value)
1570
- }
1571
-
1572
- override fun read(buf: ByteBuffer): ChainAbstractionClient {
1573
- // The Rust code always writes pointers as 8 bytes, and will
1574
- // fail to compile if they don't fit.
1575
- return lift(Pointer(buf.getLong()))
1576
- }
1577
-
1578
- override fun allocationSize(value: ChainAbstractionClient) = 8UL
1579
-
1580
- override fun write(value: ChainAbstractionClient, buf: ByteBuffer) {
1581
- // The Rust code always expects pointers written as 8 bytes,
1582
- // and will fail to compile if they don't fit.
1583
- buf.putLong(Pointer.nativeValue(lower(value)))
1584
- }
1585
- }
1586
-
1587
-
1588
- // This template implements a class for working with a Rust struct via a Pointer/Arc<T>
1589
- // to the live Rust struct on the other side of the FFI.
1590
- //
1591
- // Each instance implements core operations for working with the Rust `Arc<T>` and the
1592
- // Kotlin Pointer to work with the live Rust struct on the other side of the FFI.
1593
- //
1594
- // There's some subtlety here, because we have to be careful not to operate on a Rust
1595
- // struct after it has been dropped, and because we must expose a public API for freeing
1596
- // theq Kotlin wrapper object in lieu of reliable finalizers. The core requirements are:
1597
- //
1598
- // * Each instance holds an opaque pointer to the underlying Rust struct.
1599
- // Method calls need to read this pointer from the object's state and pass it in to
1600
- // the Rust FFI.
1601
- //
1602
- // * When an instance is no longer needed, its pointer should be passed to a
1603
- // special destructor function provided by the Rust FFI, which will drop the
1604
- // underlying Rust struct.
1605
- //
1606
- // * Given an instance, calling code is expected to call the special
1607
- // `destroy` method in order to free it after use, either by calling it explicitly
1608
- // or by using a higher-level helper like the `use` method. Failing to do so risks
1609
- // leaking the underlying Rust struct.
1610
- //
1611
- // * We can't assume that calling code will do the right thing, and must be prepared
1612
- // to handle Kotlin method calls executing concurrently with or even after a call to
1613
- // `destroy`, and to handle multiple (possibly concurrent!) calls to `destroy`.
1614
- //
1615
- // * We must never allow Rust code to operate on the underlying Rust struct after
1616
- // the destructor has been called, and must never call the destructor more than once.
1617
- // Doing so may trigger memory unsafety.
1618
- //
1619
- // * To mitigate many of the risks of leaking memory and use-after-free unsafety, a `Cleaner`
1620
- // is implemented to call the destructor when the Kotlin object becomes unreachable.
1621
- // This is done in a background thread. This is not a panacea, and client code should be aware that
1622
- // 1. the thread may starve if some there are objects that have poorly performing
1623
- // `drop` methods or do significant work in their `drop` methods.
1624
- // 2. the thread is shared across the whole library. This can be tuned by using `android_cleaner = true`,
1625
- // or `android = true` in the [`kotlin` section of the `uniffi.toml` file](https://mozilla.github.io/uniffi-rs/kotlin/configuration.html).
1626
- //
1627
- // If we try to implement this with mutual exclusion on access to the pointer, there is the
1628
- // possibility of a race between a method call and a concurrent call to `destroy`:
1629
- //
1630
- // * Thread A starts a method call, reads the value of the pointer, but is interrupted
1631
- // before it can pass the pointer over the FFI to Rust.
1632
- // * Thread B calls `destroy` and frees the underlying Rust struct.
1633
- // * Thread A resumes, passing the already-read pointer value to Rust and triggering
1634
- // a use-after-free.
1635
- //
1636
- // One possible solution would be to use a `ReadWriteLock`, with each method call taking
1637
- // a read lock (and thus allowed to run concurrently) and the special `destroy` method
1638
- // taking a write lock (and thus blocking on live method calls). However, we aim not to
1639
- // generate methods with any hidden blocking semantics, and a `destroy` method that might
1640
- // block if called incorrectly seems to meet that bar.
1641
- //
1642
- // So, we achieve our goals by giving each instance an associated `AtomicLong` counter to track
1643
- // the number of in-flight method calls, and an `AtomicBoolean` flag to indicate whether `destroy`
1644
- // has been called. These are updated according to the following rules:
1645
- //
1646
- // * The initial value of the counter is 1, indicating a live object with no in-flight calls.
1647
- // The initial value for the flag is false.
1648
- //
1649
- // * At the start of each method call, we atomically check the counter.
1650
- // If it is 0 then the underlying Rust struct has already been destroyed and the call is aborted.
1651
- // If it is nonzero them we atomically increment it by 1 and proceed with the method call.
1652
- //
1653
- // * At the end of each method call, we atomically decrement and check the counter.
1654
- // If it has reached zero then we destroy the underlying Rust struct.
1655
- //
1656
- // * When `destroy` is called, we atomically flip the flag from false to true.
1657
- // If the flag was already true we silently fail.
1658
- // Otherwise we atomically decrement and check the counter.
1659
- // If it has reached zero then we destroy the underlying Rust struct.
1660
- //
1661
- // Astute readers may observe that this all sounds very similar to the way that Rust's `Arc<T>` works,
1662
- // and indeed it is, with the addition of a flag to guard against multiple calls to `destroy`.
1663
- //
1664
- // The overall effect is that the underlying Rust struct is destroyed only when `destroy` has been
1665
- // called *and* all in-flight method calls have completed, avoiding violating any of the expectations
1666
- // of the underlying Rust code.
1667
- //
1668
- // This makes a cleaner a better alternative to _not_ calling `destroy()` as
1669
- // and when the object is finished with, but the abstraction is not perfect: if the Rust object's `drop`
1670
- // method is slow, and/or there are many objects to cleanup, and it's on a low end Android device, then the cleaner
1671
- // thread may be starved, and the app will leak memory.
1672
- //
1673
- // In this case, `destroy`ing manually may be a better solution.
1674
- //
1675
- // The cleaner can live side by side with the manual calling of `destroy`. In the order of responsiveness, uniffi objects
1676
- // with Rust peers are reclaimed:
1677
- //
1678
- // 1. By calling the `destroy` method of the object, which calls `rustObject.free()`. If that doesn't happen:
1679
- // 2. When the object becomes unreachable, AND the Cleaner thread gets to call `rustObject.free()`. If the thread is starved then:
1680
- // 3. The memory is reclaimed when the process terminates.
1681
- //
1682
- // [1] https://stackoverflow.com/questions/24376768/can-java-finalize-an-object-when-it-is-still-in-scope/24380219
1683
- //
1684
-
1685
-
1686
- public interface FfiAccountClientInterface {
1687
-
1688
- fun `chainId`(): kotlin.ULong
1689
-
1690
- suspend fun `doSendTransactions`(`signatures`: List<OwnerSignature>, `doSendTransactionParams`: kotlin.String): kotlin.String
1691
-
1692
- suspend fun `getAddress`(): kotlin.String
1693
-
1694
- suspend fun `prepareSendTransactions`(`transactions`: List<FfiTransaction>): PreparedSendTransaction
1695
-
1696
- suspend fun `sendTransactions`(`transactions`: List<FfiTransaction>): kotlin.String
1697
-
1698
- fun `signMessageWithMnemonic`(`message`: kotlin.String, `mnemonic`: kotlin.String): kotlin.String
1699
-
1700
- suspend fun `waitForUserOperationReceipt`(`userOperationHash`: kotlin.String): kotlin.String
1701
-
1702
- companion object
1703
- }
1704
-
1705
- open class FfiAccountClient: Disposable, AutoCloseable, FfiAccountClientInterface
1706
- {
1707
-
1708
- constructor(pointer: Pointer) {
1709
- this.pointer = pointer
1710
- this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer))
1711
- }
1712
-
1713
- /**
1714
- * This constructor can be used to instantiate a fake object. Only used for tests. Any
1715
- * attempt to actually use an object constructed this way will fail as there is no
1716
- * connected Rust object.
1717
- */
1718
- @Suppress("UNUSED_PARAMETER")
1719
- constructor(noPointer: NoPointer) {
1720
- this.pointer = null
1721
- this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer))
1722
- }
1723
- constructor(`config`: FfiAccountClientConfig) :
1724
- this(
1725
- uniffiRustCall() { _status ->
1726
- UniffiLib.INSTANCE.uniffi_uniffi_yttrium_fn_constructor_ffiaccountclient_new(
1727
- FfiConverterTypeFFIAccountClientConfig.lower(`config`),_status)
1728
- }
1729
- )
1730
-
1731
- protected val pointer: Pointer?
1732
- protected val cleanable: UniffiCleaner.Cleanable
1733
-
1734
- private val wasDestroyed = AtomicBoolean(false)
1735
- private val callCounter = AtomicLong(1)
1736
-
1737
- override fun destroy() {
1738
- // Only allow a single call to this method.
1739
- // TODO: maybe we should log a warning if called more than once?
1740
- if (this.wasDestroyed.compareAndSet(false, true)) {
1741
- // This decrement always matches the initial count of 1 given at creation time.
1742
- if (this.callCounter.decrementAndGet() == 0L) {
1743
- cleanable.clean()
1744
- }
1745
- }
1746
- }
1747
-
1748
- @Synchronized
1749
- override fun close() {
1750
- this.destroy()
1751
- }
1752
-
1753
- internal inline fun <R> callWithPointer(block: (ptr: Pointer) -> R): R {
1754
- // Check and increment the call counter, to keep the object alive.
1755
- // This needs a compare-and-set retry loop in case of concurrent updates.
1756
- do {
1757
- val c = this.callCounter.get()
1758
- if (c == 0L) {
1759
- throw IllegalStateException("${this.javaClass.simpleName} object has already been destroyed")
1760
- }
1761
- if (c == Long.MAX_VALUE) {
1762
- throw IllegalStateException("${this.javaClass.simpleName} call counter would overflow")
1763
- }
1764
- } while (! this.callCounter.compareAndSet(c, c + 1L))
1765
- // Now we can safely do the method call without the pointer being freed concurrently.
1766
- try {
1767
- return block(this.uniffiClonePointer())
1768
- } finally {
1769
- // This decrement always matches the increment we performed above.
1770
- if (this.callCounter.decrementAndGet() == 0L) {
1771
- cleanable.clean()
1772
- }
1773
- }
1774
- }
1775
-
1776
- // Use a static inner class instead of a closure so as not to accidentally
1777
- // capture `this` as part of the cleanable's action.
1778
- private class UniffiCleanAction(private val pointer: Pointer?) : Runnable {
1779
- override fun run() {
1780
- pointer?.let { ptr ->
1781
- uniffiRustCall { status ->
1782
- UniffiLib.INSTANCE.uniffi_uniffi_yttrium_fn_free_ffiaccountclient(ptr, status)
1783
- }
1784
- }
1785
- }
1786
- }
1787
-
1788
- fun uniffiClonePointer(): Pointer {
1789
- return uniffiRustCall() { status ->
1790
- UniffiLib.INSTANCE.uniffi_uniffi_yttrium_fn_clone_ffiaccountclient(pointer!!, status)
1791
- }
1792
- }
1793
-
1794
- override fun `chainId`(): kotlin.ULong {
1795
- return FfiConverterULong.lift(
1796
- callWithPointer {
1797
- uniffiRustCall() { _status ->
1798
- UniffiLib.INSTANCE.uniffi_uniffi_yttrium_fn_method_ffiaccountclient_chain_id(
1799
- it, _status)
1800
- }
1801
- }
1802
- )
1803
- }
1804
-
1805
-
1806
-
1807
- @Throws(FfiException::class)
1808
- @Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
1809
- override suspend fun `doSendTransactions`(`signatures`: List<OwnerSignature>, `doSendTransactionParams`: kotlin.String) : kotlin.String {
1810
- return uniffiRustCallAsync(
1811
- callWithPointer { thisPtr ->
1812
- UniffiLib.INSTANCE.uniffi_uniffi_yttrium_fn_method_ffiaccountclient_do_send_transactions(
1813
- thisPtr,
1814
- FfiConverterSequenceTypeOwnerSignature.lower(`signatures`),FfiConverterString.lower(`doSendTransactionParams`),
1815
- )
1816
- },
1817
- { future, callback, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_poll_rust_buffer(future, callback, continuation) },
1818
- { future, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_complete_rust_buffer(future, continuation) },
1819
- { future -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_free_rust_buffer(future) },
1820
- // lift function
1821
- { FfiConverterString.lift(it) },
1822
- // Error FFI converter
1823
- FfiException.ErrorHandler,
1824
- )
1825
- }
1826
-
1827
-
1828
- @Throws(FfiException::class)
1829
- @Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
1830
- override suspend fun `getAddress`() : kotlin.String {
1831
- return uniffiRustCallAsync(
1832
- callWithPointer { thisPtr ->
1833
- UniffiLib.INSTANCE.uniffi_uniffi_yttrium_fn_method_ffiaccountclient_get_address(
1834
- thisPtr,
1835
-
1836
- )
1837
- },
1838
- { future, callback, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_poll_rust_buffer(future, callback, continuation) },
1839
- { future, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_complete_rust_buffer(future, continuation) },
1840
- { future -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_free_rust_buffer(future) },
1841
- // lift function
1842
- { FfiConverterString.lift(it) },
1843
- // Error FFI converter
1844
- FfiException.ErrorHandler,
1845
- )
1846
- }
1847
-
1848
-
1849
- @Throws(FfiException::class)
1850
- @Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
1851
- override suspend fun `prepareSendTransactions`(`transactions`: List<FfiTransaction>) : PreparedSendTransaction {
1852
- return uniffiRustCallAsync(
1853
- callWithPointer { thisPtr ->
1854
- UniffiLib.INSTANCE.uniffi_uniffi_yttrium_fn_method_ffiaccountclient_prepare_send_transactions(
1855
- thisPtr,
1856
- FfiConverterSequenceTypeFFITransaction.lower(`transactions`),
1857
- )
1858
- },
1859
- { future, callback, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_poll_rust_buffer(future, callback, continuation) },
1860
- { future, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_complete_rust_buffer(future, continuation) },
1861
- { future -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_free_rust_buffer(future) },
1862
- // lift function
1863
- { FfiConverterTypePreparedSendTransaction.lift(it) },
1864
- // Error FFI converter
1865
- FfiException.ErrorHandler,
1866
- )
1867
- }
1868
-
1869
-
1870
- @Throws(FfiException::class)
1871
- @Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
1872
- override suspend fun `sendTransactions`(`transactions`: List<FfiTransaction>) : kotlin.String {
1873
- return uniffiRustCallAsync(
1874
- callWithPointer { thisPtr ->
1875
- UniffiLib.INSTANCE.uniffi_uniffi_yttrium_fn_method_ffiaccountclient_send_transactions(
1876
- thisPtr,
1877
- FfiConverterSequenceTypeFFITransaction.lower(`transactions`),
1878
- )
1879
- },
1880
- { future, callback, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_poll_rust_buffer(future, callback, continuation) },
1881
- { future, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_complete_rust_buffer(future, continuation) },
1882
- { future -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_free_rust_buffer(future) },
1883
- // lift function
1884
- { FfiConverterString.lift(it) },
1885
- // Error FFI converter
1886
- FfiException.ErrorHandler,
1887
- )
1888
- }
1889
-
1890
-
1891
- @Throws(FfiException::class)override fun `signMessageWithMnemonic`(`message`: kotlin.String, `mnemonic`: kotlin.String): kotlin.String {
1892
- return FfiConverterString.lift(
1893
- callWithPointer {
1894
- uniffiRustCallWithError(FfiException) { _status ->
1895
- UniffiLib.INSTANCE.uniffi_uniffi_yttrium_fn_method_ffiaccountclient_sign_message_with_mnemonic(
1896
- it, FfiConverterString.lower(`message`),FfiConverterString.lower(`mnemonic`),_status)
1897
- }
1898
- }
1899
- )
1900
- }
1901
-
1902
-
1903
-
1904
- @Throws(FfiException::class)
1905
- @Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
1906
- override suspend fun `waitForUserOperationReceipt`(`userOperationHash`: kotlin.String) : kotlin.String {
1907
- return uniffiRustCallAsync(
1908
- callWithPointer { thisPtr ->
1909
- UniffiLib.INSTANCE.uniffi_uniffi_yttrium_fn_method_ffiaccountclient_wait_for_user_operation_receipt(
1910
- thisPtr,
1911
- FfiConverterString.lower(`userOperationHash`),
1912
- )
1913
- },
1914
- { future, callback, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_poll_rust_buffer(future, callback, continuation) },
1915
- { future, continuation -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_complete_rust_buffer(future, continuation) },
1916
- { future -> UniffiLib.INSTANCE.ffi_uniffi_yttrium_rust_future_free_rust_buffer(future) },
1917
- // lift function
1918
- { FfiConverterString.lift(it) },
1919
- // Error FFI converter
1920
- FfiException.ErrorHandler,
1921
- )
1922
- }
1923
-
1924
-
1925
-
1926
-
1927
-
1928
- companion object
1929
-
1930
- }
1931
-
1932
- /**
1933
- * @suppress
1934
- */
1935
- public object FfiConverterTypeFFIAccountClient: FfiConverter<FfiAccountClient, Pointer> {
1936
-
1937
- override fun lower(value: FfiAccountClient): Pointer {
1938
- return value.uniffiClonePointer()
1939
- }
1940
-
1941
- override fun lift(value: Pointer): FfiAccountClient {
1942
- return FfiAccountClient(value)
1943
- }
1944
-
1945
- override fun read(buf: ByteBuffer): FfiAccountClient {
1946
- // The Rust code always writes pointers as 8 bytes, and will
1947
- // fail to compile if they don't fit.
1948
- return lift(Pointer(buf.getLong()))
1949
- }
1950
-
1951
- override fun allocationSize(value: FfiAccountClient) = 8UL
1952
-
1953
- override fun write(value: FfiAccountClient, buf: ByteBuffer) {
1954
- // The Rust code always expects pointers written as 8 bytes,
1955
- // and will fail to compile if they don't fit.
1956
- buf.putLong(Pointer.nativeValue(lower(value)))
1957
- }
1958
- }
1959
-
1960
-
1961
-
1962
- data class Eip1559Estimation (
1963
- var `maxFeePerGas`: kotlin.String,
1964
- var `maxPriorityFeePerGas`: kotlin.String
1965
- ) {
1966
-
1967
- companion object
1968
- }
1969
-
1970
- /**
1971
- * @suppress
1972
- */
1973
- public object FfiConverterTypeEip1559Estimation: FfiConverterRustBuffer<Eip1559Estimation> {
1974
- override fun read(buf: ByteBuffer): Eip1559Estimation {
1975
- return Eip1559Estimation(
1976
- FfiConverterString.read(buf),
1977
- FfiConverterString.read(buf),
1978
- )
1979
- }
1980
-
1981
- override fun allocationSize(value: Eip1559Estimation) = (
1982
- FfiConverterString.allocationSize(value.`maxFeePerGas`) +
1983
- FfiConverterString.allocationSize(value.`maxPriorityFeePerGas`)
1984
- )
1985
-
1986
- override fun write(value: Eip1559Estimation, buf: ByteBuffer) {
1987
- FfiConverterString.write(value.`maxFeePerGas`, buf)
1988
- FfiConverterString.write(value.`maxPriorityFeePerGas`, buf)
1989
- }
1990
- }
1991
-
1992
-
1993
-
1994
- data class FfiAccountClientConfig (
1995
- var `ownerAddress`: kotlin.String,
1996
- var `chainId`: kotlin.ULong,
1997
- var `config`: Config,
1998
- var `signerType`: kotlin.String,
1999
- var `safe`: kotlin.Boolean,
2000
- var `privateKey`: kotlin.String
2001
- ) {
2002
-
2003
- companion object
2004
- }
2005
-
2006
- /**
2007
- * @suppress
2008
- */
2009
- public object FfiConverterTypeFFIAccountClientConfig: FfiConverterRustBuffer<FfiAccountClientConfig> {
2010
- override fun read(buf: ByteBuffer): FfiAccountClientConfig {
2011
- return FfiAccountClientConfig(
2012
- FfiConverterString.read(buf),
2013
- FfiConverterULong.read(buf),
2014
- FfiConverterTypeConfig.read(buf),
2015
- FfiConverterString.read(buf),
2016
- FfiConverterBoolean.read(buf),
2017
- FfiConverterString.read(buf),
2018
- )
2019
- }
2020
-
2021
- override fun allocationSize(value: FfiAccountClientConfig) = (
2022
- FfiConverterString.allocationSize(value.`ownerAddress`) +
2023
- FfiConverterULong.allocationSize(value.`chainId`) +
2024
- FfiConverterTypeConfig.allocationSize(value.`config`) +
2025
- FfiConverterString.allocationSize(value.`signerType`) +
2026
- FfiConverterBoolean.allocationSize(value.`safe`) +
2027
- FfiConverterString.allocationSize(value.`privateKey`)
2028
- )
2029
-
2030
- override fun write(value: FfiAccountClientConfig, buf: ByteBuffer) {
2031
- FfiConverterString.write(value.`ownerAddress`, buf)
2032
- FfiConverterULong.write(value.`chainId`, buf)
2033
- FfiConverterTypeConfig.write(value.`config`, buf)
2034
- FfiConverterString.write(value.`signerType`, buf)
2035
- FfiConverterBoolean.write(value.`safe`, buf)
2036
- FfiConverterString.write(value.`privateKey`, buf)
2037
- }
2038
- }
2039
-
2040
-
2041
-
2042
- data class FfiTransaction (
2043
- var `to`: kotlin.String,
2044
- var `value`: kotlin.String,
2045
- var `data`: kotlin.String
2046
- ) {
2047
-
2048
- companion object
2049
- }
2050
-
2051
- /**
2052
- * @suppress
2053
- */
2054
- public object FfiConverterTypeFFITransaction: FfiConverterRustBuffer<FfiTransaction> {
2055
- override fun read(buf: ByteBuffer): FfiTransaction {
2056
- return FfiTransaction(
2057
- FfiConverterString.read(buf),
2058
- FfiConverterString.read(buf),
2059
- FfiConverterString.read(buf),
2060
- )
2061
- }
2062
-
2063
- override fun allocationSize(value: FfiTransaction) = (
2064
- FfiConverterString.allocationSize(value.`to`) +
2065
- FfiConverterString.allocationSize(value.`value`) +
2066
- FfiConverterString.allocationSize(value.`data`)
2067
- )
2068
-
2069
- override fun write(value: FfiTransaction, buf: ByteBuffer) {
2070
- FfiConverterString.write(value.`to`, buf)
2071
- FfiConverterString.write(value.`value`, buf)
2072
- FfiConverterString.write(value.`data`, buf)
2073
- }
2074
- }
2075
-
2076
-
2077
-
2078
- data class InitTransaction (
2079
- var `from`: FfiAddress,
2080
- var `to`: FfiAddress,
2081
- var `value`: Ffiu256,
2082
- var `gas`: Ffiu64,
2083
- var `gasPrice`: Ffiu256,
2084
- var `data`: FfiBytes,
2085
- var `nonce`: Ffiu64,
2086
- var `maxFeePerGas`: Ffiu256,
2087
- var `maxPriorityFeePerGas`: Ffiu256,
2088
- var `chainId`: kotlin.String
2089
- ) {
2090
-
2091
- companion object
2092
- }
2093
-
2094
- /**
2095
- * @suppress
2096
- */
2097
- public object FfiConverterTypeInitTransaction: FfiConverterRustBuffer<InitTransaction> {
2098
- override fun read(buf: ByteBuffer): InitTransaction {
2099
- return InitTransaction(
2100
- FfiConverterTypeFFIAddress.read(buf),
2101
- FfiConverterTypeFFIAddress.read(buf),
2102
- FfiConverterTypeFFIU256.read(buf),
2103
- FfiConverterTypeFFIU64.read(buf),
2104
- FfiConverterTypeFFIU256.read(buf),
2105
- FfiConverterTypeFFIBytes.read(buf),
2106
- FfiConverterTypeFFIU64.read(buf),
2107
- FfiConverterTypeFFIU256.read(buf),
2108
- FfiConverterTypeFFIU256.read(buf),
2109
- FfiConverterString.read(buf),
2110
- )
2111
- }
2112
-
2113
- override fun allocationSize(value: InitTransaction) = (
2114
- FfiConverterTypeFFIAddress.allocationSize(value.`from`) +
2115
- FfiConverterTypeFFIAddress.allocationSize(value.`to`) +
2116
- FfiConverterTypeFFIU256.allocationSize(value.`value`) +
2117
- FfiConverterTypeFFIU64.allocationSize(value.`gas`) +
2118
- FfiConverterTypeFFIU256.allocationSize(value.`gasPrice`) +
2119
- FfiConverterTypeFFIBytes.allocationSize(value.`data`) +
2120
- FfiConverterTypeFFIU64.allocationSize(value.`nonce`) +
2121
- FfiConverterTypeFFIU256.allocationSize(value.`maxFeePerGas`) +
2122
- FfiConverterTypeFFIU256.allocationSize(value.`maxPriorityFeePerGas`) +
2123
- FfiConverterString.allocationSize(value.`chainId`)
2124
- )
2125
-
2126
- override fun write(value: InitTransaction, buf: ByteBuffer) {
2127
- FfiConverterTypeFFIAddress.write(value.`from`, buf)
2128
- FfiConverterTypeFFIAddress.write(value.`to`, buf)
2129
- FfiConverterTypeFFIU256.write(value.`value`, buf)
2130
- FfiConverterTypeFFIU64.write(value.`gas`, buf)
2131
- FfiConverterTypeFFIU256.write(value.`gasPrice`, buf)
2132
- FfiConverterTypeFFIBytes.write(value.`data`, buf)
2133
- FfiConverterTypeFFIU64.write(value.`nonce`, buf)
2134
- FfiConverterTypeFFIU256.write(value.`maxFeePerGas`, buf)
2135
- FfiConverterTypeFFIU256.write(value.`maxPriorityFeePerGas`, buf)
2136
- FfiConverterString.write(value.`chainId`, buf)
2137
- }
2138
- }
2139
-
2140
-
2141
-
2142
- data class OwnerSignature (
2143
- var `owner`: kotlin.String,
2144
- var `signature`: kotlin.String
2145
- ) {
2146
-
2147
- companion object
2148
- }
2149
-
2150
- /**
2151
- * @suppress
2152
- */
2153
- public object FfiConverterTypeOwnerSignature: FfiConverterRustBuffer<OwnerSignature> {
2154
- override fun read(buf: ByteBuffer): OwnerSignature {
2155
- return OwnerSignature(
2156
- FfiConverterString.read(buf),
2157
- FfiConverterString.read(buf),
2158
- )
2159
- }
2160
-
2161
- override fun allocationSize(value: OwnerSignature) = (
2162
- FfiConverterString.allocationSize(value.`owner`) +
2163
- FfiConverterString.allocationSize(value.`signature`)
2164
- )
2165
-
2166
- override fun write(value: OwnerSignature, buf: ByteBuffer) {
2167
- FfiConverterString.write(value.`owner`, buf)
2168
- FfiConverterString.write(value.`signature`, buf)
2169
- }
2170
- }
2171
-
2172
-
2173
-
2174
- data class PreparedSendTransaction (
2175
- var `hash`: kotlin.String,
2176
- var `doSendTransactionParams`: kotlin.String
2177
- ) {
2178
-
2179
- companion object
2180
- }
2181
-
2182
- /**
2183
- * @suppress
2184
- */
2185
- public object FfiConverterTypePreparedSendTransaction: FfiConverterRustBuffer<PreparedSendTransaction> {
2186
- override fun read(buf: ByteBuffer): PreparedSendTransaction {
2187
- return PreparedSendTransaction(
2188
- FfiConverterString.read(buf),
2189
- FfiConverterString.read(buf),
2190
- )
2191
- }
2192
-
2193
- override fun allocationSize(value: PreparedSendTransaction) = (
2194
- FfiConverterString.allocationSize(value.`hash`) +
2195
- FfiConverterString.allocationSize(value.`doSendTransactionParams`)
2196
- )
2197
-
2198
- override fun write(value: PreparedSendTransaction, buf: ByteBuffer) {
2199
- FfiConverterString.write(value.`hash`, buf)
2200
- FfiConverterString.write(value.`doSendTransactionParams`, buf)
2201
- }
2202
- }
2203
-
2204
-
2205
-
2206
-
2207
-
2208
- sealed class FfiException: kotlin.Exception() {
2209
-
2210
- class General(
2211
-
2212
- val v1: kotlin.String
2213
- ) : FfiException() {
2214
- override val message
2215
- get() = "v1=${ v1 }"
2216
- }
2217
-
2218
-
2219
- companion object ErrorHandler : UniffiRustCallStatusErrorHandler<FfiException> {
2220
- override fun lift(error_buf: RustBuffer.ByValue): FfiException = FfiConverterTypeFFIError.lift(error_buf)
2221
- }
2222
-
2223
-
2224
- }
2225
-
2226
- /**
2227
- * @suppress
2228
- */
2229
- public object FfiConverterTypeFFIError : FfiConverterRustBuffer<FfiException> {
2230
- override fun read(buf: ByteBuffer): FfiException {
2231
-
2232
-
2233
- return when(buf.getInt()) {
2234
- 1 -> FfiException.General(
2235
- FfiConverterString.read(buf),
2236
- )
2237
- else -> throw RuntimeException("invalid error enum value, something is very wrong!!")
2238
- }
2239
- }
2240
-
2241
- override fun allocationSize(value: FfiException): ULong {
2242
- return when(value) {
2243
- is FfiException.General -> (
2244
- // Add the size for the Int that specifies the variant plus the size needed for all fields
2245
- 4UL
2246
- + FfiConverterString.allocationSize(value.v1)
2247
- )
2248
- }
2249
- }
2250
-
2251
- override fun write(value: FfiException, buf: ByteBuffer) {
2252
- when(value) {
2253
- is FfiException.General -> {
2254
- buf.putInt(1)
2255
- FfiConverterString.write(value.v1, buf)
2256
- Unit
2257
- }
2258
- }.let { /* this makes the `when` an expression, which ensures it is exhaustive */ }
2259
- }
2260
-
2261
- }
2262
-
2263
-
2264
-
2265
-
2266
- /**
2267
- * @suppress
2268
- */
2269
- public object FfiConverterSequenceTypeFFITransaction: FfiConverterRustBuffer<List<FfiTransaction>> {
2270
- override fun read(buf: ByteBuffer): List<FfiTransaction> {
2271
- val len = buf.getInt()
2272
- return List<FfiTransaction>(len) {
2273
- FfiConverterTypeFFITransaction.read(buf)
2274
- }
2275
- }
2276
-
2277
- override fun allocationSize(value: List<FfiTransaction>): ULong {
2278
- val sizeForLength = 4UL
2279
- val sizeForItems = value.map { FfiConverterTypeFFITransaction.allocationSize(it) }.sum()
2280
- return sizeForLength + sizeForItems
2281
- }
2282
-
2283
- override fun write(value: List<FfiTransaction>, buf: ByteBuffer) {
2284
- buf.putInt(value.size)
2285
- value.iterator().forEach {
2286
- FfiConverterTypeFFITransaction.write(it, buf)
2287
- }
2288
- }
2289
- }
2290
-
2291
-
2292
-
2293
-
2294
- /**
2295
- * @suppress
2296
- */
2297
- public object FfiConverterSequenceTypeOwnerSignature: FfiConverterRustBuffer<List<OwnerSignature>> {
2298
- override fun read(buf: ByteBuffer): List<OwnerSignature> {
2299
- val len = buf.getInt()
2300
- return List<OwnerSignature>(len) {
2301
- FfiConverterTypeOwnerSignature.read(buf)
2302
- }
2303
- }
2304
-
2305
- override fun allocationSize(value: List<OwnerSignature>): ULong {
2306
- val sizeForLength = 4UL
2307
- val sizeForItems = value.map { FfiConverterTypeOwnerSignature.allocationSize(it) }.sum()
2308
- return sizeForLength + sizeForItems
2309
- }
2310
-
2311
- override fun write(value: List<OwnerSignature>, buf: ByteBuffer) {
2312
- buf.putInt(value.size)
2313
- value.iterator().forEach {
2314
- FfiConverterTypeOwnerSignature.write(it, buf)
2315
- }
2316
- }
2317
- }
2318
-
2319
-
2320
-
2321
-
2322
-
2323
-
2324
-
2325
-
2326
-
2327
-
2328
-
2329
-
2330
-
2331
-
2332
-
2333
-
2334
-
2335
-
2336
-
2337
- /**
2338
- * Typealias from the type name used in the UDL file to the builtin type. This
2339
- * is needed because the UDL type name is used in function/method signatures.
2340
- * It's also what we have an external type that references a custom type.
2341
- */
2342
- public typealias FfiAddress = kotlin.String
2343
- public typealias FfiConverterTypeFFIAddress = FfiConverterString
2344
-
2345
-
2346
-
2347
- /**
2348
- * Typealias from the type name used in the UDL file to the builtin type. This
2349
- * is needed because the UDL type name is used in function/method signatures.
2350
- * It's also what we have an external type that references a custom type.
2351
- */
2352
- public typealias FfiBytes = kotlin.String
2353
- public typealias FfiConverterTypeFFIBytes = FfiConverterString
2354
-
2355
-
2356
-
2357
- /**
2358
- * Typealias from the type name used in the UDL file to the builtin type. This
2359
- * is needed because the UDL type name is used in function/method signatures.
2360
- * It's also what we have an external type that references a custom type.
2361
- */
2362
- public typealias Ffiu256 = kotlin.String
2363
- public typealias FfiConverterTypeFFIU256 = FfiConverterString
2364
-
2365
-
2366
-
2367
- /**
2368
- * Typealias from the type name used in the UDL file to the builtin type. This
2369
- * is needed because the UDL type name is used in function/method signatures.
2370
- * It's also what we have an external type that references a custom type.
2371
- */
2372
- public typealias Ffiu64 = kotlin.String
2373
- public typealias FfiConverterTypeFFIU64 = FfiConverterString
2374
-
2375
-
2376
-
2377
-
2378
-
2379
-
2380
-
2381
-
2382
-