Skip to content
This repository has been archived by the owner on Jan 24, 2024. It is now read-only.

Commit

Permalink
feat(mux): Add lev-trades ContractPositionFetcher and add BalanceFetc…
Browse files Browse the repository at this point in the history
…her (#1872)

* feat(mux): Add lev-trades ContractPositionFetcher and add BalanceFetcher
  • Loading branch information
xionyk committed Dec 16, 2022
1 parent ee22c7b commit fa5012e
Show file tree
Hide file tree
Showing 21 changed files with 2,336 additions and 2 deletions.
35 changes: 35 additions & 0 deletions src/apps/mux/arbitrum/mux.balance-fetcher.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import { Inject } from '@nestjs/common';

import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface';
import { Register } from '~app-toolkit/decorators';
import { presentBalanceFetcherResponse } from '~app-toolkit/helpers/presentation/balance-fetcher-response.present';
import { MuxLevTradesBalanceHelper } from '~apps/mux/helpers/mux.lev-trades.balance-helper';
import { BalanceFetcher } from '~balance/balance-fetcher.interface';
import { Network } from '~types/network.interface';

import { MUX_DEFINITION } from '../mux.definition';

const network = Network.ARBITRUM_MAINNET;

@Register.BalanceFetcher(MUX_DEFINITION.id, network)
export class ArbitrumMuxBalanceFetcher implements BalanceFetcher {
constructor(
@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit,
@Inject(MuxLevTradesBalanceHelper) private readonly muxLevTradesBalanceHelper: MuxLevTradesBalanceHelper,
) {}

private async getLevTradesBalances(address: string) {
return this.muxLevTradesBalanceHelper.getBalance({ address, network });
}

async getBalances(address: string) {
const levTradesBalances = await this.getLevTradesBalances(address);

return presentBalanceFetcherResponse([
{
label: 'Leveraged trades',
assets: [...levTradesBalances],
},
]);
}
}
25 changes: 25 additions & 0 deletions src/apps/mux/arbitrum/mux.lev-trades.contract-position-fetcher.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { Inject } from '@nestjs/common';

import { Register } from '~app-toolkit/decorators';
import { PositionFetcher } from '~position/position-fetcher.interface';
import { ContractPosition } from '~position/position.interface';
import { Network } from '~types/network.interface';

import { MuxLevTradesContractPositionHelper } from '../helpers/mux.lev-trades.contract-position-helper';
import { MUX_DEFINITION } from '../mux.definition';

const appId = MUX_DEFINITION.id;
const groupId = MUX_DEFINITION.groups.levTrades.id;
const network = Network.ARBITRUM_MAINNET;

@Register.ContractPositionFetcher({ appId, groupId, network })
export class ArbitrumMuxLevTradesContractPositionFetcher implements PositionFetcher<ContractPosition> {
constructor(
@Inject(MuxLevTradesContractPositionHelper)
private readonly muxLevTradesContractPositionHelper: MuxLevTradesContractPositionHelper,
) {}

async getPositions() {
return this.muxLevTradesContractPositionHelper.getPosition({ network });
}
}
35 changes: 35 additions & 0 deletions src/apps/mux/avalanche/mux.balance-fetcher.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import { Inject } from '@nestjs/common';

import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface';
import { Register } from '~app-toolkit/decorators';
import { presentBalanceFetcherResponse } from '~app-toolkit/helpers/presentation/balance-fetcher-response.present';
import { MuxLevTradesBalanceHelper } from '~apps/mux/helpers/mux.lev-trades.balance-helper';
import { BalanceFetcher } from '~balance/balance-fetcher.interface';
import { Network } from '~types/network.interface';

import { MUX_DEFINITION } from '../mux.definition';

const network = Network.AVALANCHE_MAINNET;

@Register.BalanceFetcher(MUX_DEFINITION.id, network)
export class AvalancheMuxBalanceFetcher implements BalanceFetcher {
constructor(
@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit,
@Inject(MuxLevTradesBalanceHelper) private readonly muxLevTradesBalanceHelper: MuxLevTradesBalanceHelper,
) {}

private async getLevTradesBalances(address: string) {
return this.muxLevTradesBalanceHelper.getBalance({ address, network });
}

async getBalances(address: string) {
const levTradesBalances = await this.getLevTradesBalances(address);

return presentBalanceFetcherResponse([
{
label: 'Leveraged trades',
assets: [...levTradesBalances],
},
]);
}
}
25 changes: 25 additions & 0 deletions src/apps/mux/avalanche/mux.lev-trades.contract-position-fetcher.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { Inject } from '@nestjs/common';

import { Register } from '~app-toolkit/decorators';
import { MuxLevTradesContractPositionHelper } from '~apps/mux/helpers/mux.lev-trades.contract-position-helper';
import { PositionFetcher } from '~position/position-fetcher.interface';
import { ContractPosition } from '~position/position.interface';
import { Network } from '~types/network.interface';

import { MUX_DEFINITION } from '../mux.definition';

const appId = MUX_DEFINITION.id;
const groupId = MUX_DEFINITION.groups.levTrades.id;
const network = Network.AVALANCHE_MAINNET;

@Register.ContractPositionFetcher({ appId, groupId, network })
export class AvalancheMuxLevTradesContractPositionFetcher implements PositionFetcher<ContractPosition> {
constructor(
@Inject(MuxLevTradesContractPositionHelper)
private readonly muxLevTradesContractPositionHelper: MuxLevTradesContractPositionHelper,
) {}

async getPositions() {
return this.muxLevTradesContractPositionHelper.getPosition({ network });
}
}
35 changes: 35 additions & 0 deletions src/apps/mux/binance-smart-chain/mux.balance-fetcher.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import { Inject } from '@nestjs/common';

import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface';
import { Register } from '~app-toolkit/decorators';
import { presentBalanceFetcherResponse } from '~app-toolkit/helpers/presentation/balance-fetcher-response.present';
import { MuxLevTradesBalanceHelper } from '~apps/mux/helpers/mux.lev-trades.balance-helper';
import { BalanceFetcher } from '~balance/balance-fetcher.interface';
import { Network } from '~types/network.interface';

import { MUX_DEFINITION } from '../mux.definition';

const network = Network.BINANCE_SMART_CHAIN_MAINNET;

@Register.BalanceFetcher(MUX_DEFINITION.id, network)
export class BinanceSmartChainMuxBalanceFetcher implements BalanceFetcher {
constructor(
@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit,
@Inject(MuxLevTradesBalanceHelper) private readonly muxLevTradesBalanceHelper: MuxLevTradesBalanceHelper,
) {}

private async getLevTradesBalances(address: string) {
return this.muxLevTradesBalanceHelper.getBalance({ address, network });
}

async getBalances(address: string) {
const levTradesBalances = await this.getLevTradesBalances(address);

return presentBalanceFetcherResponse([
{
label: 'Leveraged trades',
assets: [...levTradesBalances],
},
]);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { Inject } from '@nestjs/common';

import { Register } from '~app-toolkit/decorators';
import { MuxLevTradesContractPositionHelper } from '~apps/mux/helpers/mux.lev-trades.contract-position-helper';
import { PositionFetcher } from '~position/position-fetcher.interface';
import { ContractPosition } from '~position/position.interface';
import { Network } from '~types/network.interface';

import { MUX_DEFINITION } from '../mux.definition';

const appId = MUX_DEFINITION.id;
const groupId = MUX_DEFINITION.groups.levTrades.id;
const network = Network.BINANCE_SMART_CHAIN_MAINNET;

@Register.ContractPositionFetcher({ appId, groupId, network })
export class BinanceSmartChainMuxLevTradesContractPositionFetcher implements PositionFetcher<ContractPosition> {
constructor(
@Inject(MuxLevTradesContractPositionHelper)
private readonly muxLevTradesContractPositionHelper: MuxLevTradesContractPositionHelper,
) {}

async getPositions() {
return this.muxLevTradesContractPositionHelper.getPosition({ network });
}
}
Loading

0 comments on commit fa5012e

Please sign in to comment.