Skip to content

Commit

Permalink
fix: get position manager address directly from subgraph
Browse files Browse the repository at this point in the history
  • Loading branch information
jackmellis committed Jan 11, 2024
1 parent 83fb739 commit 6bdf681
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export const makeFetchPositionsSet =
const [claimable0, claimable1] = await fetchClaimableAmount({
tokenId: position.tokenId as TokenId,
provider,
manager: getManager(network, position.timestampOpened).manager,
manager: getManager(network, position).manager,
});
return transformPosition({
network,
Expand Down
28 changes: 18 additions & 10 deletions packages/core/src/positions/fetchLiquidityPositions/getManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,28 @@ import {
Network,
POOL_ROUTER,
} from '@nftx/constants';
import { Address } from '@nftx/types';
import { getChainConstant } from '@nftx/utils';

const getManager = (network: number, timestampOpened: string) => {
const lastTimeOldContractUsed = 1704206700;
const timestamp = Number(timestampOpened);
const poolRouterAddresses: Record<string, Record<string, Address>> = {
[Network.Sepolia]: {
'0x55bdc76262b1e6e791d0636a0bc61cee23cdfa87':
'0xd36ece08f76c50ec3f01db65bbc5ef5aa5fbe849',
},
};

let manager = getChainConstant(NONFUNGIBLE_POSITION_MANAGER, network);
let poolRouter = getChainConstant(POOL_ROUTER, network);
const getPoolRouterAddress = (network: number, managerAddress: Address) => {
return (
poolRouterAddresses[network]?.[managerAddress.toLowerCase()] ??
getChainConstant(POOL_ROUTER, network)
);
};

// If older than this, it's the old contract
if (timestamp <= lastTimeOldContractUsed && network === Network.Sepolia) {
manager = '0x55bdc76262b1e6e791d0636a0bc61cee23cdfa87';
poolRouter = '0xD36ece08F76c50EC3F01db65BBc5Ef5Aa5fbE849';
}
const getManager = (network: number, position: { nfpmAddress: string }) => {
const manager =
(position.nfpmAddress as Address) ||
getChainConstant(NONFUNGIBLE_POSITION_MANAGER, network);
const poolRouter = getPoolRouterAddress(network, manager);
return { manager, poolRouter };
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ const transformPosition = ({
// TODO: get this from... somwhere?
const lifetimeRewards = Zero;

const { manager, poolRouter } = getManager(network, position.timestampOpened);
const { manager, poolRouter } = getManager(network, position);

return {
id: position.id as Address,
Expand Down
15 changes: 15 additions & 0 deletions packages/types/src/subgraph/nftx-v3-uniswap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -554,6 +554,7 @@ export enum Deposit_OrderBy {
PositionLiquidityTokenType = 'position__liquidityTokenType',
PositionLiquidityUsd = 'position__liquidityUSD',
PositionLockedUntil = 'position__lockedUntil',
PositionNfpmAddress = 'position__nfpmAddress',
PositionTimestampClosed = 'position__timestampClosed',
PositionTimestampOpened = 'position__timestampOpened',
PositionTokenId = 'position__tokenId',
Expand Down Expand Up @@ -3882,6 +3883,7 @@ export type Position = {
liquidityUSD: Scalars['BigDecimal']['output'];
/** Timestamp which position is locked until */
lockedUntil?: Maybe<Scalars['BigInt']['output']>;
nfpmAddress: Scalars['Bytes']['output'];
/** The liquidity pool in which this position was opened */
pool: LiquidityPool;
/** Position daily snapshots for open positions */
Expand Down Expand Up @@ -4153,6 +4155,7 @@ export enum PositionSnapshot_OrderBy {
PositionLiquidityTokenType = 'position__liquidityTokenType',
PositionLiquidityUsd = 'position__liquidityUSD',
PositionLockedUntil = 'position__lockedUntil',
PositionNfpmAddress = 'position__nfpmAddress',
PositionTimestampClosed = 'position__timestampClosed',
PositionTimestampOpened = 'position__timestampOpened',
PositionTokenId = 'position__tokenId',
Expand Down Expand Up @@ -4332,6 +4335,16 @@ export type Position_Filter = {
lockedUntil_lte?: InputMaybe<Scalars['BigInt']['input']>;
lockedUntil_not?: InputMaybe<Scalars['BigInt']['input']>;
lockedUntil_not_in?: InputMaybe<Array<Scalars['BigInt']['input']>>;
nfpmAddress?: InputMaybe<Scalars['Bytes']['input']>;
nfpmAddress_contains?: InputMaybe<Scalars['Bytes']['input']>;
nfpmAddress_gt?: InputMaybe<Scalars['Bytes']['input']>;
nfpmAddress_gte?: InputMaybe<Scalars['Bytes']['input']>;
nfpmAddress_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;
nfpmAddress_lt?: InputMaybe<Scalars['Bytes']['input']>;
nfpmAddress_lte?: InputMaybe<Scalars['Bytes']['input']>;
nfpmAddress_not?: InputMaybe<Scalars['Bytes']['input']>;
nfpmAddress_not_contains?: InputMaybe<Scalars['Bytes']['input']>;
nfpmAddress_not_in?: InputMaybe<Array<Scalars['Bytes']['input']>>;
or?: InputMaybe<Array<InputMaybe<Position_Filter>>>;
pool?: InputMaybe<Scalars['String']['input']>;
pool_?: InputMaybe<LiquidityPool_Filter>;
Expand Down Expand Up @@ -4473,6 +4486,7 @@ export enum Position_OrderBy {
LiquidityTokenSymbol = 'liquidityToken__symbol',
LiquidityUsd = 'liquidityUSD',
LockedUntil = 'lockedUntil',
NfpmAddress = 'nfpmAddress',
Pool = 'pool',
PoolActiveLiquidity = 'pool__activeLiquidity',
PoolActiveLiquidityEth = 'pool__activeLiquidityETH',
Expand Down Expand Up @@ -7914,6 +7928,7 @@ export enum Withdraw_OrderBy {
PositionLiquidityTokenType = 'position__liquidityTokenType',
PositionLiquidityUsd = 'position__liquidityUSD',
PositionLockedUntil = 'position__lockedUntil',
PositionNfpmAddress = 'position__nfpmAddress',
PositionTimestampClosed = 'position__timestampClosed',
PositionTimestampOpened = 'position__timestampOpened',
PositionTokenId = 'position__tokenId',
Expand Down

0 comments on commit 6bdf681

Please sign in to comment.