pub fn contract_obj<A>(api: A) -> ContractObj<A>
where for<'b> A::BigUint: BigUintApi + AddAssign<&'b A::BigUint> + SubAssign<&'b A::BigUint> + MulAssign<&'b A::BigUint> + DivAssign<&'b A::BigUint> + RemAssign<&'b A::BigUint> + BitAndAssign<&'b A::BigUint> + BitOrAssign<&'b A::BigUint> + BitXorAssign<&'b A::BigUint>, for<'a, 'b> &'a A::BigUint: Add<&'b A::BigUint, Output = A::BigUint> + Sub<&'b A::BigUint, Output = A::BigUint> + Mul<&'b A::BigUint, Output = A::BigUint> + Div<&'b A::BigUint, Output = A::BigUint> + Rem<&'b A::BigUint, Output = A::BigUint> + BitAnd<&'b A::BigUint, Output = A::BigUint> + BitOr<&'b A::BigUint, Output = A::BigUint> + BitXor<&'b A::BigUint, Output = A::BigUint> + Shr<usize, Output = A::BigUint> + Shl<usize, Output = A::BigUint>, for<'b> A::BigInt: BigIntApi + AddAssign<&'b A::BigInt> + SubAssign<&'b A::BigInt> + MulAssign<&'b A::BigInt> + DivAssign<&'b A::BigInt> + RemAssign<&'b A::BigInt>, for<'a, 'b> &'a A::BigInt: Add<&'b A::BigInt, Output = A::BigInt> + Sub<&'b A::BigInt, Output = A::BigInt> + Mul<&'b A::BigInt, Output = A::BigInt> + Div<&'b A::BigInt, Output = A::BigInt> + Rem<&'b A::BigInt, Output = A::BigInt>, A: ContractBase + ErrorApi + EndpointArgumentApi + EndpointFinishApi + Clone + 'static,