1#![no_std]
30#![warn(missing_docs)]
31#![warn(clippy::all)]
32
33#[cfg(feature = "alloc")]
34extern crate alloc;
35
36pub mod ct;
37pub mod error;
38pub mod gas;
39pub mod limbs;
40pub mod types;
41
42#[cfg(feature = "alloc")]
43pub mod add;
44#[cfg(feature = "alloc")]
45pub mod div;
46#[cfg(feature = "alloc")]
47pub mod encode;
48#[cfg(feature = "alloc")]
49pub mod modexp;
50#[cfg(feature = "alloc")]
51pub mod montgomery;
52#[cfg(feature = "alloc")]
53pub mod mul;
54#[cfg(feature = "alloc")]
55pub mod sub;
56#[cfg(feature = "alloc")]
57pub mod timeboxed;
58
59#[cfg(feature = "zk")]
60pub mod zk;
61
62pub use error::{BigIntError, Result};
64pub use gas::{G_BASE, Gas, MAX_LIMBS};
65pub use limbs::{Limb, WideLimb};
66#[cfg(feature = "alloc")]
67pub use types::BigInt;
68pub use types::{BigIntCore, BigIntFixed, U256, U512, U1024, U2048};
69
70#[cfg(feature = "alloc")]
72pub use add::{add, add_assign, add_magnitude};
73#[cfg(feature = "alloc")]
74pub use div::{div, div_assign, div_rem, rem, rem_assign};
75#[cfg(feature = "alloc")]
76pub use mul::{mul, mul_assign, sqr};
77#[cfg(feature = "alloc")]
78pub use sub::{sub, sub_assign, sub_magnitude};
79
80#[cfg(feature = "alloc")]
82pub use encode::{decode, encode};
83
84#[cfg(feature = "alloc")]
86pub use modexp::mod_pow;
87#[cfg(feature = "alloc")]
88pub use montgomery::{
89 MontgomeryContext, from_mont, mont_add, mont_mul, mont_reduce, mont_sub, to_mont,
90};
91
92#[cfg(feature = "alloc")]
94pub use timeboxed::{modexp_timeboxed, mul_timeboxed, resume};
95#[cfg(feature = "alloc")]
96pub use timeboxed::{ContinuationState, OpType, PartialResult};
97
98#[cfg(feature = "zk")]
99pub use zk::{ZKBackend, ZKBigInt};