|
8 | 8 | import { SharedAnalytics } from "./shared" |
9 | 9 | import { weightedAverage } from "./utils/weighted-average" |
10 | 10 | import { FAssetPriceLoader } from "./utils/prices" |
11 | | -import { LIQUIDATION_DURATION_SQL, MINTED_BY_UNDERLYING_ADDRESS, REDEEMED_BY_UNDERLYING_ADDRESS } from "./utils/raw-sql" |
| 11 | +import * as SQL from "./utils/raw-sql" |
12 | 12 | import { FAssetValueResult } from "./types" |
13 | 13 |
|
14 | 14 |
|
@@ -74,7 +74,7 @@ export class AgentStatistics extends SharedAnalytics { |
74 | 74 |
|
75 | 75 | async liquidationDurationWA(vault: string, now: number, delta: number, lim: number): Promise<[bigint, number]> { |
76 | 76 | const result = await this.orm.em.getConnection('read') |
77 | | - .execute(LIQUIDATION_DURATION_SQL, [vault, vault, now - delta, lim]) as { timestamp: number, diff: string }[] |
| 77 | + .execute(SQL.LIQUIDATION_DURATION_SQL, [vault, vault, now - delta, lim]) as { timestamp: number, diff: string }[] |
78 | 78 | const timespan = result.map(r => ({ timestamp: r.timestamp, value: BigInt(r.diff) })) |
79 | 79 | return [weightedAverage(timespan, now, delta), timespan.length] |
80 | 80 | } |
@@ -151,15 +151,21 @@ export class AgentStatistics extends SharedAnalytics { |
151 | 151 | return weightedAverage(timespan, now, delta) |
152 | 152 | } |
153 | 153 |
|
154 | | - async mintedByUnderlyingAddressDuring(address: string, start: number, end: number): Promise<any> { |
| 154 | + async mintedByUnderlyingAddressDuring(address: string, start: number, end: number): Promise<FAssetValueResult> { |
155 | 155 | const em = this.orm.em.fork() |
156 | | - const r = await em.execute(MINTED_BY_UNDERLYING_ADDRESS, [address, start, end]) as { fasset: FAssetType, val: string }[] |
| 156 | + const r = await em.execute(SQL.MINTED_BY_UNDERLYING_ADDRESS, [address, start, end]) as { fasset: FAssetType, val: string }[] |
157 | 157 | return this.convertOrmResultToFAssetValueResult(r, 'val') |
158 | 158 | } |
159 | 159 |
|
160 | | - async redeemedByUnderlyingAddressDuring(address: string, start: number, end: number): Promise<any> { |
| 160 | + async redeemedByUnderlyingAddressDuring(address: string, start: number, end: number): Promise<FAssetValueResult> { |
161 | 161 | const em = this.orm.em.fork() |
162 | | - const r = await em.execute(REDEEMED_BY_UNDERLYING_ADDRESS, [address, start, end]) as { fasset: FAssetType, val: string }[] |
| 162 | + const r = await em.execute(SQL.REDEEMED_BY_UNDERLYING_ADDRESS, [address, start, end]) as { fasset: FAssetType, val: string }[] |
163 | 163 | return this.convertOrmResultToFAssetValueResult(r, 'val') |
164 | 164 | } |
| 165 | + |
| 166 | + async underlyingMinterAddresses(address: string): Promise<string[]> { |
| 167 | + const em = this.orm.em.fork() |
| 168 | + const minters = await em.execute(SQL.UNDERLYING_MINTERS, [address]) as { address: string }[] |
| 169 | + return minters.map(({ address }) => address) |
| 170 | + } |
165 | 171 | } |
0 commit comments