Skip to content

Commit 3a6e295

Browse files
chore: Collect asset type
1 parent 53d40b5 commit 3a6e295

File tree

3 files changed

+32
-2
lines changed

3 files changed

+32
-2
lines changed

packages/stg-evm-v2/devtools/src/asset/sdk.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { StargateType } from '@stargatefinance/stg-definitions-v2'
12
import { BigNumber } from 'ethers'
23

34
import {
@@ -83,6 +84,29 @@ export class Asset extends Ownable implements IAsset {
8384
async getToken(): Promise<OmniAddress | undefined> {
8485
return ignoreZero(await this.contract.contract.token())
8586
}
87+
@AsyncRetriable()
88+
async getStargateType(): Promise<StargateType> {
89+
this.logger.debug(`Getting Stargate type`)
90+
91+
const stargateType = await this.contract.contract.stargateType()
92+
this.logger.debug(`Got Stargate type ${stargateType}`)
93+
94+
// For OFTs is clear
95+
if (stargateType === 1) {
96+
this.logger.debug(`Assuming Stargate type ${StargateType.Oft}`)
97+
return StargateType.Oft
98+
}
99+
100+
// For pools we need to check whether the token address is zero
101+
const tokenAddress = await this.getToken()
102+
if (tokenAddress == null) {
103+
this.logger.debug(`Got zero token address, assuming Stargate type ${StargateType.Native}`)
104+
return StargateType.Native
105+
}
106+
107+
this.logger.debug(`Got non-zero token address, assuming Stargate type ${StargateType.Pool}`)
108+
return StargateType.Pool
109+
}
86110

87111
@AsyncRetriable()
88112
async getLPToken(): Promise<OmniAddress | undefined> {

packages/stg-evm-v2/devtools/src/asset/types.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import type {
88
} from '@layerzerolabs/devtools'
99
import type { EndpointId } from '@layerzerolabs/lz-definitions'
1010
import type { IOwnable, OwnableNodeConfig } from '@layerzerolabs/ua-devtools'
11-
import type { AssetId } from '@stargatefinance/stg-definitions-v2'
11+
import type { AssetId, StargateType } from '@stargatefinance/stg-definitions-v2'
1212

1313
export interface AssetEdgeConfig {
1414
isOFT?: boolean
@@ -36,6 +36,8 @@ export interface IAsset extends IOmniSDK, IOwnable {
3636

3737
getToken(): Promise<OmniAddress | undefined>
3838
getLPToken(): Promise<OmniAddress | undefined>
39+
40+
getStargateType(): Promise<StargateType>
3941
}
4042

4143
export interface AddressConfig {

packages/stg-evm-v2/tasks/snapshot.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { writeFileSync } from 'fs'
22

3+
import { StargateType } from '@stargatefinance/stg-definitions-v2'
34
import { task } from 'hardhat/config'
45

56
import { OmniAddress, OmniPoint, formatEid, formatOmniPoint, tapError } from '@layerzerolabs/devtools'
@@ -172,7 +173,8 @@ const createCollectAsset =
172173
const sdk = await createSdk(point)
173174

174175
logger.verbose(`Collecting basic information`)
175-
const [owner, paused, addressConfig, lpTokenAddress, tokenAddress] = await Promise.all([
176+
const [type, owner, paused, addressConfig, lpTokenAddress, tokenAddress] = await Promise.all([
177+
sdk.getStargateType(),
176178
sdk.getOwner(),
177179
sdk.isPaused(),
178180
sdk.getAddressConfig(),
@@ -207,6 +209,7 @@ const createCollectAsset =
207209
const snapshot: AssetSnapshot = {
208210
address: point.address,
209211
addressConfig,
212+
type,
210213
owner,
211214
paused,
212215
lpToken,
@@ -313,6 +316,7 @@ interface CreditMessagingSnapshot extends MessagingSnapshot {
313316
}
314317

315318
interface AssetSnapshot {
319+
type: StargateType
316320
owner?: OmniAddress
317321
paused: boolean
318322
address: OmniAddress

0 commit comments

Comments
 (0)