@bancor/carbon-sdk
Version:
The SDK is a READ-ONLY tool, intended to facilitate working with Carbon contracts. It's a convenient wrapper around our matching algorithm, allowing programs and users get a ready to use transaction data that will allow them to manage strategies and fulfi
112 lines (86 loc) • 3.12 kB
Markdown
# Carbon SDK
[](https://choosealicense.com/licenses/mit/)

## Disclaimer
This SDK is in beta. We cannot be held responsible for any losses caused by use of the SDK.
## Overview
The SDK is a READ-ONLY tool, intended to facilitate working with Carbon contracts. It's a convenient wrapper around the Carbon matching algorithm and Carbon contracts, allowing programs and users get a ready to use transaction data that will allow them to manage strategies and fulfill trades
## Installation
Use npm or yarn to install carbon-sdk.
```bash
yarn add /carbon-sdk
```
## Usage
```js
import {
PayableOverrides,
TradeActionBNStr,
TokenPair,
MatchActionBNStr,
StrategyUpdate,
EncodedStrategyBNStr,
} from '/carbon-sdk';
import { Toolkit } from '/carbon-sdk/strategy-management';
import { ChainCache, initSyncedCache } from '/carbon-sdk/chain-cache';
import {
ContractsApi,
ContractsConfig,
} from '/carbon-sdk/contracts-api';
let api: ContractsApi;
let sdkCache: ChainCache;
let carbonSDK: Toolkit;
let isInitialized = false;
let isInitializing = false;
const MAX_BLOCK_AGE = 2000; // past this many blocks, the SDK won't attempt to catch up by processing events and instead call the contracts for strategy info.
const init = async (
rpcUrl: string,
config: ContractsConfig,
decimalsMap?: Map<string, number>,
cachedData?: string
) => {
if (isInitialized || isInitializing) return;
isInitializing = true;
const provider = new StaticJsonRpcProvider(
{ url: rpcUrl, skipFetchSetup: true },
1
);
api = new ContractsApi(provider, config);
const { cache, startDataSync } = initSyncedCache(api.reader, cachedData, MAX_BLOCK_AGE);
sdkCache = cache;
carbonSDK = new Toolkit(
api,
sdkCache,
decimalsMap
? (address) => decimalsMap.get(address.toLowerCase())
: undefined
);
sdkCache.on('onPairDataChanged', (affectedPairs) =>
onPairDataChanged(affectedPairs)
);
sdkCache.on('onPairAddedToCache', (affectedPairs) =>
onPairAddedToCache(affectedPairs)
);
await startDataSync();
isInitialized = true;
isInitializing = false;
};
```
## Notes
### 1. The SDK Logger supports 3 verbosity levels:
- `0` (default) only prints errors and important logs.
- `1` (debug) prints highly verbose logs.
- `2` (debug readable) is same as `1` but also converts any BigNumber to an easy to read string (impacting performance).
To use it in Node, set the environment variable `CARBON_DEFI_SDK_VERBOSITY` to the desired level.
To use it from a browser app do, before importing the SDK:
```js
window.CARBON_DEFI_SDK_VERBOSITY = 2;
```
## Authors
- [](https://www.github.com/zavelevsky)
## Contributing
Pull requests are welcome!
For major changes, please open an issue first
to discuss what you would like to change.
Please make sure to update tests as appropriate.
## License
[MIT](https://choosealicense.com/licenses/mit/)