@coinlist-co/react 0.12.2-rc.abd9d38 → 0.12.2-rc.bc20f5b
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.
- package/README.md +10 -0
- package/dist/{chunk-45LAPB7U.js → chunk-3WW5FLT7.js} +2 -2
- package/dist/{chunk-HDJEDOS4.js → chunk-C6GF7MDF.js} +759 -412
- package/dist/chunk-C6GF7MDF.js.map +1 -0
- package/dist/{chunk-M7WDZZPX.js → chunk-IZJ4JSSC.js} +69 -4
- package/dist/chunk-IZJ4JSSC.js.map +1 -0
- package/dist/client/index.cjs +11305 -7943
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.cts +1545 -10
- package/dist/client/index.d.ts +1545 -10
- package/dist/client/index.js +7725 -4781
- package/dist/client/index.js.map +1 -1
- package/dist/server/index.cjs +347 -62
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.cts +6 -2
- package/dist/server/index.d.ts +6 -2
- package/dist/server/index.js +4 -2
- package/dist/server/index.js.map +1 -1
- package/dist/{tokens-namespace-DrwRi0AQ.d.cts → time-CVZpAkGY.d.cts} +815 -192
- package/dist/{tokens-namespace-DrwRi0AQ.d.ts → time-CVZpAkGY.d.ts} +815 -192
- package/dist/{token-registry-snapshot-C-Qs3Lgs.d.ts → token-registry-snapshot-BkwA8KmD.d.ts} +74 -8
- package/dist/{token-registry-snapshot-CpzLmsc2.d.cts → token-registry-snapshot-bR14QehS.d.cts} +74 -8
- package/dist/universal/index.cjs +812 -385
- package/dist/universal/index.cjs.map +1 -1
- package/dist/universal/index.d.cts +54 -6
- package/dist/universal/index.d.ts +54 -6
- package/dist/universal/index.js +30 -2
- package/package.json +1 -1
- package/dist/chunk-HDJEDOS4.js.map +0 -1
- package/dist/chunk-M7WDZZPX.js.map +0 -1
- package/dist/time-BOCS1TbH.d.cts +0 -50
- package/dist/time-C7mhO5_a.d.ts +0 -50
- /package/dist/{chunk-45LAPB7U.js.map → chunk-3WW5FLT7.js.map} +0 -0
package/dist/client/index.d.cts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactNode, ButtonHTMLAttributes } from 'react';
|
|
3
|
-
import { A as AuthorizationCode, C as CodeVerifier, L as Logger, W as WalletError, E as Erc20Namespace, a as EthereumChain, b as EvmContractAddress, B as BlockchainAmount, c as
|
|
4
|
-
export {
|
|
5
|
-
import { P as PKCEConfig, E as EvmWallet, S as SwapQuote, A as AssetIconUrl,
|
|
6
|
-
export { B as BroadcastTxParams,
|
|
3
|
+
import { A as AuthorizationCode, C as CodeVerifier, L as Logger, W as WalletError, E as Erc20Namespace, a as EthereumChain, b as EvmContractAddress, B as BlockchainAmount, c as CentrifugeNamespace, d as AssetSymbol, O as OfferVaultContract, e as CentrifugeVaultBuyTransaction, f as CentrifugeClaimDirection, g as CentrifugeNamespaceImpl, U as UniversalNamespaceContext, h as CoinListTokenSaleNamespace, i as OfferId, j as OfferOptionId, k as AssetId, P as Participation, l as CoinListTokenSaleNamespaceImpl, m as OndoNamespace, n as OfferSwapContract, o as OndoBuyTransaction, p as OndoSellTransaction, q as OndoSwapTransactionCore, r as OrderBookSide, s as OndoNamespaceImpl, S as SuperstateSwapNamespace, t as WalletsNamespace, u as Bps, v as EvmWalletAddress, w as SuperstateSwapNamespaceImpl, R as RequirementsNamespace, x as Requirement, y as RequirementsNamespaceImpl, z as Config, D as OAuthAccessToken, F as OffersNamespace, T as TokensNamespace, G as StablecoinSymbol, H as Erc20Asset, I as OfferDetail, J as TokenMetadata, K as CentrifugeVaultOfferDetail, M as OfferType, N as OndoSwapOfferDetail, Q as CoinListTokenSaleOfferDetail, V as SuperstateSwapOfferDetail, X as CentrifugeVaultLegId, Y as Seconds, Z as AsyncOfferType, _ as AsyncOfferDetail, $ as Offer, a0 as RequirementStatusInfo, a1 as RequirementType, a2 as RequirementStatusValue, a3 as OfferOptionAddress, a4 as RequirementId, a5 as KycLevelName, a6 as DocumentSubmission, a7 as WalletChallengeType, a8 as PinoLoggerOptions, a9 as AssetDecimals, aa as BuildCentrifugeVaultBuyParams, ab as CentrifugeOrderReason, ac as CentrifugeOrderability, ad as OndoTradingStatus, ae as BuildOndoBuyParams, af as BuildOndoSellParams, ag as OndoQuote, ah as OndoQuoteSize, ai as TokenIdentifier, aj as CentrifugeVaultLeg, ak as OfferOptionAddressId, al as CentrifugeVaultStatus, am as TokenLogo } from '../time-CVZpAkGY.cjs';
|
|
4
|
+
export { an as DebugEvent, ao as FrontlineEventId, ap as HttpError, aq as HttpResponse, ar as KycToken, as as LogBinding, at as LogBindings, au as LogCause, av as LogLevel, aw as LogScope, ax as LogValue, ay as ProductionLogLevel, az as RedactedWalletError, aA as RequestId, aB as RpcFailureReason, aC as SafeEvent, aD as SafeFields, aE as UnredactedFields } from '../time-CVZpAkGY.cjs';
|
|
5
|
+
import { P as PKCEConfig, E as EvmWallet, S as SwapQuote, A as AssetIconUrl, F as FormattedAmountAssetUi, a as ShortenedWalletAddress, b as FormattedPercentUi, T as TxExplorerUrl, W as WalletSelection, c as WalletLabelResolver, C as ConnectWallet, N as NonEmptyArray, d as TokenRegistrySnapshot } from '../token-registry-snapshot-bR14QehS.cjs';
|
|
6
|
+
export { B as BroadcastTxParams, e as EvmSigner, f as ExternalWalletAdapter, g as WriteContractParams } from '../token-registry-snapshot-bR14QehS.cjs';
|
|
7
7
|
import { Hash } from 'viem';
|
|
8
8
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
9
9
|
import { VariantProps } from 'class-variance-authority';
|
|
@@ -165,6 +165,267 @@ declare function submitErc20Approval<Phase extends string>(args: {
|
|
|
165
165
|
emit: (phase: Phase) => void;
|
|
166
166
|
}): Promise<SubmitErc20ApprovalResult>;
|
|
167
167
|
|
|
168
|
+
/**
|
|
169
|
+
* Progress phases emitted while a request is being prepared, in order. An
|
|
170
|
+
* allowance that already covers the deposit skips the approval phases.
|
|
171
|
+
*/
|
|
172
|
+
type CentrifugeBuyPreparationPhase = Erc20AllowancePhase | 'building-transaction';
|
|
173
|
+
/**
|
|
174
|
+
* A step-tagged reason a preparation failed.
|
|
175
|
+
*
|
|
176
|
+
* `insufficient-allowance` is the one with a remedy that is not a new
|
|
177
|
+
* approval: the approval this flow just mined is not the one frontline sees,
|
|
178
|
+
* usually because its node is a block behind. Retrying reads it again.
|
|
179
|
+
*/
|
|
180
|
+
type CentrifugeBuyPreparationError = {
|
|
181
|
+
step: 'unsupported-chain';
|
|
182
|
+
chain: EthereumChain;
|
|
183
|
+
} | Erc20AllowanceError | {
|
|
184
|
+
step: 'insufficient-allowance';
|
|
185
|
+
} | {
|
|
186
|
+
step: 'build-transaction';
|
|
187
|
+
};
|
|
188
|
+
type CentrifugeBuyPreparationResult = {
|
|
189
|
+
type: 'success';
|
|
190
|
+
transaction: CentrifugeVaultBuyTransaction;
|
|
191
|
+
} | {
|
|
192
|
+
type: 'error';
|
|
193
|
+
error: CentrifugeBuyPreparationError;
|
|
194
|
+
};
|
|
195
|
+
type PrepareCentrifugeBuyParams = {
|
|
196
|
+
centrifuge: CentrifugeNamespace;
|
|
197
|
+
erc20: Erc20Namespace;
|
|
198
|
+
wallet: EvmWallet;
|
|
199
|
+
/** The vault's share token symbol, e.g. `deJTRSY`. */
|
|
200
|
+
symbol: AssetSymbol;
|
|
201
|
+
chain: EthereumChain;
|
|
202
|
+
/**
|
|
203
|
+
* The offer's `vault_contracts`. The proxy is the spender, and it has to be
|
|
204
|
+
* known before the buy response arrives: the approval mines first, and
|
|
205
|
+
* `tx.to` comes too late to approve against.
|
|
206
|
+
*/
|
|
207
|
+
vaultContracts: OfferVaultContract[];
|
|
208
|
+
/** The funding token being spent. Approval only; frontline resolves its own. */
|
|
209
|
+
tokenAddress: EvmContractAddress;
|
|
210
|
+
/** How much of the funding token to deposit, in its base units. */
|
|
211
|
+
amount: BlockchainAmount;
|
|
212
|
+
onProgress?: (phase: CentrifugeBuyPreparationPhase) => void;
|
|
213
|
+
};
|
|
214
|
+
/**
|
|
215
|
+
* Gets a deposit ready to broadcast: ensures the vault proxy may pull
|
|
216
|
+
* `amount` of the funding token, then builds the calldata that queues the
|
|
217
|
+
* request.
|
|
218
|
+
*
|
|
219
|
+
* The review step runs this when the user places the request, not when they
|
|
220
|
+
* confirm the amount. Approving on the amount step would make them sign
|
|
221
|
+
* again if they edit the amount. The allowance still has to land before the
|
|
222
|
+
* build: frontline refuses calldata the proxy cannot pull.
|
|
223
|
+
*
|
|
224
|
+
* Total: every failure is returned step-tagged rather than thrown.
|
|
225
|
+
*/
|
|
226
|
+
declare function prepareCentrifugeBuy(params: PrepareCentrifugeBuyParams): Promise<CentrifugeBuyPreparationResult>;
|
|
227
|
+
/** Progress phases emitted by {@link placeCentrifugeRequest}, in order. */
|
|
228
|
+
type CentrifugeBuyPlacementPhase = 'broadcasting-request' | 'confirming-request';
|
|
229
|
+
/**
|
|
230
|
+
* A step-tagged reason {@link placeCentrifugeRequest} failed.
|
|
231
|
+
*
|
|
232
|
+
* `request-expired` is a refusal to broadcast: the deadline is inside the
|
|
233
|
+
* calldata, so sending it would revert and cost gas. A null deadline never
|
|
234
|
+
* takes this arm.
|
|
235
|
+
*
|
|
236
|
+
* `request` means the wallet never sent it, so placing again is safe.
|
|
237
|
+
* `request-unconfirmed` means it was sent and the receipt wait failed: the
|
|
238
|
+
* deposit may still mine, and placing again can queue a second one.
|
|
239
|
+
*/
|
|
240
|
+
type CentrifugeBuyPlacementError = {
|
|
241
|
+
step: 'request-expired';
|
|
242
|
+
} | {
|
|
243
|
+
step: 'request';
|
|
244
|
+
cause: WalletError;
|
|
245
|
+
} | {
|
|
246
|
+
step: 'request-unconfirmed';
|
|
247
|
+
txHash: Hash;
|
|
248
|
+
cause: WalletError;
|
|
249
|
+
} | {
|
|
250
|
+
step: 'request-reverted';
|
|
251
|
+
};
|
|
252
|
+
type CentrifugeBuyPlacementResult = {
|
|
253
|
+
type: 'success';
|
|
254
|
+
txHash: Hash;
|
|
255
|
+
transaction: CentrifugeVaultBuyTransaction;
|
|
256
|
+
} | {
|
|
257
|
+
type: 'error';
|
|
258
|
+
error: CentrifugeBuyPlacementError;
|
|
259
|
+
};
|
|
260
|
+
type PlaceCentrifugeRequestParams = {
|
|
261
|
+
wallet: EvmWallet;
|
|
262
|
+
/**
|
|
263
|
+
* The request to place, from {@link prepareCentrifugeBuy}. Broadcasting it
|
|
264
|
+
* queues the deposit. It does not buy shares.
|
|
265
|
+
*/
|
|
266
|
+
transaction: CentrifugeVaultBuyTransaction;
|
|
267
|
+
/** The chain it was built for. The response does not say. */
|
|
268
|
+
chain: EthereumChain;
|
|
269
|
+
/**
|
|
270
|
+
* Now, as the caller sees it. A parameter so the expiry check is testable.
|
|
271
|
+
*/
|
|
272
|
+
now?: Date;
|
|
273
|
+
onProgress?: (phase: CentrifugeBuyPlacementPhase) => void;
|
|
274
|
+
};
|
|
275
|
+
/**
|
|
276
|
+
* Broadcasts a built deposit request and waits for it to mine.
|
|
277
|
+
*
|
|
278
|
+
* A transaction with no deadline (`expiresAt === null`) is broadcast as-is.
|
|
279
|
+
* One with a deadline that has passed is refused before the wallet is asked.
|
|
280
|
+
*/
|
|
281
|
+
declare function placeCentrifugeRequest(params: PlaceCentrifugeRequestParams): Promise<CentrifugeBuyPlacementResult>;
|
|
282
|
+
/**
|
|
283
|
+
* Every phase {@link buyCentrifuge} can emit, in order. An allowance that
|
|
284
|
+
* already covers the deposit skips the approval phases.
|
|
285
|
+
*/
|
|
286
|
+
type CentrifugeBuyPhase = CentrifugeBuyPreparationPhase | CentrifugeBuyPlacementPhase;
|
|
287
|
+
/** A step-tagged reason {@link buyCentrifuge} failed. The step says which half. */
|
|
288
|
+
type CentrifugeBuyError = CentrifugeBuyPreparationError | CentrifugeBuyPlacementError;
|
|
289
|
+
type CentrifugeBuyResult = {
|
|
290
|
+
type: 'success';
|
|
291
|
+
txHash: Hash;
|
|
292
|
+
transaction: CentrifugeVaultBuyTransaction;
|
|
293
|
+
} | {
|
|
294
|
+
type: 'error';
|
|
295
|
+
error: CentrifugeBuyError;
|
|
296
|
+
};
|
|
297
|
+
type BuyCentrifugeParams = Omit<PrepareCentrifugeBuyParams, 'onProgress'> & Pick<PlaceCentrifugeRequestParams, 'now'> & {
|
|
298
|
+
onProgress?: (phase: CentrifugeBuyPhase) => void;
|
|
299
|
+
};
|
|
300
|
+
/**
|
|
301
|
+
* Places a deposit request end to end: approves the vault proxy for `amount`,
|
|
302
|
+
* builds the calldata, and broadcasts it.
|
|
303
|
+
*
|
|
304
|
+
* The one call for a partner driving this from their own screen. The checkout
|
|
305
|
+
* keeps the two halves, because it has to drop a build that finishes after
|
|
306
|
+
* the user has left and must not broadcast it.
|
|
307
|
+
*
|
|
308
|
+
* Success means the request was placed. The fund fulfils it later.
|
|
309
|
+
* Broadcasting it does not buy shares.
|
|
310
|
+
*
|
|
311
|
+
* Total: every failure is returned step-tagged rather than thrown.
|
|
312
|
+
*/
|
|
313
|
+
declare function buyCentrifuge(params: BuyCentrifugeParams): Promise<CentrifugeBuyResult>;
|
|
314
|
+
|
|
315
|
+
/** Progress phases emitted by {@link claimCentrifugeVault}, in order. */
|
|
316
|
+
type CentrifugeClaimPhase = 'preparing' | 'awaiting-wallet' | 'confirming';
|
|
317
|
+
/**
|
|
318
|
+
* A step-tagged reason a claim failed.
|
|
319
|
+
*
|
|
320
|
+
* `prepare` reasons are split out where the remedy differs: a wallet with
|
|
321
|
+
* nothing to claim has already been paid (a fill was claimed elsewhere, or a
|
|
322
|
+
* new request auto-claimed it), and a frozen wallet needs the issuer, not a
|
|
323
|
+
* retry. Everything else at that step is offered a retry.
|
|
324
|
+
*
|
|
325
|
+
* A mined transaction that reverted is a `confirm` failure carrying a
|
|
326
|
+
* `contract_reverted` cause, so a caller switches on one arm for "the chain
|
|
327
|
+
* said no" whether the wallet or the receipt reported it.
|
|
328
|
+
*/
|
|
329
|
+
type CentrifugeClaimError = {
|
|
330
|
+
step: 'prepare';
|
|
331
|
+
reason: 'nothing-to-claim' | 'frozen' | 'generic';
|
|
332
|
+
} | {
|
|
333
|
+
step: 'broadcast';
|
|
334
|
+
cause: WalletError;
|
|
335
|
+
} | {
|
|
336
|
+
step: 'confirm';
|
|
337
|
+
cause: WalletError;
|
|
338
|
+
};
|
|
339
|
+
type CentrifugeClaimResult = {
|
|
340
|
+
type: 'success';
|
|
341
|
+
direction: CentrifugeClaimDirection;
|
|
342
|
+
txHash: Hash;
|
|
343
|
+
/**
|
|
344
|
+
* What the calldata was built to collect: shares for `invest`, the
|
|
345
|
+
* funding token for `redeem`. A floor rather than an exact figure - a
|
|
346
|
+
* fill landing before the broadcast raises it, and the claim collects
|
|
347
|
+
* everything.
|
|
348
|
+
*/
|
|
349
|
+
claimed: BlockchainAmount;
|
|
350
|
+
} | {
|
|
351
|
+
type: 'error';
|
|
352
|
+
error: CentrifugeClaimError;
|
|
353
|
+
};
|
|
354
|
+
type ClaimCentrifugeVaultParams = {
|
|
355
|
+
centrifuge: CentrifugeNamespace;
|
|
356
|
+
/**
|
|
357
|
+
* The wallet that holds the position, and the one that broadcasts: the
|
|
358
|
+
* proxy credits the sender, so no other wallet can claim for it.
|
|
359
|
+
*/
|
|
360
|
+
wallet: EvmWallet;
|
|
361
|
+
chain: EthereumChain;
|
|
362
|
+
/** Share token symbol of the vault, e.g. `deJTRSY`. */
|
|
363
|
+
symbol: AssetSymbol;
|
|
364
|
+
direction: CentrifugeClaimDirection;
|
|
365
|
+
onProgress?: (phase: CentrifugeClaimPhase) => void;
|
|
366
|
+
};
|
|
367
|
+
/**
|
|
368
|
+
* Claims everything a wallet has claimable on one side of a vault: builds the
|
|
369
|
+
* calldata, broadcasts it from that wallet and waits for it to mine.
|
|
370
|
+
*
|
|
371
|
+
* One function for both directions because the API forks only at the build
|
|
372
|
+
* step - `/claim` and `/claim-proceeds` are two endpoints - while broadcasting
|
|
373
|
+
* reads calldata and nothing else. Total: every failure comes back as a step
|
|
374
|
+
* tag rather than a throw.
|
|
375
|
+
*
|
|
376
|
+
* Nothing is approved first. A claim moves tokens out of the proxy, not out of
|
|
377
|
+
* the wallet, so there is no allowance to grant.
|
|
378
|
+
*/
|
|
379
|
+
declare function claimCentrifugeVault(params: ClaimCentrifugeVaultParams): Promise<CentrifugeClaimResult>;
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* The Centrifuge namespace plus the halves of a vault trade that need a
|
|
383
|
+
* wallet - placing a request and claiming what a fill made claimable - and so
|
|
384
|
+
* cannot live on the shared namespace.
|
|
385
|
+
*
|
|
386
|
+
* {@link ClientCentrifugeNamespace.buy} is the one call: approve, build, and
|
|
387
|
+
* broadcast. The two halves stay beside it. The checkout runs them itself so
|
|
388
|
+
* it can drop a build that finishes after the user has left, and a host that
|
|
389
|
+
* wants to show the calldata before broadcasting can do the same. The amount
|
|
390
|
+
* step calls neither. The request settles later. Broadcasting it does not
|
|
391
|
+
* buy shares.
|
|
392
|
+
*/
|
|
393
|
+
interface ClientCentrifugeNamespace extends CentrifugeNamespace {
|
|
394
|
+
/**
|
|
395
|
+
* Approves the vault proxy for `amount`, builds the request, and broadcasts
|
|
396
|
+
* it. Returns a step-tagged result rather than throwing.
|
|
397
|
+
*
|
|
398
|
+
* Success means the request was placed. The fund fulfils it later.
|
|
399
|
+
*/
|
|
400
|
+
buy(params: Omit<BuyCentrifugeParams, 'centrifuge' | 'erc20'>): Promise<CentrifugeBuyResult>;
|
|
401
|
+
/**
|
|
402
|
+
* Approves the vault proxy to pull `amount` of the funding token, then
|
|
403
|
+
* builds the request that spends it. Returns a step-tagged result rather
|
|
404
|
+
* than throwing.
|
|
405
|
+
*/
|
|
406
|
+
prepareBuy(params: Omit<PrepareCentrifugeBuyParams, 'centrifuge' | 'erc20'>): Promise<CentrifugeBuyPreparationResult>;
|
|
407
|
+
/**
|
|
408
|
+
* Broadcasts a built request and waits for it to mine, refusing one whose
|
|
409
|
+
* deadline has passed. Returns a step-tagged result rather than throwing.
|
|
410
|
+
*
|
|
411
|
+
* Success means the request was placed. The fund fulfils it later.
|
|
412
|
+
*/
|
|
413
|
+
placeRequest(params: PlaceCentrifugeRequestParams): Promise<CentrifugeBuyPlacementResult>;
|
|
414
|
+
/**
|
|
415
|
+
* Claims everything the wallet has claimable on one side of the vault and
|
|
416
|
+
* waits for it to mine. Returns a step-tagged result rather than throwing.
|
|
417
|
+
*/
|
|
418
|
+
claim(params: Omit<ClaimCentrifugeVaultParams, 'centrifuge'>): Promise<CentrifugeClaimResult>;
|
|
419
|
+
}
|
|
420
|
+
declare class ClientCentrifugeNamespaceImpl extends CentrifugeNamespaceImpl implements ClientCentrifugeNamespace {
|
|
421
|
+
private readonly erc20;
|
|
422
|
+
constructor(ctx: UniversalNamespaceContext, erc20: Erc20Namespace);
|
|
423
|
+
buy(params: Omit<BuyCentrifugeParams, 'centrifuge' | 'erc20'>): Promise<CentrifugeBuyResult>;
|
|
424
|
+
prepareBuy(params: Omit<PrepareCentrifugeBuyParams, 'centrifuge' | 'erc20'>): Promise<CentrifugeBuyPreparationResult>;
|
|
425
|
+
placeRequest(params: PlaceCentrifugeRequestParams): Promise<CentrifugeBuyPlacementResult>;
|
|
426
|
+
claim(params: Omit<ClaimCentrifugeVaultParams, 'centrifuge'>): Promise<CentrifugeClaimResult>;
|
|
427
|
+
}
|
|
428
|
+
|
|
168
429
|
/**
|
|
169
430
|
* Progress phases emitted by {@link executeTokenSale}, in the order they occur.
|
|
170
431
|
* The `resetting-allowance`/`confirming-allowance-reset` phases only occur when
|
|
@@ -804,6 +1065,15 @@ interface CoinListClient {
|
|
|
804
1065
|
* {@link ClientOndoNamespace}.
|
|
805
1066
|
*/
|
|
806
1067
|
readonly ondo: ClientOndoNamespace;
|
|
1068
|
+
/**
|
|
1069
|
+
* Centrifuge vault deposits and claims: the vault-wide ordering gate, each
|
|
1070
|
+
* wallet's position, the two halves of placing a request, and the claim
|
|
1071
|
+
* that settles a filled one.
|
|
1072
|
+
*
|
|
1073
|
+
* The reads are free to poll. `prepareBuy` and `placeRequest` are not.
|
|
1074
|
+
* Broadcasting places a request. It does not buy shares.
|
|
1075
|
+
*/
|
|
1076
|
+
readonly centrifuge: ClientCentrifugeNamespace;
|
|
807
1077
|
/**
|
|
808
1078
|
* Token display metadata (name, symbol, decimals, logos) from CoinList's
|
|
809
1079
|
* public token registry, keyed by chain + contract address — e.g.
|
|
@@ -897,7 +1167,7 @@ type CoinListStyleScopeProps = {
|
|
|
897
1167
|
declare function CoinListStyleScope({ children }: CoinListStyleScopeProps): react.JSX.Element;
|
|
898
1168
|
|
|
899
1169
|
declare const buttonVariants: (props?: ({
|
|
900
|
-
variant?: "link" | "primary" | "gradient" | "secondary" | "destructive" | "ghost" | "destructiveLink" | null | undefined;
|
|
1170
|
+
variant?: "link" | "primary" | "gradient" | "secondary" | "destructive" | "outline" | "ghost" | "destructiveLink" | null | undefined;
|
|
901
1171
|
size?: "default" | "sm" | "lg" | "cta" | "icon" | null | undefined;
|
|
902
1172
|
radius?: "pill" | "rounded" | null | undefined;
|
|
903
1173
|
fullWidth?: boolean | null | undefined;
|
|
@@ -973,6 +1243,23 @@ interface CoinListSignInCardViewProps {
|
|
|
973
1243
|
*/
|
|
974
1244
|
declare function CoinListSignInCardView({ state, onEvent, className, }: CoinListSignInCardViewProps): ReactNode;
|
|
975
1245
|
|
|
1246
|
+
/**
|
|
1247
|
+
* A deposit request that has been broadcast and mined.
|
|
1248
|
+
*
|
|
1249
|
+
* Named without `Buy` so it does not collide with the dialog component when
|
|
1250
|
+
* both are re-exported from the client barrel.
|
|
1251
|
+
*
|
|
1252
|
+
* Success means the request was placed. The fund fulfils it later, at a price
|
|
1253
|
+
* set then.
|
|
1254
|
+
*/
|
|
1255
|
+
type CentrifugeOrderPlaced = {
|
|
1256
|
+
wallet: EvmWallet;
|
|
1257
|
+
/** What the request deposits, in the funding token's base units. */
|
|
1258
|
+
amount: BlockchainAmount;
|
|
1259
|
+
transaction: CentrifugeVaultBuyTransaction;
|
|
1260
|
+
txHash: Hash;
|
|
1261
|
+
};
|
|
1262
|
+
|
|
976
1263
|
/**
|
|
977
1264
|
* A filled Ondo order, as the confirmation dialog and the host's
|
|
978
1265
|
* `onOrderConfirmed` callback need it.
|
|
@@ -1279,6 +1566,23 @@ type CheckoutSelectableInputAssetUi = {
|
|
|
1279
1566
|
rawBalance: bigint;
|
|
1280
1567
|
selected: boolean;
|
|
1281
1568
|
};
|
|
1569
|
+
/**
|
|
1570
|
+
* One fundable stablecoin as the amount step's pay-with row.
|
|
1571
|
+
*
|
|
1572
|
+
* `balance` is `null` before the first read settles and after one that
|
|
1573
|
+
* failed. It renders as zero; the field above says why the CTA does not
|
|
1574
|
+
* treat that as a genuine empty wallet.
|
|
1575
|
+
*
|
|
1576
|
+
* `selected` is a parameter because a step with one funding asset is always
|
|
1577
|
+
* selected, and a step with several has to say which.
|
|
1578
|
+
*/
|
|
1579
|
+
declare function toInputAssetUi({ symbol, balance, selected, networkName, locale, }: {
|
|
1580
|
+
symbol: StablecoinSymbol;
|
|
1581
|
+
balance: bigint | null;
|
|
1582
|
+
selected: boolean;
|
|
1583
|
+
networkName: string;
|
|
1584
|
+
locale: string;
|
|
1585
|
+
}): CheckoutSelectableInputAssetUi;
|
|
1282
1586
|
|
|
1283
1587
|
/**
|
|
1284
1588
|
* Step 3 of the Superstate checkout: what the swap comes to, the slippage it
|
|
@@ -1517,6 +1821,7 @@ type CheckoutConfigByOfferType = {
|
|
|
1517
1821
|
'ondo::swap': OndoCheckoutConfig;
|
|
1518
1822
|
'superstate::swap': SuperstateCheckoutConfig;
|
|
1519
1823
|
'coinlist::token_sale': CoinListTokenSaleCheckoutConfig;
|
|
1824
|
+
'centrifuge::vault': CentrifugeVaultCheckoutConfig;
|
|
1520
1825
|
};
|
|
1521
1826
|
type OndoCheckoutConfig = {
|
|
1522
1827
|
/**
|
|
@@ -1584,13 +1889,42 @@ type SuperstateCheckoutConfig = {
|
|
|
1584
1889
|
type CoinListTokenSaleCheckoutConfig = {
|
|
1585
1890
|
render: (offer: CoinListTokenSaleOfferDetail) => ReactNode;
|
|
1586
1891
|
};
|
|
1892
|
+
/**
|
|
1893
|
+
* What a Centrifuge vault deposit needs that the offer cannot tell it.
|
|
1894
|
+
*
|
|
1895
|
+
* The share symbol is per-asset and this config is per-integration, so
|
|
1896
|
+
* `symbol` takes the offer. It is called only for a `centrifuge::vault`
|
|
1897
|
+
* offer, when that branch is mounted.
|
|
1898
|
+
*/
|
|
1899
|
+
type CentrifugeVaultCheckoutConfig = {
|
|
1900
|
+
/**
|
|
1901
|
+
* The share token symbol, e.g. `deJTRSY`.
|
|
1902
|
+
*
|
|
1903
|
+
* The SDK cannot read it off the offer: the symbol a vault trades under is
|
|
1904
|
+
* the provider's, and it can disagree with `offer.asset.code`. A host whose
|
|
1905
|
+
* catalogue does agree can return `AssetSymbol(offer.asset.code)`.
|
|
1906
|
+
*/
|
|
1907
|
+
symbol: (offer: CentrifugeVaultOfferDetail) => AssetSymbol;
|
|
1908
|
+
/**
|
|
1909
|
+
* The fund the token tracks. Frontline does not send this yet. Omit it, or
|
|
1910
|
+
* return `null`, and the asset-details row stays hidden.
|
|
1911
|
+
*/
|
|
1912
|
+
underlyingFund?: (offer: CentrifugeVaultOfferDetail) => string | null;
|
|
1913
|
+
/**
|
|
1914
|
+
* Trailing yield as display copy, e.g. `3.60%`. Omit it, or return `null`,
|
|
1915
|
+
* and the corner stays empty.
|
|
1916
|
+
*/
|
|
1917
|
+
apy?: (offer: CentrifugeVaultOfferDetail) => string | null;
|
|
1918
|
+
/** Fired once the request has mined. The dialog shows either way. */
|
|
1919
|
+
onOrderPlaced?: (order: CentrifugeOrderPlaced) => void;
|
|
1920
|
+
};
|
|
1587
1921
|
/**
|
|
1588
1922
|
* The parts of {@link CheckoutConfig} only the host can know.
|
|
1589
1923
|
*
|
|
1590
1924
|
* What is missing from this list is what {@link defaultCheckoutConfig} can fill
|
|
1591
1925
|
* in on its own.
|
|
1592
1926
|
*/
|
|
1593
|
-
type RequiredCheckoutConfig = Pick<CheckoutConfig, 'ondo::swap' | 'coinlist::token_sale'>;
|
|
1927
|
+
type RequiredCheckoutConfig = Pick<CheckoutConfig, 'ondo::swap' | 'coinlist::token_sale' | 'centrifuge::vault'>;
|
|
1594
1928
|
/**
|
|
1595
1929
|
* Fills in the config entries that have a sensible default, so a host only
|
|
1596
1930
|
* writes the ones that do not.
|
|
@@ -1606,6 +1940,9 @@ type RequiredCheckoutConfig = Pick<CheckoutConfig, 'ondo::swap' | 'coinlist::tok
|
|
|
1606
1940
|
* side: () => 'buy',
|
|
1607
1941
|
* },
|
|
1608
1942
|
* 'coinlist::token_sale': { render: (offer) => <MyTokenSalePage offer={offer} /> },
|
|
1943
|
+
* 'centrifuge::vault': {
|
|
1944
|
+
* symbol: (offer) => AssetSymbol(offer.asset.code),
|
|
1945
|
+
* },
|
|
1609
1946
|
* });
|
|
1610
1947
|
* ```
|
|
1611
1948
|
*/
|
|
@@ -1695,6 +2032,9 @@ interface CheckoutContainerProps {
|
|
|
1695
2032
|
* const config = defaultCheckoutConfig({
|
|
1696
2033
|
* 'ondo::swap': { symbol: (o) => AssetSymbol(o.asset.code), side: () => 'sell' },
|
|
1697
2034
|
* 'coinlist::token_sale': { render: (o) => <MyTokenSalePage offer={o} /> },
|
|
2035
|
+
* 'centrifuge::vault': {
|
|
2036
|
+
* symbol: (offer) => AssetSymbol(offer.asset.code),
|
|
2037
|
+
* },
|
|
1698
2038
|
* });
|
|
1699
2039
|
* ```
|
|
1700
2040
|
*
|
|
@@ -1741,6 +2081,358 @@ interface CheckoutContainerProps {
|
|
|
1741
2081
|
*/
|
|
1742
2082
|
declare function CheckoutContainer({ offer, chain, wallets, config, enabled, className, }: CheckoutContainerProps): ReactNode;
|
|
1743
2083
|
|
|
2084
|
+
/**
|
|
2085
|
+
* Step 2 of the Centrifuge checkout: how much of the funding token to deposit.
|
|
2086
|
+
*
|
|
2087
|
+
* Nothing here touches the chain. Confirming checks the amount in memory and
|
|
2088
|
+
* hands it up. The review step approves and places the request together.
|
|
2089
|
+
*/
|
|
2090
|
+
type CentrifugeBuyAmountUiState = {
|
|
2091
|
+
type: 'incomplete';
|
|
2092
|
+
} | {
|
|
2093
|
+
type: 'active';
|
|
2094
|
+
/** Exactly what the user has typed. `'1.'` is a legal thing to hold. */
|
|
2095
|
+
amountInput: string;
|
|
2096
|
+
walletAddress: ShortenedWalletAddress;
|
|
2097
|
+
inputAssets: CheckoutSelectableInputAssetUi[];
|
|
2098
|
+
confirmCta: CheckoutCtaUi;
|
|
2099
|
+
error: string | null;
|
|
2100
|
+
} | {
|
|
2101
|
+
type: 'complete';
|
|
2102
|
+
inputAsset: CheckoutAssetUi;
|
|
2103
|
+
amountFormatted: FormattedAmountAssetUi;
|
|
2104
|
+
};
|
|
2105
|
+
type CentrifugeBuyAmountUiEvent = {
|
|
2106
|
+
type: 'ON_AMOUNT_CHANGE';
|
|
2107
|
+
value: string;
|
|
2108
|
+
} | {
|
|
2109
|
+
type: 'ON_MAX_AMOUNT_CLICK';
|
|
2110
|
+
} | {
|
|
2111
|
+
type: 'ON_SELECT_PAY_WITH';
|
|
2112
|
+
value: AssetSymbol;
|
|
2113
|
+
} | {
|
|
2114
|
+
type: 'ON_CONFIRM_AMOUNT';
|
|
2115
|
+
} | {
|
|
2116
|
+
type: 'ON_EDIT_AMOUNT';
|
|
2117
|
+
};
|
|
2118
|
+
|
|
2119
|
+
interface CentrifugeBuyAmountViewProps {
|
|
2120
|
+
state: CentrifugeBuyAmountUiState;
|
|
2121
|
+
onEvent: (event: CentrifugeBuyAmountUiEvent) => void;
|
|
2122
|
+
className?: string;
|
|
2123
|
+
}
|
|
2124
|
+
/**
|
|
2125
|
+
* Step 2 of the Centrifuge checkout. Pure: amounts arrive already formatted, and
|
|
2126
|
+
* every interaction leaves through `onEvent`.
|
|
2127
|
+
*
|
|
2128
|
+
* Self-scoped: renders fully styled on its own, with no `CoinListStyleScope`
|
|
2129
|
+
* needed around it.
|
|
2130
|
+
*/
|
|
2131
|
+
declare function CentrifugeBuyAmountView(props: CentrifugeBuyAmountViewProps): ReactNode;
|
|
2132
|
+
|
|
2133
|
+
interface CentrifugeBuyCheckoutContainerProps {
|
|
2134
|
+
/** The vault being deposited into: names the asset and supplies its logo. */
|
|
2135
|
+
offer: CentrifugeVaultOfferDetail;
|
|
2136
|
+
/** Share token symbol, e.g. `deJTRSY`. */
|
|
2137
|
+
symbol: AssetSymbol;
|
|
2138
|
+
chain: EthereumChain;
|
|
2139
|
+
wallets: CheckoutWalletSelection;
|
|
2140
|
+
/**
|
|
2141
|
+
* Default `true`. `false` turns off every request and timer, for a checkout
|
|
2142
|
+
* that is mounted but not on screen yet.
|
|
2143
|
+
*/
|
|
2144
|
+
enabled?: boolean;
|
|
2145
|
+
/** Fired once the request has mined. The dialog shows either way. */
|
|
2146
|
+
onOrderPlaced?: (order: CentrifugeOrderPlaced) => void;
|
|
2147
|
+
/**
|
|
2148
|
+
* The fund the token tracks, e.g. `Janus Henderson Treasury Fund`.
|
|
2149
|
+
* Frontline does not send this yet, so pass `null` and the row stays hidden.
|
|
2150
|
+
*/
|
|
2151
|
+
underlyingFund: string | null;
|
|
2152
|
+
/**
|
|
2153
|
+
* Trailing yield as display copy, e.g. `3.60%`. Frontline does not send
|
|
2154
|
+
* this yet, so pass `null` and the corner stays empty.
|
|
2155
|
+
*/
|
|
2156
|
+
apy: string | null;
|
|
2157
|
+
className?: string;
|
|
2158
|
+
}
|
|
2159
|
+
/**
|
|
2160
|
+
* The Centrifuge buy checkout a host mounts.
|
|
2161
|
+
*
|
|
2162
|
+
* Renders {@link CentrifugeBuyCheckoutView} from
|
|
2163
|
+
* {@link useCentrifugeBuyCheckoutViewModel}. Placing a request does not buy
|
|
2164
|
+
* shares. The fund fulfils it later.
|
|
2165
|
+
*/
|
|
2166
|
+
declare function CentrifugeBuyCheckoutContainer({ offer, symbol, chain, wallets, enabled, onOrderPlaced, underlyingFund, apy, className, }: CentrifugeBuyCheckoutContainerProps): ReactNode;
|
|
2167
|
+
|
|
2168
|
+
/**
|
|
2169
|
+
* Step 3 of the Centrifuge checkout: confirming the deposit and placing it.
|
|
2170
|
+
*
|
|
2171
|
+
* Placing the request does not buy shares. The fund prices the fill later.
|
|
2172
|
+
*/
|
|
2173
|
+
type CentrifugeBuyReviewUiState = {
|
|
2174
|
+
type: 'incomplete';
|
|
2175
|
+
} | {
|
|
2176
|
+
type: 'active';
|
|
2177
|
+
/** The funding token, shown beside the amount being deposited. */
|
|
2178
|
+
inputAsset: CheckoutAssetUi;
|
|
2179
|
+
/** What the request deposits, e.g. `100.00 USDC`. */
|
|
2180
|
+
investAmount: FormattedAmountAssetUi;
|
|
2181
|
+
/** Where the shares land — the wallet confirmed in step 1. */
|
|
2182
|
+
recipientAddress: ShortenedWalletAddress;
|
|
2183
|
+
/**
|
|
2184
|
+
* Always a formatted zero. This product charges no CoinList fee, and
|
|
2185
|
+
* the row stays so the total is the amount invested.
|
|
2186
|
+
*/
|
|
2187
|
+
coinlistFee: FormattedAmountAssetUi;
|
|
2188
|
+
/** What the user pays. Equal to {@link investAmount}: no fee comes off. */
|
|
2189
|
+
total: FormattedAmountAssetUi;
|
|
2190
|
+
placeRequestCta: CheckoutCtaUi;
|
|
2191
|
+
error: string | null;
|
|
2192
|
+
};
|
|
2193
|
+
type CentrifugeBuyReviewUiEvent = {
|
|
2194
|
+
type: 'ON_PLACE_REQUEST';
|
|
2195
|
+
};
|
|
2196
|
+
|
|
2197
|
+
/**
|
|
2198
|
+
* Why a Centrifuge checkout cannot run right now, as opposed to a step of it
|
|
2199
|
+
* failing.
|
|
2200
|
+
*/
|
|
2201
|
+
type CentrifugeCheckoutErrorReason =
|
|
2202
|
+
/**
|
|
2203
|
+
* The offer names no vault proxy on the chain the host asked for, so there
|
|
2204
|
+
* is no spender to approve and nothing to broadcast to.
|
|
2205
|
+
*/
|
|
2206
|
+
'unsupported-chain'
|
|
2207
|
+
/**
|
|
2208
|
+
* The vault is known to be unable to take a request: halted, unlinked, or
|
|
2209
|
+
* not permissioned. Known from a status whose orderability is blocked.
|
|
2210
|
+
* Loading and failed statuses are unknown, and unknown does not block.
|
|
2211
|
+
*
|
|
2212
|
+
* Shown only while the user is still choosing a wallet and no request-placed
|
|
2213
|
+
* dialog is up. Past that, a pause belongs to the step it interrupts.
|
|
2214
|
+
*/
|
|
2215
|
+
| 'not-orderable';
|
|
2216
|
+
declare const CentrifugeCheckoutErrorReason: {
|
|
2217
|
+
/**
|
|
2218
|
+
* Which reason, if any, replaces the whole checkout. `null` means the steps
|
|
2219
|
+
* render.
|
|
2220
|
+
*/
|
|
2221
|
+
of: ({ depositableHere, notOrderable, atEntry, }: {
|
|
2222
|
+
depositableHere: boolean;
|
|
2223
|
+
notOrderable: boolean;
|
|
2224
|
+
atEntry: boolean;
|
|
2225
|
+
}) => CentrifugeCheckoutErrorReason | null;
|
|
2226
|
+
};
|
|
2227
|
+
|
|
2228
|
+
/**
|
|
2229
|
+
* The asset panel beside the Centrifuge checkout.
|
|
2230
|
+
*
|
|
2231
|
+
* Read-only. The identity and the minimum come from the offer. Yield and
|
|
2232
|
+
* the fund the token tracks are `null` until frontline publishes them, and
|
|
2233
|
+
* a `null` hides its row.
|
|
2234
|
+
*/
|
|
2235
|
+
type CentrifugeSidebarUiState = {
|
|
2236
|
+
asset: CheckoutAssetUi;
|
|
2237
|
+
/** The share token's symbol, e.g. `deJTRSY`. The same one under the name. */
|
|
2238
|
+
ticker: string;
|
|
2239
|
+
/**
|
|
2240
|
+
* The fund the token tracks, e.g. `Janus Henderson Treasury Fund`.
|
|
2241
|
+
* Frontline does not publish this yet. `null` hides the row.
|
|
2242
|
+
*/
|
|
2243
|
+
underlyingFund: string | null;
|
|
2244
|
+
/**
|
|
2245
|
+
* What kind of instrument it is, in the supplier's own vocabulary, e.g.
|
|
2246
|
+
* `Tokenized Notes`. `null` hides the row.
|
|
2247
|
+
*/
|
|
2248
|
+
assetType: string | null;
|
|
2249
|
+
minimumInvestment: CentrifugeSidebarMinimumUi;
|
|
2250
|
+
/** Display name of the chain the token lives on, e.g. `Ethereum`. */
|
|
2251
|
+
networkName: string;
|
|
2252
|
+
/** Who issues the token, e.g. `Centrifuge`. `null` hides the row. */
|
|
2253
|
+
issuer: string | null;
|
|
2254
|
+
/**
|
|
2255
|
+
* Trailing yield, already formatted, e.g. `3.60%`. The caption "APY" is
|
|
2256
|
+
* the view's. Frontline does not publish this yet. `null` leaves the
|
|
2257
|
+
* corner empty.
|
|
2258
|
+
*/
|
|
2259
|
+
apy: FormattedPercentUi | null;
|
|
2260
|
+
};
|
|
2261
|
+
/**
|
|
2262
|
+
* The minimum deposit, from the offer.
|
|
2263
|
+
*
|
|
2264
|
+
* A vault that sets no minimum is `none`: the row is dropped rather than
|
|
2265
|
+
* dashed. `loading` stays for a caller that has not resolved the offer yet.
|
|
2266
|
+
*/
|
|
2267
|
+
type CentrifugeSidebarMinimumUi = {
|
|
2268
|
+
type: 'loading';
|
|
2269
|
+
} | {
|
|
2270
|
+
type: 'known';
|
|
2271
|
+
amount: FormattedAmountAssetUi;
|
|
2272
|
+
} | {
|
|
2273
|
+
type: 'none';
|
|
2274
|
+
};
|
|
2275
|
+
|
|
2276
|
+
/**
|
|
2277
|
+
* Step 1 of the Centrifuge checkout: which wallet funds the deposit.
|
|
2278
|
+
*
|
|
2279
|
+
* There is no `inactive` arm. This step is the first one, so it is either being
|
|
2280
|
+
* filled in or already answered — it is never waiting on a step above it.
|
|
2281
|
+
*
|
|
2282
|
+
* Nothing is allow-listed: the user picks a wallet and confirms, and confirming
|
|
2283
|
+
* is synchronous. Hence a plain `confirmEnabled`.
|
|
2284
|
+
*/
|
|
2285
|
+
type CentrifugeWalletSelectUiState = {
|
|
2286
|
+
type: 'active';
|
|
2287
|
+
/** The user's CoinList wallets. Empty when they have none. */
|
|
2288
|
+
embeddedWallets: CheckoutEmbeddedWalletUi[];
|
|
2289
|
+
/** `null` until an external wallet is connected. The row still renders. */
|
|
2290
|
+
externalWallet: CheckoutWalletUi | null;
|
|
2291
|
+
/** Whether the connected external wallet may be disconnected here. */
|
|
2292
|
+
canDisconnect: boolean;
|
|
2293
|
+
confirmEnabled: boolean;
|
|
2294
|
+
/** Copy for a failed connect, e.g. the user rejected the wallet prompt. */
|
|
2295
|
+
error: string | null;
|
|
2296
|
+
} | {
|
|
2297
|
+
type: 'completed';
|
|
2298
|
+
wallet: CheckoutConfirmedWalletUi;
|
|
2299
|
+
};
|
|
2300
|
+
type CentrifugeWalletSelectUiEvent = {
|
|
2301
|
+
type: 'ON_SELECT_WALLET';
|
|
2302
|
+
value: CheckoutWalletTypeUi;
|
|
2303
|
+
}
|
|
2304
|
+
/**
|
|
2305
|
+
* Tapping the external row while nothing is connected. Split from
|
|
2306
|
+
* `ON_SELECT_WALLET` because it opens the host's wallet connector rather than
|
|
2307
|
+
* changing the selection.
|
|
2308
|
+
*/
|
|
2309
|
+
| {
|
|
2310
|
+
type: 'ON_CONNECT_WALLET';
|
|
2311
|
+
} | {
|
|
2312
|
+
type: 'ON_DISCONNECT_WALLET';
|
|
2313
|
+
} | {
|
|
2314
|
+
type: 'ON_CONFIRM_WALLET';
|
|
2315
|
+
} | {
|
|
2316
|
+
type: 'ON_EDIT_WALLET';
|
|
2317
|
+
};
|
|
2318
|
+
|
|
2319
|
+
/**
|
|
2320
|
+
* The whole Centrifuge buy checkout: three steps, the asset panel, and the
|
|
2321
|
+
* dialog that says the request was placed.
|
|
2322
|
+
*/
|
|
2323
|
+
type CentrifugeBuyCheckoutUiState = {
|
|
2324
|
+
type: 'content';
|
|
2325
|
+
wallet: CentrifugeWalletSelectUiState;
|
|
2326
|
+
amount: CentrifugeBuyAmountUiState;
|
|
2327
|
+
review: CentrifugeBuyReviewUiState;
|
|
2328
|
+
sidebar: CentrifugeSidebarUiState;
|
|
2329
|
+
orderPlaced: CentrifugeOrderPlacedUiState;
|
|
2330
|
+
} | {
|
|
2331
|
+
type: 'error';
|
|
2332
|
+
reason: CentrifugeCheckoutErrorReason;
|
|
2333
|
+
};
|
|
2334
|
+
type CentrifugeBuyCheckoutUiEvent = CentrifugeWalletSelectUiEvent | CentrifugeBuyAmountUiEvent | CentrifugeBuyReviewUiEvent | CentrifugeOrderPlacedUiEvent;
|
|
2335
|
+
/**
|
|
2336
|
+
* The dialog that closes the checkout once the request has mined.
|
|
2337
|
+
*
|
|
2338
|
+
* It reports that the request was placed. It does not report a fill.
|
|
2339
|
+
*/
|
|
2340
|
+
type CentrifugeOrderPlacedUiState = {
|
|
2341
|
+
type: 'hidden';
|
|
2342
|
+
} | {
|
|
2343
|
+
type: 'visible';
|
|
2344
|
+
outputAsset: CheckoutAssetUi;
|
|
2345
|
+
totalCost: FormattedAmountAssetUi;
|
|
2346
|
+
recipientAddress: ShortenedWalletAddress;
|
|
2347
|
+
txExplorerUrl: TxExplorerUrl;
|
|
2348
|
+
};
|
|
2349
|
+
type CentrifugeOrderPlacedUiEvent = {
|
|
2350
|
+
type: 'ON_CLOSE_ORDER_PLACED';
|
|
2351
|
+
};
|
|
2352
|
+
|
|
2353
|
+
interface CentrifugeBuyCheckoutViewProps {
|
|
2354
|
+
state: CentrifugeBuyCheckoutUiState;
|
|
2355
|
+
onEvent: (event: CentrifugeBuyCheckoutUiEvent) => void;
|
|
2356
|
+
className?: string;
|
|
2357
|
+
}
|
|
2358
|
+
/**
|
|
2359
|
+
* The whole Centrifuge buy checkout: three step cards, the asset panel, and
|
|
2360
|
+
* the dialog that says the request was placed.
|
|
2361
|
+
*
|
|
2362
|
+
* The panel leads on a phone and moves to the right column from `md` up.
|
|
2363
|
+
*/
|
|
2364
|
+
declare function CentrifugeBuyCheckoutView({ state, onEvent, className, }: CentrifugeBuyCheckoutViewProps): ReactNode;
|
|
2365
|
+
|
|
2366
|
+
interface CentrifugeBuyOrderPlacedProps {
|
|
2367
|
+
state: CentrifugeOrderPlacedUiState;
|
|
2368
|
+
onEvent: (event: CentrifugeOrderPlacedUiEvent) => void;
|
|
2369
|
+
className?: string;
|
|
2370
|
+
}
|
|
2371
|
+
/**
|
|
2372
|
+
* The dialog that closes the checkout once the request has mined.
|
|
2373
|
+
*
|
|
2374
|
+
* It says the request was placed. The fund fulfils it later.
|
|
2375
|
+
*/
|
|
2376
|
+
declare function CentrifugeBuyOrderPlaced({ state, onEvent, className, }: CentrifugeBuyOrderPlacedProps): ReactNode;
|
|
2377
|
+
|
|
2378
|
+
interface CentrifugeBuyReviewViewProps {
|
|
2379
|
+
state: CentrifugeBuyReviewUiState;
|
|
2380
|
+
onEvent: (event: CentrifugeBuyReviewUiEvent) => void;
|
|
2381
|
+
className?: string;
|
|
2382
|
+
}
|
|
2383
|
+
/**
|
|
2384
|
+
* Step 3 of the Centrifuge checkout. Pure: every number arrives formatted, and
|
|
2385
|
+
* whether the order can be placed is decided by `placeRequestCta`.
|
|
2386
|
+
*
|
|
2387
|
+
* Self-scoped: renders fully styled on its own, with no `CoinListStyleScope`
|
|
2388
|
+
* needed around it.
|
|
2389
|
+
*/
|
|
2390
|
+
declare function CentrifugeBuyReviewView(props: CentrifugeBuyReviewViewProps): ReactNode;
|
|
2391
|
+
|
|
2392
|
+
interface CentrifugeCheckoutErrorProps {
|
|
2393
|
+
reason: CentrifugeCheckoutErrorReason;
|
|
2394
|
+
className?: string;
|
|
2395
|
+
}
|
|
2396
|
+
/**
|
|
2397
|
+
* What the checkout renders when there is no deposit to place, or the vault
|
|
2398
|
+
* is known to be unable to take one.
|
|
2399
|
+
*/
|
|
2400
|
+
declare function CentrifugeCheckoutError({ reason, className, }: CentrifugeCheckoutErrorProps): ReactNode;
|
|
2401
|
+
|
|
2402
|
+
interface CentrifugeSidebarViewProps {
|
|
2403
|
+
state: CentrifugeSidebarUiState;
|
|
2404
|
+
className?: string;
|
|
2405
|
+
}
|
|
2406
|
+
/**
|
|
2407
|
+
* The asset panel beside the Centrifuge checkout. Read-only.
|
|
2408
|
+
*/
|
|
2409
|
+
declare function CentrifugeSidebarView({ state, className, }: CentrifugeSidebarViewProps): ReactNode;
|
|
2410
|
+
|
|
2411
|
+
interface CentrifugeWalletSelectViewProps {
|
|
2412
|
+
state: CentrifugeWalletSelectUiState;
|
|
2413
|
+
onEvent: (event: CentrifugeWalletSelectUiEvent) => void;
|
|
2414
|
+
/**
|
|
2415
|
+
* The line under the heading. Defaults to the buy copy.
|
|
2416
|
+
*
|
|
2417
|
+
* A plain string rather than a slot: the sentence says what the wallet is for.
|
|
2418
|
+
*/
|
|
2419
|
+
description?: string;
|
|
2420
|
+
className?: string;
|
|
2421
|
+
}
|
|
2422
|
+
/**
|
|
2423
|
+
* The wallet step of a Centrifuge checkout: which wallet funds the deposit.
|
|
2424
|
+
* Pure - the wallets arrive already shaped, and every interaction leaves
|
|
2425
|
+
* through `onEvent`.
|
|
2426
|
+
*
|
|
2427
|
+
* Nothing about choosing a wallet is allow-listed: confirming is a local
|
|
2428
|
+
* decision. The sentence under the heading is the only copy that names what
|
|
2429
|
+
* the wallet is for.
|
|
2430
|
+
*
|
|
2431
|
+
* Self-scoped: renders fully styled on its own, with no `CoinListStyleScope`
|
|
2432
|
+
* needed around it.
|
|
2433
|
+
*/
|
|
2434
|
+
declare function CentrifugeWalletSelectView(props: CentrifugeWalletSelectViewProps): ReactNode;
|
|
2435
|
+
|
|
1744
2436
|
/**
|
|
1745
2437
|
* Step 2 of the Ondo checkout: how much to spend, and which asset to spend.
|
|
1746
2438
|
*
|
|
@@ -3239,10 +3931,332 @@ interface SuperstateWalletViewProps {
|
|
|
3239
3931
|
* their wallet is about to ask them to sign. The completed step says
|
|
3240
3932
|
* `Allowlisted`, the only place the flow admits that anything happened.
|
|
3241
3933
|
*
|
|
3242
|
-
* Self-scoped: renders fully styled on its own, with no `CoinListStyleScope`
|
|
3243
|
-
* needed around it.
|
|
3934
|
+
* Self-scoped: renders fully styled on its own, with no `CoinListStyleScope`
|
|
3935
|
+
* needed around it.
|
|
3936
|
+
*/
|
|
3937
|
+
declare function SuperstateWalletView(props: SuperstateWalletViewProps): ReactNode;
|
|
3938
|
+
|
|
3939
|
+
/**
|
|
3940
|
+
* The claim card.
|
|
3941
|
+
*
|
|
3942
|
+
* `HIDDEN` renders nothing: the user is signed out, or there is nothing to
|
|
3943
|
+
* show and no wallet to connect. A host that wants an empty state can tell
|
|
3944
|
+
* both apart itself.
|
|
3945
|
+
*/
|
|
3946
|
+
type CentrifugeVaultClaimUiState = {
|
|
3947
|
+
type: 'HIDDEN';
|
|
3948
|
+
} | {
|
|
3949
|
+
type: 'LOADING';
|
|
3950
|
+
externalWallet: ClaimExternalWalletUi;
|
|
3951
|
+
} | {
|
|
3952
|
+
type: 'ERROR';
|
|
3953
|
+
externalWallet: ClaimExternalWalletUi;
|
|
3954
|
+
} | {
|
|
3955
|
+
type: 'CONTENT';
|
|
3956
|
+
rows: CentrifugeClaimRowUi[];
|
|
3957
|
+
externalWallet: ClaimExternalWalletUi;
|
|
3958
|
+
dialog: CentrifugeClaimDialogUi;
|
|
3959
|
+
};
|
|
3960
|
+
type CentrifugeVaultClaimUiEvent = {
|
|
3961
|
+
type: 'ON_CLAIM';
|
|
3962
|
+
legId: CentrifugeVaultLegId;
|
|
3963
|
+
} | {
|
|
3964
|
+
type: 'ON_RETRY_CLAIM';
|
|
3965
|
+
} | {
|
|
3966
|
+
type: 'ON_CLOSE_CLAIM_DIALOG';
|
|
3967
|
+
} | {
|
|
3968
|
+
type: 'ON_RETRY_LOAD';
|
|
3969
|
+
} | {
|
|
3970
|
+
type: 'ON_CONNECT_WALLET';
|
|
3971
|
+
} | {
|
|
3972
|
+
type: 'ON_CHANGE_WALLET';
|
|
3973
|
+
};
|
|
3974
|
+
/** Why a claimable row cannot be claimed right now. */
|
|
3975
|
+
type CentrifugeClaimBlockedReasonUi = 'vault-paused' | 'wallet-frozen';
|
|
3976
|
+
/**
|
|
3977
|
+
* What a claimable row's Claim button does. `claiming` while a claim on the
|
|
3978
|
+
* row has not settled, including one whose dialog was closed: the
|
|
3979
|
+
* transaction is still in the wallet or the mempool, and a second press
|
|
3980
|
+
* would send another.
|
|
3981
|
+
*/
|
|
3982
|
+
type CentrifugeClaimActionUi = {
|
|
3983
|
+
type: 'enabled';
|
|
3984
|
+
} | {
|
|
3985
|
+
type: 'claiming';
|
|
3986
|
+
} | {
|
|
3987
|
+
type: 'blocked';
|
|
3988
|
+
reason: CentrifugeClaimBlockedReasonUi;
|
|
3989
|
+
};
|
|
3990
|
+
/**
|
|
3991
|
+
* A row of the card. A leg yields a `pending` row while anything is queued
|
|
3992
|
+
* and a `claimable` row while anything is filled, so one wallet can show
|
|
3993
|
+
* both at once.
|
|
3994
|
+
*
|
|
3995
|
+
* The two kinds lay out differently on purpose: a pending row names the
|
|
3996
|
+
* offer and what is queued, a claimable row leads with what the user gets.
|
|
3997
|
+
*/
|
|
3998
|
+
type CentrifugeClaimRowUi = {
|
|
3999
|
+
kind: 'pending';
|
|
4000
|
+
/** Unique within the card, for React keys. */
|
|
4001
|
+
key: string;
|
|
4002
|
+
iconUrl: AssetIconUrl | null;
|
|
4003
|
+
/** The offer's name, e.g. `JTRSY deRWA`. */
|
|
4004
|
+
title: string;
|
|
4005
|
+
/** What is queued: funding for `invest`, shares for `redeem`. */
|
|
4006
|
+
amount: FormattedAmountAssetUi;
|
|
4007
|
+
wallet: string;
|
|
4008
|
+
} | {
|
|
4009
|
+
kind: 'claimable';
|
|
4010
|
+
key: string;
|
|
4011
|
+
legId: CentrifugeVaultLegId;
|
|
4012
|
+
iconUrl: AssetIconUrl | null;
|
|
4013
|
+
/**
|
|
4014
|
+
* What a claim pays out: exact shares for `invest`, an estimate of the
|
|
4015
|
+
* funding token (prefixed `~`) for `redeem`.
|
|
4016
|
+
*/
|
|
4017
|
+
amount: FormattedAmountAssetUi;
|
|
4018
|
+
wallet: string;
|
|
4019
|
+
action: CentrifugeClaimActionUi;
|
|
4020
|
+
};
|
|
4021
|
+
/** A connect or change request the host's connector is handling. */
|
|
4022
|
+
type ExternalWalletRequestUi = 'idle' | 'pending' | 'failed';
|
|
4023
|
+
/**
|
|
4024
|
+
* The card's footer. `hidden` when the host offers no connector, so there is
|
|
4025
|
+
* nothing to connect with.
|
|
4026
|
+
*/
|
|
4027
|
+
type ClaimExternalWalletUi = {
|
|
4028
|
+
type: 'hidden';
|
|
4029
|
+
} | {
|
|
4030
|
+
type: 'disconnected';
|
|
4031
|
+
request: ExternalWalletRequestUi;
|
|
4032
|
+
} | {
|
|
4033
|
+
type: 'connected';
|
|
4034
|
+
wallet: string;
|
|
4035
|
+
request: ExternalWalletRequestUi;
|
|
4036
|
+
};
|
|
4037
|
+
/** The steps a claim goes through, in order, as the dialog lists them. */
|
|
4038
|
+
type CentrifugeClaimStepUi = 'preparing' | 'awaiting-wallet' | 'confirming';
|
|
4039
|
+
/** Why a claim failed, in the flavours the dialog words differently. */
|
|
4040
|
+
type CentrifugeClaimFailureUi = 'nothing-to-claim' | 'wallet-frozen' | 'rejected' | 'insufficient-gas' | 'reverted' | 'generic';
|
|
4041
|
+
type CentrifugeClaimProgressUi = {
|
|
4042
|
+
type: 'running';
|
|
4043
|
+
step: CentrifugeClaimStepUi;
|
|
4044
|
+
} | {
|
|
4045
|
+
type: 'failed';
|
|
4046
|
+
step: CentrifugeClaimStepUi;
|
|
4047
|
+
reason: CentrifugeClaimFailureUi;
|
|
4048
|
+
/**
|
|
4049
|
+
* Whether the dialog offers "Try again". `nothing-to-claim` has already
|
|
4050
|
+
* been paid and `wallet-frozen` needs the issuer, so retrying either only
|
|
4051
|
+
* repeats the refusal.
|
|
4052
|
+
*/
|
|
4053
|
+
retryable: boolean;
|
|
4054
|
+
} | {
|
|
4055
|
+
type: 'succeeded';
|
|
4056
|
+
claimed: FormattedAmountAssetUi;
|
|
4057
|
+
explorerUrl: TxExplorerUrl;
|
|
4058
|
+
};
|
|
4059
|
+
type CentrifugeClaimDialogUi = {
|
|
4060
|
+
type: 'closed';
|
|
4061
|
+
} | {
|
|
4062
|
+
type: 'open';
|
|
4063
|
+
/** What the claim pays out, which the dialog's title names. */
|
|
4064
|
+
amount: FormattedAmountAssetUi;
|
|
4065
|
+
progress: CentrifugeClaimProgressUi;
|
|
4066
|
+
};
|
|
4067
|
+
|
|
4068
|
+
interface UseCentrifugeVaultClaimViewModelOptions {
|
|
4069
|
+
offer: CentrifugeVaultOfferDetail;
|
|
4070
|
+
wallets: WalletSelection;
|
|
4071
|
+
/** Names a wallet for display; unnamed ones show a shortened address. */
|
|
4072
|
+
walletLabel?: WalletLabelResolver;
|
|
4073
|
+
/** Fired once a claim has mined, whether or not the dialog is still open. */
|
|
4074
|
+
onClaimed?: (claim: CentrifugeVaultClaimed) => void;
|
|
4075
|
+
/** How often to re-read pending positions and vault status. */
|
|
4076
|
+
pollInterval?: Seconds;
|
|
4077
|
+
/** Default `true`. `false` turns off every request and timer. */
|
|
4078
|
+
enabled?: boolean;
|
|
4079
|
+
}
|
|
4080
|
+
interface UseCentrifugeVaultClaimViewModelResult {
|
|
4081
|
+
state: CentrifugeVaultClaimUiState;
|
|
4082
|
+
onEvent: (event: CentrifugeVaultClaimUiEvent) => void;
|
|
4083
|
+
}
|
|
4084
|
+
/**
|
|
4085
|
+
* What a host hears once a claim has mined. `claimed` is what the calldata
|
|
4086
|
+
* was built to collect: shares for `invest`, the funding token for `redeem`.
|
|
4087
|
+
*/
|
|
4088
|
+
type CentrifugeVaultClaimed = {
|
|
4089
|
+
direction: CentrifugeClaimDirection;
|
|
4090
|
+
chain: EthereumChain;
|
|
4091
|
+
walletAddress: EvmWalletAddress;
|
|
4092
|
+
txHash: Hash;
|
|
4093
|
+
claimed: BlockchainAmount;
|
|
4094
|
+
};
|
|
4095
|
+
/**
|
|
4096
|
+
* The Centrifuge claim card: every wallet's pending and claimable positions on
|
|
4097
|
+
* an offer's vaults, and the claim that collects a filled one.
|
|
4098
|
+
*
|
|
4099
|
+
* The vaults come from the offer's `vaultContracts`, each chain's share and
|
|
4100
|
+
* funding token resolved through the token registry; a chain whose tokens the
|
|
4101
|
+
* registry does not list is left out and logged. Positions are read for every
|
|
4102
|
+
* wallet the host supplied, on both legs, and polled while anything is
|
|
4103
|
+
* pending. Vault status gates the Claim button, and is polled while the page
|
|
4104
|
+
* is visible.
|
|
4105
|
+
*
|
|
4106
|
+
* A claim runs in a dialog that tracks its steps. It is broadcast from the
|
|
4107
|
+
* wallet that holds the row - the proxy credits the sender - and on success
|
|
4108
|
+
* every position is read again, so the claimed amount leaves the card.
|
|
4109
|
+
*/
|
|
4110
|
+
declare function useCentrifugeVaultClaimViewModel({ offer, wallets, walletLabel, onClaimed, pollInterval, enabled, }: UseCentrifugeVaultClaimViewModelOptions): UseCentrifugeVaultClaimViewModelResult;
|
|
4111
|
+
|
|
4112
|
+
/**
|
|
4113
|
+
* Everything `ClaimContainer` needs that the offer cannot tell it, keyed by
|
|
4114
|
+
* the async offer type it belongs to.
|
|
4115
|
+
*
|
|
4116
|
+
* Keyed by {@link AsyncOfferType} with every key required, for the same reason
|
|
4117
|
+
* as `CheckoutConfig`: a host rendering `ClaimContainer` is saying it will
|
|
4118
|
+
* handle whatever async offer it is given, so a new async provider is a
|
|
4119
|
+
* compile error in every host rather than a card that silently renders
|
|
4120
|
+
* nothing. Per-integration, not per-offer: a host builds it once.
|
|
4121
|
+
*/
|
|
4122
|
+
type ClaimConfig = {
|
|
4123
|
+
[K in AsyncOfferType]: ClaimConfigByOfferType[K];
|
|
4124
|
+
};
|
|
4125
|
+
/**
|
|
4126
|
+
* What each async offer type needs, before {@link ClaimConfig} maps
|
|
4127
|
+
* `AsyncOfferType` over it. Private, so a new member of `AsyncOfferDetail`
|
|
4128
|
+
* with no entry here fails to index this type in the SDK first.
|
|
4129
|
+
*/
|
|
4130
|
+
type ClaimConfigByOfferType = {
|
|
4131
|
+
'centrifuge::vault': CentrifugeVaultClaimConfig;
|
|
4132
|
+
};
|
|
4133
|
+
/**
|
|
4134
|
+
* Centrifuge needs nothing required today: the vaults come from the offer and
|
|
4135
|
+
* the token registry. The key still has to be supplied, so that the day it
|
|
4136
|
+
* does need something the omission is a compile error.
|
|
4137
|
+
*/
|
|
4138
|
+
type CentrifugeVaultClaimConfig = {
|
|
4139
|
+
/** Fired once a claim has mined. The dialog shows either way. */
|
|
4140
|
+
onClaimed?: (claim: CentrifugeVaultClaimed) => void;
|
|
4141
|
+
};
|
|
4142
|
+
interface ClaimContainerProps {
|
|
4143
|
+
/**
|
|
4144
|
+
* The async offer whose positions to show. Its `type` decides which
|
|
4145
|
+
* provider renders. Narrow an `OfferDetail` with `AsyncOfferDetail.is`.
|
|
4146
|
+
*/
|
|
4147
|
+
offer: AsyncOfferDetail;
|
|
4148
|
+
/**
|
|
4149
|
+
* The wallets to read positions for and claim from, and the host's
|
|
4150
|
+
* external-wallet connector. Pass `externalAdapter: null` to hide the
|
|
4151
|
+
* connect affordance.
|
|
4152
|
+
*/
|
|
4153
|
+
wallets: WalletSelection;
|
|
4154
|
+
/**
|
|
4155
|
+
* Names a wallet for display, e.g. `'CoinList Wallet'` for the embedded
|
|
4156
|
+
* one. Omitted, or returning `null`, shows the shortened address.
|
|
4157
|
+
*/
|
|
4158
|
+
walletLabel?: WalletLabelResolver;
|
|
4159
|
+
/** What each async offer type needs beyond the offer itself. */
|
|
4160
|
+
config: ClaimConfig;
|
|
4161
|
+
/**
|
|
4162
|
+
* Default `true`. `false` turns off every request and timer in the mounted
|
|
4163
|
+
* provider, for a card that is on the tree but not on screen yet.
|
|
4164
|
+
*/
|
|
4165
|
+
enabled?: boolean;
|
|
4166
|
+
className?: string;
|
|
4167
|
+
}
|
|
4168
|
+
/**
|
|
4169
|
+
* The plug-and-play claim card: hand it an async offer and it renders the
|
|
4170
|
+
* right provider's positions - what is pending, what is claimable - and the
|
|
4171
|
+
* claim that collects them.
|
|
4172
|
+
*
|
|
4173
|
+
* The second leg of an async trade. The user placed a request earlier, the
|
|
4174
|
+
* fund fills it on its own schedule, and they come back - days or weeks later
|
|
4175
|
+
* - to claim. So the card is its own entry on the offer page rather than a
|
|
4176
|
+
* checkout step.
|
|
4177
|
+
*
|
|
4178
|
+
* Only the matching provider's container is mounted, so its viewmodel is the
|
|
4179
|
+
* only one that runs. The `switch` is exhaustive against
|
|
4180
|
+
* {@link AsyncOfferType}, and the `default` branch assigns to
|
|
4181
|
+
* `const exhaustive: never`, so a new async offer type is a compile error here
|
|
4182
|
+
* as well as in {@link ClaimConfig}.
|
|
4183
|
+
*
|
|
4184
|
+
* ```tsx
|
|
4185
|
+
* {AsyncOfferDetail.is(offer) && (
|
|
4186
|
+
* <ClaimContainer
|
|
4187
|
+
* key={offer.id}
|
|
4188
|
+
* offer={offer}
|
|
4189
|
+
* wallets={{ embedded, external, externalAdapter }}
|
|
4190
|
+
* walletLabel={(address) => (isEmbedded(address) ? 'CoinList Wallet' : null)}
|
|
4191
|
+
* config={{ 'centrifuge::vault': {} }}
|
|
4192
|
+
* />
|
|
4193
|
+
* )}
|
|
4194
|
+
* ```
|
|
4195
|
+
*/
|
|
4196
|
+
declare function ClaimContainer({ offer, wallets, walletLabel, config, enabled, className, }: ClaimContainerProps): ReactNode;
|
|
4197
|
+
|
|
4198
|
+
interface CentrifugeVaultClaimContainerProps {
|
|
4199
|
+
/** The vault offer whose positions to show: its chains come from `vaultContracts`. */
|
|
4200
|
+
offer: CentrifugeVaultOfferDetail;
|
|
4201
|
+
/** The wallets to read positions for and claim from. */
|
|
4202
|
+
wallets: WalletSelection;
|
|
4203
|
+
/** Names a wallet for display; unnamed ones show a shortened address. */
|
|
4204
|
+
walletLabel?: WalletLabelResolver;
|
|
4205
|
+
/** Fired once a claim has mined. The dialog shows either way. */
|
|
4206
|
+
onClaimed?: (claim: CentrifugeVaultClaimed) => void;
|
|
4207
|
+
/**
|
|
4208
|
+
* Default `true`. `false` turns off every request and timer, for a card
|
|
4209
|
+
* that is mounted but not on screen yet.
|
|
4210
|
+
*/
|
|
4211
|
+
enabled?: boolean;
|
|
4212
|
+
className?: string;
|
|
4213
|
+
}
|
|
4214
|
+
/**
|
|
4215
|
+
* The Centrifuge claim card: every wallet's pending and claimable positions on
|
|
4216
|
+
* a vault offer, polled while anything is pending, and the claim that
|
|
4217
|
+
* collects a filled one.
|
|
4218
|
+
*/
|
|
4219
|
+
declare function CentrifugeVaultClaimContainer({ offer, wallets, walletLabel, onClaimed, enabled, className, }: CentrifugeVaultClaimContainerProps): ReactNode;
|
|
4220
|
+
|
|
4221
|
+
interface CentrifugeVaultClaimDialogProps {
|
|
4222
|
+
dialog: CentrifugeClaimDialogUi;
|
|
4223
|
+
onRetry: () => void;
|
|
4224
|
+
onClose: () => void;
|
|
4225
|
+
}
|
|
4226
|
+
/**
|
|
4227
|
+
* The dialog a claim runs in: its steps as they happen, the step that broke
|
|
4228
|
+
* and why, or what was claimed.
|
|
4229
|
+
*
|
|
4230
|
+
* Closing it mid-claim is allowed and cancels nothing: a broadcast claim
|
|
4231
|
+
* still mines, and the card refetches when it does.
|
|
4232
|
+
*/
|
|
4233
|
+
declare function CentrifugeVaultClaimDialog({ dialog, onRetry, onClose, }: CentrifugeVaultClaimDialogProps): ReactNode;
|
|
4234
|
+
|
|
4235
|
+
interface CentrifugeVaultClaimRowProps {
|
|
4236
|
+
row: CentrifugeClaimRowUi;
|
|
4237
|
+
/** Asked for when the row is claimable and its Claim button is pressed. */
|
|
4238
|
+
onClaim: () => void;
|
|
4239
|
+
}
|
|
4240
|
+
/**
|
|
4241
|
+
* One position row of the claim card.
|
|
4242
|
+
*
|
|
4243
|
+
* A pending row names the offer and, on the right, what is queued and from
|
|
4244
|
+
* which wallet. A claimable row leads with what the user gets, and puts the
|
|
4245
|
+
* Claim button where the amount would be. A blocked claim keeps its row and
|
|
4246
|
+
* says why under it, so the user is not left wondering where their claim went.
|
|
3244
4247
|
*/
|
|
3245
|
-
declare function
|
|
4248
|
+
declare function CentrifugeVaultClaimRow({ row, onClaim, }: CentrifugeVaultClaimRowProps): ReactNode;
|
|
4249
|
+
|
|
4250
|
+
interface CentrifugeVaultClaimViewProps {
|
|
4251
|
+
state: CentrifugeVaultClaimUiState;
|
|
4252
|
+
onEvent: (event: CentrifugeVaultClaimUiEvent) => void;
|
|
4253
|
+
className?: string;
|
|
4254
|
+
}
|
|
4255
|
+
/**
|
|
4256
|
+
* The claim card: a wallet's pending and claimable Centrifuge positions, the
|
|
4257
|
+
* footer that connects an external wallet, and the dialog a claim runs in.
|
|
4258
|
+
*/
|
|
4259
|
+
declare function CentrifugeVaultClaimView({ state, onEvent, className, }: CentrifugeVaultClaimViewProps): ReactNode;
|
|
3246
4260
|
|
|
3247
4261
|
/**
|
|
3248
4262
|
* One image as an `<img>` renders it: a `src` for a consumer that takes a
|
|
@@ -4390,6 +5404,294 @@ interface UseCompleteOAuthOptions {
|
|
|
4390
5404
|
*/
|
|
4391
5405
|
declare function useCompleteOAuth(options: UseCompleteOAuthOptions): void;
|
|
4392
5406
|
|
|
5407
|
+
type CentrifugeBuyAmountConfirmed = {
|
|
5408
|
+
amount: BlockchainAmount;
|
|
5409
|
+
inputAsset: StablecoinSymbol;
|
|
5410
|
+
};
|
|
5411
|
+
type CentrifugeBuyAmountStepInput = {
|
|
5412
|
+
type: 'incomplete';
|
|
5413
|
+
} | {
|
|
5414
|
+
type: 'active';
|
|
5415
|
+
wallet: EvmWallet;
|
|
5416
|
+
/**
|
|
5417
|
+
* Set when the vault is known to be unable to take a request. Unknown
|
|
5418
|
+
* and failed statuses leave this null: they do not block a deposit.
|
|
5419
|
+
*/
|
|
5420
|
+
depositBlockedMessage: string | null;
|
|
5421
|
+
/** The offer's minimum, in dollars. `null` when the offer sets none. */
|
|
5422
|
+
minimumPurchaseUsd: number | null;
|
|
5423
|
+
} | {
|
|
5424
|
+
type: 'complete';
|
|
5425
|
+
wallet: EvmWallet;
|
|
5426
|
+
amount: BlockchainAmount;
|
|
5427
|
+
inputAsset: StablecoinSymbol;
|
|
5428
|
+
};
|
|
5429
|
+
interface UseCentrifugeBuyAmountViewModelOptions {
|
|
5430
|
+
stepInput: CentrifugeBuyAmountStepInput;
|
|
5431
|
+
chain: EthereumChain;
|
|
5432
|
+
enabled?: boolean;
|
|
5433
|
+
onComplete: (confirmed: CentrifugeBuyAmountConfirmed) => void;
|
|
5434
|
+
onEdit: () => void;
|
|
5435
|
+
}
|
|
5436
|
+
interface UseCentrifugeBuyAmountViewModelResult {
|
|
5437
|
+
state: CentrifugeBuyAmountUiState;
|
|
5438
|
+
onEvent: (event: CentrifugeBuyAmountUiEvent) => void;
|
|
5439
|
+
}
|
|
5440
|
+
/**
|
|
5441
|
+
* Drives step 2: how much to deposit.
|
|
5442
|
+
*
|
|
5443
|
+
* Confirming validates the amount in memory and hands it up. The estimate
|
|
5444
|
+
* for that amount is polled for the review step. Nothing here is signed.
|
|
5445
|
+
*/
|
|
5446
|
+
declare function useCentrifugeBuyAmountViewModel({ stepInput, chain, enabled, onComplete, onEdit, }: UseCentrifugeBuyAmountViewModelOptions): UseCentrifugeBuyAmountViewModelResult;
|
|
5447
|
+
type CentrifugeBuyAmountValidation = {
|
|
5448
|
+
valid: true;
|
|
5449
|
+
amount: BlockchainAmount;
|
|
5450
|
+
} | {
|
|
5451
|
+
valid: false;
|
|
5452
|
+
error: string;
|
|
5453
|
+
};
|
|
5454
|
+
declare function validateCentrifugeBuyAmount({ input, decimals, balance, symbol, minimum, locale, }: {
|
|
5455
|
+
input: string;
|
|
5456
|
+
decimals: AssetDecimals;
|
|
5457
|
+
balance: bigint | null;
|
|
5458
|
+
symbol: AssetSymbol;
|
|
5459
|
+
minimum: BlockchainAmount | null;
|
|
5460
|
+
locale: string;
|
|
5461
|
+
}): CentrifugeBuyAmountValidation;
|
|
5462
|
+
|
|
5463
|
+
/**
|
|
5464
|
+
* Why a Centrifuge read failed, in the only two flavours a UI acts on
|
|
5465
|
+
* differently.
|
|
5466
|
+
*
|
|
5467
|
+
* `not-authenticated` is split out because no retry helps until the user
|
|
5468
|
+
* signs in. Everything else collapses into `generic-error` and is offered a
|
|
5469
|
+
* retry.
|
|
5470
|
+
*/
|
|
5471
|
+
type CentrifugeLoadErrorReason = 'not-authenticated' | 'generic-error';
|
|
5472
|
+
declare function centrifugeLoadErrorReason(error: unknown): CentrifugeLoadErrorReason;
|
|
5473
|
+
|
|
5474
|
+
/**
|
|
5475
|
+
* The built deposit request a review step can place.
|
|
5476
|
+
*
|
|
5477
|
+
* `isRefreshing` rides on `CONTENT` so a rebuild never blanks the numbers on
|
|
5478
|
+
* screen. A failed rebuild keeps them and says why.
|
|
5479
|
+
*/
|
|
5480
|
+
type LoadCentrifugeBuyTransactionState = {
|
|
5481
|
+
type: 'LOADING';
|
|
5482
|
+
} | {
|
|
5483
|
+
type: 'ERROR';
|
|
5484
|
+
reason: CentrifugeLoadErrorReason;
|
|
5485
|
+
} | {
|
|
5486
|
+
type: 'CONTENT';
|
|
5487
|
+
transaction: CentrifugeVaultBuyTransaction;
|
|
5488
|
+
isRefreshing: boolean;
|
|
5489
|
+
refreshError: CentrifugeLoadErrorReason | null;
|
|
5490
|
+
};
|
|
5491
|
+
interface UseCentrifugeBuyTransactionOptions {
|
|
5492
|
+
/**
|
|
5493
|
+
* The request to build, or `null` before an amount is confirmed. A `null`
|
|
5494
|
+
* request fetches nothing.
|
|
5495
|
+
*/
|
|
5496
|
+
request: BuildCentrifugeVaultBuyParams | null;
|
|
5497
|
+
/**
|
|
5498
|
+
* A request the caller already holds, typically the one `prepareBuy`
|
|
5499
|
+
* returned. When present the hook adopts it and skips the initial build.
|
|
5500
|
+
* `refetch` still builds.
|
|
5501
|
+
*/
|
|
5502
|
+
data?: CentrifugeVaultBuyTransaction;
|
|
5503
|
+
/** When false, the hook does not build. */
|
|
5504
|
+
enabled: boolean;
|
|
5505
|
+
}
|
|
5506
|
+
interface UseCentrifugeBuyTransactionResult {
|
|
5507
|
+
state: LoadCentrifugeBuyTransactionState;
|
|
5508
|
+
/** Builds a fresh request for the same deposit. */
|
|
5509
|
+
refetch: () => void;
|
|
5510
|
+
}
|
|
5511
|
+
/**
|
|
5512
|
+
* Holds the deposit request the review step places, and rebuilds it when
|
|
5513
|
+
* asked.
|
|
5514
|
+
*
|
|
5515
|
+
* **Never polls.** A request is built once, when the user confirms an amount.
|
|
5516
|
+
*/
|
|
5517
|
+
declare function useCentrifugeBuyTransaction(options: UseCentrifugeBuyTransactionOptions): UseCentrifugeBuyTransactionResult;
|
|
5518
|
+
|
|
5519
|
+
type CentrifugeBuyReviewStepInput = {
|
|
5520
|
+
type: 'incomplete';
|
|
5521
|
+
} | {
|
|
5522
|
+
type: 'active';
|
|
5523
|
+
wallet: EvmWallet;
|
|
5524
|
+
amount: BlockchainAmount;
|
|
5525
|
+
inputAsset: StablecoinSymbol;
|
|
5526
|
+
/** Known vault block. Unknown status leaves this null. */
|
|
5527
|
+
depositBlockedMessage: string | null;
|
|
5528
|
+
};
|
|
5529
|
+
interface UseCentrifugeBuyReviewViewModelOptions {
|
|
5530
|
+
stepInput: CentrifugeBuyReviewStepInput;
|
|
5531
|
+
symbol: AssetSymbol;
|
|
5532
|
+
chain: EthereumChain;
|
|
5533
|
+
/** The offer's vault proxies. The spender the approval is written to. */
|
|
5534
|
+
vaultContracts: OfferVaultContract[];
|
|
5535
|
+
/**
|
|
5536
|
+
* When false, placing the request does nothing. Defaults to true.
|
|
5537
|
+
*
|
|
5538
|
+
* The step being `incomplete` is not the same thing: a checkout switched
|
|
5539
|
+
* off mid-flow leaves this step `active`, with the amount still here.
|
|
5540
|
+
*/
|
|
5541
|
+
enabled?: boolean;
|
|
5542
|
+
onComplete: (order: CentrifugeOrderPlaced) => void;
|
|
5543
|
+
}
|
|
5544
|
+
interface UseCentrifugeBuyReviewViewModelResult {
|
|
5545
|
+
state: CentrifugeBuyReviewUiState;
|
|
5546
|
+
onEvent: (event: CentrifugeBuyReviewUiEvent) => void;
|
|
5547
|
+
}
|
|
5548
|
+
/**
|
|
5549
|
+
* Drives step 3: confirming the deposit and placing the request.
|
|
5550
|
+
*
|
|
5551
|
+
* Placing approves the vault proxy when the allowance is short, builds the
|
|
5552
|
+
* request, and broadcasts it. None of that runs on the amount step, so a
|
|
5553
|
+
* user who edits the amount has not already signed an approval for the old
|
|
5554
|
+
* one.
|
|
5555
|
+
*/
|
|
5556
|
+
declare function useCentrifugeBuyReviewViewModel({ stepInput, symbol, chain, vaultContracts, enabled, onComplete, }: UseCentrifugeBuyReviewViewModelOptions): UseCentrifugeBuyReviewViewModelResult;
|
|
5557
|
+
|
|
5558
|
+
type CentrifugeBuyStep = {
|
|
5559
|
+
type: 'wallet';
|
|
5560
|
+
} | {
|
|
5561
|
+
type: 'amount';
|
|
5562
|
+
wallet: EvmWallet;
|
|
5563
|
+
} | {
|
|
5564
|
+
type: 'review';
|
|
5565
|
+
wallet: EvmWallet;
|
|
5566
|
+
amount: BlockchainAmount;
|
|
5567
|
+
inputAsset: StablecoinSymbol;
|
|
5568
|
+
};
|
|
5569
|
+
interface UseCentrifugeBuyCheckoutViewModelOptions {
|
|
5570
|
+
offer: CentrifugeVaultOfferDetail;
|
|
5571
|
+
/** Share token symbol, e.g. `deJTRSY`. */
|
|
5572
|
+
symbol: AssetSymbol;
|
|
5573
|
+
chain: EthereumChain;
|
|
5574
|
+
wallets: CheckoutWalletSelection;
|
|
5575
|
+
enabled?: boolean;
|
|
5576
|
+
/** Fired once the request has mined. The dialog shows either way. */
|
|
5577
|
+
onOrderPlaced?: (order: CentrifugeOrderPlaced) => void;
|
|
5578
|
+
/**
|
|
5579
|
+
* The fund the token tracks. Frontline does not send this yet, so pass
|
|
5580
|
+
* `null` and the asset-details row stays hidden.
|
|
5581
|
+
*/
|
|
5582
|
+
underlyingFund: string | null;
|
|
5583
|
+
/**
|
|
5584
|
+
* Trailing yield as display copy, e.g. `3.60%`. Frontline does not send
|
|
5585
|
+
* this yet, so pass `null` and the corner stays empty.
|
|
5586
|
+
*/
|
|
5587
|
+
apy: string | null;
|
|
5588
|
+
}
|
|
5589
|
+
interface UseCentrifugeBuyCheckoutViewModelResult {
|
|
5590
|
+
state: CentrifugeBuyCheckoutUiState;
|
|
5591
|
+
onEvent: (event: CentrifugeBuyCheckoutUiEvent) => void;
|
|
5592
|
+
}
|
|
5593
|
+
/**
|
|
5594
|
+
* Drives the Centrifuge buy checkout.
|
|
5595
|
+
*
|
|
5596
|
+
* The container mounts this hook only. It composes the wallet, amount,
|
|
5597
|
+
* review, and sidebar steps. The status poll lives here. The amount step
|
|
5598
|
+
* only validates.
|
|
5599
|
+
*
|
|
5600
|
+
* A vault that is known to be blocked replaces the checkout only at the
|
|
5601
|
+
* wallet step. A status that is still loading, or that failed, does not.
|
|
5602
|
+
*/
|
|
5603
|
+
declare function useCentrifugeBuyCheckoutViewModel({ offer, symbol, chain, wallets, enabled, onOrderPlaced, underlyingFund, apy, }: UseCentrifugeBuyCheckoutViewModelOptions): UseCentrifugeBuyCheckoutViewModelResult;
|
|
5604
|
+
|
|
5605
|
+
/**
|
|
5606
|
+
* User-facing copy for each `can_order` reason F-0 publishes.
|
|
5607
|
+
*
|
|
5608
|
+
* A record keyed by the closed set, so a new reason fails to compile here
|
|
5609
|
+
* until it has a sentence. The View (or a viewmodel mapping into one) should
|
|
5610
|
+
* render this rather than the wire token.
|
|
5611
|
+
*
|
|
5612
|
+
* Status never returns `below_minimum`. The copy stays so the closed set
|
|
5613
|
+
* still has a sentence for every reason.
|
|
5614
|
+
*/
|
|
5615
|
+
declare const CENTRIFUGE_VAULT_ORDER_REASON_MESSAGES: Record<CentrifugeOrderReason, string>;
|
|
5616
|
+
declare function centrifugeVaultOrderReasonMessage(reason: CentrifugeOrderReason): string;
|
|
5617
|
+
/**
|
|
5618
|
+
* The most blocking reason in `reasons`, or `null` when the list is empty.
|
|
5619
|
+
*/
|
|
5620
|
+
declare function primaryCentrifugeVaultOrderReason<T extends CentrifugeOrderReason>(reasons: readonly T[]): T | null;
|
|
5621
|
+
/**
|
|
5622
|
+
* The sentence to show for an {@link CentrifugeOrderability}, or `null` when
|
|
5623
|
+
* the request can proceed.
|
|
5624
|
+
*/
|
|
5625
|
+
declare function centrifugeVaultOrderingMessage<R extends CentrifugeOrderReason>(orderability: CentrifugeOrderability<R>): string | null;
|
|
5626
|
+
|
|
5627
|
+
interface UseCentrifugeSidebarViewModelOptions {
|
|
5628
|
+
offer: CentrifugeVaultOfferDetail;
|
|
5629
|
+
symbol: AssetSymbol;
|
|
5630
|
+
chain: EthereumChain;
|
|
5631
|
+
tokenMetadata: TokenMetadata | null;
|
|
5632
|
+
/**
|
|
5633
|
+
* The fund the token tracks. Frontline does not send this yet, so callers
|
|
5634
|
+
* pass `null` and the row stays hidden.
|
|
5635
|
+
*/
|
|
5636
|
+
underlyingFund: string | null;
|
|
5637
|
+
/**
|
|
5638
|
+
* Trailing yield as display copy, e.g. `3.60%`. Frontline does not send
|
|
5639
|
+
* this yet, so callers pass `null` and the corner stays empty.
|
|
5640
|
+
*/
|
|
5641
|
+
apy: string | null;
|
|
5642
|
+
}
|
|
5643
|
+
interface UseCentrifugeSidebarViewModelResult {
|
|
5644
|
+
state: CentrifugeSidebarUiState;
|
|
5645
|
+
}
|
|
5646
|
+
/**
|
|
5647
|
+
* Drives the asset panel beside the Centrifuge checkout.
|
|
5648
|
+
*
|
|
5649
|
+
* The minimum is the offer's. Yield and the underlying fund are arguments:
|
|
5650
|
+
* frontline does not publish either yet, so callers pass `null`.
|
|
5651
|
+
*/
|
|
5652
|
+
declare function useCentrifugeSidebarViewModel({ offer, symbol, chain, tokenMetadata, underlyingFund, apy, }: UseCentrifugeSidebarViewModelOptions): UseCentrifugeSidebarViewModelResult;
|
|
5653
|
+
|
|
5654
|
+
/**
|
|
5655
|
+
* Whether step 1 is being filled in or already answered.
|
|
5656
|
+
*
|
|
5657
|
+
* There is no `incomplete` arm: this is the first step, so it is never waiting
|
|
5658
|
+
* on one above it.
|
|
5659
|
+
*/
|
|
5660
|
+
type CentrifugeWalletSelectStepInput = {
|
|
5661
|
+
type: 'active';
|
|
5662
|
+
} | {
|
|
5663
|
+
type: 'completed';
|
|
5664
|
+
wallet: EvmWallet;
|
|
5665
|
+
};
|
|
5666
|
+
interface UseCentrifugeWalletSelectViewModelOptions {
|
|
5667
|
+
stepInput: CentrifugeWalletSelectStepInput;
|
|
5668
|
+
/** The host's wallets, and the lambdas that connect and disconnect one. */
|
|
5669
|
+
wallets: CheckoutWalletSelection;
|
|
5670
|
+
/** The chain the order executes on, which names the network on each row. */
|
|
5671
|
+
chain: EthereumChain;
|
|
5672
|
+
/** Called with the wallet the user settled on. */
|
|
5673
|
+
onComplete: (wallet: EvmWallet) => void;
|
|
5674
|
+
/** Called when the user reopens this step from a later one. */
|
|
5675
|
+
onEdit: () => void;
|
|
5676
|
+
}
|
|
5677
|
+
interface UseCentrifugeWalletSelectViewModelResult {
|
|
5678
|
+
state: CentrifugeWalletSelectUiState;
|
|
5679
|
+
onEvent: (event: CentrifugeWalletSelectUiEvent) => void;
|
|
5680
|
+
}
|
|
5681
|
+
/**
|
|
5682
|
+
* Drives step 1 of the Centrifuge checkout: which wallet funds the deposit.
|
|
5683
|
+
*
|
|
5684
|
+
* Nothing here touches the network. A wallet is not allow-listed, so confirming
|
|
5685
|
+
* is a local decision the viewmodel makes on its own - which is why the step's
|
|
5686
|
+
* CTA is a plain `confirmEnabled`.
|
|
5687
|
+
*
|
|
5688
|
+
* Connecting an external wallet is the host's job: `connectExternal` opens
|
|
5689
|
+
* whatever connector it ships, and the result is read from `wallets.external`
|
|
5690
|
+
* on the next render rather than from a return value, so a connector that
|
|
5691
|
+
* redirects works as well as one that opens a modal.
|
|
5692
|
+
*/
|
|
5693
|
+
declare function useCentrifugeWalletSelectViewModel({ stepInput, wallets, chain, onComplete, onEdit, }: UseCentrifugeWalletSelectViewModelOptions): UseCentrifugeWalletSelectViewModelResult;
|
|
5694
|
+
|
|
4393
5695
|
type LoadParticipationsReason = 'not-authenticated' | 'generic-error';
|
|
4394
5696
|
type LoadParticipationsState = {
|
|
4395
5697
|
type: 'LOADING';
|
|
@@ -5860,6 +7162,118 @@ interface UseSuperstateWalletViewModelResult {
|
|
|
5860
7162
|
*/
|
|
5861
7163
|
declare function useSuperstateWalletViewModel({ stepInput, wallets, offerId, contractAddress, chain, onComplete, onEdit, }: UseSuperstateWalletViewModelOptions): UseSuperstateWalletViewModelResult;
|
|
5862
7164
|
|
|
7165
|
+
/**
|
|
7166
|
+
* Where one claim run stands. `FAILED` keeps the phase it stopped in, so a
|
|
7167
|
+
* progress list can mark the step that broke rather than only say that
|
|
7168
|
+
* something did.
|
|
7169
|
+
*/
|
|
7170
|
+
type CentrifugeClaimState = {
|
|
7171
|
+
type: 'IDLE';
|
|
7172
|
+
} | {
|
|
7173
|
+
type: 'RUNNING';
|
|
7174
|
+
phase: CentrifugeClaimPhase;
|
|
7175
|
+
} | {
|
|
7176
|
+
type: 'FAILED';
|
|
7177
|
+
phase: CentrifugeClaimPhase;
|
|
7178
|
+
error: CentrifugeClaimError;
|
|
7179
|
+
} | {
|
|
7180
|
+
type: 'SUCCEEDED';
|
|
7181
|
+
success: Extract<CentrifugeClaimResult, {
|
|
7182
|
+
type: 'success';
|
|
7183
|
+
}>;
|
|
7184
|
+
};
|
|
7185
|
+
type CentrifugeClaimParams = Omit<ClaimCentrifugeVaultParams, 'centrifuge' | 'onProgress'>;
|
|
7186
|
+
interface UseCentrifugeClaimResult {
|
|
7187
|
+
state: CentrifugeClaimState;
|
|
7188
|
+
/**
|
|
7189
|
+
* Runs a claim and resolves with its result, whatever became of the state:
|
|
7190
|
+
* a claim abandoned with {@link reset} still mines, and the caller may want
|
|
7191
|
+
* to refetch when it does.
|
|
7192
|
+
*/
|
|
7193
|
+
claim: (params: CentrifugeClaimParams) => Promise<CentrifugeClaimResult>;
|
|
7194
|
+
/** Back to `IDLE`. A run still in flight stops updating the state. */
|
|
7195
|
+
reset: () => void;
|
|
7196
|
+
}
|
|
7197
|
+
/**
|
|
7198
|
+
* Claims a filled Centrifuge position through `coinlist.centrifuge.claim`,
|
|
7199
|
+
* tracking which phase it is in.
|
|
7200
|
+
*
|
|
7201
|
+
* Unmounting or resetting does not cancel a claim - nothing can recall a
|
|
7202
|
+
* broadcast transaction - it only stops this state following it.
|
|
7203
|
+
*/
|
|
7204
|
+
declare function useCentrifugeClaim(): UseCentrifugeClaimResult;
|
|
7205
|
+
|
|
7206
|
+
/** A vault on one chain, as the position endpoints key it. */
|
|
7207
|
+
type CentrifugePositionVault = {
|
|
7208
|
+
chain: EthereumChain;
|
|
7209
|
+
/** Share token symbol of the vault, e.g. `deJTRSY`. */
|
|
7210
|
+
symbol: AssetSymbol;
|
|
7211
|
+
};
|
|
7212
|
+
/**
|
|
7213
|
+
* The state of the position reads.
|
|
7214
|
+
*
|
|
7215
|
+
* `CONTENT` holds every read that has ever answered, kept through later
|
|
7216
|
+
* failures: a flaky tick must not make a claimable position vanish under the
|
|
7217
|
+
* user. A read that has never answered is absent, not zero. `ERROR` is
|
|
7218
|
+
* reserved for the case where nothing answered at all, so a screen has
|
|
7219
|
+
* nothing to show but a retry.
|
|
7220
|
+
*/
|
|
7221
|
+
type LoadCentrifugeVaultPositionsState = {
|
|
7222
|
+
type: 'LOADING';
|
|
7223
|
+
} | {
|
|
7224
|
+
type: 'ERROR';
|
|
7225
|
+
reason: CentrifugeLoadErrorReason;
|
|
7226
|
+
} | {
|
|
7227
|
+
type: 'CONTENT';
|
|
7228
|
+
legs: CentrifugeVaultLeg[];
|
|
7229
|
+
};
|
|
7230
|
+
interface UseCentrifugeVaultPositionsOptions {
|
|
7231
|
+
/** The vaults to read, one per chain the offer runs on. */
|
|
7232
|
+
vaults: CentrifugePositionVault[];
|
|
7233
|
+
/** The wallets to read them for, in display order. */
|
|
7234
|
+
walletAddresses: EvmWalletAddress[];
|
|
7235
|
+
/**
|
|
7236
|
+
* How often to re-read a position that still has something pending.
|
|
7237
|
+
* Defaults to {@link CENTRIFUGE_POLL_INTERVAL_MS}.
|
|
7238
|
+
*/
|
|
7239
|
+
pollIntervalMs?: number;
|
|
7240
|
+
/**
|
|
7241
|
+
* Reads pre-fetched on the server. When provided, the hook opens on them
|
|
7242
|
+
* and skips the first fetch; polling and {@link UseCentrifugeVaultPositionsResult.refetch}
|
|
7243
|
+
* still fetch.
|
|
7244
|
+
*/
|
|
7245
|
+
data?: CentrifugeVaultLeg[];
|
|
7246
|
+
/**
|
|
7247
|
+
* Default `true`. When `false`: no requests, no timers, and an empty
|
|
7248
|
+
* `CONTENT`.
|
|
7249
|
+
*/
|
|
7250
|
+
enabled?: boolean;
|
|
7251
|
+
}
|
|
7252
|
+
interface UseCentrifugeVaultPositionsResult {
|
|
7253
|
+
state: LoadCentrifugeVaultPositionsState;
|
|
7254
|
+
/**
|
|
7255
|
+
* Reads every position again: the retry after an `ERROR`, and what a claim
|
|
7256
|
+
* calls once it mined so the claimed amount leaves the screen.
|
|
7257
|
+
*/
|
|
7258
|
+
refetch: () => void;
|
|
7259
|
+
}
|
|
7260
|
+
/**
|
|
7261
|
+
* Reads, and keeps reading, every wallet's position on every vault, on both
|
|
7262
|
+
* sides of the trade.
|
|
7263
|
+
*
|
|
7264
|
+
* A fill lands on the fund's schedule with no signal, so polling is the only
|
|
7265
|
+
* way a pending position is seen turning claimable. Each read is fetched once
|
|
7266
|
+
* when the inputs change, when {@link UseCentrifugeVaultPositionsResult.refetch}
|
|
7267
|
+
* is called and when the page becomes visible again. Between those, only the
|
|
7268
|
+
* reads with something still pending are polled - a position with nothing
|
|
7269
|
+
* pending cannot change on its own - and only while the page is visible.
|
|
7270
|
+
*
|
|
7271
|
+
* A read that fails keeps its last answer and is logged; one that has never
|
|
7272
|
+
* answered is left out, and retried on the next full fetch rather than on
|
|
7273
|
+
* the timer.
|
|
7274
|
+
*/
|
|
7275
|
+
declare function useCentrifugeVaultPositions(options: UseCentrifugeVaultPositionsOptions): UseCentrifugeVaultPositionsResult;
|
|
7276
|
+
|
|
5863
7277
|
type LoadOfferDetailsReason = 'not-authenticated' | 'generic-error';
|
|
5864
7278
|
type LoadOfferDetailsState = {
|
|
5865
7279
|
type: 'LOADING';
|
|
@@ -6287,6 +7701,116 @@ interface UseConnectWalletModalViewModelResult {
|
|
|
6287
7701
|
*/
|
|
6288
7702
|
declare function useConnectWalletModalViewModel({ isOpen, onClose, offerId, optionId, wallet, onConnected, onRequestConnect, challengeType, statement, }: UseConnectWalletModalViewModelOptions): UseConnectWalletModalViewModelResult;
|
|
6289
7703
|
|
|
7704
|
+
/**
|
|
7705
|
+
* The state of one vault's status poll.
|
|
7706
|
+
*
|
|
7707
|
+
* Stale-preserving: a failed tick with a status in hand keeps it, so a flaky
|
|
7708
|
+
* read never reads as "vault halted". `ERROR` means the status is unknown -
|
|
7709
|
+
* which is not the same as `CONTENT` carrying a blocked orderability, and
|
|
7710
|
+
* callers must not conflate them. A vault that is *known* to be unorderable
|
|
7711
|
+
* may block a request; one that is merely unknown may not.
|
|
7712
|
+
*
|
|
7713
|
+
* `below_minimum` never appears here: it needs an amount, which this
|
|
7714
|
+
* endpoint is never given.
|
|
7715
|
+
*/
|
|
7716
|
+
type LoadCentrifugeVaultStatusState = {
|
|
7717
|
+
type: 'LOADING';
|
|
7718
|
+
} | {
|
|
7719
|
+
type: 'ERROR';
|
|
7720
|
+
reason: CentrifugeLoadErrorReason;
|
|
7721
|
+
} | {
|
|
7722
|
+
type: 'CONTENT';
|
|
7723
|
+
status: CentrifugeVaultStatus;
|
|
7724
|
+
};
|
|
7725
|
+
/** A vault as the status endpoint keys it: one share token on one chain. */
|
|
7726
|
+
type CentrifugeStatusVault = {
|
|
7727
|
+
/** Share token symbol of the vault, e.g. `deJTRSY`. */
|
|
7728
|
+
symbol: AssetSymbol;
|
|
7729
|
+
chain: EthereumChain;
|
|
7730
|
+
};
|
|
7731
|
+
interface UseCentrifugeVaultStatusesOptions {
|
|
7732
|
+
/** The vaults to poll, typically one per chain an offer runs on. */
|
|
7733
|
+
vaults: CentrifugeStatusVault[];
|
|
7734
|
+
/** How often to refresh. Defaults to {@link CENTRIFUGE_POLL_INTERVAL_MS}. */
|
|
7735
|
+
pollIntervalMs?: number;
|
|
7736
|
+
/**
|
|
7737
|
+
* Statuses the caller already holds, typically fetched server-side, each
|
|
7738
|
+
* opening the state of the vault it names so a server-rendered panel needs
|
|
7739
|
+
* no loading pass.
|
|
7740
|
+
*
|
|
7741
|
+
* They seed the first render only: the poll still fetches immediately. A
|
|
7742
|
+
* vault that was orderable a minute ago can be unlinked now, so a seed
|
|
7743
|
+
* that suppressed the first read would be answering "can I act right now"
|
|
7744
|
+
* with whenever the page was rendered.
|
|
7745
|
+
*/
|
|
7746
|
+
data?: CentrifugeVaultStatus[];
|
|
7747
|
+
/** When false, the hook neither fetches nor polls. */
|
|
7748
|
+
enabled: boolean;
|
|
7749
|
+
}
|
|
7750
|
+
interface UseCentrifugeVaultStatusesResult {
|
|
7751
|
+
/** One entry per vault asked for, in the order asked. */
|
|
7752
|
+
statuses: {
|
|
7753
|
+
vault: CentrifugeStatusVault;
|
|
7754
|
+
state: LoadCentrifugeVaultStatusState;
|
|
7755
|
+
}[];
|
|
7756
|
+
}
|
|
7757
|
+
/**
|
|
7758
|
+
* Polls whether each of several Centrifuge vaults can be acted on right now,
|
|
7759
|
+
* independent of any wallet or amount.
|
|
7760
|
+
*
|
|
7761
|
+
* Free to poll - it spends no attestation. Centrifuge announces none of the
|
|
7762
|
+
* changes this reports, so the poll is the only way a screen notices a vault
|
|
7763
|
+
* halting under it. Each vault is read independently on one shared timer, so
|
|
7764
|
+
* one failing chain never holds back another.
|
|
7765
|
+
*
|
|
7766
|
+
* A seeded status opens its vault's state instead of `LOADING` and is
|
|
7767
|
+
* otherwise left to the poll: the first tick fires as it always does, and
|
|
7768
|
+
* only replaces the seed once it has a status of its own.
|
|
7769
|
+
*
|
|
7770
|
+
* Disabled it neither fetches nor holds a timer, and each vault stays on
|
|
7771
|
+
* whatever state it held. That is `LOADING` and not an empty `CONTENT`
|
|
7772
|
+
* because there is no empty vault status - and an invented one would be
|
|
7773
|
+
* worse than none, since `CONTENT` here is what a caller is allowed to block
|
|
7774
|
+
* on.
|
|
7775
|
+
*/
|
|
7776
|
+
declare function useCentrifugeVaultStatuses(options: UseCentrifugeVaultStatusesOptions): UseCentrifugeVaultStatusesResult;
|
|
7777
|
+
|
|
7778
|
+
interface UseCentrifugeVaultStatusOptions {
|
|
7779
|
+
/** Share token symbol of the vault, e.g. `deJTRSY`. */
|
|
7780
|
+
symbol: AssetSymbol;
|
|
7781
|
+
chain: EthereumChain;
|
|
7782
|
+
/** How often to refresh. Defaults to `CENTRIFUGE_POLL_INTERVAL_MS`. */
|
|
7783
|
+
pollIntervalMs?: number;
|
|
7784
|
+
/**
|
|
7785
|
+
* A status the caller already holds, typically fetched server-side, used
|
|
7786
|
+
* as the state the hook opens on so a server-rendered panel needs no
|
|
7787
|
+
* loading pass.
|
|
7788
|
+
*
|
|
7789
|
+
* It seeds the first render only: the poll still fetches immediately. A
|
|
7790
|
+
* vault that was orderable a minute ago can be unlinked now, so a seed
|
|
7791
|
+
* that suppressed the first read would be answering "can I invest right
|
|
7792
|
+
* now" with whenever the page was rendered.
|
|
7793
|
+
*/
|
|
7794
|
+
data?: CentrifugeVaultStatus;
|
|
7795
|
+
/** When false, the hook neither fetches nor polls. */
|
|
7796
|
+
enabled: boolean;
|
|
7797
|
+
}
|
|
7798
|
+
interface UseCentrifugeVaultStatusResult {
|
|
7799
|
+
state: LoadCentrifugeVaultStatusState;
|
|
7800
|
+
}
|
|
7801
|
+
/**
|
|
7802
|
+
* Polls whether a Centrifuge vault can take a request at all right now,
|
|
7803
|
+
* independent of any amount.
|
|
7804
|
+
*
|
|
7805
|
+
* Free to poll - it spends no attestation. Centrifuge announces none of the
|
|
7806
|
+
* changes this reports, so the poll is the only way a checkout notices
|
|
7807
|
+
* mid-order.
|
|
7808
|
+
*
|
|
7809
|
+
* The one-vault case of {@link useCentrifugeVaultStatuses}, which carries the
|
|
7810
|
+
* seeding, stale-preserving and disabled semantics.
|
|
7811
|
+
*/
|
|
7812
|
+
declare function useCentrifugeVaultStatus(options: UseCentrifugeVaultStatusOptions): UseCentrifugeVaultStatusResult;
|
|
7813
|
+
|
|
6290
7814
|
interface UseErc20BalanceOptions {
|
|
6291
7815
|
/**
|
|
6292
7816
|
* The token to read, by contract address.
|
|
@@ -6657,4 +8181,15 @@ interface UseCountdownOptions {
|
|
|
6657
8181
|
*/
|
|
6658
8182
|
declare function useCountdown({ until, tickMs, enabled, }: UseCountdownOptions): number | null;
|
|
6659
8183
|
|
|
6660
|
-
export { type AuthState, type AuthorizeWalletParams, ChecklistStatus, CheckoutAssetUi, type CheckoutConfig, type CheckoutConfirmedWalletUi, CheckoutContainer, type CheckoutContainerProps, type CheckoutCtaUi, type CheckoutEmbeddedWalletUi, type CheckoutNetworkUi, type CheckoutSelectableInputAssetUi, type CheckoutStatusUi, type CheckoutWalletSelection, type CheckoutWalletTypeUi, type CheckoutWalletUi, type ClientAuthConfig, type ClientAuthNamespace, ClientAuthNamespaceImpl, type ClientAuthSession, type ClientCoinListTokenSaleNamespace, ClientCoinListTokenSaleNamespaceImpl, type ClientConfig, type ClientOndoNamespace, ClientOndoNamespaceImpl, type ClientRequirementsNamespace, ClientRequirementsNamespaceImpl, type ClientSuperstateSwapNamespace, ClientSuperstateSwapNamespaceImpl, type ClientSupportNamespace, ClientSupportNamespaceImpl, type CoinListClient, CoinListClientInitializationError, CoinListContext, CoinListContextProvider, type CoinListContextValue, CoinListProvider, type CoinListProviderProps, CoinListSignInButton, CoinListSignInCardContainer, type CoinListSignInCardContainerProps, type CoinListSignInCardUiEvent, type CoinListSignInCardUiState, CoinListSignInCardView, type CoinListSignInCardViewProps, CoinListStyleScope, type CoinListStyleScopeProps, type CoinListTokenSaleCheckoutConfig, type CompleteOAuthFailureReason, ConnectWallet, type ConnectWalletError, type ConnectWalletErrorCode, type ConnectWalletFlowError, type ConnectWalletFlowParams, type ConnectWalletFlowResult, ConnectWalletModalContainer, type ConnectWalletModalContainerProps, type ConnectWalletModalUiEvent, type ConnectWalletModalUiState, ConnectWalletModalView, type ConnectWalletModalViewProps, type ConnectWalletPhase, type ConnectWalletScreenUi, type ConnectWalletSignState, type ConnectWalletState, ConnectedWalletList, type ConnectedWalletListProps, type ConnectedWalletUi, ERC20_BALANCE_POLL_INTERVAL_MS, type Erc20AllowanceError, type Erc20AllowancePhase, type Erc20AllowanceResult, type Erc20ApprovalError, EvmWallet, type ExecuteOndoSwapParams, type ExecuteSwapParams, type ExecuteTokenSaleParams, IdentityVerificationContainer, type IdentityVerificationContainerProps, type IdentityVerificationUiEvent, type IdentityVerificationUiState, IdentityVerificationView, type IdentityVerificationViewProps, KycLevelName, type KycTokenErrorReason, type KycTokenState, type LoadOfferDetailsReason, type LoadOfferDetailsState, type LoadOffersReason, type LoadOffersState, type LoadOndoBuyTransactionState, type LoadOndoPriceState, type LoadOndoSellTransactionState, type LoadOndoTradingStatusState, type LoadOptionAddressesReason, type LoadOptionAddressesState, type LoadParticipationsReason, type LoadParticipationsState, type LoadRequirementsReason, type LoadRequirementsState, type LoadTokenMetadataState, type LoadTokenRegistryState, Logger, type LogoImageUi, OAUTH_CODE_VERIFIER_KEY, OAUTH_STATE_KEY, type OauthClientErrorReason, type OauthClientResult, OfferAssetCard, type OfferAssetCardProps, OfferAssetCardUi, OfferLogoUi, OfferSaleCard, type OfferSaleCardProps, OfferSaleCardUi, OffersAssetGrid, type OffersAssetGridProps, OffersGridContainer, type OffersGridContainerProps, type OffersGridData, type OffersGridUiEvent, type OffersGridUiState, OffersGridView, type OffersGridViewProps, type OndoBuyAmountConfirmed, type OndoBuyAmountStepInput, type OndoBuyAmountUiEvent, type OndoBuyAmountUiState, type OndoBuyAmountValidation, OndoBuyAmountView, type OndoBuyAmountViewProps, OndoBuyCheckoutContainer, type OndoBuyCheckoutContainerProps, type OndoBuyCheckoutUiEvent, type OndoBuyCheckoutUiState, OndoBuyCheckoutView, type OndoBuyCheckoutViewProps, type OndoBuyExecutionResult, OndoBuyOrderConfirmed, type OndoBuyOrderPlaced, type OndoBuyOrderTerms, type OndoBuyPreparationResult, type OndoBuyQuoteStatusUi, type OndoBuyReviewStepInput, type OndoBuyReviewUiEvent, type OndoBuyReviewUiState, OndoBuyReviewView, type OndoBuyReviewViewProps, type OndoBuyStep, type OndoCheckoutConfig, OndoCheckoutError, type OndoCheckoutErrorProps, OndoCheckoutErrorReason, type OndoLoadErrorReason, type OndoOrderConfirmedProps, type OndoOrderConfirmedUiEvent, type OndoOrderConfirmedUiState, type OndoOrderPlaced, type OndoOrderPlacedCore, type OndoSellAmountConfirmed, type OndoSellAmountStepInput, type OndoSellAmountUiEvent, type OndoSellAmountUiState, type OndoSellAmountValidation, OndoSellAmountView, type OndoSellAmountViewProps, type OndoSellAsset, type OndoSellBalanceUi, OndoSellCheckoutContainer, type OndoSellCheckoutContainerProps, type OndoSellCheckoutUiEvent, type OndoSellCheckoutUiState, OndoSellCheckoutView, type OndoSellCheckoutViewProps, type OndoSellExecutionResult, OndoSellOrderConfirmed, type OndoSellOrderConfirmedProps, type OndoSellOrderConfirmedUiEvent, type OndoSellOrderConfirmedUiState, type OndoSellOrderPlaced, type OndoSellOrderTerms, type OndoSellOutcomeUi, type OndoSellPreparationResult, type OndoSellQuoteStatusUi, type OndoSellReviewStepInput, type OndoSellReviewUiEvent, type OndoSellReviewUiState, OndoSellReviewView, type OndoSellReviewViewProps, type OndoSellSourceWalletUi, type OndoSellStep, type OndoSidebarPriceUi, type OndoSidebarUiState, OndoSidebarView, type OndoSidebarViewProps, type OndoSwapExecutionError, type OndoSwapExecutionPhase, type OndoSwapExecutionResult, type OndoSwapPreparationError, type OndoSwapPreparationPhase, type OndoSwapPreparationResult, type OndoWalletSelectStepInput, type OndoWalletSelectUiEvent, type OndoWalletSelectUiState, OndoWalletSelectView, type OndoWalletSelectViewProps, PinoLoggerOptions, type PrepareOndoBuyParams, type PrepareOndoSellParams, type PrepareOndoSwapParamsCore, type RequiredCheckoutConfig, RequirementItem, type RequirementItemProps, RequirementItemUi, RequirementStatus, RequirementVariant, RequirementsChecklistContainer, type RequirementsChecklistContainerProps, type RequirementsChecklistItemUi, type RequirementsChecklistUiEvent, type RequirementsChecklistUiState, RequirementsChecklistView, type RequirementsChecklistViewProps, type RequirementsData, type RequirementsVerificationUi, type SignState, SlippagePicker, type SlippagePickerProps, type SubmitErc20ApprovalResult, type SuperstateAmountConfirmed, type SuperstateAmountStepInput, type SuperstateAmountUiEvent, type SuperstateAmountUiState, type SuperstateAmountValidation, SuperstateAmountView, type SuperstateAmountViewProps, type SuperstateCheckoutConfig, SuperstateOrderConfirmed, type SuperstateOrderConfirmedProps, type SuperstateOrderConfirmedUiEvent, type SuperstateOrderConfirmedUiState, type SuperstateOrderPlaced, type SuperstateReviewStepInput, type SuperstateReviewUiEvent, type SuperstateReviewUiState, SuperstateReviewView, type SuperstateReviewViewProps, type SuperstateSidebarPriceUi, type SuperstateSidebarUiState, SuperstateSidebarView, type SuperstateSidebarViewProps, type SuperstateSlippageOptionUi, type SuperstateSlippageUi, SuperstateSwapCheckoutContainer, type SuperstateSwapCheckoutContainerProps, type SuperstateSwapCheckoutRetryUiEvent, type SuperstateSwapCheckoutUiEvent, type SuperstateSwapCheckoutUiState, SuperstateSwapCheckoutView, type SuperstateSwapCheckoutViewProps, type SuperstateSwapLoadErrorReason, type SuperstateSwapStep, type SuperstateWalletStepInput, type SuperstateWalletUiEvent, type SuperstateWalletUiState, SuperstateWalletView, type SuperstateWalletViewProps, type SwapExecutionError, type SwapExecutionPhase, type SwapExecutionResult, type SwapOutputTokenState, type TaxDocumentAddressParts, type TaxDocumentFieldUi, type TaxDocumentFields, TaxDocumentModalContainer, type TaxDocumentModalContainerProps, type TaxDocumentModalUiEvent, type TaxDocumentModalUiState, TaxDocumentModalView, type TaxDocumentModalViewProps, type TaxDocumentScreenUi, type TaxDocumentState, type TokenSaleExecutionError, type TokenSaleExecutionPhase, type TokenSaleExecutionResult, USDC_ICON_URL, USDT_ICON_URL, type UseCheckoutOfferTokenMetadataOptions, type UseCheckoutOfferTokenMetadataResult, type UseCoinListResult, type UseCoinListSignInCardViewModelOptions, type UseCoinListSignInCardViewModelResult, type UseCompleteOAuthOptions, type UseConnectWalletModalViewModelOptions, type UseConnectWalletModalViewModelResult, type UseConnectWalletOptions, type UseConnectWalletResult, type UseCountdownOptions, type UseErc20BalanceOptions, type UseErc20BalanceResult, type UseErc20TokenBalancesOptions, type UseErc20TokenBalancesResult, type UseIdentityVerificationViewModelOptions, type UseIdentityVerificationViewModelResult, type UseKycTokenResult, type UseOfferDetailsOptions, type UseOfferDetailsResult, type UseOffersGridViewModelOptions, type UseOffersGridViewModelResult, type UseOffersOptions, type UseOffersResult, type UseOndoBuyAmountViewModelOptions, type UseOndoBuyAmountViewModelResult, type UseOndoBuyCheckoutViewModelOptions, type UseOndoBuyCheckoutViewModelResult, type UseOndoBuyReviewViewModelOptions, type UseOndoBuyReviewViewModelResult, type UseOndoBuyTransactionOptions, type UseOndoBuyTransactionResult, type UseOndoPriceOptions, type UseOndoPriceResult, type UseOndoSellAmountViewModelOptions, type UseOndoSellAmountViewModelResult, type UseOndoSellCheckoutViewModelOptions, type UseOndoSellCheckoutViewModelResult, type UseOndoSellReviewViewModelOptions, type UseOndoSellReviewViewModelResult, type UseOndoSellTransactionOptions, type UseOndoSellTransactionResult, type UseOndoSidebarViewModelOptions, type UseOndoSidebarViewModelResult, type UseOndoTradingStatusOptions, type UseOndoTradingStatusResult, type UseOndoWalletSelectViewModelOptions, type UseOndoWalletSelectViewModelResult, type UseOptionAddressesOptions, type UseOptionAddressesResult, type UseParticipationsOptions, type UseParticipationsResult, type UseRequirementsChecklistViewModelOptions, type UseRequirementsChecklistViewModelResult, type UseRequirementsOptions, type UseRequirementsResult, type UseSuperstateAmountViewModelOptions, type UseSuperstateAmountViewModelResult, type UseSuperstateReviewViewModelOptions, type UseSuperstateReviewViewModelResult, type UseSuperstateSidebarViewModelOptions, type UseSuperstateSidebarViewModelResult, type UseSuperstateSwapCheckoutViewModelOptions, type UseSuperstateSwapCheckoutViewModelResult, type UseSuperstateWalletViewModelOptions, type UseSuperstateWalletViewModelResult, type UseSwapOutputTokenOptions, type UseSwapOutputTokenResult, type UseSwapQuoteOptions, type UseSwapQuoteResult, type UseTaxDocumentModalViewModelOptions, type UseTaxDocumentModalViewModelResult, type UseTaxDocumentOptions, type UseTaxDocumentResult, type UseTokenMetadataOptions, type UseTokenMetadataResult, type UseTokenRegistryOptions, type UseTokenRegistryResult, VerificationOverlay, type VerificationOverlayProps, type WalletAuthorizationError, type WalletAuthorizationPhase, type WalletAuthorizationResult, WalletError, type WalletsStatus, authorizeWallet, classifyWalletError, connectExternalWalletFlow, createCoinListClient, defaultCheckoutConfig, ensureErc20Allowance, executeOndoSwap, executeSwap, executeTokenSale, formatCountdown, formatMonthYear, formatSaleCardCountdown, isNotTradable, offerAssetIconUrl, offerIconUrl, offerTokenIdentifier, ondoLoadErrorReason, pinoClientLogger, prepareOndoBuy, prepareOndoSell, quoteIsStale, quoteOverAsks, stablecoinIconUrl, submitErc20Approval, tokenLogoSrcSet, tokenLogoUrl, tokenMetadataOf, useCheckoutOfferTokenMetadata, useCoinList, useCoinListSignInCardViewModel, useCompleteOAuth, useConnectWallet, useConnectWalletModalViewModel, useCountdown, useErc20Balance, useErc20TokenBalances, useIdentityVerificationViewModel, useKycToken, useOfferDetails, useOffers, useOffersGridViewModel, useOndoBuyAmountViewModel, useOndoBuyCheckoutViewModel, useOndoBuyReviewViewModel, useOndoBuyTransaction, useOndoPrice, useOndoSellAmountViewModel, useOndoSellCheckoutViewModel, useOndoSellReviewViewModel, useOndoSellTransaction, useOndoSidebarViewModel, useOndoTradingStatus, useOndoWalletSelectViewModel, useOptionAddresses, useParticipations, useRequirements, useRequirementsChecklistViewModel, useSuperstateAmountViewModel, useSuperstateReviewViewModel, useSuperstateSidebarViewModel, useSuperstateSwapCheckoutViewModel, useSuperstateWalletViewModel, useSwapOutputToken, useSwapQuote, useTaxDocument, useTaxDocumentModalViewModel, useTokenMetadata, useTokenRegistry, validateAmount, validateSellAmount, validateSuperstateAmount };
|
|
8184
|
+
/**
|
|
8185
|
+
* Whether the page is visible right now: `false` while the tab is in the
|
|
8186
|
+
* background or the window is minimised, per the Page Visibility API.
|
|
8187
|
+
*
|
|
8188
|
+
* For a poll that should stop costing requests nobody is looking at. Reports
|
|
8189
|
+
* `true` during a server render and hydration, so a component renders as it
|
|
8190
|
+
* would on screen and hydrates without a mismatch, then the real visibility
|
|
8191
|
+
* straight after.
|
|
8192
|
+
*/
|
|
8193
|
+
declare function usePageVisible(): boolean;
|
|
8194
|
+
|
|
8195
|
+
export { type AuthState, type AuthorizeWalletParams, type BuyCentrifugeParams, CENTRIFUGE_VAULT_ORDER_REASON_MESSAGES, type CentrifugeBuyAmountConfirmed, type CentrifugeBuyAmountStepInput, type CentrifugeBuyAmountUiEvent, type CentrifugeBuyAmountUiState, type CentrifugeBuyAmountValidation, CentrifugeBuyAmountView, type CentrifugeBuyAmountViewProps, CentrifugeBuyCheckoutContainer, type CentrifugeBuyCheckoutContainerProps, type CentrifugeBuyCheckoutUiEvent, type CentrifugeBuyCheckoutUiState, CentrifugeBuyCheckoutView, type CentrifugeBuyCheckoutViewProps, type CentrifugeBuyError, CentrifugeBuyOrderPlaced, type CentrifugeBuyOrderPlacedProps, type CentrifugeBuyPhase, type CentrifugeBuyPlacementError, type CentrifugeBuyPlacementPhase, type CentrifugeBuyPlacementResult, type CentrifugeBuyPreparationError, type CentrifugeBuyPreparationPhase, type CentrifugeBuyPreparationResult, type CentrifugeBuyResult, type CentrifugeBuyReviewStepInput, type CentrifugeBuyReviewUiEvent, type CentrifugeBuyReviewUiState, CentrifugeBuyReviewView, type CentrifugeBuyReviewViewProps, type CentrifugeBuyStep, CentrifugeCheckoutError, type CentrifugeCheckoutErrorProps, CentrifugeCheckoutErrorReason, type CentrifugeClaimActionUi, type CentrifugeClaimBlockedReasonUi, type CentrifugeClaimDialogUi, type CentrifugeClaimError, type CentrifugeClaimFailureUi, type CentrifugeClaimParams, type CentrifugeClaimPhase, type CentrifugeClaimProgressUi, type CentrifugeClaimResult, type CentrifugeClaimRowUi, type CentrifugeClaimState, type CentrifugeClaimStepUi, type CentrifugeLoadErrorReason, type CentrifugeOrderPlaced, type CentrifugeOrderPlacedUiEvent, type CentrifugeOrderPlacedUiState, type CentrifugePositionVault, type CentrifugeSidebarMinimumUi, type CentrifugeSidebarUiState, CentrifugeSidebarView, type CentrifugeSidebarViewProps, type CentrifugeStatusVault, type CentrifugeVaultCheckoutConfig, type CentrifugeVaultClaimConfig, CentrifugeVaultClaimContainer, type CentrifugeVaultClaimContainerProps, CentrifugeVaultClaimDialog, type CentrifugeVaultClaimDialogProps, CentrifugeVaultClaimRow, type CentrifugeVaultClaimRowProps, type CentrifugeVaultClaimUiEvent, type CentrifugeVaultClaimUiState, CentrifugeVaultClaimView, type CentrifugeVaultClaimViewProps, type CentrifugeVaultClaimed, type CentrifugeWalletSelectStepInput, type CentrifugeWalletSelectUiEvent, type CentrifugeWalletSelectUiState, CentrifugeWalletSelectView, type CentrifugeWalletSelectViewProps, ChecklistStatus, CheckoutAssetUi, type CheckoutConfig, type CheckoutConfirmedWalletUi, CheckoutContainer, type CheckoutContainerProps, type CheckoutCtaUi, type CheckoutEmbeddedWalletUi, type CheckoutNetworkUi, type CheckoutSelectableInputAssetUi, type CheckoutStatusUi, type CheckoutWalletSelection, type CheckoutWalletTypeUi, type CheckoutWalletUi, type ClaimCentrifugeVaultParams, type ClaimConfig, ClaimContainer, type ClaimContainerProps, type ClaimExternalWalletUi, type ClientAuthConfig, type ClientAuthNamespace, ClientAuthNamespaceImpl, type ClientAuthSession, type ClientCentrifugeNamespace, ClientCentrifugeNamespaceImpl, type ClientCoinListTokenSaleNamespace, ClientCoinListTokenSaleNamespaceImpl, type ClientConfig, type ClientOndoNamespace, ClientOndoNamespaceImpl, type ClientRequirementsNamespace, ClientRequirementsNamespaceImpl, type ClientSuperstateSwapNamespace, ClientSuperstateSwapNamespaceImpl, type ClientSupportNamespace, ClientSupportNamespaceImpl, type CoinListClient, CoinListClientInitializationError, CoinListContext, CoinListContextProvider, type CoinListContextValue, CoinListProvider, type CoinListProviderProps, CoinListSignInButton, CoinListSignInCardContainer, type CoinListSignInCardContainerProps, type CoinListSignInCardUiEvent, type CoinListSignInCardUiState, CoinListSignInCardView, type CoinListSignInCardViewProps, CoinListStyleScope, type CoinListStyleScopeProps, type CoinListTokenSaleCheckoutConfig, type CompleteOAuthFailureReason, ConnectWallet, type ConnectWalletError, type ConnectWalletErrorCode, type ConnectWalletFlowError, type ConnectWalletFlowParams, type ConnectWalletFlowResult, ConnectWalletModalContainer, type ConnectWalletModalContainerProps, type ConnectWalletModalUiEvent, type ConnectWalletModalUiState, ConnectWalletModalView, type ConnectWalletModalViewProps, type ConnectWalletPhase, type ConnectWalletScreenUi, type ConnectWalletSignState, type ConnectWalletState, ConnectedWalletList, type ConnectedWalletListProps, type ConnectedWalletUi, ERC20_BALANCE_POLL_INTERVAL_MS, type Erc20AllowanceError, type Erc20AllowancePhase, type Erc20AllowanceResult, type Erc20ApprovalError, EvmWallet, type ExecuteOndoSwapParams, type ExecuteSwapParams, type ExecuteTokenSaleParams, type ExternalWalletRequestUi, IdentityVerificationContainer, type IdentityVerificationContainerProps, type IdentityVerificationUiEvent, type IdentityVerificationUiState, IdentityVerificationView, type IdentityVerificationViewProps, KycLevelName, type KycTokenErrorReason, type KycTokenState, type LoadCentrifugeBuyTransactionState, type LoadCentrifugeVaultPositionsState, type LoadCentrifugeVaultStatusState, type LoadOfferDetailsReason, type LoadOfferDetailsState, type LoadOffersReason, type LoadOffersState, type LoadOndoBuyTransactionState, type LoadOndoPriceState, type LoadOndoSellTransactionState, type LoadOndoTradingStatusState, type LoadOptionAddressesReason, type LoadOptionAddressesState, type LoadParticipationsReason, type LoadParticipationsState, type LoadRequirementsReason, type LoadRequirementsState, type LoadTokenMetadataState, type LoadTokenRegistryState, Logger, type LogoImageUi, OAUTH_CODE_VERIFIER_KEY, OAUTH_STATE_KEY, type OauthClientErrorReason, type OauthClientResult, OfferAssetCard, type OfferAssetCardProps, OfferAssetCardUi, OfferLogoUi, OfferSaleCard, type OfferSaleCardProps, OfferSaleCardUi, OffersAssetGrid, type OffersAssetGridProps, OffersGridContainer, type OffersGridContainerProps, type OffersGridData, type OffersGridUiEvent, type OffersGridUiState, OffersGridView, type OffersGridViewProps, type OndoBuyAmountConfirmed, type OndoBuyAmountStepInput, type OndoBuyAmountUiEvent, type OndoBuyAmountUiState, type OndoBuyAmountValidation, OndoBuyAmountView, type OndoBuyAmountViewProps, OndoBuyCheckoutContainer, type OndoBuyCheckoutContainerProps, type OndoBuyCheckoutUiEvent, type OndoBuyCheckoutUiState, OndoBuyCheckoutView, type OndoBuyCheckoutViewProps, type OndoBuyExecutionResult, OndoBuyOrderConfirmed, type OndoBuyOrderPlaced, type OndoBuyOrderTerms, type OndoBuyPreparationResult, type OndoBuyQuoteStatusUi, type OndoBuyReviewStepInput, type OndoBuyReviewUiEvent, type OndoBuyReviewUiState, OndoBuyReviewView, type OndoBuyReviewViewProps, type OndoBuyStep, type OndoCheckoutConfig, OndoCheckoutError, type OndoCheckoutErrorProps, OndoCheckoutErrorReason, type OndoLoadErrorReason, type OndoOrderConfirmedProps, type OndoOrderConfirmedUiEvent, type OndoOrderConfirmedUiState, type OndoOrderPlaced, type OndoOrderPlacedCore, type OndoSellAmountConfirmed, type OndoSellAmountStepInput, type OndoSellAmountUiEvent, type OndoSellAmountUiState, type OndoSellAmountValidation, OndoSellAmountView, type OndoSellAmountViewProps, type OndoSellAsset, type OndoSellBalanceUi, OndoSellCheckoutContainer, type OndoSellCheckoutContainerProps, type OndoSellCheckoutUiEvent, type OndoSellCheckoutUiState, OndoSellCheckoutView, type OndoSellCheckoutViewProps, type OndoSellExecutionResult, OndoSellOrderConfirmed, type OndoSellOrderConfirmedProps, type OndoSellOrderConfirmedUiEvent, type OndoSellOrderConfirmedUiState, type OndoSellOrderPlaced, type OndoSellOrderTerms, type OndoSellOutcomeUi, type OndoSellPreparationResult, type OndoSellQuoteStatusUi, type OndoSellReviewStepInput, type OndoSellReviewUiEvent, type OndoSellReviewUiState, OndoSellReviewView, type OndoSellReviewViewProps, type OndoSellSourceWalletUi, type OndoSellStep, type OndoSidebarPriceUi, type OndoSidebarUiState, OndoSidebarView, type OndoSidebarViewProps, type OndoSwapExecutionError, type OndoSwapExecutionPhase, type OndoSwapExecutionResult, type OndoSwapPreparationError, type OndoSwapPreparationPhase, type OndoSwapPreparationResult, type OndoWalletSelectStepInput, type OndoWalletSelectUiEvent, type OndoWalletSelectUiState, OndoWalletSelectView, type OndoWalletSelectViewProps, PinoLoggerOptions, type PlaceCentrifugeRequestParams, type PrepareCentrifugeBuyParams, type PrepareOndoBuyParams, type PrepareOndoSellParams, type PrepareOndoSwapParamsCore, type RequiredCheckoutConfig, RequirementItem, type RequirementItemProps, RequirementItemUi, RequirementStatus, RequirementVariant, RequirementsChecklistContainer, type RequirementsChecklistContainerProps, type RequirementsChecklistItemUi, type RequirementsChecklistUiEvent, type RequirementsChecklistUiState, RequirementsChecklistView, type RequirementsChecklistViewProps, type RequirementsData, type RequirementsVerificationUi, type SignState, SlippagePicker, type SlippagePickerProps, type SubmitErc20ApprovalResult, type SuperstateAmountConfirmed, type SuperstateAmountStepInput, type SuperstateAmountUiEvent, type SuperstateAmountUiState, type SuperstateAmountValidation, SuperstateAmountView, type SuperstateAmountViewProps, type SuperstateCheckoutConfig, SuperstateOrderConfirmed, type SuperstateOrderConfirmedProps, type SuperstateOrderConfirmedUiEvent, type SuperstateOrderConfirmedUiState, type SuperstateOrderPlaced, type SuperstateReviewStepInput, type SuperstateReviewUiEvent, type SuperstateReviewUiState, SuperstateReviewView, type SuperstateReviewViewProps, type SuperstateSidebarPriceUi, type SuperstateSidebarUiState, SuperstateSidebarView, type SuperstateSidebarViewProps, type SuperstateSlippageOptionUi, type SuperstateSlippageUi, SuperstateSwapCheckoutContainer, type SuperstateSwapCheckoutContainerProps, type SuperstateSwapCheckoutRetryUiEvent, type SuperstateSwapCheckoutUiEvent, type SuperstateSwapCheckoutUiState, SuperstateSwapCheckoutView, type SuperstateSwapCheckoutViewProps, type SuperstateSwapLoadErrorReason, type SuperstateSwapStep, type SuperstateWalletStepInput, type SuperstateWalletUiEvent, type SuperstateWalletUiState, SuperstateWalletView, type SuperstateWalletViewProps, type SwapExecutionError, type SwapExecutionPhase, type SwapExecutionResult, type SwapOutputTokenState, type TaxDocumentAddressParts, type TaxDocumentFieldUi, type TaxDocumentFields, TaxDocumentModalContainer, type TaxDocumentModalContainerProps, type TaxDocumentModalUiEvent, type TaxDocumentModalUiState, TaxDocumentModalView, type TaxDocumentModalViewProps, type TaxDocumentScreenUi, type TaxDocumentState, type TokenSaleExecutionError, type TokenSaleExecutionPhase, type TokenSaleExecutionResult, USDC_ICON_URL, USDT_ICON_URL, type UseCentrifugeBuyAmountViewModelOptions, type UseCentrifugeBuyAmountViewModelResult, type UseCentrifugeBuyCheckoutViewModelOptions, type UseCentrifugeBuyCheckoutViewModelResult, type UseCentrifugeBuyReviewViewModelOptions, type UseCentrifugeBuyReviewViewModelResult, type UseCentrifugeBuyTransactionOptions, type UseCentrifugeBuyTransactionResult, type UseCentrifugeClaimResult, type UseCentrifugeSidebarViewModelOptions, type UseCentrifugeSidebarViewModelResult, type UseCentrifugeVaultClaimViewModelOptions, type UseCentrifugeVaultClaimViewModelResult, type UseCentrifugeVaultPositionsOptions, type UseCentrifugeVaultPositionsResult, type UseCentrifugeVaultStatusOptions, type UseCentrifugeVaultStatusResult, type UseCentrifugeVaultStatusesOptions, type UseCentrifugeVaultStatusesResult, type UseCentrifugeWalletSelectViewModelOptions, type UseCentrifugeWalletSelectViewModelResult, type UseCheckoutOfferTokenMetadataOptions, type UseCheckoutOfferTokenMetadataResult, type UseCoinListResult, type UseCoinListSignInCardViewModelOptions, type UseCoinListSignInCardViewModelResult, type UseCompleteOAuthOptions, type UseConnectWalletModalViewModelOptions, type UseConnectWalletModalViewModelResult, type UseConnectWalletOptions, type UseConnectWalletResult, type UseCountdownOptions, type UseErc20BalanceOptions, type UseErc20BalanceResult, type UseErc20TokenBalancesOptions, type UseErc20TokenBalancesResult, type UseIdentityVerificationViewModelOptions, type UseIdentityVerificationViewModelResult, type UseKycTokenResult, type UseOfferDetailsOptions, type UseOfferDetailsResult, type UseOffersGridViewModelOptions, type UseOffersGridViewModelResult, type UseOffersOptions, type UseOffersResult, type UseOndoBuyAmountViewModelOptions, type UseOndoBuyAmountViewModelResult, type UseOndoBuyCheckoutViewModelOptions, type UseOndoBuyCheckoutViewModelResult, type UseOndoBuyReviewViewModelOptions, type UseOndoBuyReviewViewModelResult, type UseOndoBuyTransactionOptions, type UseOndoBuyTransactionResult, type UseOndoPriceOptions, type UseOndoPriceResult, type UseOndoSellAmountViewModelOptions, type UseOndoSellAmountViewModelResult, type UseOndoSellCheckoutViewModelOptions, type UseOndoSellCheckoutViewModelResult, type UseOndoSellReviewViewModelOptions, type UseOndoSellReviewViewModelResult, type UseOndoSellTransactionOptions, type UseOndoSellTransactionResult, type UseOndoSidebarViewModelOptions, type UseOndoSidebarViewModelResult, type UseOndoTradingStatusOptions, type UseOndoTradingStatusResult, type UseOndoWalletSelectViewModelOptions, type UseOndoWalletSelectViewModelResult, type UseOptionAddressesOptions, type UseOptionAddressesResult, type UseParticipationsOptions, type UseParticipationsResult, type UseRequirementsChecklistViewModelOptions, type UseRequirementsChecklistViewModelResult, type UseRequirementsOptions, type UseRequirementsResult, type UseSuperstateAmountViewModelOptions, type UseSuperstateAmountViewModelResult, type UseSuperstateReviewViewModelOptions, type UseSuperstateReviewViewModelResult, type UseSuperstateSidebarViewModelOptions, type UseSuperstateSidebarViewModelResult, type UseSuperstateSwapCheckoutViewModelOptions, type UseSuperstateSwapCheckoutViewModelResult, type UseSuperstateWalletViewModelOptions, type UseSuperstateWalletViewModelResult, type UseSwapOutputTokenOptions, type UseSwapOutputTokenResult, type UseSwapQuoteOptions, type UseSwapQuoteResult, type UseTaxDocumentModalViewModelOptions, type UseTaxDocumentModalViewModelResult, type UseTaxDocumentOptions, type UseTaxDocumentResult, type UseTokenMetadataOptions, type UseTokenMetadataResult, type UseTokenRegistryOptions, type UseTokenRegistryResult, VerificationOverlay, type VerificationOverlayProps, type WalletAuthorizationError, type WalletAuthorizationPhase, type WalletAuthorizationResult, WalletError, WalletLabelResolver, WalletSelection, type WalletsStatus, authorizeWallet, buyCentrifuge, centrifugeLoadErrorReason, centrifugeVaultOrderReasonMessage, centrifugeVaultOrderingMessage, claimCentrifugeVault, classifyWalletError, connectExternalWalletFlow, createCoinListClient, defaultCheckoutConfig, ensureErc20Allowance, executeOndoSwap, executeSwap, executeTokenSale, formatCountdown, formatMonthYear, formatSaleCardCountdown, isNotTradable, offerAssetIconUrl, offerIconUrl, offerTokenIdentifier, ondoLoadErrorReason, pinoClientLogger, placeCentrifugeRequest, prepareCentrifugeBuy, prepareOndoBuy, prepareOndoSell, primaryCentrifugeVaultOrderReason, quoteIsStale, quoteOverAsks, stablecoinIconUrl, submitErc20Approval, toInputAssetUi, tokenLogoSrcSet, tokenLogoUrl, tokenMetadataOf, useCentrifugeBuyAmountViewModel, useCentrifugeBuyCheckoutViewModel, useCentrifugeBuyReviewViewModel, useCentrifugeBuyTransaction, useCentrifugeClaim, useCentrifugeSidebarViewModel, useCentrifugeVaultClaimViewModel, useCentrifugeVaultPositions, useCentrifugeVaultStatus, useCentrifugeVaultStatuses, useCentrifugeWalletSelectViewModel, useCheckoutOfferTokenMetadata, useCoinList, useCoinListSignInCardViewModel, useCompleteOAuth, useConnectWallet, useConnectWalletModalViewModel, useCountdown, useErc20Balance, useErc20TokenBalances, useIdentityVerificationViewModel, useKycToken, useOfferDetails, useOffers, useOffersGridViewModel, useOndoBuyAmountViewModel, useOndoBuyCheckoutViewModel, useOndoBuyReviewViewModel, useOndoBuyTransaction, useOndoPrice, useOndoSellAmountViewModel, useOndoSellCheckoutViewModel, useOndoSellReviewViewModel, useOndoSellTransaction, useOndoSidebarViewModel, useOndoTradingStatus, useOndoWalletSelectViewModel, useOptionAddresses, usePageVisible, useParticipations, useRequirements, useRequirementsChecklistViewModel, useSuperstateAmountViewModel, useSuperstateReviewViewModel, useSuperstateSidebarViewModel, useSuperstateSwapCheckoutViewModel, useSuperstateWalletViewModel, useSwapOutputToken, useSwapQuote, useTaxDocument, useTaxDocumentModalViewModel, useTokenMetadata, useTokenRegistry, validateAmount, validateCentrifugeBuyAmount, validateSellAmount, validateSuperstateAmount };
|