@velora-dex/sdk
Version:
79 lines (65 loc) • 1.81 kB
text/typescript
/* eslint-disable @typescript-eslint/no-unused-vars */
import axios from 'axios';
import { ethers } from 'ethersV5';
import {
// swap methods
constructPartialSDK,
constructEthersContractCaller,
constructAxiosFetcher,
// OTCOrders methods
constructBuildOTCOrder,
constructSignOTCOrder,
constructPostOTCOrder,
// extra types
SignableOrderData,
OTCOrderToPost,
} from '..';
const wallet = ethers.Wallet.createRandom();
const takerAccount = '0x5678...';
const fetcher = constructAxiosFetcher(axios);
const provider = wallet.connect(ethers.getDefaultProvider(1));
const contractCaller = constructEthersContractCaller(
{
ethersProviderOrSigner: provider,
EthersContract: ethers.Contract,
},
wallet.address
);
// type BuildOTCOrderFunctions
// & SignOTCOrderFunctions
// & PostOTCOrderFunctions
const OTCOrderSDK = constructPartialSDK(
{
chainId: 1,
fetcher,
contractCaller,
},
constructBuildOTCOrder,
constructSignOTCOrder,
constructPostOTCOrder
);
const DAI = '0x6B175474E89094C44Da98b954EedeAC495271d0F';
const HEX = '0x2b591e99afe9f32eaa6214f7b7629768c40eeb39';
const orderInput = {
nonce: 1,
expiry: Math.floor(Date.now() / 1000) + 60 * 60 * 24 * 7, // week from now, in sec
makerAsset: DAI,
takerAsset: HEX,
makerAmount: (1e18).toString(10),
takerAmount: (8e18).toString(10),
maker: wallet.address,
taker: takerAccount,
};
async function run() {
const signableOrderData: SignableOrderData = await OTCOrderSDK.buildOTCOrder(
orderInput
);
const signature: string = await OTCOrderSDK.signOTCOrder(signableOrderData);
const orderToPostToApi: OTCOrderToPost = {
...signableOrderData.data,
signature,
};
const newOrder = await OTCOrderSDK.postOTCOrder(orderToPostToApi);
console.log(newOrder);
}
run();