Overview

The primary purpose of this SDK is to abstract the complex operations of interacting with the INTMAX network, providing a secure and user-friendly interface. It leverages WebAssembly to enable high-speed cryptographic processing while maintaining robust security features. This SDK manages the entire workflow from transaction creation to signing and broadcasting, allowing developers to access these complex functionalities through a simplified API.

The SDK achieves its goal of providing a robust, secure, and developer-friendly solution for blockchain wallet integration while maintaining high performance and reliability.

👉 Check out the INTMAX Client SDK on GitHub

Architecture

Deposit Workflow

Ethereum
    │
    â–¼
[Deposit](Predicate AML)
    │
    â–¼
[Deposit Analyzer]
    │
    â–¼
[Scroll Messenger]
    │
    â–¼
[Rollup Contract] When the block builder posts a new block for deposit, it is processed and verified
    │
    â–¼
INTMAX Mainnet

Transfer Workflow

INTMAX Mainnet
    │
    â–¼
[Transfer]
    │
    â–¼
[Rollup Contract] When the block builder posts a new block for transfer, it is processed and verified
    │
    â–¼
INTMAX Mainnet

Withdrawal Workflow

INTMAX2 Mainnet
    │
    â–¼
[Withdrawal]
    │
    â–¼
[Withdrawal Aggregator]
    │
    â–¼
[Scroll Messenger]
    │
    â–¼
[Withdrawal Messenger Relayer]
    │
    â–¼
[Liquidity Contract] If you are withdrawing tokens other than ETH, an additional claim process is required.
    │
    â–¼
Ethereum

SDK Interfaces

The INTMAXClient is an SDK interface designed for interacting with the INTMAX network. This interface provides essential features such as account management, transaction operations, deposits, and withdrawals. Below is an overview of each functionality.

This interface offers high-level APIs for seamless integration with the INTMAX network. It integrates account login/logout, transaction management, and deposit/withdrawal processing, allowing developers to execute complex blockchain operations through simple functions. Additionally, with WebAssembly support, it ensures fast and secure processing.

export interface INTMAXClient {
  // properties
  tokenBalances: TokenBalance[] | undefined;
  address: string; // IntMax public_key
  isLoggedIn: boolean;

  // account
  fetchTokenBalances: () => Promise<TokenBalancesResponse>;
  getPrivateKey: () => Promise<string | undefined>;
  signMessage: (message: string) => Promise<SignMessageResponse>;
  verifySignature: (signature: SignMessageResponse, message: string | Uint8Array) => Promise<boolean>;

  // transaction
  fetchTransactions: (params: FetchTransactionsRequest) => Promise<Transaction[]>;
  broadcastTransaction: (
    rawTransfers: BroadcastTransactionRequest[],
    isWithdrawal: boolean,
  ) => Promise<BroadcastTransactionResponse>;
  waitForTransactionConfirmation: (
    params: WaitForTransactionConfirmationRequest,
  ) => Promise<WaitForTransactionConfirmationResponse>;

  // deposit
  deposit: (params: PrepareDepositTransactionRequest) => Promise<PrepareDepositTransactionResponse>;
  fetchDeposits: (params: FetchTransactionsRequest) => Promise<(Transaction | null)[]>;

  // withdrawal
  fetchPendingWithdrawals: (params: FetchWithdrawalsRequest) => Promise<FetchWithdrawalsResponse>;
  withdraw: (params: WithdrawRequest) => Promise<WithdrawalResponse>;
  claimWithdrawal: (params: ContractWithdrawal[]) => Promise<ClaimWithdrawalTransactionResponse>;

  // additional services
  login: () => Promise<LoginResponse>;
  logout: () => Promise<void>;
  getTokensList: () => Promise<Token[]>;
}

Function List

The Function List outlines key properties and interfaces of the INTMAX Core SDK, enabling seamless user authentication, token balance management, and interaction with the INTMAX network. It provides clear and standardized methods for handling authentication states, token information, and paginated data retrieval to ensure efficient integration and extensibility across different use cases.