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

Commit

Permalink
fix(uniswap-v3): Cleanup and update subgraph url (#3128)
Browse files Browse the repository at this point in the history
  • Loading branch information
wpoulin committed Dec 11, 2023
1 parent 736fd2e commit 954d23c
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 69 deletions.
@@ -1,9 +1,9 @@
import { Inject, NotImplementedException } from '@nestjs/common';
import { compact, range } from 'lodash';
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 { UniswapV3LiquidityContractPositionBuilder } from '../common/uniswap-v3.liquidity.contract-position-builder';
import { UniswapV3LiquidityContractPositionFetcher } from '../common/uniswap-v3.liquidity.contract-position-fetcher';
import { UniswapV3ViemContractFactory } from '../contracts';

Expand All @@ -13,69 +13,16 @@ import { BaseUniswapV3LiquidityContractPositionBuilder } from './uniswap-v3.liqu
export class BaseUniswapV3LiquidityContractPositionFetcher extends UniswapV3LiquidityContractPositionFetcher {
groupLabel = 'Pools';

subgraphUrl = '';
subgraphUrl = 'https://api.studio.thegraph.com/query/48211/uniswap-v3-base/v0.0.1';
positionManagerAddress = '0x03a520b32c04bf3beef7beb72e919cf822ed34f1';
factoryAddress = '0x33128a8fc17869897dce68ed026d694621f6fdfd';

constructor(
@Inject(APP_TOOLKIT) protected readonly appToolkit: IAppToolkit,
@Inject(UniswapV3ViemContractFactory) protected readonly contractFactory: UniswapV3ViemContractFactory,
@Inject(BaseUniswapV3LiquidityContractPositionBuilder)
protected readonly uniswapV3LiquidityContractPositionBuilder: BaseUniswapV3LiquidityContractPositionBuilder,
protected readonly uniswapV3LiquidityContractPositionBuilder: UniswapV3LiquidityContractPositionBuilder,
) {
super(appToolkit, contractFactory, uniswapV3LiquidityContractPositionBuilder);
}

getContract(address: string) {
return this.contractFactory.uniswapV3PositionManager({ address, network: this.network });
}

async getDefinitions() {
return [];
}

async getTokenDefinitions() {
return [];
}

// @ts-ignore
async getDataProps() {
return {};
}

async getLabel() {
return '';
}

// @ts-ignore
async getTokenBalancesPerPosition() {
throw new NotImplementedException();
}

async getBalances(address: string) {
// @TODO: Rely on contract positions when we can correctly index all pools
const multicall = this.appToolkit.getViemMulticall(this.network);
const tokenLoader = this.appToolkit.getTokenDependencySelector({
tags: { network: this.network, context: `${this.appId}__template_balances` },
});

const positionManager = this.contractFactory.uniswapV3PositionManager({
address: this.positionManagerAddress,
network: this.network,
});

const numPositionsRaw = await positionManager.read.balanceOf([address]);
const balances = await Promise.all(
range(0, Number(numPositionsRaw)).map(async index =>
this.uniswapV3LiquidityContractPositionBuilder.buildPosition({
positionId: await multicall.wrap(positionManager).read.tokenOfOwnerByIndex([address, BigInt(index)]),
network: this.network,
multicall,
tokenLoader,
}),
),
);

return compact(balances);
}
}
@@ -1,19 +1,7 @@
import { Inject } from '@nestjs/common';
import { Token as TokenWrapper } from '@uniswap/sdk-core';
import { Pool, Position, TickMath } from '@uniswap/v3-sdk';
import { AbiEvent } from 'abitype';
import { BigNumberish, BigNumber as EtherBigNumber } from 'ethers';
import {
RpcLog,
EstimateGasParameters,
GetEnsAddressReturnType,
GetFilterChangesParameters,
GetTransactionParameters,
MulticallReturnType,
WaitForTransactionReceiptParameters,
WatchEventParameters,
} from 'viem';
import { VerifyTypedDataParameters } from 'viem/_types/actions/public/verifyTypedData';

import { APP_TOOLKIT, IAppToolkit } from '~app-toolkit/app-toolkit.interface';
import { Token } from '~position/position.interface';
Expand Down

0 comments on commit 954d23c

Please sign in to comment.