# Position Discussion
## Contract Endpoint
### StakeToken(lpTokenId)
> [Request]
> - lpTokenId: string
### UnstakeToken(lpTokenId)
> [Request]
> - lpTokenId: string
### CreateExternalIncentive(poolPath, rewardTokenPath, rewardAmount, startTime, endTime)
> [Request]
> - poolPath: string
> - rewardTokenPath: string
> - rewardAmount: bigint
> - startTime: int(UTC)
> - endTime: int(UTC)
### EndExternalIncentive(creator, poolPath, rewardTokenPath)
> [Request]
> - creator: string
> - poolPath: string
> - rewardTokenPath: string
### Collect(lpTokenId, receipient, amount0Max, amount1Max)
> [Request]
> - lpTokenId: string
> - receipient: string
### CollectReward()
### DecreaseLiquidity(lpTokenId, liquidity, amount0Min, amount1Min, deadline)
> [Request]
> - lpTokenId: string
> - liquidity: bigint
> - amount0Min: bigint
> - amount1Min: bigint
> - deadline: string
> CollectPosition, CollectReward 호출 전 DecreaseLiquidity 호출해야함 (liquidity 0으로)
> owned 토큰을 unclaimed 상태로 변경
## API 추가내용
### Token 데이터
> id 추가 (GRC20은 token path, Native는 Symbol-GNOT)
### Pool 데이터
> incentivized true/false
> rewardTokens 추가 (토큰모델 목록) []list
```
interface PoolModel {
id: string;
path: string;
incentivizedType: IncentivizedOptions;
name: string;
price: number;
tokenA: TokenModel;
tokenB: TokenModel;
tokenABalance: number;
tokenBBalance: number;
tickSpacing: number;
currentTick: number;
bins: PoolBinModel[];
tvl: number;
tvlChange: number;
volume: number;
volumeChange: number;
totalVolume: number;
fee: string;
feeVolume: number;
feeChange: number;
apr: number;
rewardTokens: TokenModel[];
}
```
### Position 데이터
> rewards 추가 (swap fee,, external reward)
> - 리워드 타입 // SWAP_FEE, STAKING ~= INTERNAL, EXTERNAL
> - 리워드 토큰 // gno.land/r/gns
> - 리워드 클레임 가능 수량 // 1234
> - 리워드 지급된 전체 수량 // 845361 <- @IAImnx2RTaulwDazsDpzKw 어디 표시????
> - 24시간 리워드 수량 // 7일 내 발생한 하루 리워드 평균
> - 7일간 리워드 합 // ??
> - 7일간 리워드 APR // -
> - APR // -
> dailyRewards 추가
> - 리워드 타입 // EXTERNAL
> - 리워드 토큰 // gno.land/r/gns
> - 리워드 클레임 가능 수량 // 1234
> - 리워드 지급된 전체 수량 // 845361 <- @IAImnx2RTaulwDazsDpzKw 어디 표시????
> - 24시간 리워드 수량 // 7일 내 발생한 하루 리워드 평균
> - 7일간 리워드 합 // ??
> - 7일간 리워드 APR // -
> - APR // -
```
interface PositionModel {
id: string;
lpTokenId: string;
incentivizedType: IncentivizedOptions;
poolPath: string;
staked: boolean;
operator: string;
tickLower: number;
tickUpper: number;
liquidity: bigint;
token0Balance: bigint;
token1Balance: bigint;
positionUsdValue: string;
unclaimedFee0Amount: bigint;
unclaimedFee1Amount: bigint;
unclaimedFee0Usd: string;
unclaimedFee1Usd: string;
tokensOwed0Amount: bigint;
tokensOwed1Amount: bigint;
tokensOwed0Usd: string;
tokensOwed1Usd: string;
----------------------
apr: string;
stakedAt: String;
stakedUsdValue: string;
rewards: RewardModel[];
dailyRewards: RewardModel[];
}
```
```
interface RewardModel {
rewardType: RewardType;
token: TokenModel;
totalAmount: bigint;
claimableAmount: bigint;
accumulatedRewardOf1d: string;
accumulatedRewardOf7d: string;
apr: number;
aprOf7d: number;
}
```
### STAKING 데이터

이거 정리 필요