Coding Guide
A coding overview to xchainjs.
General
The foundation of xchainjs is defined in the xchain-util package
- Address: a crypto address as a string.
- BaseAmount: a bigNumber in 1e8 format. E.g. 1 BTC = 100,000,000 in BaseAmount
- AssetAmount: a BaseAmount*10^8. E.g. 1 BTC = 1 in Asset Amount.
- Asset: Asset details {Chain, symbol, ticker, isSynth}
All Assets must conform to the Asset Notation
assetFromString() is used to quickly create assets and will assign chain and synth.
- CryptoAmount:is a class that has:
 baseAmount: BaseAmount
 readonly asset: Asset
All crypto should use the CryptoAmount object with the understanding they are in BaseAmount format. An example to switch between them:
// Define 1 BTC as CryptoAmount
oneBtc = new CryptoAmount(
  assetToBase(assetAmount(1)),
  assetFromStringEx(`BTC.BTC`),
);
// Print 1 BTC in BaseAmount
console.log(oneBtc.amount().toNumber().toFixed()); // 100000000
// Print 1 BTC in Asset Amount
console.log(oneBtc.AssetAmount().amount().toNumber().toFixed()); // 1
Query
Major data types for the thorchain-query package.
EstimateSwapParams
SwapInput
The input Type for estimateSwap. This is designed to be created by interfaces and passed into EstimateSwap. Also see Swap Memo for more information.
| Variable | Data Type | Comments | 
|---|---|---|
| input | CryptoAmount | Inbound asset and amount | 
| destinationAsset | Asset | Outbound asset | 
| destinationAddress | String | Outbound asset address | 
| slipLimit | BigNumber | Optional: Used to set LIM | 
| affiliateFeePercent | number | Optional: 0-0.1 allowed | 
| affiliateAddress | Address | Optional: THOR address | 
| interfaceID | string | Optional: Assigned interface ID | 
SwapEstimate
The internal return type is used within estimateSwap after the calculation is done.
| Variable | Data Type | Comments | 
|---|---|---|
| totalFees | TotalFees | All fees for swap | 
| slipPercentage | BigNumber | Actual slip of the swap | 
| netOutput | CryptoAmount | Input - totalFees | 
| waitTimeSeconds | number | Estimated time for the swap | 
| canSwap | boolean | False if there is an issue | 
| errors | string array | Contains info if canSwapis false | 
TxDetails
Return type of estimateSwap. This is designed to be used by interfaces to give them all the information they need to display to the user.
| Variable | Data Type | Comments | 
|---|---|---|
| txEstimate | SwapEstimate | Swap details | 
| memo | string | Constructed memo THORChain will understand | 
| expiry | DateTime | When the SwapEstimateinformation will no longer be valid | 
| toAddress | string | Current Asgard Vault address from inbound_address | 
AMM
Major data types for the thorchain-query package.
ExecuteSwap
Input Type for doSwap where a swap will be actually conducted. Based on EstimateSwapParams.
TxSubmitted
| Variable | ||
|---|---|---|
| hash | string | inbound Tx Hash | 
| url | string | Block exploer url | 
| waitTimeSeconds | number | Estimated time for the swap |