@luxexchange/api 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/client.d.ts +22 -0
  2. package/dist/client.d.ts.map +1 -0
  3. package/dist/client.js +56 -0
  4. package/dist/hooks/index.d.ts +6 -0
  5. package/dist/hooks/index.d.ts.map +1 -0
  6. package/dist/hooks/index.js +5 -0
  7. package/dist/hooks/use-token-list.d.ts +22 -0
  8. package/dist/hooks/use-token-list.d.ts.map +1 -0
  9. package/dist/hooks/use-token-list.js +27 -0
  10. package/dist/hooks/use-token-price.d.ts +15 -0
  11. package/dist/hooks/use-token-price.d.ts.map +1 -0
  12. package/dist/hooks/use-token-price.js +63 -0
  13. package/dist/index.d.ts +6 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +5 -0
  16. package/package.json +10 -11
  17. package/project.json +2 -8
  18. package/src/clients/base/SharedQueryClient.ts +2 -2
  19. package/src/clients/base/errors.test.ts +39 -0
  20. package/src/clients/base/errors.ts +9 -1
  21. package/src/clients/base/urls.test.ts +7 -7
  22. package/src/clients/base/urls.ts +5 -5
  23. package/src/clients/base/utils.test.ts +2 -2
  24. package/src/clients/blockaid/createBlockaidApiClient.ts +1 -1
  25. package/src/clients/compliance/createComplianceApiClient.ts +40 -0
  26. package/src/clients/compliance/types.ts +15 -0
  27. package/src/clients/data/createDataServiceApiClient.ts +1 -1
  28. package/src/clients/dataApi/createDataApiServiceClient.ts +4 -4
  29. package/src/clients/dataApi/getGetPortfolioQueryOptions.test.ts +4 -4
  30. package/src/clients/dataApi/getGetPortfolioQueryOptions.ts +10 -6
  31. package/src/clients/embeddedWallet/createEmbeddedWalletApiClient.ts +254 -82
  32. package/src/clients/for/createForApiClient.ts +4 -4
  33. package/src/clients/for/utils.ts +1 -1
  34. package/src/clients/gasService/createGasServiceClient.ts +21 -0
  35. package/src/clients/graphql/queries.graphql +0 -183
  36. package/src/clients/graphql/queries.ts +0 -2
  37. package/src/clients/graphql/schema.graphql +603 -594
  38. package/src/clients/graphql/web/activity.graphql +0 -6
  39. package/src/clients/graphql/web/landing.graphql +0 -20
  40. package/src/clients/graphql/web/token.graphql +21 -3
  41. package/src/clients/lux/createLuxApiClient.ts +4 -21
  42. package/src/clients/trading/api.json +1 -1
  43. package/src/clients/trading/createTradingApiClient.ts +8 -8
  44. package/src/clients/trading/types.ts +1 -1
  45. package/src/clients/unitags/createUnitagsApiClient.test.ts +1 -1
  46. package/src/clients/unitags/createUnitagsApiClient.ts +5 -5
  47. package/src/clients/x/createXVerificationServiceClient.ts +26 -0
  48. package/src/components/ApiInit.test.tsx +2 -2
  49. package/src/components/ApiInit.tsx +5 -5
  50. package/src/connectRpc/utils.ts +1 -1
  51. package/src/getEntryGatewayUrl.ts +1 -1
  52. package/src/getWebSocketUrl.ts +10 -7
  53. package/src/hooks/shared/useQueryWithImmediateGarbageCollection.ts +1 -1
  54. package/src/hooks/useIsSessionInitialized.ts +1 -1
  55. package/src/index.ts +86 -59
  56. package/src/provideSessionService.native.ts +2 -2
  57. package/src/provideSessionService.ts +3 -3
  58. package/src/provideSessionService.web.ts +8 -8
  59. package/src/session/createSessionTransport.test.ts +1 -1
  60. package/src/session/createWithSessionRetry.ts +1 -1
  61. package/src/session/index.ts +1 -1
  62. package/src/storage/createExtensionStorageDriver.ts +1 -1
  63. package/src/storage/getStorageDriver.ts +1 -1
  64. package/src/storage/getStorageDriver.web.ts +1 -1
  65. package/src/transport.ts +1 -1
  66. package/stubs/privy-service-pb.d.ts +150 -3
  67. package/.depcheckrc +0 -17
  68. package/.eslintrc.js +0 -30
  69. package/src/clients/graphql/web/nft/CollectionSearch.graphql +0 -34
  70. package/src/clients/graphql/web/portfolios.graphql +0 -68
@@ -1,76 +1,130 @@
1
- """This directive allows results to be deferred during execution"""
2
- directive @defer on FIELD
3
-
4
- """
5
- Tells the service which subscriptions will be published to when this mutation is
6
- called. This directive is deprecated use @aws_susbscribe directive instead.
7
- """
8
- directive @aws_publish(
9
- """
10
- List of subscriptions which will be published to when this mutation is called.
11
- """
12
- subscriptions: [String]
13
- ) on FIELD_DEFINITION
14
-
15
- """
16
- Tells the service this field/object has access authorized by an API key.
17
- """
18
- directive @aws_api_key on OBJECT | FIELD_DEFINITION
19
-
20
- """
21
- Tells the service this field/object has access authorized by an OIDC token.
22
- """
23
- directive @aws_oidc on OBJECT | FIELD_DEFINITION
24
-
25
- """Directs the schema to enforce authorization on a field"""
26
- directive @aws_auth(
27
- """List of cognito user pool groups which have access on this field"""
28
- cognito_groups: [String]
29
- ) on FIELD_DEFINITION
30
-
31
- """Tells the service which mutation triggers this subscription."""
32
- directive @aws_subscribe(
33
- """
34
- List of mutations which will trigger this subscription when they are called.
35
- """
36
- mutations: [String]
37
- ) on FIELD_DEFINITION
38
-
39
- """
40
- Tells the service this field/object has access authorized by a Lambda Authorizer.
41
- """
42
- directive @aws_lambda on OBJECT | FIELD_DEFINITION
43
-
44
- """
45
- Tells the service this field/object has access authorized by a Cognito User Pools token.
46
- """
47
- directive @aws_cognito_user_pools(
48
- """List of cognito user pool groups which have access on this field"""
49
- cognito_groups: [String]
50
- ) on OBJECT | FIELD_DEFINITION
51
-
52
- """
53
- Tells the service this field/object has access authorized by sigv4 signing.
54
- """
55
- directive @aws_iam on OBJECT | FIELD_DEFINITION
56
-
57
- """
58
- Types, unions, and inputs (alphabetized):
59
- These are colocated to highlight the relationship between some types and their inputs.
60
- """
61
- union ActivityDetails = TransactionDetails | SwapOrderDetails | OnRampTransactionDetails | OffRampTransactionDetails
1
+ # To update this file, run `bun api graphql:schema`
2
+ schema {
3
+ query: Query
4
+ mutation: Mutation
5
+ subscription: Subscription
6
+ }
62
7
 
