1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
use crate::abi;
use alloc::vec::Vec;
use core::ops::{Add, Div, Mul, Neg, Rem, Sub};
use core::ops::{AddAssign, DivAssign, MulAssign, RemAssign, SubAssign};
pub enum Sign {
Minus,
NoSign,
Plus,
}
pub trait BigIntApi:
Sized
+ From<Self::BigUint>
+ From<i64>
+ From<i32>
+ Clone
+ Add<Output = Self>
+ AddAssign
+ Sub<Output = Self>
+ SubAssign
+ Mul<Output = Self>
+ MulAssign
+ Div<Output = Self>
+ DivAssign
+ Rem<Output = Self>
+ RemAssign
+ Neg
+ PartialEq<Self>
+ Eq
+ PartialOrd<Self>
+ Ord
+ PartialEq<i64>
+ PartialOrd<i64>
+ elrond_codec::NestedEncode
+ elrond_codec::TopEncode
+ elrond_codec::NestedDecode
+ elrond_codec::TopDecode
+ abi::TypeAbi
{
type BigUint;
fn zero() -> Self {
0i64.into()
}
fn abs_uint(&self) -> Self::BigUint;
fn sign(&self) -> Sign;
fn to_signed_bytes_be(&self) -> Vec<u8>;
fn from_signed_bytes_be(bytes: &[u8]) -> Self;
}