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

Commit

Permalink
feat: add pirex gmx tracking (#2243)
Browse files Browse the repository at this point in the history
* feat: add pirex gmx tracking

* fix: add group labels
  • Loading branch information
swheel33 authored Feb 9, 2023
1 parent 94e0c3a commit 8766bdf
Show file tree
Hide file tree
Showing 15 changed files with 6,947 additions and 5 deletions.
47 changes: 47 additions & 0 deletions src/apps/pirex/arbitrum/pirex.apxglp.token-fetcher.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { Inject } from '@nestjs/common';

import { APP_TOOLKIT, IAppToolkit } from '~app-toolkit/app-toolkit.interface';
import { PositionTemplate } from '~app-toolkit/decorators/position-template.decorator';
import { AppTokenTemplatePositionFetcher } from '~position/template/app-token.template.position-fetcher';
import {
GetAddressesParams,
DefaultAppTokenDefinition,
GetUnderlyingTokensParams,
UnderlyingTokenDefinition,
GetPricePerShareParams,
} from '~position/template/app-token.template.types';

import { PirexContractFactory, ApxGlp } from '../contracts';

@PositionTemplate()
export class ArbitrumPirexApxglpTokenFetcher extends AppTokenTemplatePositionFetcher<ApxGlp> {
groupLabel = 'Pirex GMX';

constructor(
@Inject(APP_TOOLKIT) readonly appToolkit: IAppToolkit,
@Inject(PirexContractFactory) private readonly pirexContractFactory: PirexContractFactory,
) {
super(appToolkit);
}

getContract(address: string): ApxGlp {
return this.pirexContractFactory.apxGlp({ address, network: this.network });
}

async getAddresses(_params: GetAddressesParams<DefaultAppTokenDefinition>): Promise<string[]> {
return ['0x6cec1903eae091bdc532cfde68fff0723fd3ee14'];
}

async getUnderlyingTokenDefinitions(
_params: GetUnderlyingTokensParams<ApxGlp, DefaultAppTokenDefinition>,
): Promise<UnderlyingTokenDefinition[]> {
return [{ address: '0x4277f8f2c384827b5273592ff7cebd9f2c1ac258', network: this.network }];
}

async getPricePerShare({ contract, appToken }: GetPricePerShareParams<ApxGlp>) {
const reserveRaw = await contract.totalAssets();
const reserve = Number(reserveRaw) / 10 ** appToken.tokens[0].decimals;
const pricePerShare = reserve / appToken.supply;
return [pricePerShare];
}
}
47 changes: 47 additions & 0 deletions src/apps/pirex/arbitrum/pirex.apxgmx.token-fetcher.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { Inject } from '@nestjs/common';

import { APP_TOOLKIT, IAppToolkit } from '~app-toolkit/app-toolkit.interface';
import { PositionTemplate } from '~app-toolkit/decorators/position-template.decorator';
import { AppTokenTemplatePositionFetcher } from '~position/template/app-token.template.position-fetcher';
import {
GetAddressesParams,
DefaultAppTokenDefinition,
GetUnderlyingTokensParams,
UnderlyingTokenDefinition,
GetPricePerShareParams,
} from '~position/template/app-token.template.types';

import { PirexContractFactory, ApxGmx } from '../contracts';

@PositionTemplate()
export class ArbitrumPirexApxgmxTokenFetcher extends AppTokenTemplatePositionFetcher<ApxGmx> {
groupLabel = 'Pirex GMX';

constructor(
@Inject(APP_TOOLKIT) readonly appToolkit: IAppToolkit,
@Inject(PirexContractFactory) private readonly pirexContractFactory: PirexContractFactory,
) {
super(appToolkit);
}

getContract(address: string): ApxGmx {
return this.pirexContractFactory.apxGmx({ address, network: this.network });
}

async getAddresses(_params: GetAddressesParams<DefaultAppTokenDefinition>): Promise<string[]> {
return ['0x61dbc0d6d7a6bde37f93d2014044a7c6b6de34d2'];
}

async getUnderlyingTokenDefinitions(
_params: GetUnderlyingTokensParams<ApxGmx, DefaultAppTokenDefinition>,
): Promise<UnderlyingTokenDefinition[]> {
return [{ address: '0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a', network: this.network }];
}

async getPricePerShare({ contract, appToken }: GetPricePerShareParams<ApxGmx>) {
const reserveRaw = await contract.totalAssets();
const reserve = Number(reserveRaw) / 10 ** appToken.tokens[0].decimals;
const pricePerShare = reserve / appToken.supply;
return [pricePerShare];
}
}
9 changes: 9 additions & 0 deletions src/apps/pirex/arbitrum/pirex.pxglp.token-fetcher.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { PositionTemplate } from '~app-toolkit/decorators/position-template.decorator';
import { WrapperTemplateTokenFetcher } from '~position/template/wrapper.template.token-fetcher';

@PositionTemplate()
export class ArbitrumPirexPxGlpTokenFetcher extends WrapperTemplateTokenFetcher {
groupLabel = 'Pirex GMX';
vaultAddress = '0x0eac365e4d7de0e293078bd771ba7d0ba9a4c892';
underlyingTokenAddress = '0x4277f8f2c384827b5273592ff7cebd9f2c1ac258';
}
9 changes: 9 additions & 0 deletions src/apps/pirex/arbitrum/pirex.pxgmx.token-fetcher.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { PositionTemplate } from '~app-toolkit/decorators/position-template.decorator';
import { WrapperTemplateTokenFetcher } from '~position/template/wrapper.template.token-fetcher';

@PositionTemplate()
export class ArbitrumPirexPxGmxTokenFetcher extends WrapperTemplateTokenFetcher {
groupLabel = 'Pirex GMX';
vaultAddress = '0x9a592b4539e22eeb8b2a3df679d572c7712ef999';
underlyingTokenAddress = '0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a';
}
Loading

0 comments on commit 8766bdf

Please sign in to comment.