63
- input ActivityDetailsInput {
64
- transactionDetails: TransactionDetailsInput
65
- swapOrderDetails: SwapOrderDetailsInput
66
- onRampTransactionDetails: OnRampTransactionDetailsInput
67
- offRampTransactionDetails: OffRampTransactionDetailsInput
8
+ directive @aws_lambda on FIELD_DEFINITION
9
+ directive @aws_subscribe(mutations: [String!]!) on FIELD_DEFINITION
10
+
11
+ scalar AWSJSON
12
+
13
+ type Query {
14
+ isV3SubgraphStale(chain: Chain!): Boolean
15
+ historicalProtocolVolume(chain: Chain!, version: ProtocolVersion!, duration: HistoryDuration!): [TimestampedAmount!]
16
+ dailyProtocolTvl(chain: Chain!, version: ProtocolVersion!): [TimestampedAmount!]
17
+ # returns top v3 pools sorted by total value locked in desc order
18
+ topV3Pools(chain: Chain!, first: Int!, tvlCursor: Float, tokenFilter: String, debugMode: Boolean): [V3Pool!]
19
+ topV4Pools(chain: Chain!, first: Int!, tvlCursor: Float, tokenFilter: String, debugMode: Boolean): [V4Pool!]
20
+ v3Pool(chain: Chain!, address: String!): V3Pool
21
+ v4Pool(chain: Chain!, poolId: String!): V4Pool
22
+ v3PoolsForTokenPair(chain: Chain!, token0: String!, token1: String!): [V3Pool!]
23
+ v4PoolsForTokenPair(chain: Chain!, token0: String!, token1: String!): [V4Pool!]
24
+ v3Transactions(chain: Chain!, first: Int!, timestampCursor: Int): [PoolTransaction!]
25
+ v4Transactions(chain: Chain!, first: Int!, timestampCursor: Int): [PoolTransaction!]
26
+ # returns top v2 pairs sorted by total value locked in desc order
27
+ topV2Pairs(chain: Chain!, first: Int!, tvlCursor: Float, tokenFilter: String, debugMode: Boolean): [V2Pair!]
28
+ v2Pair(chain: Chain!, address: String!): V2Pair
29
+ v2Transactions(chain: Chain!, first: Int!, timestampCursor: Int): [PoolTransaction]
30
+ convert(fromAmount: CurrencyAmountInput!, toCurrency: Currency!): Amount
31
+ tokens(contracts: [ContractInput!]!): [Token]
32
+ # token consumes chain and address instead of contract because the apollo client request cache can only use
33
+ # keys from the response, and the token response does not contain a contract, but does contain an unwrapped
34
+ # contract: chain and address.
35
+ token(chain: Chain!, address: String): Token
36
+ tokenProjects(contracts: [ContractInput!]!): [TokenProject]
37
+ searchTokens(searchQuery: String!, chains: [Chain!], tokenSearchV2Enabled: Boolean): [Token]
38
+ portfolios(
39
+ ownerAddresses: [String!]!
40
+ chains: [Chain!]
41
+ lookupTokens: [ContractInput!]
42
+ fungibleIds: [String!]
43
+ valueModifiers: [PortfolioValueModifier!]
44
+ ): [Portfolio]
45
+ "Returns a list of tokens in descending order based on orderBy (default: TOTAL_VALUE_LOCKED)."
46
+ topTokens(
47
+ chain: Chain = ETHEREUM
48
+ page: Int = 1
49
+ pageSize: Int = 20
50
+ orderBy: TokenSortableField = TOTAL_VALUE_LOCKED
51
+ ): [Token]
52
+ topCollections(
53
+ chains: [Chain!] = [ETHEREUM]
54
+ orderBy: CollectionSortableField = VOLUME
55
+ duration: HistoryDuration = DAY
56
+ after: String
57
+ first: Int
58
+ cursor: String
59
+ limit: Int
60
+ ): NftCollectionConnection
61
+ nftAssets(
62
+ chain: Chain = ETHEREUM
63
+ address: String!
64
+ orderBy: NftAssetSortableField
65
+ asc: Boolean
66
+ filter: NftAssetsFilterInput
67
+ after: String
68
+ first: Int
69
+ before: String
70
+ last: Int
71
+ ): NftAssetConnection
72
+ nftCollections(
73
+ chain: Chain = ETHEREUM
74
+ filter: NftCollectionsFilterInput
75
+ after: String
76
+ first: Int
77
+ ): NftCollectionConnection
78
+ nftBalances(
79
+ chain: Chain = ETHEREUM
80
+ ownerAddress: String!
81
+ filter: NftBalancesFilterInput
82
+ after: String
83
+ first: Int
84
+ before: String
85
+ last: Int
86
+ chains: [Chain!]
87
+ ): NftBalanceConnection
88
+ nftRoute(
89
+ chain: Chain = ETHEREUM
90
+ senderAddress: String!
91
+ nftTrades: [NftTradeInput!]!
92
+ tokenTrades: [TokenTradeInput!]
93
+ ): NftRouteResponse
94
+ nftActivity(chain: Chain = ETHEREUM, filter: NftActivityFilterInput, after: String, first: Int): NftActivityConnection
95
+ nftCollectionBalances(
96
+ chain: Chain = ETHEREUM
97
+ ownerAddress: String!
98
+ after: String
99
+ first: Int
100
+ before: String
101
+ last: Int
102
+ ): NftCollectionBalanceConnection
103
+ transactionNotification(
104
+ chain: Chain!
105
+ address: String!
106
+ transactionHash: String!
107
+ isBridging: Boolean
108
+ ): TransactionNotification
109
+ }
110
+
111
+ type Mutation {
112
+ "Called by the server to send data to onAssetActivity subscriptions."
113
+ assetActivity(input: AssetActivityInput!): AssetActivity!
114
+ "Returns true if the subscription is still alive."
115
+ heartbeat(subscriptionId: ID!, type: SubscriptionType!): Status!
116
+ "Returns true if the subscription was unsubscribed, or false if it did not exist."
117
+ unsubscribe(subscriptionId: ID!, type: SubscriptionType!): Status!
118
+ }
119
+
120
+ type Subscription {
121
+ "Subscribes to asset activities. The client must provide their own uuidv4."
122
+ onAssetActivity(subscriptionId: ID!, addresses: [String!]!): AssetActivity
123
+ @aws_lambda
124
+ @aws_subscribe(mutations: ["assetActivity"])
68
125
  }
69
126
 
70
- """
71
- Enums (alphabetized):
72
- deprecated and replaced with TransactionType, please do not use this
73
- """
127
+
74
128
  enum ActivityType {
75
129
  APPROVE
76
130
  CANCEL
@@ -80,23 +134,328 @@ enum ActivityType {
80
134
  SWAP
81
135
  DEPLOYMENT
82
136
  UNKNOWN
83
- money
84
- market
137
+
138
+ # money market
85
139
  LEND
86
140
  BORROW
87
141
  REPAY
88
142
  WITHDRAW
89
- NFT
143
+
144
+ # NFT
90
145
  MINT
91
146
  BURN
92
- Staking
147
+
148
+ # Staking
93
149
  STAKE
94
150
  UNSTAKE
151
+
152
+ SWAP_ORDER
153
+ ON_RAMP
154
+ OFF_RAMP
155
+ }
156
+
157
+ enum AssetActivitySwitch {
158
+ ALTERNATE
159
+ LEGACY
160
+ }
161
+
162
+ enum Chain {
163
+ ARBITRUM
164
+ AVALANCHE
165
+ ETHEREUM
166
+ ETHEREUM_GOERLI
167
+ ETHEREUM_SEPOLIA
168
+ OPTIMISM
169
+ POLYGON
170
+ CELO
171
+ BNB
172
+ BASE
173
+ BLAST
174
+ ZORA
175
+ ZKSYNC
176
+ UNICHAIN
177
+ SONEIUM
178
+ ASTROCHAIN_SEPOLIA
179
+ WORLDCHAIN
180
+ MONAD_TESTNET
181
+ MONAD
182
+ ARBITRUM_SEPOLIA
183
+ BASE_SEPOLIA
184
+ SOLANA
185
+ LINEA
186
+ XLAYER
187
+ MEGAETH
188
+ TEMPO
189
+ UNKNOWN_CHAIN
190
+ }
191
+
192
+ enum Currency {
193
+ ARS
194
+ AUD
195
+ BRL
196
+ CAD
197
+ CNY
198
+ COP
199
+ ETH
200
+ EUR
201
+ GBP
202
+ HKD
203
+ IDR
204
+ INR
205
+ JPY
206
+ KRW
207
+ MATIC
208
+ MXN
209
+ NGN
210
+ NZD
211
+ PKR
212
+ RUB
213
+ SGD
214
+ THB
215
+ TRY
216
+ UAH
217
+ USD
218
+ VND
219
+ }
220
+
221
+ enum TokenSource {
222
+ TOKEN_FACTORY
223
+ }
224
+
225
+ enum HighLow {
226
+ HIGH
227
+ LOW
228
+ }
229
+
230
+ enum HistoryDuration {
231
+ FIVE_MINUTE
232
+ HOUR
233
+ DAY
234
+ WEEK
235
+ MONTH
236
+ YEAR
237
+ MAX
238
+ }
239
+
240
+ enum MediaType {
241
+ VIDEO
242
+ IMAGE
243
+ RAW
244
+ AUDIO
245
+ }
246
+
247
+ enum NftMarketplace {
248
+ OPENSEA
249
+ LOOKSRARE
250
+ X2Y2
251
+ SUDOSWAP
252
+ NFTX
253
+ NFT20
254
+ FOUNDATION
255
+ CRYPTOPUNKS
256
+ }
257
+
258
+ enum OrderStatus {
259
+ VALID
260
+ EXECUTED
261
+ CANCELLED
262
+ EXPIRED
263
+ }
264
+
265
+ enum OrderType {
266
+ LISTING
267
+ OFFER
268
+ }
269
+
270
+ enum PoolTransactionType {
271
+ SWAP
272
+ ADD
273
+ REMOVE
274
+ }
275
+
276
+ enum PriceSource {
277
+ SUBGRAPH_V2
278
+ SUBGRAPH_V3
279
+ SUBGRAPH_V4
280
+ EXTERNAL
281
+ }
282
+
283
+ enum ProtocolVersion {
284
+ V2
285
+ V3
286
+ V4
287
+ }
288
+
289
+ enum SafetyLevel {
290
+ VERIFIED
291
+ MEDIUM_WARNING
292
+ STRONG_WARNING
293
+ BLOCKED
294
+ }
295
+
296
+ enum SubscriptionType {
297
+ ASSET_ACTIVITY
298
+ }
299
+
300
+ enum SwapOrderStatus {
301
+ OPEN
302
+ EXPIRED
303
+ ERROR
304
+ INSUFFICIENT_FUNDS
305
+ FILLED
306
+ CANCELLED
307
+ }
308
+
309
+ enum SwapOrderType {
310
+ DUTCH
311
+ LIMIT
312
+ DUTCH_V2
313
+ PRIORITY
314
+ }
315
+
316
+ enum TokenStandard {
317
+ NATIVE
318
+ ERC20
319
+ SPL
320
+ }
321
+
322
+ enum TransactionType {
323
+ APPROVE
324
+ BORROW
325
+ BRIDGING
326
+ CANCEL
327
+ CLAIM
328
+ DEPLOYMENT
329
+ EXECUTE
330
+ LEND
331
+ MINT
332
+ RECEIVE
333
+ REPAY
334
+ SEND
335
+ STAKE
336
+ SWAP
95
337
  SWAP_ORDER
338
+ UNKNOWN
339
+ UNSTAKE
340
+ WITHDRAW
96
341
  ON_RAMP
97
342
  OFF_RAMP
98
343
  }
99
344
 
345
+ enum TokenSortableField {
346
+ TOTAL_VALUE_LOCKED
347
+ MARKET_CAP
348
+ VOLUME
349
+ POPULARITY
350
+ }
351
+
352
+ enum TransactionDirection {
353
+ IN
354
+ OUT
355
+ SELF
356
+ }
357
+
358
+ enum TransactionStatus {
359
+ FAILED
360
+ CONFIRMED
361
+ PENDING
362
+ }
363
+
364
+ enum NftStandard {
365
+ ERC721
366
+ ERC1155
367
+ NONCOMPLIANT
368
+ }
369
+
370
+ enum NftAssetSortableField {
371
+ PRICE
372
+ RARITY
373
+ }
374
+
375
+ enum NftRarityProvider {
376
+ RARITY_SNIPER
377
+ }
378
+
379
+ enum CollectionSortableField {
380
+ VOLUME
381
+ }
382
+
383
+ enum NftActivityType {
384
+ LISTING
385
+ SALE
386
+ CANCEL_LISTING
387
+ TRANSFER
388
+ }
389
+
390
+ enum TokenTradeType {
391
+ EXACT_INPUT
392
+ EXACT_OUTPUT
393
+ }
394
+
395
+ enum ProtectionResult {
396
+ UNKNOWN
397
+ MALICIOUS
398
+ BENIGN
399
+ SPAM
400
+ WARNING
401
+ }
402
+
403
+ enum ProtectionAttackType {
404
+ UNKNOWN
405
+ METADATA
406
+ INORGANIC_VOLUME
407
+ AIRDROP_PATTERN
408
+ DYNAMIC_ANALYSIS
409
+ STATIC_CODE_SIGNATURE
410
+ KNOWN_MALICIOUS
411
+ IMPERSONATOR
412
+ UNSTABLE_TOKEN_PRICE
413
+ RUGPULL
414
+ HIGH_FEES
415
+ HONEYPOT
416
+ }
417
+
418
+
419
+ interface IAmount {
420
+ currency: Currency
421
+ value: Float!
422
+ }
423
+
424
+ interface IContract {
425
+ chain: Chain!
426
+ address: String
427
+ }
428
+
429
+ interface IPool {
430
+ id: ID!
431
+ protocolVersion: ProtocolVersion!
432
+ chain: Chain!
433
+ address: String!
434
+ createdAtTimestamp: Int
435
+ totalLiquidity: Amount
436
+ token0: Token
437
+ token0Supply: Float
438
+ token1: Token
439
+ token1Supply: Float
440
+ txCount: Int
441
+
442
+ totalLiquidityPercentChange24h: Amount
443
+ cumulativeVolume(duration: HistoryDuration!): Amount
444
+ historicalVolume(duration: HistoryDuration!): [TimestampedAmount]
445
+ priceHistory(duration: HistoryDuration!): [TimestampedPoolPrice]
446
+ transactions(first: Int!, timestampCursor: Int): [PoolTransaction]
447
+ }
448
+
449
+
450
+ union ActivityDetails = TransactionDetails | SwapOrderDetails | OnRampTransactionDetails | OffRampTransactionDetails
451
+
452
+ input ActivityDetailsInput {
453
+ transactionDetails: TransactionDetailsInput
454
+ swapOrderDetails: SwapOrderDetailsInput
455
+ onRampTransactionDetails: OnRampTransactionDetailsInput
456
+ offRampTransactionDetails: OffRampTransactionDetailsInput
457
+ }
458
+
100
459
  type Amount implements IAmount {
101
460
  id: ID!
102
461
  currency: Currency
@@ -134,126 +493,37 @@ type AssetActivity {
134
493
  timestamp: Int!
135
494
  type: ActivityType! @deprecated(reason: "use type field in details")
136
495
  chain: Chain!
137
- gasUsed: Float @deprecated(reason: "not required, remove usage")
138
- transaction: Transaction! @deprecated(reason: "use fields from details")
139
- assetChanges: [AssetChange]! @deprecated(reason: "use assetChanges field in details")
140
- details: ActivityDetails!
141
- addresses: [String!]
142
- }
143
-
144
- input AssetActivityInput {
145
- timestamp: Int!
146
- chain: Chain!
147
- details: ActivityDetailsInput!
148
- }
149
-
150
- enum AssetActivitySwitch {
151
- ALTERNATE
152
- LEGACY
153
- }
154
-
155
- union AssetChange = TokenTransfer | NftTransfer | OnRampTransfer | TokenApproval | NftApproval | NftApproveForAll | OffRampTransfer
156
-
157
- input AssetChangeInput {
158
- tokenTransfer: TokenTransferInput
159
- tokenApproval: TokenApprovalInput
160
- nftTransfer: NftTransferInput
161
- nftApproval: NftApprovalInput
162
- nftApproveForAll: NftApproveForAllInput
163
- onRampTransfer: OnRampTransferInput
164
- offRampTransfer: OffRampTransferInput
165
- }
166
-
167
- """
168
- The `AWSJSON` scalar type provided by AWS AppSync, represents a JSON string that
169
- complies with [RFC 8259](https://tools.ietf.org/html/rfc8259). Maps like
170
- "**{\\"upvotes\\": 10}**", lists like "**[1,2,3]**", and scalar values like
171
- "**\\"AWSJSON example string\\"**", "**1**", and "**true**" are accepted as
172
- valid JSON and will automatically be parsed and loaded in the resolver mapping
173
- templates as Maps, Lists, or Scalar values rather than as the literal input
174
- strings. Invalid JSON strings like "**{a: 1}**", "**{'a': 1}**" and "**Unquoted
175
- string**" will throw GraphQL validation errors.
176
- """
177
- scalar AWSJSON
178
-
179
- type BlockaidFees {
180
- transfer: Float
181
- buy: Float
182
- sell: Float
183
- }
184
-
185
- type BridgedWithdrawalInfo {
186
- chain: String!
187
- provider: String!
188
- url: String!
189
- }
190
-
191
- enum Chain {
192
- ARBITRUM
193
- AVALANCHE
194
- ETHEREUM
195
- ETHEREUM_GOERLI
196
- ETHEREUM_SEPOLIA
197
- OPTIMISM
198
- POLYGON
199
- CELO
200
- BNB
201
- BASE
202
- BLAST
203
- ZORA
204
- ZKSYNC
205
- UNICHAIN
206
- SONEIUM
207
- ASTROCHAIN_SEPOLIA
208
- WORLDCHAIN
209
- MONAD_TESTNET
210
- MONAD
211
- ARBITRUM_SEPOLIA
212
- BASE_SEPOLIA
213
- SOLANA
214
- XLAYER
215
- LUX
216
- LUX_TESTNET
217
- ZOO
218
- UNKNOWN_CHAIN
219
- }
220
-
221
- enum CollectionSortableField {
222
- VOLUME
496
+ gasUsed: Float @deprecated(reason: "not required, remove usage")
497
+ transaction: Transaction! @deprecated(reason: "use fields from details")
498
+ assetChanges: [AssetChange]! @deprecated(reason: "use assetChanges field in details")
499
+ details: ActivityDetails!
500
+ "Addresses that are involved in the activity. Used internally for filtering subscriptions."
501
+ addresses: [String!]
223
502
  }
224
503
 
225
- input ContractInput {
504
+ input AssetActivityInput {
505
+ timestamp: Int!
226
506
  chain: Chain!
227
- address: String
507
+ details: ActivityDetailsInput!
228
508
  }
229
509
 
230
- enum Currency {
231
- ARS
232
- AUD
233
- BRL
234
- CAD
235
- CNY
236
- COP
237
- ETH
238
- EUR
239
- GBP
240
- HKD
241
- IDR
242
- INR
243
- JPY
244
- KRW
245
- MATIC
246
- MXN
247
- NGN
248
- NZD
249
- PKR
250
- RUB
251
- SGD
252
- THB
253
- TRY
254
- UAH
255
- USD
256
- VND
510
+ union AssetChange =
511
+ TokenTransfer
512
+ | NftTransfer
513
+ | OnRampTransfer
514
+ | TokenApproval
515
+ | NftApproval
516
+ | NftApproveForAll
517
+ | OffRampTransfer
518
+
519
+ input AssetChangeInput {
520
+ tokenTransfer: TokenTransferInput
521
+ tokenApproval: TokenApprovalInput
522
+ nftTransfer: NftTransferInput
523
+ nftApproval: NftApprovalInput
524
+ nftApproveForAll: NftApproveForAllInput
525
+ onRampTransfer: OnRampTransferInput
526
+ offRampTransfer: OffRampTransferInput
257
527
  }
258
528
 
259
529
  input CurrencyAmountInput {
@@ -261,6 +531,11 @@ input CurrencyAmountInput {
261
531
  value: Float!
262
532
  }
263
533
 
534
+ input ContractInput {
535
+ chain: Chain!
536
+ address: String
537
+ }
538
+
264
539
  type DescriptionTranslations {
265
540
  id: ID!
266
541
  descriptionZhHans: String
@@ -295,41 +570,6 @@ input DimensionsInput {
295
570
  width: Float
296
571
  }
297
572
 
298
- type FeeData {
299
- sellFeeBps: String
300
- buyFeeBps: String
301
- feeTakenOnTransfer: Boolean
302
- externalTransferFailed: Boolean
303
- sellReverted: Boolean
304
- }
305
-
306
- enum HighLow {
307
- HIGH
308
- LOW
309
- }
310
-
311
- """ FIVE_MINUTE is only supported for TokenMarket.pricePercentChange"""
312
- enum HistoryDuration {
313
- FIVE_MINUTE
314
- HOUR
315
- DAY
316
- WEEK
317
- MONTH
318
- YEAR
319
- MAX
320
- }
321
-
322
- """ Interfaces (alphabetized):"""
323
- interface IAmount {
324
- currency: Currency
325
- value: Float!
326
- }
327
-
328
- interface IContract {
329
- chain: Chain!
330
- address: String
331
- }
332
-
333
573
  type Image {
334
574
  id: ID!
335
575
  url: String!
@@ -341,45 +581,6 @@ input ImageInput {
341
581
  dimensions: DimensionsInput
342
582
  }
343
583
 
344
- interface IPool {
345
- id: ID!
346
- protocolVersion: ProtocolVersion!
347
- chain: Chain!
348
- address: String!
349
- createdAtTimestamp: Int
350
- totalLiquidity: Amount
351
- token0: Token
352
- token0Supply: Float
353
- token1: Token
354
- token1Supply: Float
355
- txCount: Int
356
- totalLiquidityPercentChange24h: Amount
357
- cumulativeVolume(duration: HistoryDuration!): Amount
358
- historicalVolume(duration: HistoryDuration!): [TimestampedAmount]
359
- priceHistory(duration: HistoryDuration!): [TimestampedPoolPrice]
360
- transactions(first: Int!, timestampCursor: Int): [PoolTransaction]
361
- }
362
-
363
- enum MediaType {
364
- VIDEO
365
- IMAGE
366
- RAW
367
- AUDIO
368
- }
369
-
370
- type Mutation {
371
- assetActivity(input: AssetActivityInput!): AssetActivity!
372
- heartbeat(subscriptionId: ID!, type: SubscriptionType!): Status!
373
- unsubscribe(subscriptionId: ID!, type: SubscriptionType!): Status!
374
- }
375
-
376
- type NetworkFee {
377
- quantity: String
378
- tokenSymbol: String
379
- tokenAddress: String
380
- tokenChain: String
381
- }
382
-
383
584
  type NftActivity {
384
585
  id: ID!
385
586
  address: String!
@@ -413,18 +614,9 @@ input NftActivityFilterInput {
413
614
  activityTypes: [NftActivityType!]
414
615
  }
415
616
 
416
- enum NftActivityType {
417
- LISTING
418
- SALE
419
- CANCEL_LISTING
420
- TRANSFER
421
- }
422
-
423
617
  type NftApproval {
424
618
  id: ID!
425
- nftStandard: NftStandard!
426
-
427
- """ can be erc721, erc1155, noncompliant"""
619
+ nftStandard: NftStandard! # can be erc721, erc1155, noncompliant
428
620
  asset: NftAsset!
429
621
  approvedAddress: String!
430
622
  }
@@ -437,9 +629,7 @@ input NftApprovalInput {
437
629
 
438
630
  type NftApproveForAll {
439
631
  id: ID!
440
- nftStandard: NftStandard!
441
-
442
- """ can be erc721, erc1155, noncompliant"""
632
+ nftStandard: NftStandard! # can be erc721, erc1155, noncompliant
443
633
  asset: NftAsset!
444
634
  operatorAddress: String!
445
635
  approved: Boolean!
@@ -466,14 +656,19 @@ type NftAsset {
466
656
  originalImage: Image
467
657
  name: String
468
658
  nftContract: NftContract
469
-
470
- """ TODO: may need to be array to support erc1155 cases. not needed at the moment so will revisit.
471
- """
659
+ # TODO: may need to be array to support erc1155 cases. not needed at the moment so will revisit.
472
660
  ownerAddress: String
473
661
  tokenId: String!
474
662
  traits: [NftAssetTrait!]
475
663
  rarities: [NftAssetRarity!]
476
- listings(chain: Chain, asc: Boolean, first: Int, last: Int, after: String, before: String): NftOrderConnection
664
+ listings(
665
+ chain: Chain = ETHEREUM
666
+ asc: Boolean
667
+ first: Int
668
+ last: Int
669
+ after: String
670
+ before: String
671
+ ): NftOrderConnection
477
672
  suspiciousFlag: Boolean
478
673
  flaggedBy: String
479
674
  metadataUrl: String
@@ -526,11 +721,6 @@ input NftAssetsFilterInput {
526
721
  marketplaces: [NftMarketplace!]
527
722
  }
528
723
 
529
- enum NftAssetSortableField {
530
- PRICE
531
- RARITY
532
- }
533
-
534
724
  type NftAssetTrait {
535
725
  id: ID!
536
726
  name: String
@@ -576,11 +766,8 @@ input NftBalancesFilterInput {
576
766
  type NftCollection {
577
767
  id: ID!
578
768
  collectionId: String!
579
-
580
- """
581
- TODO: support querying for collection assets here
582
- assets(page: Int, pageSize: Int, orderBy: NftAssetSortableField): [NftAsset]
583
- """
769
+ # TODO: support querying for collection assets here
770
+ # assets(page: Int, pageSize: Int, orderBy: NftAssetSortableField): [NftAsset]
584
771
  bannerImageUrl: String @deprecated
585
772
  bannerImage: Image
586
773
  description: String
@@ -589,7 +776,7 @@ type NftCollection {
589
776
  imageUrl: String @deprecated
590
777
  image: Image
591
778
  instagramName: String
592
- markets(currencies: [Currency!]!): [NftCollectionMarket!]
779
+ markets(currencies: [Currency!]! = [ETH]): [NftCollectionMarket!]
593
780
  name: String
594
781
  nftContracts: [NftContract!]
595
782
  openseaUrl: String @deprecated
@@ -600,6 +787,12 @@ type NftCollection {
600
787
  creator: NftProfile
601
788
  }
602
789
 
790
+ input NftCollectionInput {
791
+ collectionId: String!
792
+ name: String
793
+ nftContracts: [NftContractInput!]
794
+ }
795
+
603
796
  type NftCollectionBalance {
604
797
  id: ID!
605
798
  address: String!
@@ -628,12 +821,6 @@ type NftCollectionEdge {
628
821
  node: NftCollection!
629
822
  }
630
823
 
631
- input NftCollectionInput {
632
- collectionId: String!
633
- name: String
634
- nftContracts: [NftContractInput!]
635
- }
636
-
637
824
  type NftCollectionMarket {
638
825
  id: ID!
639
826
  nftContracts: [NftContract!]
@@ -703,17 +890,6 @@ type NftFee {
703
890
  basisPoints: Int!
704
891
  }
705
892
 
706
- enum NftMarketplace {
707
- OPENSEA
708
- LOOKSRARE
709
- X2Y2
710
- SUDOSWAP
711
- NFTX
712
- NFT20
713
- FOUNDATION
714
- CRYPTOPUNKS
715
- }
716
-
717
893
  type NftOrder {
718
894
  id: ID!
719
895
  address: String!
@@ -753,10 +929,6 @@ type NftProfile {
753
929
  username: String
754
930
  }
755
931
 
756
- enum NftRarityProvider {
757
- RARITY_SNIPER
758
- }
759
-
760
932
  type NftRouteResponse {
761
933
  id: ID!
762
934
  calldata: String!
@@ -765,12 +937,6 @@ type NftRouteResponse {
765
937
  route: [NftTrade!]
766
938
  }
767
939
 
768
- enum NftStandard {
769
- ERC721
770
- ERC1155
771
- NONCOMPLIANT
772
- }
773
-
774
940
  type NftTrade {
775
941
  id: ID!
776
942
  contractAddress: String!
@@ -778,12 +944,9 @@ type NftTrade {
778
944
  tokenType: NftStandard
779
945
  marketplace: NftMarketplace!
780
946
  amount: Int!
781
-
782
- """ quotePrice represents the last quoted price of the NFT"""
947
+ # quotePrice represents the last quoted price of the NFT
783
948
  quotePrice: TokenAmount
784
-
785
- """ price represents the current price of the NFT, which can be different from quotePrice
786
- """
949
+ # price represents the current price of the NFT, which can be different from quotePrice
787
950
  price: TokenAmount!
788
951
  }
789
952
 
@@ -791,7 +954,7 @@ input NftTradeInput {
791
954
  id: ID!
792
955
  contractAddress: String!
793
956
  tokenId: String!
794
- tokenType: NftStandard
957
+ tokenType: NftStandard @deprecated(reason: "not required, remove usage")
795
958
  marketplace: NftMarketplace!
796
959
  amount: Int!
797
960
  quotePrice: TokenAmountInput
@@ -893,6 +1056,11 @@ input OnRampServiceProviderInput {
893
1056
  supportUrl: String
894
1057
  }
895
1058
 
1059
+ input OnRampTransactionsAuth {
1060
+ queryParams: String!
1061
+ signature: String!
1062
+ }
1063
+
896
1064
  type OnRampTransactionDetails {
897
1065
  id: ID!
898
1066
  status: TransactionStatus!
@@ -906,11 +1074,6 @@ input OnRampTransactionDetailsInput {
906
1074
  onRampTransfer: OnRampTransferInput!
907
1075
  }
908
1076
 
909
- input OnRampTransactionsAuth {
910
- queryParams: String!
911
- signature: String!
912
- }
913
-
914
1077
  type OnRampTransfer {
915
1078
  id: ID!
916
1079
  token: Token!
@@ -939,18 +1102,6 @@ input OnRampTransferInput {
939
1102
  totalFee: Float
940
1103
  }
941
1104
 
942
- enum OrderStatus {
943
- VALID
944
- EXECUTED
945
- CANCELLED
946
- EXPIRED
947
- }
948
-
949
- enum OrderType {
950
- LISTING
951
- OFFER
952
- }
953
-
954
1105
  type PageInfo {
955
1106
  hasPreviousPage: Boolean
956
1107
  hasNextPage: Boolean
@@ -958,8 +1109,6 @@ type PageInfo {
958
1109
  endCursor: String
959
1110
  }
960
1111
 
961
- """ v2 pool parameters as defined by https://github.com/Lux/v2-sdk/blob/main/src/entities/pair.ts
962
- """
963
1112
  input PairInput {
964
1113
  tokenAmountA: TokenAmountInput!
965
1114
  tokenAmountB: TokenAmountInput!
@@ -979,8 +1128,6 @@ input PermitInput {
979
1128
  sigDeadline: String!
980
1129
  }
981
1130
 
982
- """ v3 pool parameters as defined by https://github.com/Lux/v3-sdk/blob/main/src/entities/pool.ts
983
- """
984
1131
  input PoolInput {
985
1132
  tokenA: TokenInput!
986
1133
  tokenB: TokenInput!
@@ -999,81 +1146,39 @@ type PoolTransaction {
999
1146
  timestamp: Int!
1000
1147
  usdValue: Amount!
1001
1148
  account: String!
1002
- token0: Token!
1003
- token0Quantity: String!
1004
- token1: Token!
1005
- token1Quantity: String!
1006
- }
1007
-
1008
- enum PoolTransactionType {
1009
- SWAP
1010
- ADD
1011
- REMOVE
1012
- }
1013
-
1014
- type Portfolio {
1015
- id: ID!
1016
- ownerAddress: String!
1017
- tokensTotalDenominatedValue: Amount
1018
- tokensTotalDenominatedValueChange(duration: HistoryDuration): AmountChange
1019
- tokenBalances: [TokenBalance]
1020
-
1021
- """ TODO: (michael.zhang) replace with paginated query"""
1022
- nftBalances: [NftBalance]
1023
- assetActivities(page: Int, pageSize: Int, includeOffChain: Boolean, onRampTransactionsAuth: OnRampTransactionsAuth, onRampTransactionIDs: [String!], chains: [Chain!], includeBridging: Boolean, _fs: AssetActivitySwitch): [AssetActivity]
1024
- }
1025
-
1026
- """ Specify how the portfolio value should be calculated for each `ownerAddress`.
1027
- """
1028
- input PortfolioValueModifier {
1029
- ownerAddress: String!
1030
- tokenIncludeOverrides: [ContractInput!]
1031
- tokenExcludeOverrides: [ContractInput!]
1032
- includeSmallBalances: Boolean
1033
- includeSpamTokens: Boolean
1034
- tokenBalancesLimit: Int
1035
- }
1036
-
1037
- enum PriceSource {
1038
- SUBGRAPH_V2
1039
- SUBGRAPH_V3
1040
- SUBGRAPH_V4
1041
- EXTERNAL
1042
- }
1043
-
1044
- enum ProtectionAttackType {
1045
- UNKNOWN
1046
- METADATA
1047
- INORGANIC_VOLUME
1048
- AIRDROP_PATTERN
1049
- DYNAMIC_ANALYSIS
1050
- STATIC_CODE_SIGNATURE
1051
- KNOWN_MALICIOUS
1052
- IMPERSONATOR
1053
- UNSTABLE_TOKEN_PRICE
1054
- RUGPULL
1055
- HIGH_FEES
1056
- HONEYPOT
1057
- }
1058
-
1059
- type ProtectionInfo {
1060
- result: ProtectionResult
1061
- attackTypes: [ProtectionAttackType]
1062
- blockaidFees: BlockaidFees
1149
+ token0: Token!
1150
+ token0Quantity: String!
1151
+ token1: Token!
1152
+ token1Quantity: String!
1063
1153
  }
1064
1154
 
1065
- enum ProtectionResult {
1066
- UNKNOWN
1067
- MALICIOUS
1068
- BENIGN
1069
- SPAM
1070
- WARNING
1155
+ type Portfolio {
1156
+ id: ID!
1157
+ ownerAddress: String!
1158
+ tokensTotalDenominatedValue: Amount
1159
+ tokensTotalDenominatedValueChange(duration: HistoryDuration): AmountChange
1160
+ tokenBalances: [TokenBalance]
1161
+ # TODO: (michael.zhang) replace with paginated query
1162
+ nftBalances: [NftBalance]
1163
+ assetActivities(
1164
+ page: Int
1165
+ pageSize: Int
1166
+ includeOffChain: Boolean
1167
+ onRampTransactionsAuth: OnRampTransactionsAuth
1168
+ onRampTransactionIDs: [String!]
1169
+ chains: [Chain!]
1170
+ includeBridging: Boolean
1171
+ _fs: AssetActivitySwitch = LEGACY # This field is now deprecated.
1172
+ ): [AssetActivity]
1071
1173
  }
1072
1174
 
1073
- enum ProtocolVersion {
1074
- V2
1075
- V3
1076
- V4
1175
+ input PortfolioValueModifier {
1176
+ ownerAddress: String!
1177
+ tokenIncludeOverrides: [ContractInput!]
1178
+ tokenExcludeOverrides: [ContractInput!]
1179
+ includeSmallBalances: Boolean
1180
+ includeSpamTokens: Boolean
1181
+ tokenBalancesLimit: Int
1077
1182
  }
1078
1183
 
1079
1184
  type PushNotification {
@@ -1084,76 +1189,10 @@ type PushNotification {
1084
1189
  signerHeader: AWSJSON!
1085
1190
  }
1086
1191
 
1087
- type Query {
1088
- isV3SubgraphStale(chain: Chain!): Boolean
1089
- historicalProtocolVolume(chain: Chain!, version: ProtocolVersion!, duration: HistoryDuration!): [TimestampedAmount!]
1090
- dailyProtocolTvl(chain: Chain!, version: ProtocolVersion!): [TimestampedAmount!]
1091
-
1092
- """ returns top v3 pools sorted by total value locked in desc order"""
1093
- topV3Pools(chain: Chain!, first: Int!, tvlCursor: Float, tokenFilter: String, debugMode: Boolean): [V3Pool!]
1094
- topV4Pools(chain: Chain!, first: Int!, tvlCursor: Float, tokenFilter: String, debugMode: Boolean): [V4Pool!]
1095
- v3Pool(chain: Chain!, address: String!): V3Pool
1096
- v4Pool(chain: Chain!, poolId: String!): V4Pool
1097
- v3PoolsForTokenPair(chain: Chain!, token0: String!, token1: String!): [V3Pool!]
1098
- v4PoolsForTokenPair(chain: Chain!, token0: String!, token1: String!): [V4Pool!]
1099
- v3Transactions(chain: Chain!, first: Int!, timestampCursor: Int): [PoolTransaction!]
1100
- v4Transactions(chain: Chain!, first: Int!, timestampCursor: Int): [PoolTransaction!]
1101
-
1102
- """ returns top v2 pairs sorted by total value locked in desc order"""
1103
- topV2Pairs(chain: Chain!, first: Int!, tvlCursor: Float, tokenFilter: String, debugMode: Boolean): [V2Pair!]
1104
- v2Pair(chain: Chain!, address: String!): V2Pair
1105
- v2Transactions(chain: Chain!, first: Int!, timestampCursor: Int): [PoolTransaction]
1106
- convert(fromAmount: CurrencyAmountInput!, toCurrency: Currency!): Amount
1107
- tokens(contracts: [ContractInput!]!): [Token]
1108
-
1109
- """
1110
- token consumes chain and address instead of contract because the apollo client request cache can only use
1111
- keys from the response, and the token response does not contain a contract, but does contain an unwrapped
1112
- contract: chain and address.
1113
- """
1114
- token(chain: Chain!, address: String): Token
1115
- tokenProjects(contracts: [ContractInput!]!): [TokenProject]
1116
- searchTokens(searchQuery: String!, chains: [Chain!], tokenSearchV2Enabled: Boolean): [Token]
1117
- portfolios(ownerAddresses: [String!]!, chains: [Chain!], lookupTokens: [ContractInput!], fungibleIds: [String!], valueModifiers: [PortfolioValueModifier!]): [Portfolio]
1118
- topTokens(chain: Chain, page: Int, pageSize: Int, orderBy: TokenSortableField): [Token]
1119
- topCollections(chains: [Chain!], orderBy: CollectionSortableField, duration: HistoryDuration, after: String, first: Int, cursor: String, limit: Int): NftCollectionConnection
1120
- nftAssets(chain: Chain, address: String!, orderBy: NftAssetSortableField, asc: Boolean, filter: NftAssetsFilterInput, after: String, first: Int, before: String, last: Int): NftAssetConnection
1121
- nftCollections(chain: Chain, filter: NftCollectionsFilterInput, after: String, first: Int): NftCollectionConnection
1122
- nftBalances(chain: Chain, ownerAddress: String!, filter: NftBalancesFilterInput, after: String, first: Int, before: String, last: Int, chains: [Chain!]): NftBalanceConnection
1123
- nftRoute(chain: Chain, senderAddress: String!, nftTrades: [NftTradeInput!]!, tokenTrades: [TokenTradeInput!]): NftRouteResponse
1124
- nftActivity(chain: Chain, filter: NftActivityFilterInput, after: String, first: Int): NftActivityConnection
1125
- nftCollectionBalances(chain: Chain, ownerAddress: String!, after: String, first: Int, before: String, last: Int): NftCollectionBalanceConnection
1126
- transactionNotification(chain: Chain!, address: String!, transactionHash: String!, isBridging: Boolean): TransactionNotification
1127
- }
1128
-
1129
- type RewardsCampaign {
1130
- id: ID!
1131
- boostedApr: Float!
1132
- startTimestamp: Int
1133
- endTimestamp: Int
1134
- totalRewardAllocation: String
1135
- distributedRewards: String
1136
- }
1137
-
1138
- enum SafetyLevel {
1139
- VERIFIED
1140
- MEDIUM_WARNING
1141
- STRONG_WARNING
1142
- BLOCKED
1143
- }
1144
-
1145
1192
  type Status {
1146
1193
  success: Boolean!
1147
1194
  }
1148
1195
 
1149
- type Subscription {
1150
- onAssetActivity(subscriptionId: ID!, addresses: [String!]!): AssetActivity
1151
- }
1152
-
1153
- enum SubscriptionType {
1154
- ASSET_ACTIVITY
1155
- }
1156
-
1157
1196
  type SwapOrderDetails {
1158
1197
  id: ID!
1159
1198
  offerer: String!
@@ -1172,7 +1211,7 @@ type SwapOrderDetails {
1172
1211
  input SwapOrderDetailsInput {
1173
1212
  offerer: String!
1174
1213
  hash: String!
1175
- status: SwapOrderStatus
1214
+ status: SwapOrderStatus @deprecated(reason: "use swapOrderStatus to disambiguate from transactionStatus")
1176
1215
  swapOrderStatus: SwapOrderStatus!
1177
1216
  inputToken: TokenAssetInput!
1178
1217
  inputAmount: String!
@@ -1183,22 +1222,6 @@ input SwapOrderDetailsInput {
1183
1222
  swapOrderType: SwapOrderType!
1184
1223
  }
1185
1224
 
1186
- enum SwapOrderStatus {
1187
- OPEN
1188
- EXPIRED
1189
- ERROR
1190
- INSUFFICIENT_FUNDS
1191
- FILLED
1192
- CANCELLED
1193
- }
1194
-
1195
- enum SwapOrderType {
1196
- DUTCH
1197
- LIMIT
1198
- DUTCH_V2
1199
- PRIORITY
1200
- }
1201
-
1202
1225
  type TimestampedAmount implements IAmount {
1203
1226
  id: ID!
1204
1227
  currency: Currency
@@ -1215,13 +1238,6 @@ type TimestampedOhlc {
1215
1238
  close: Amount!
1216
1239
  }
1217
1240
 
1218
- type TimestampedPoolPrice {
1219
- id: ID!
1220
- timestamp: Int!
1221
- token0Price: Float!
1222
- token1Price: Float!
1223
- }
1224
-
1225
1241
  type Token implements IContract {
1226
1242
  id: ID!
1227
1243
  chain: Chain!
@@ -1231,7 +1247,7 @@ type Token implements IContract {
1231
1247
  name: String
1232
1248
  symbol: String
1233
1249
  project: TokenProject
1234
- market(currency: Currency): TokenMarket
1250
+ market(currency: Currency = USD, multichain: Boolean = false): TokenMarket
1235
1251
  feeData: FeeData
1236
1252
  protectionInfo: ProtectionInfo
1237
1253
  v4Transactions(first: Int!, timestampCursor: Int): [PoolTransaction]
@@ -1242,6 +1258,32 @@ type Token implements IContract {
1242
1258
  bridgedWithdrawalInfo: BridgedWithdrawalInfo
1243
1259
  }
1244
1260
 
1261
+ type BridgedWithdrawalInfo {
1262
+ chain: String!
1263
+ provider: String!
1264
+ url: String!
1265
+ }
1266
+
1267
+ type ProtectionInfo {
1268
+ result: ProtectionResult
1269
+ attackTypes: [ProtectionAttackType]
1270
+ blockaidFees: BlockaidFees
1271
+ }
1272
+
1273
+ type BlockaidFees {
1274
+ transfer: Float
1275
+ buy: Float
1276
+ sell: Float
1277
+ }
1278
+
1279
+ type FeeData {
1280
+ sellFeeBps: String
1281
+ buyFeeBps: String
1282
+ feeTakenOnTransfer: Boolean
1283
+ externalTransferFailed: Boolean
1284
+ sellReverted: Boolean
1285
+ }
1286
+
1245
1287
  type TokenAmount {
1246
1288
  id: ID!
1247
1289
  value: String!
@@ -1255,12 +1297,10 @@ input TokenAmountInput {
1255
1297
 
1256
1298
  type TokenApproval {
1257
1299
  id: ID!
1258
- tokenStandard: TokenStandard!
1259
-
1260
- """ can be erc20 or native"""
1300
+ tokenStandard: TokenStandard! # can be erc20 or native
1261
1301
  asset: Token!
1262
1302
  approvedAddress: String!
1263
- quantity: String!
1303
+ quantity: String! # raw value for erc20
1264
1304
  }
1265
1305
 
1266
1306
  input TokenApprovalInput {
@@ -1309,9 +1349,8 @@ type TokenMarket {
1309
1349
  historicalTvl(duration: HistoryDuration!): [TimestampedAmount]
1310
1350
  priceHistory(duration: HistoryDuration!, maxLength: Int): [TimestampedAmount]
1311
1351
  ohlc(duration: HistoryDuration!): [TimestampedOhlc]
1312
-
1313
- """ this volume is cumulative volume over the specified duration"""
1314
- volume(duration: HistoryDuration!): Amount
1352
+ # this volume is cumulative volume over the specified duration
1353
+ volume(duration: HistoryDuration!, multichain: Boolean = false): Amount
1315
1354
  pricePercentChange(duration: HistoryDuration!): Amount
1316
1355
  priceHighLow(duration: HistoryDuration!, highLow: HighLow!): Amount
1317
1356
  }
@@ -1330,7 +1369,7 @@ type TokenProject {
1330
1369
  isSpam: Boolean
1331
1370
  spamCode: Int
1332
1371
  safetyLevel: SafetyLevel
1333
- markets(currencies: [Currency!]!): [TokenProjectMarket]
1372
+ markets(currencies: [Currency!]! = [USD]): [TokenProjectMarket]
1334
1373
  }
1335
1374
 
1336
1375
  type TokenProjectMarket {
@@ -1340,31 +1379,16 @@ type TokenProjectMarket {
1340
1379
  price: Amount
1341
1380
  marketCap: Amount
1342
1381
  fullyDilutedValuation: Amount
1382
+
1343
1383
  pricePercentChange24h: Amount
1344
1384
  priceHigh52w: Amount
1345
1385
  priceLow52w: Amount
1386
+
1346
1387
  priceHistory(duration: HistoryDuration!, maxLength: Int): [TimestampedAmount]
1347
1388
  pricePercentChange(duration: HistoryDuration!): Amount
1348
1389
  priceHighLow(duration: HistoryDuration!, highLow: HighLow!): Amount
1349
1390
  }
1350
1391
 
1351
- enum TokenSortableField {
1352
- TOTAL_VALUE_LOCKED
1353
- MARKET_CAP
1354
- VOLUME
1355
- POPULARITY
1356
- }
1357
-
1358
- enum TokenSource {
1359
- TOKEN_FACTORY
1360
- }
1361
-
1362
- enum TokenStandard {
1363
- NATIVE
1364
- ERC20
1365
- SPL
1366
- }
1367
-
1368
1392
  input TokenTradeInput {
1369
1393
  tokenAmount: TokenAmountInput!
1370
1394
  routes: TokenTradeRoutesInput
@@ -1385,11 +1409,6 @@ input TokenTradeRoutesInput {
1385
1409
  tradeType: TokenTradeType!
1386
1410
  }
1387
1411
 
1388
- enum TokenTradeType {
1389
- EXACT_INPUT
1390
- EXACT_OUTPUT
1391
- }
1392
-
1393
1412
  type TokenTransfer {
1394
1413
  id: ID!
1395
1414
  tokenStandard: TokenStandard!
@@ -1442,59 +1461,31 @@ type TransactionDetails {
1442
1461
  networkFee: NetworkFee
1443
1462
  }
1444
1463
 
1464
+ type NetworkFee {
1465
+ quantity: String
1466
+ tokenSymbol: String
1467
+ tokenAddress: String
1468
+ tokenChain: String
1469
+ }
1470
+
1445
1471
  input TransactionDetailsInput {
1446
1472
  type: TransactionType!
1447
1473
  assetChanges: [AssetChangeInput]!
1448
1474
  from: String!
1449
1475
  to: String!
1450
1476
  hash: String!
1451
- status: TransactionStatus
1477
+ status: TransactionStatus @deprecated(reason: "use transactionStatus to disambiguate from swapOrderStatus")
1452
1478
  transactionStatus: TransactionStatus!
1453
1479
  nonce: Int!
1454
1480
  application: ApplicationContractInput
1455
1481
  }
1456
1482
 
1457
- enum TransactionDirection {
1458
- IN
1459
- OUT
1460
- SELF
1461
- }
1462
-
1463
1483
  type TransactionNotification {
1464
1484
  id: ID!
1465
1485
  hash: String!
1466
1486
  push: [PushNotification!]!
1467
1487
  }
1468
1488
 
1469
- enum TransactionStatus {
1470
- FAILED
1471
- CONFIRMED
1472
- PENDING
1473
- }
1474
-
1475
- enum TransactionType {
1476
- APPROVE
1477
- BORROW
1478
- BRIDGING
1479
- CANCEL
1480
- CLAIM
1481
- DEPLOYMENT
1482
- EXECUTE
1483
- LEND
1484
- MINT
1485
- RECEIVE
1486
- REPAY
1487
- SEND
1488
- STAKE
1489
- SWAP
1490
- SWAP_ORDER
1491
- UNKNOWN
1492
- UNSTAKE
1493
- WITHDRAW
1494
- ON_RAMP
1495
- OFF_RAMP
1496
- }
1497
-
1498
1489
  type V2Pair implements IPool {
1499
1490
  id: ID!
1500
1491
  protocolVersion: ProtocolVersion!
@@ -1507,6 +1498,7 @@ type V2Pair implements IPool {
1507
1498
  token1: Token
1508
1499
  token1Supply: Float
1509
1500
  txCount: Int
1501
+
1510
1502
  totalLiquidityPercentChange24h: Amount
1511
1503
  cumulativeVolume(duration: HistoryDuration!): Amount
1512
1504
  historicalVolume(duration: HistoryDuration!): [TimestampedAmount]
@@ -1514,6 +1506,36 @@ type V2Pair implements IPool {
1514
1506
  transactions(first: Int!, timestampCursor: Int): [PoolTransaction]
1515
1507
  }
1516
1508
 
1509
+ type TimestampedPoolPrice {
1510
+ id: ID!
1511
+ timestamp: Int!
1512
+ token0Price: Float!
1513
+ token1Price: Float!
1514
+ }
1515
+
1516
+ type V3PoolTick {
1517
+ id: ID!
1518
+ tickIdx: Int
1519
+ liquidityGross: String
1520
+ liquidityNet: String
1521
+ price0: String
1522
+ price1: String
1523
+ }
1524
+
1525
+ type V4PoolTick {
1526
+ id: ID!
1527
+ tickIdx: Int
1528
+ liquidityGross: String
1529
+ liquidityNet: String
1530
+ price0: String
1531
+ price1: String
1532
+ }
1533
+
1534
+ type V4PoolHook {
1535
+ id: ID!
1536
+ address: String!
1537
+ }
1538
+
1517
1539
  type V3Pool implements IPool {
1518
1540
  id: ID!
1519
1541
  protocolVersion: ProtocolVersion!
@@ -1527,6 +1549,7 @@ type V3Pool implements IPool {
1527
1549
  token1Supply: Float
1528
1550
  txCount: Int
1529
1551
  feeTier: Float
1552
+
1530
1553
  totalLiquidityPercentChange24h: Amount
1531
1554
  cumulativeVolume(duration: HistoryDuration!): Amount
1532
1555
  historicalVolume(duration: HistoryDuration!): [TimestampedAmount]
@@ -1535,13 +1558,13 @@ type V3Pool implements IPool {
1535
1558
  ticks(skip: Int, first: Int): [V3PoolTick]
1536
1559
  }
1537
1560
 
1538
- type V3PoolTick {
1561
+ type RewardsCampaign {
1539
1562
  id: ID!
1540
- tickIdx: Int
1541
- liquidityGross: String
1542
- liquidityNet: String
1543
- price0: String
1544
- price1: String
1563
+ boostedApr: Float!
1564
+ startTimestamp: Int
1565
+ endTimestamp: Int
1566
+ totalRewardAllocation: String
1567
+ distributedRewards: String
1545
1568
  }
1546
1569
 
1547
1570
  type V4Pool {
@@ -1560,6 +1583,7 @@ type V4Pool {
1560
1583
  isDynamicFee: Boolean
1561
1584
  hook: V4PoolHook
1562
1585
  tickSpacing: Int
1586
+
1563
1587
  totalLiquidityPercentChange24h: Amount
1564
1588
  cumulativeVolume(duration: HistoryDuration!): Amount
1565
1589
  historicalVolume(duration: HistoryDuration!): [TimestampedAmount]
@@ -1568,18 +1592,3 @@ type V4Pool {
1568
1592
  ticks(skip: Int, first: Int): [V4PoolTick]
1569
1593
  rewardsCampaign: RewardsCampaign
1570
1594
  }
1571
-
1572
- type V4PoolHook {
1573
- id: ID!
1574
- address: String!
1575
- }
1576
-
1577
- type V4PoolTick {
1578
- id: ID!
1579
- tickIdx: Int
1580
- liquidityGross: String
1581
- liquidityNet: String
1582
- price0: String
1583
- price1: String
1584
- }
1585
-