@polyester/sdk 0.20.1 → 0.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +9 -9
  3. package/dist/catalogs/market-data-catalog.d.ts +5 -14
  4. package/dist/catalogs/market-data-catalog.d.ts.map +1 -1
  5. package/dist/catalogs/market-data-catalog.js +1 -11
  6. package/dist/catalogs/market-data-catalog.js.map +1 -1
  7. package/dist/catalogs/snapshot-validation.js +4 -1
  8. package/dist/catalogs/snapshot-validation.js.map +1 -1
  9. package/dist/catalogs/zipper-catalog.d.ts +3 -0
  10. package/dist/catalogs/zipper-catalog.d.ts.map +1 -1
  11. package/dist/catalogs/zipper-catalog.js +2 -9
  12. package/dist/catalogs/zipper-catalog.js.map +1 -1
  13. package/dist/environment.d.ts +2 -2
  14. package/dist/environment.d.ts.map +1 -1
  15. package/dist/environment.js +4 -4
  16. package/dist/environment.js.map +1 -1
  17. package/dist/gen/auth/v1/social_verification_pb.d.ts +12 -9
  18. package/dist/gen/auth/v1/social_verification_pb.d.ts.map +1 -1
  19. package/dist/gen/auth/v1/social_verification_pb.js.map +1 -1
  20. package/dist/gen/marketdata/v1/marketdata_pb.d.ts +20 -1
  21. package/dist/gen/marketdata/v1/marketdata_pb.d.ts.map +1 -1
  22. package/dist/gen/marketdata/v1/marketdata_pb.js +1 -1
  23. package/dist/gen/marketdata/v1/marketdata_pb.js.map +1 -1
  24. package/dist/gen/marketoverview/v1/marketoverview_pb.d.ts +138 -13
  25. package/dist/gen/marketoverview/v1/marketoverview_pb.d.ts.map +1 -1
  26. package/dist/gen/marketoverview/v1/marketoverview_pb.js +23 -6
  27. package/dist/gen/marketoverview/v1/marketoverview_pb.js.map +1 -1
  28. package/dist/index.d.ts +3 -3
  29. package/dist/index.js +2 -2
  30. package/dist/services/candles/candles.schemas.d.ts +19 -10
  31. package/dist/services/candles/candles.schemas.d.ts.map +1 -1
  32. package/dist/services/candles/candles.schemas.js +6 -0
  33. package/dist/services/candles/candles.schemas.js.map +1 -1
  34. package/dist/services/deposit/deposit.schemas.d.ts +1 -1
  35. package/dist/services/deposit/deposit.schemas.js +1 -1
  36. package/dist/services/deposit/deposit.schemas.js.map +1 -1
  37. package/dist/services/fees/fees.schemas.d.ts +1 -1
  38. package/dist/services/fees/fees.schemas.js +1 -1
  39. package/dist/services/fees/fees.schemas.js.map +1 -1
  40. package/dist/services/heatmap/heatmap.schemas.d.ts +9 -9
  41. package/dist/services/internal-transfers/internal-transfers.schemas.d.ts +1 -1
  42. package/dist/services/internal-transfers/internal-transfers.schemas.js +1 -1
  43. package/dist/services/internal-transfers/internal-transfers.schemas.js.map +1 -1
  44. package/dist/services/lifecycle/lifecycle.schemas.d.ts +42 -42
  45. package/dist/services/market-overview/index.d.ts +2 -2
  46. package/dist/services/market-overview/market-overview.codecs.js +2 -2
  47. package/dist/services/market-overview/market-overview.codecs.js.map +1 -1
  48. package/dist/services/market-overview/market-overview.d.ts +7 -1
  49. package/dist/services/market-overview/market-overview.d.ts.map +1 -1
  50. package/dist/services/market-overview/market-overview.js +11 -1
  51. package/dist/services/market-overview/market-overview.js.map +1 -1
  52. package/dist/services/market-overview/market-overview.schemas.d.ts +75 -15
  53. package/dist/services/market-overview/market-overview.schemas.d.ts.map +1 -1
  54. package/dist/services/market-overview/market-overview.schemas.js +30 -7
  55. package/dist/services/market-overview/market-overview.schemas.js.map +1 -1
  56. package/dist/services/market-overview/market-overview.types.d.ts +2 -2
  57. package/dist/services/orders/orders-batch.schemas.d.ts +14 -14
  58. package/dist/services/orders/orders-input.schemas.d.ts +1 -1
  59. package/dist/services/orders/orders-output.schemas.d.ts +12 -12
  60. package/dist/services/social-verification/social-verification.d.ts +1 -1
  61. package/dist/services/social-verification/social-verification.js +1 -1
  62. package/dist/services/social-verification/social-verification.js.map +1 -1
  63. package/dist/services/social-verification/social-verification.schemas.d.ts +17 -11
  64. package/dist/services/social-verification/social-verification.schemas.d.ts.map +1 -1
  65. package/dist/services/social-verification/social-verification.schemas.js +12 -5
  66. package/dist/services/social-verification/social-verification.schemas.js.map +1 -1
  67. package/dist/services/subaccounts/subaccounts.schemas.d.ts +4 -4
  68. package/dist/services/triggers/trigger-input.schemas.d.ts +1 -1
  69. package/dist/services/triggers/triggers-output.schemas.d.ts +16 -16
  70. package/dist/services/triggers/triggers-output.schemas.d.ts.map +1 -1
  71. package/dist/services/triggers/triggers-output.schemas.js +1 -2
  72. package/dist/services/triggers/triggers-output.schemas.js.map +1 -1
  73. package/dist/shared/validation.js.map +1 -1
  74. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # @polyester/sdk
2
2
 
3
+ ## 0.21.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Preserve `polyesterChainId` and pair quantity scales in reactive catalogs. ([#125](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/125))
8
+
9
+ ## 0.21.0
10
+
11
+ ### Minor Changes
12
+
13
+ - fix(social-verification)!: omit `handle` when starting Discord verification; the authenticated bot supplies the identity. Remove `handle` from Discord `start()` inputs. `method` is now provider-specific: Twitter accepts only `"profile"`, Discord accepts `"channel"` or `"dm"`. Omitted `method` uses the provider default: Twitter profile or Discord channel. ([#124](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/124))
14
+
15
+ - feat(market-overview)!: expose `volume24hUsd` and preserve unavailable volumes in list and subscription responses. `volume24hBase` and `volume24hQuote` can now be `undefined` when scaled amounts overflow; `volume24hUsd` is `undefined` when reliable valuation is unavailable. Handle missing values separately from zero (`"0"`). ([#124](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/124))
16
+
17
+ - feat(market-overview)!: replace `orderBy: "volume_24h_quote"` with `"volume_24h_usd"`. Market lists now default to descending canonical USD volume. ([#124](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/124))
18
+
19
+ - Rename `POLYESTER_TESTNET_ENVIRONMENT` to `POLYESTER_DEVNET_ENVIRONMENT`. The bundled preset already targeted Polyester devnet (`api-devnet.polyester.ai`); the export, environment `name`, and chain `name` now match. Import `POLYESTER_DEVNET_ENVIRONMENT` instead. ([#122](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/122))
20
+
21
+ ### Patch Changes
22
+
23
+ - feat(candles): expose exact decimal `quoteVolume` on candle rows and realtime updates, and aligned `quoteVolume` arrays on columnar responses. ([#124](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/124))
24
+
25
+ - feat(market-overview): add `getSpotVolumeHistory()` for pair and total trailing-24h USD volume series as decimal strings. Accept up to 2,000 distinct `symbolIds`; empty or omitted filters select all pairs. The 97 samples overlap at 15-minute intervals and must not be summed as period volume. ([#124](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/124))
26
+
3
27
  ## 0.20.1
4
28
 
5
29
  ### Patch Changes
package/README.md CHANGED
@@ -17,16 +17,16 @@ Polyester accounts are smart accounts, so you bring an owner wallet and the SDK
17
17
  derives the account signer. Nothing gets deployed just to log in.
18
18
 
19
19
  ```ts
20
- import { PolyesterBrowserClient, POLYESTER_TESTNET_ENVIRONMENT } from "@polyester/sdk";
20
+ import { PolyesterBrowserClient, POLYESTER_DEVNET_ENVIRONMENT } from "@polyester/sdk";
21
21
  import { createPolyesterAccountSigner } from "@polyester/sdk/account-signer";
22
22
 
23
23
  const accountSigner = createPolyesterAccountSigner({
24
- environment: POLYESTER_TESTNET_ENVIRONMENT,
24
+ environment: POLYESTER_DEVNET_ENVIRONMENT,
25
25
  owner,
26
26
  });
27
27
 
28
28
  const client = new PolyesterBrowserClient({
29
- environment: POLYESTER_TESTNET_ENVIRONMENT,
29
+ environment: POLYESTER_DEVNET_ENVIRONMENT,
30
30
  accountSigner,
31
31
  });
32
32
 
@@ -46,12 +46,12 @@ incoming request. Useful for SSR loaders and route handlers.
46
46
  ```ts
47
47
  import {
48
48
  createPolyesterServerClientFromRequest,
49
- POLYESTER_TESTNET_ENVIRONMENT,
49
+ POLYESTER_DEVNET_ENVIRONMENT,
50
50
  } from "@polyester/sdk";
51
51
 
52
52
  const client = createPolyesterServerClientFromRequest({
53
53
  request,
54
- environment: POLYESTER_TESTNET_ENVIRONMENT,
54
+ environment: POLYESTER_DEVNET_ENVIRONMENT,
55
55
  });
56
56
 
57
57
  if (client.hasUsableBearerToken) {
@@ -66,12 +66,12 @@ passing the store. For example, with current Next.js versions:
66
66
  import { cookies } from "next/headers";
67
67
  import {
68
68
  createPolyesterServerClientFromCookies,
69
- POLYESTER_TESTNET_ENVIRONMENT,
69
+ POLYESTER_DEVNET_ENVIRONMENT,
70
70
  } from "@polyester/sdk";
71
71
 
72
72
  const client = createPolyesterServerClientFromCookies({
73
73
  cookies: await cookies(),
74
- environment: POLYESTER_TESTNET_ENVIRONMENT,
74
+ environment: POLYESTER_DEVNET_ENVIRONMENT,
75
75
  });
76
76
  ```
77
77
 
@@ -88,10 +88,10 @@ For machine clients, pass an Ed25519 API key provider instead of a cookie
88
88
  session:
89
89
 
90
90
  ```ts
91
- import { PolyesterClient, POLYESTER_TESTNET_ENVIRONMENT } from "@polyester/sdk";
91
+ import { PolyesterClient, POLYESTER_DEVNET_ENVIRONMENT } from "@polyester/sdk";
92
92
 
93
93
  const client = new PolyesterClient({
94
- environment: POLYESTER_TESTNET_ENVIRONMENT,
94
+ environment: POLYESTER_DEVNET_ENVIRONMENT,
95
95
  auth: {
96
96
  kind: "api-key-ed25519",
97
97
  getKeyId: () => process.env.POLYESTER_API_KEY_ID ?? null,
@@ -1,26 +1,17 @@
1
- import { AssetConfig, PairConfig, PairMarketDataConfig, PairStatus, SpotConfig } from "../shared/catalog-config.js";
1
+ import { AssetConfig, PairConfig, PairMarketDataConfig, SpotConfig } from "../shared/catalog-config.js";
2
2
  //#region src/catalogs/market-data-catalog.d.ts
3
3
  /**
4
4
  * Enriched pair config where baseAsset/quoteAsset are full AssetConfig objects
5
5
  * instead of just string identifiers.
6
6
  */
7
- interface EnrichedPairConfig {
8
- symbolId: number;
9
- symbol: string;
7
+ interface EnrichedPairConfig extends Omit<PairConfig, "baseAsset" | "quoteAsset" | "listingAt" | "delistingAt" | "baseQuantityScale" | "quoteQuantityScale"> {
8
+ /** Optional only for snapshots created before quantity scales were retained. */
9
+ baseQuantityScale?: PairConfig["baseQuantityScale"];
10
+ quoteQuantityScale?: PairConfig["quoteQuantityScale"];
10
11
  baseAsset: AssetConfig;
11
12
  quoteAsset: AssetConfig;
12
- tickSize: string;
13
- stepSize: string;
14
- minNotionalQuote: string;
15
- minQtyBase: string;
16
- allowBuyFeeFromBase: boolean;
17
- defaultMarketSlippagePctBuy: number;
18
- defaultMarketSlippagePctSell: number;
19
- maxClientRefDriftPct: number;
20
- marketdata?: PairMarketDataConfig;
21
13
  listingAt: number | null;
22
14
  delistingAt: number | null;
23
- status: PairStatus;
24
15
  }
25
16
  interface MarketCatalogData {
26
17
  readonly assets: readonly AssetConfig[];
@@ -1 +1 @@
1
- {"version":3,"file":"market-data-catalog.d.ts","names":[],"sources":["../../src/catalogs/market-data-catalog.ts"],"mappings":";;;;;;UAciB;EACb;EACA;EACA,WAAW;EACX,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,aAAa;EACb;EACA;EACA,QAAQ;;UAGK;WACJ,iBAAiB;WACjB,gBAAgB;WAChB;;KAGD,oBACN;WAEa,iBAAiB;WACjB,iBAAiB,aAAa;WAC9B"}
1
+ {"version":3,"file":"market-data-catalog.d.ts","names":[],"sources":["../../src/catalogs/market-data-catalog.ts"],"mappings":";;;;;;UAQiB,2BAA2B,KACxC;;EASA,oBAAoB;EACpB,qBAAqB;EACrB,WAAW;EACX,YAAY;EACZ;EACA;;UAGa;WACJ,iBAAiB;WACjB,gBAAgB;WAChB;;KAGD,oBACN;WAEa,iBAAiB;WACjB,iBAAiB,aAAa;WAC9B"}
@@ -14,19 +14,9 @@ function enrichMarketPairs(pairs, assets) {
14
14
  const quoteAsset = assetBySymbol.get(pair.quoteAsset);
15
15
  if (!baseAsset || !quoteAsset) throw new Error(`[catalog] market pair ${pair.symbol} references unknown asset: base=${pair.baseAsset}, quote=${pair.quoteAsset}`);
16
16
  enrichedPairs.push({
17
- symbolId: pair.symbolId,
18
- symbol: pair.symbol,
17
+ ...pair,
19
18
  baseAsset,
20
19
  quoteAsset,
21
- tickSize: pair.tickSize,
22
- stepSize: pair.stepSize,
23
- minNotionalQuote: pair.minNotionalQuote,
24
- minQtyBase: pair.minQtyBase,
25
- allowBuyFeeFromBase: pair.allowBuyFeeFromBase,
26
- defaultMarketSlippagePctBuy: pair.defaultMarketSlippagePctBuy,
27
- defaultMarketSlippagePctSell: pair.defaultMarketSlippagePctSell,
28
- maxClientRefDriftPct: pair.maxClientRefDriftPct,
29
- marketdata: pair.marketdata,
30
20
  listingAt: pair.listingAt ?? null,
31
21
  delistingAt: pair.delistingAt ?? null,
32
22
  status: pair.status
@@ -1 +1 @@
1
- {"version":3,"file":"market-data-catalog.js","names":[],"sources":["../../src/catalogs/market-data-catalog.ts"],"sourcesContent":["import type {\n AssetConfig,\n PairConfig,\n PairMarketDataConfig,\n PairStatus,\n SpotConfig,\n} from \"../shared/catalog-config.js\";\n\nexport type { PairMarketDataConfig } from \"../shared/catalog-config.js\";\n\n/**\n * Enriched pair config where baseAsset/quoteAsset are full AssetConfig objects\n * instead of just string identifiers.\n */\nexport interface EnrichedPairConfig {\n symbolId: number;\n symbol: string;\n baseAsset: AssetConfig;\n quoteAsset: AssetConfig;\n tickSize: string;\n stepSize: string;\n minNotionalQuote: string;\n minQtyBase: string;\n allowBuyFeeFromBase: boolean;\n defaultMarketSlippagePctBuy: number;\n defaultMarketSlippagePctSell: number;\n maxClientRefDriftPct: number;\n marketdata?: PairMarketDataConfig;\n listingAt: number | null;\n delistingAt: number | null;\n status: PairStatus;\n}\n\nexport interface MarketCatalogData {\n readonly assets: readonly AssetConfig[];\n readonly pairs: readonly EnrichedPairConfig[];\n readonly tsSec?: number;\n}\n\nexport type MarketCatalogSeed =\n | SpotConfig\n | {\n readonly assets: readonly AssetConfig[];\n readonly pairs: readonly (PairConfig | EnrichedPairConfig)[];\n readonly tsSec?: number;\n };\n\nfunction isEnrichedPair(pair: PairConfig | EnrichedPairConfig): pair is EnrichedPairConfig {\n return typeof pair.baseAsset === \"object\" && typeof pair.quoteAsset === \"object\";\n}\n\nexport function enrichMarketPairs(\n pairs: readonly (PairConfig | EnrichedPairConfig)[],\n assets: readonly AssetConfig[],\n): readonly EnrichedPairConfig[] {\n const assetBySymbol = new Map(assets.map((asset) => [asset.symbol, asset]));\n const enrichedPairs: EnrichedPairConfig[] = [];\n\n for (const pair of pairs) {\n if (isEnrichedPair(pair)) {\n enrichedPairs.push(pair);\n continue;\n }\n\n const baseAsset = assetBySymbol.get(pair.baseAsset);\n const quoteAsset = assetBySymbol.get(pair.quoteAsset);\n if (!baseAsset || !quoteAsset) {\n throw new Error(\n `[catalog] market pair ${pair.symbol} references unknown asset: base=${pair.baseAsset}, quote=${pair.quoteAsset}`,\n );\n }\n\n enrichedPairs.push({\n symbolId: pair.symbolId,\n symbol: pair.symbol,\n baseAsset,\n quoteAsset,\n tickSize: pair.tickSize,\n stepSize: pair.stepSize,\n minNotionalQuote: pair.minNotionalQuote,\n minQtyBase: pair.minQtyBase,\n allowBuyFeeFromBase: pair.allowBuyFeeFromBase,\n defaultMarketSlippagePctBuy: pair.defaultMarketSlippagePctBuy,\n defaultMarketSlippagePctSell: pair.defaultMarketSlippagePctSell,\n maxClientRefDriftPct: pair.maxClientRefDriftPct,\n marketdata: pair.marketdata,\n listingAt: pair.listingAt ?? null,\n delistingAt: pair.delistingAt ?? null,\n status: pair.status,\n });\n }\n\n return enrichedPairs;\n}\n\nexport function buildMarketCatalogData(seed: MarketCatalogSeed): MarketCatalogData {\n const assets = [...seed.assets];\n const pairs = enrichMarketPairs(seed.pairs, assets);\n return Object.freeze({\n assets: Object.freeze(assets),\n pairs: Object.freeze([...pairs]),\n tsSec: seed.tsSec,\n });\n}\n"],"mappings":";AA+CA,SAAS,eAAe,MAAmE;CACvF,OAAO,OAAO,KAAK,cAAc,YAAY,OAAO,KAAK,eAAe;AAC5E;AAEA,SAAgB,kBACZ,OACA,QAC6B;CAC7B,MAAM,gBAAgB,IAAI,IAAI,OAAO,KAAK,UAAU,CAAC,MAAM,QAAQ,KAAK,CAAC,CAAC;CAC1E,MAAM,gBAAsC,CAAC;CAE7C,KAAK,MAAM,QAAQ,OAAO;EACtB,IAAI,eAAe,IAAI,GAAG;GACtB,cAAc,KAAK,IAAI;GACvB;EACJ;EAEA,MAAM,YAAY,cAAc,IAAI,KAAK,SAAS;EAClD,MAAM,aAAa,cAAc,IAAI,KAAK,UAAU;EACpD,IAAI,CAAC,aAAa,CAAC,YACf,MAAM,IAAI,MACN,yBAAyB,KAAK,OAAO,kCAAkC,KAAK,UAAU,UAAU,KAAK,YACzG;EAGJ,cAAc,KAAK;GACf,UAAU,KAAK;GACf,QAAQ,KAAK;GACb;GACA;GACA,UAAU,KAAK;GACf,UAAU,KAAK;GACf,kBAAkB,KAAK;GACvB,YAAY,KAAK;GACjB,qBAAqB,KAAK;GAC1B,6BAA6B,KAAK;GAClC,8BAA8B,KAAK;GACnC,sBAAsB,KAAK;GAC3B,YAAY,KAAK;GACjB,WAAW,KAAK,aAAa;GAC7B,aAAa,KAAK,eAAe;GACjC,QAAQ,KAAK;EACjB,CAAC;CACL;CAEA,OAAO;AACX;AAEA,SAAgB,uBAAuB,MAA4C;CAC/E,MAAM,SAAS,CAAC,GAAG,KAAK,MAAM;CAC9B,MAAM,QAAQ,kBAAkB,KAAK,OAAO,MAAM;CAClD,OAAO,OAAO,OAAO;EACjB,QAAQ,OAAO,OAAO,MAAM;EAC5B,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,CAAC;EAC/B,OAAO,KAAK;CAChB,CAAC;AACL"}
1
+ {"version":3,"file":"market-data-catalog.js","names":[],"sources":["../../src/catalogs/market-data-catalog.ts"],"sourcesContent":["import type { AssetConfig, PairConfig, SpotConfig } from \"../shared/catalog-config.js\";\n\nexport type { PairMarketDataConfig } from \"../shared/catalog-config.js\";\n\n/**\n * Enriched pair config where baseAsset/quoteAsset are full AssetConfig objects\n * instead of just string identifiers.\n */\nexport interface EnrichedPairConfig extends Omit<\n PairConfig,\n | \"baseAsset\"\n | \"quoteAsset\"\n | \"listingAt\"\n | \"delistingAt\"\n | \"baseQuantityScale\"\n | \"quoteQuantityScale\"\n> {\n /** Optional only for snapshots created before quantity scales were retained. */\n baseQuantityScale?: PairConfig[\"baseQuantityScale\"];\n quoteQuantityScale?: PairConfig[\"quoteQuantityScale\"];\n baseAsset: AssetConfig;\n quoteAsset: AssetConfig;\n listingAt: number | null;\n delistingAt: number | null;\n}\n\nexport interface MarketCatalogData {\n readonly assets: readonly AssetConfig[];\n readonly pairs: readonly EnrichedPairConfig[];\n readonly tsSec?: number;\n}\n\nexport type MarketCatalogSeed =\n | SpotConfig\n | {\n readonly assets: readonly AssetConfig[];\n readonly pairs: readonly (PairConfig | EnrichedPairConfig)[];\n readonly tsSec?: number;\n };\n\nfunction isEnrichedPair(pair: PairConfig | EnrichedPairConfig): pair is EnrichedPairConfig {\n return typeof pair.baseAsset === \"object\" && typeof pair.quoteAsset === \"object\";\n}\n\nexport function enrichMarketPairs(\n pairs: readonly (PairConfig | EnrichedPairConfig)[],\n assets: readonly AssetConfig[],\n): readonly EnrichedPairConfig[] {\n const assetBySymbol = new Map(assets.map((asset) => [asset.symbol, asset]));\n const enrichedPairs: EnrichedPairConfig[] = [];\n\n for (const pair of pairs) {\n if (isEnrichedPair(pair)) {\n enrichedPairs.push(pair);\n continue;\n }\n\n const baseAsset = assetBySymbol.get(pair.baseAsset);\n const quoteAsset = assetBySymbol.get(pair.quoteAsset);\n if (!baseAsset || !quoteAsset) {\n throw new Error(\n `[catalog] market pair ${pair.symbol} references unknown asset: base=${pair.baseAsset}, quote=${pair.quoteAsset}`,\n );\n }\n\n enrichedPairs.push({\n ...pair,\n baseAsset,\n quoteAsset,\n listingAt: pair.listingAt ?? null,\n delistingAt: pair.delistingAt ?? null,\n status: pair.status,\n });\n }\n\n return enrichedPairs;\n}\n\nexport function buildMarketCatalogData(seed: MarketCatalogSeed): MarketCatalogData {\n const assets = [...seed.assets];\n const pairs = enrichMarketPairs(seed.pairs, assets);\n return Object.freeze({\n assets: Object.freeze(assets),\n pairs: Object.freeze([...pairs]),\n tsSec: seed.tsSec,\n });\n}\n"],"mappings":";AAwCA,SAAS,eAAe,MAAmE;CACvF,OAAO,OAAO,KAAK,cAAc,YAAY,OAAO,KAAK,eAAe;AAC5E;AAEA,SAAgB,kBACZ,OACA,QAC6B;CAC7B,MAAM,gBAAgB,IAAI,IAAI,OAAO,KAAK,UAAU,CAAC,MAAM,QAAQ,KAAK,CAAC,CAAC;CAC1E,MAAM,gBAAsC,CAAC;CAE7C,KAAK,MAAM,QAAQ,OAAO;EACtB,IAAI,eAAe,IAAI,GAAG;GACtB,cAAc,KAAK,IAAI;GACvB;EACJ;EAEA,MAAM,YAAY,cAAc,IAAI,KAAK,SAAS;EAClD,MAAM,aAAa,cAAc,IAAI,KAAK,UAAU;EACpD,IAAI,CAAC,aAAa,CAAC,YACf,MAAM,IAAI,MACN,yBAAyB,KAAK,OAAO,kCAAkC,KAAK,UAAU,UAAU,KAAK,YACzG;EAGJ,cAAc,KAAK;GACf,GAAG;GACH;GACA;GACA,WAAW,KAAK,aAAa;GAC7B,aAAa,KAAK,eAAe;GACjC,QAAQ,KAAK;EACjB,CAAC;CACL;CAEA,OAAO;AACX;AAEA,SAAgB,uBAAuB,MAA4C;CAC/E,MAAM,SAAS,CAAC,GAAG,KAAK,MAAM;CAC9B,MAAM,QAAQ,kBAAkB,KAAK,OAAO,MAAM;CAClD,OAAO,OAAO,OAAO;EACjB,QAAQ,OAAO,OAAO,MAAM;EAC5B,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,CAAC;EAC/B,OAAO,KAAK;CAChB,CAAC;AACL"}
@@ -25,6 +25,8 @@ const EnrichedPairConfigSchema = v.object({
25
25
  defaultMarketSlippagePctBuy: FiniteNumberSchema,
26
26
  defaultMarketSlippagePctSell: FiniteNumberSchema,
27
27
  maxClientRefDriftPct: FiniteNumberSchema,
28
+ baseQuantityScale: v.optional(IntegerSchema),
29
+ quoteQuantityScale: v.optional(IntegerSchema),
28
30
  marketdata: v.optional(PairMarketDataConfigSchema),
29
31
  listingAt: v.nullable(FiniteNumberSchema),
30
32
  delistingAt: v.nullable(FiniteNumberSchema),
@@ -90,6 +92,7 @@ const CatalogSnapshotShapeSchema = v.object({
90
92
  chains: v.array(ZipperChainConfigSchema),
91
93
  assets: v.array(ZipperEnrichedAssetConfigSchema),
92
94
  contracts: v.array(ZipperChainContractConfigSchema),
95
+ polyesterChainId: v.optional(IntegerSchema),
93
96
  tsMs: v.optional(FiniteNumberSchema)
94
97
  })
95
98
  });
@@ -127,6 +130,6 @@ function parseZippedAssetSupplyCatalogUpdates(value) {
127
130
  return result.output;
128
131
  }
129
132
  //#endregion
130
- export { parseCatalogSnapshot, parseZippedAssetSupplyCatalogUpdates };
133
+ export { CatalogSnapshotShapeSchema, parseCatalogSnapshot, parseZippedAssetSupplyCatalogUpdates };
131
134
 
132
135
  //# sourceMappingURL=snapshot-validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot-validation.js","names":[],"sources":["../../src/catalogs/snapshot-validation.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport { ValidationError } from \"../shared/errors.js\";\nimport { PAIR_STATUSES } from \"../shared/catalog-config.js\";\nimport type { CatalogSnapshot } from \"./types.js\";\nimport type { ZippedAssetSupplyCatalogUpdate } from \"./zipper-supply.js\";\n\nconst FiniteNumberSchema = v.pipe(v.number(), v.finite());\nconst IntegerSchema = v.pipe(FiniteNumberSchema, v.safeInteger());\n\nconst AssetConfigSchema = v.object({\n symbol: v.string(),\n ledgerId: IntegerSchema,\n name: v.string(),\n quantityDisplayDecimals: IntegerSchema,\n quantityScale: IntegerSchema,\n});\n\nconst PairMarketDataConfigSchema = v.object({\n orderbookPriceBuckets: v.array(FiniteNumberSchema),\n});\n\nconst EnrichedPairConfigSchema = v.object({\n symbolId: IntegerSchema,\n symbol: v.string(),\n baseAsset: AssetConfigSchema,\n quoteAsset: AssetConfigSchema,\n tickSize: v.string(),\n stepSize: v.string(),\n minNotionalQuote: v.string(),\n minQtyBase: v.string(),\n allowBuyFeeFromBase: v.boolean(),\n defaultMarketSlippagePctBuy: FiniteNumberSchema,\n defaultMarketSlippagePctSell: FiniteNumberSchema,\n maxClientRefDriftPct: FiniteNumberSchema,\n marketdata: v.optional(PairMarketDataConfigSchema),\n listingAt: v.nullable(FiniteNumberSchema),\n delistingAt: v.nullable(FiniteNumberSchema),\n status: v.picklist([...PAIR_STATUSES, \"unknown\"]),\n});\n\nconst ZipperChainConfigSchema = v.object({\n chainId: IntegerSchema,\n code: v.string(),\n name: v.string(),\n nativeChainId: v.string(),\n nativeCurrencySymbol: v.string(),\n explorerUrl: v.string(),\n icon: v.string(),\n requiredConfirmations: IntegerSchema,\n confirmationTimeSeconds: IntegerSchema,\n isCaseSensitive: v.boolean(),\n minAddressLength: IntegerSchema,\n maxAddressLength: IntegerSchema,\n});\n\nconst ZipperTokenConfigSchema = v.object({\n address: v.string(),\n decimals: IntegerSchema,\n});\n\nconst ZipperEnrichedAssetChainSchema = v.object({\n ...ZipperChainConfigSchema.entries,\n zippedAssetId: IntegerSchema,\n isNativeAsset: v.boolean(),\n networkFee: v.optional(v.string()),\n networkFeeTsSec: v.optional(FiniteNumberSchema),\n depositMinAmount: v.optional(v.string()),\n withdrawMinAmount: v.optional(v.string()),\n supply: v.optional(v.string()),\n sourceToken: ZipperTokenConfigSchema,\n zToken: ZipperTokenConfigSchema,\n});\n\nconst ZipperEnrichedAssetConfigSchema = v.object({\n asset: v.string(),\n ledgerId: IntegerSchema,\n name: v.string(),\n icon: v.string(),\n quantityScale: IntegerSchema,\n quantityDisplayDecimals: IntegerSchema,\n uAssetId: v.string(),\n chains: v.array(ZipperEnrichedAssetChainSchema),\n});\n\nconst ZipperChainContractConfigSchema = v.object({\n name: v.string(),\n address: v.string(),\n type: v.string(),\n description: v.string(),\n version: IntegerSchema,\n});\n\nconst CatalogSnapshotShapeSchema = v.object({\n source: v.picklist([\"api\", \"snapshot\"]),\n tsMs: FiniteNumberSchema,\n version: IntegerSchema,\n market: v.object({\n assets: v.array(AssetConfigSchema),\n pairs: v.array(EnrichedPairConfigSchema),\n tsSec: v.optional(FiniteNumberSchema),\n }),\n zipper: v.object({\n chains: v.array(ZipperChainConfigSchema),\n assets: v.array(ZipperEnrichedAssetConfigSchema),\n contracts: v.array(ZipperChainContractConfigSchema),\n tsMs: v.optional(FiniteNumberSchema),\n }),\n});\n\nconst ZippedAssetSupplyCatalogUpdatesSchema = v.array(\n v.object({\n zippedAssetId: IntegerSchema,\n supply: v.string(),\n }),\n);\n\nconst parsedSnapshots = new WeakMap<object, CatalogSnapshot>();\n\nfunction hasValidRelationships(\n snapshot: v.InferOutput<typeof CatalogSnapshotShapeSchema>,\n): boolean {\n const assetSymbols = new Set(snapshot.market.assets.map((asset) => asset.symbol));\n if (\n snapshot.market.pairs.some(\n (pair) =>\n !assetSymbols.has(pair.baseAsset.symbol) ||\n !assetSymbols.has(pair.quoteAsset.symbol),\n )\n ) {\n return false;\n }\n\n const chainIds = new Set(snapshot.zipper.chains.map((chain) => chain.chainId));\n return snapshot.zipper.assets.every((asset) =>\n asset.chains.every((chain) => chainIds.has(chain.chainId)),\n );\n}\n\nconst CatalogSnapshotSchema = v.custom<CatalogSnapshot>((value) => {\n const result = v.safeParse(CatalogSnapshotShapeSchema, value);\n return result.success && hasValidRelationships(result.output);\n});\n\n/** Parses and caches untrusted SSR or JavaScript input as a catalog snapshot. */\nexport function parseCatalogSnapshot(value: unknown): CatalogSnapshot {\n if (typeof value !== \"object\" || value === null) {\n throw new ValidationError(\"Catalog snapshot is malformed.\");\n }\n\n const cached = parsedSnapshots.get(value);\n if (cached) return cached;\n\n const result = v.safeParse(CatalogSnapshotSchema, value);\n if (!result.success) {\n throw new ValidationError(\"Catalog snapshot is malformed.\");\n }\n\n const snapshot: CatalogSnapshot = result.output;\n parsedSnapshots.set(value, snapshot);\n parsedSnapshots.set(snapshot, snapshot);\n return snapshot;\n}\n\n/** Parses supply updates before they can advance a snapshot's version or timestamp. */\nexport function parseZippedAssetSupplyCatalogUpdates(\n value: unknown,\n): readonly ZippedAssetSupplyCatalogUpdate[] {\n const result = v.safeParse(ZippedAssetSupplyCatalogUpdatesSchema, value);\n if (!result.success) {\n throw new ValidationError(\"Zipper catalog supply updates are malformed.\");\n }\n return result.output;\n}\n"],"mappings":";;;;AAMA,MAAM,qBAAqB,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC;AACxD,MAAM,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,YAAY,CAAC;AAEhE,MAAM,oBAAoB,EAAE,OAAO;CAC/B,QAAQ,EAAE,OAAO;CACjB,UAAU;CACV,MAAM,EAAE,OAAO;CACf,yBAAyB;CACzB,eAAe;AACnB,CAAC;AAED,MAAM,6BAA6B,EAAE,OAAO,EACxC,uBAAuB,EAAE,MAAM,kBAAkB,EACrD,CAAC;AAED,MAAM,2BAA2B,EAAE,OAAO;CACtC,UAAU;CACV,QAAQ,EAAE,OAAO;CACjB,WAAW;CACX,YAAY;CACZ,UAAU,EAAE,OAAO;CACnB,UAAU,EAAE,OAAO;CACnB,kBAAkB,EAAE,OAAO;CAC3B,YAAY,EAAE,OAAO;CACrB,qBAAqB,EAAE,QAAQ;CAC/B,6BAA6B;CAC7B,8BAA8B;CAC9B,sBAAsB;CACtB,YAAY,EAAE,SAAS,0BAA0B;CACjD,WAAW,EAAE,SAAS,kBAAkB;CACxC,aAAa,EAAE,SAAS,kBAAkB;CAC1C,QAAQ,EAAE,SAAS,CAAC,GAAG,eAAe,SAAS,CAAC;AACpD,CAAC;AAED,MAAM,0BAA0B,EAAE,OAAO;CACrC,SAAS;CACT,MAAM,EAAE,OAAO;CACf,MAAM,EAAE,OAAO;CACf,eAAe,EAAE,OAAO;CACxB,sBAAsB,EAAE,OAAO;CAC/B,aAAa,EAAE,OAAO;CACtB,MAAM,EAAE,OAAO;CACf,uBAAuB;CACvB,yBAAyB;CACzB,iBAAiB,EAAE,QAAQ;CAC3B,kBAAkB;CAClB,kBAAkB;AACtB,CAAC;AAED,MAAM,0BAA0B,EAAE,OAAO;CACrC,SAAS,EAAE,OAAO;CAClB,UAAU;AACd,CAAC;AAED,MAAM,iCAAiC,EAAE,OAAO;CAC5C,GAAG,wBAAwB;CAC3B,eAAe;CACf,eAAe,EAAE,QAAQ;CACzB,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC;CACjC,iBAAiB,EAAE,SAAS,kBAAkB;CAC9C,kBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC;CACvC,mBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC;CACxC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;CAC7B,aAAa;CACb,QAAQ;AACZ,CAAC;AAED,MAAM,kCAAkC,EAAE,OAAO;CAC7C,OAAO,EAAE,OAAO;CAChB,UAAU;CACV,MAAM,EAAE,OAAO;CACf,MAAM,EAAE,OAAO;CACf,eAAe;CACf,yBAAyB;CACzB,UAAU,EAAE,OAAO;CACnB,QAAQ,EAAE,MAAM,8BAA8B;AAClD,CAAC;AAED,MAAM,kCAAkC,EAAE,OAAO;CAC7C,MAAM,EAAE,OAAO;CACf,SAAS,EAAE,OAAO;CAClB,MAAM,EAAE,OAAO;CACf,aAAa,EAAE,OAAO;CACtB,SAAS;AACb,CAAC;AAED,MAAM,6BAA6B,EAAE,OAAO;CACxC,QAAQ,EAAE,SAAS,CAAC,OAAO,UAAU,CAAC;CACtC,MAAM;CACN,SAAS;CACT,QAAQ,EAAE,OAAO;EACb,QAAQ,EAAE,MAAM,iBAAiB;EACjC,OAAO,EAAE,MAAM,wBAAwB;EACvC,OAAO,EAAE,SAAS,kBAAkB;CACxC,CAAC;CACD,QAAQ,EAAE,OAAO;EACb,QAAQ,EAAE,MAAM,uBAAuB;EACvC,QAAQ,EAAE,MAAM,+BAA+B;EAC/C,WAAW,EAAE,MAAM,+BAA+B;EAClD,MAAM,EAAE,SAAS,kBAAkB;CACvC,CAAC;AACL,CAAC;AAED,MAAM,wCAAwC,EAAE,MAC5C,EAAE,OAAO;CACL,eAAe;CACf,QAAQ,EAAE,OAAO;AACrB,CAAC,CACL;AAEA,MAAM,kCAAkB,IAAI,QAAiC;AAE7D,SAAS,sBACL,UACO;CACP,MAAM,eAAe,IAAI,IAAI,SAAS,OAAO,OAAO,KAAK,UAAU,MAAM,MAAM,CAAC;CAChF,IACI,SAAS,OAAO,MAAM,MACjB,SACG,CAAC,aAAa,IAAI,KAAK,UAAU,MAAM,KACvC,CAAC,aAAa,IAAI,KAAK,WAAW,MAAM,CAChD,GAEA,OAAO;CAGX,MAAM,WAAW,IAAI,IAAI,SAAS,OAAO,OAAO,KAAK,UAAU,MAAM,OAAO,CAAC;CAC7E,OAAO,SAAS,OAAO,OAAO,OAAO,UACjC,MAAM,OAAO,OAAO,UAAU,SAAS,IAAI,MAAM,OAAO,CAAC,CAC7D;AACJ;AAEA,MAAM,wBAAwB,EAAE,QAAyB,UAAU;CAC/D,MAAM,SAAS,EAAE,UAAU,4BAA4B,KAAK;CAC5D,OAAO,OAAO,WAAW,sBAAsB,OAAO,MAAM;AAChE,CAAC;;AAGD,SAAgB,qBAAqB,OAAiC;CAClE,IAAI,OAAO,UAAU,YAAY,UAAU,MACvC,MAAM,IAAI,gBAAgB,gCAAgC;CAG9D,MAAM,SAAS,gBAAgB,IAAI,KAAK;CACxC,IAAI,QAAQ,OAAO;CAEnB,MAAM,SAAS,EAAE,UAAU,uBAAuB,KAAK;CACvD,IAAI,CAAC,OAAO,SACR,MAAM,IAAI,gBAAgB,gCAAgC;CAG9D,MAAM,WAA4B,OAAO;CACzC,gBAAgB,IAAI,OAAO,QAAQ;CACnC,gBAAgB,IAAI,UAAU,QAAQ;CACtC,OAAO;AACX;;AAGA,SAAgB,qCACZ,OACyC;CACzC,MAAM,SAAS,EAAE,UAAU,uCAAuC,KAAK;CACvE,IAAI,CAAC,OAAO,SACR,MAAM,IAAI,gBAAgB,8CAA8C;CAE5E,OAAO,OAAO;AAClB"}
1
+ {"version":3,"file":"snapshot-validation.js","names":[],"sources":["../../src/catalogs/snapshot-validation.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport { ValidationError } from \"../shared/errors.js\";\nimport { PAIR_STATUSES } from \"../shared/catalog-config.js\";\nimport type { CatalogSnapshot } from \"./types.js\";\nimport type { ZippedAssetSupplyCatalogUpdate } from \"./zipper-supply.js\";\n\nconst FiniteNumberSchema = v.pipe(v.number(), v.finite());\nconst IntegerSchema = v.pipe(FiniteNumberSchema, v.safeInteger());\n\nconst AssetConfigSchema = v.object({\n symbol: v.string(),\n ledgerId: IntegerSchema,\n name: v.string(),\n quantityDisplayDecimals: IntegerSchema,\n quantityScale: IntegerSchema,\n});\n\nconst PairMarketDataConfigSchema = v.object({\n orderbookPriceBuckets: v.array(FiniteNumberSchema),\n});\n\nconst EnrichedPairConfigSchema = v.object({\n symbolId: IntegerSchema,\n symbol: v.string(),\n baseAsset: AssetConfigSchema,\n quoteAsset: AssetConfigSchema,\n tickSize: v.string(),\n stepSize: v.string(),\n minNotionalQuote: v.string(),\n minQtyBase: v.string(),\n allowBuyFeeFromBase: v.boolean(),\n defaultMarketSlippagePctBuy: FiniteNumberSchema,\n defaultMarketSlippagePctSell: FiniteNumberSchema,\n maxClientRefDriftPct: FiniteNumberSchema,\n baseQuantityScale: v.optional(IntegerSchema),\n quoteQuantityScale: v.optional(IntegerSchema),\n marketdata: v.optional(PairMarketDataConfigSchema),\n listingAt: v.nullable(FiniteNumberSchema),\n delistingAt: v.nullable(FiniteNumberSchema),\n status: v.picklist([...PAIR_STATUSES, \"unknown\"]),\n});\n\nconst ZipperChainConfigSchema = v.object({\n chainId: IntegerSchema,\n code: v.string(),\n name: v.string(),\n nativeChainId: v.string(),\n nativeCurrencySymbol: v.string(),\n explorerUrl: v.string(),\n icon: v.string(),\n requiredConfirmations: IntegerSchema,\n confirmationTimeSeconds: IntegerSchema,\n isCaseSensitive: v.boolean(),\n minAddressLength: IntegerSchema,\n maxAddressLength: IntegerSchema,\n});\n\nconst ZipperTokenConfigSchema = v.object({\n address: v.string(),\n decimals: IntegerSchema,\n});\n\nconst ZipperEnrichedAssetChainSchema = v.object({\n ...ZipperChainConfigSchema.entries,\n zippedAssetId: IntegerSchema,\n isNativeAsset: v.boolean(),\n networkFee: v.optional(v.string()),\n networkFeeTsSec: v.optional(FiniteNumberSchema),\n depositMinAmount: v.optional(v.string()),\n withdrawMinAmount: v.optional(v.string()),\n supply: v.optional(v.string()),\n sourceToken: ZipperTokenConfigSchema,\n zToken: ZipperTokenConfigSchema,\n});\n\nconst ZipperEnrichedAssetConfigSchema = v.object({\n asset: v.string(),\n ledgerId: IntegerSchema,\n name: v.string(),\n icon: v.string(),\n quantityScale: IntegerSchema,\n quantityDisplayDecimals: IntegerSchema,\n uAssetId: v.string(),\n chains: v.array(ZipperEnrichedAssetChainSchema),\n});\n\nconst ZipperChainContractConfigSchema = v.object({\n name: v.string(),\n address: v.string(),\n type: v.string(),\n description: v.string(),\n version: IntegerSchema,\n});\n\nexport const CatalogSnapshotShapeSchema = v.object({\n source: v.picklist([\"api\", \"snapshot\"]),\n tsMs: FiniteNumberSchema,\n version: IntegerSchema,\n market: v.object({\n assets: v.array(AssetConfigSchema),\n pairs: v.array(EnrichedPairConfigSchema),\n tsSec: v.optional(FiniteNumberSchema),\n }),\n zipper: v.object({\n chains: v.array(ZipperChainConfigSchema),\n assets: v.array(ZipperEnrichedAssetConfigSchema),\n contracts: v.array(ZipperChainContractConfigSchema),\n polyesterChainId: v.optional(IntegerSchema),\n tsMs: v.optional(FiniteNumberSchema),\n }),\n});\n\nconst ZippedAssetSupplyCatalogUpdatesSchema = v.array(\n v.object({\n zippedAssetId: IntegerSchema,\n supply: v.string(),\n }),\n);\n\nconst parsedSnapshots = new WeakMap<object, CatalogSnapshot>();\n\nfunction hasValidRelationships(\n snapshot: v.InferOutput<typeof CatalogSnapshotShapeSchema>,\n): boolean {\n const assetSymbols = new Set(snapshot.market.assets.map((asset) => asset.symbol));\n if (\n snapshot.market.pairs.some(\n (pair) =>\n !assetSymbols.has(pair.baseAsset.symbol) ||\n !assetSymbols.has(pair.quoteAsset.symbol),\n )\n ) {\n return false;\n }\n\n const chainIds = new Set(snapshot.zipper.chains.map((chain) => chain.chainId));\n return snapshot.zipper.assets.every((asset) =>\n asset.chains.every((chain) => chainIds.has(chain.chainId)),\n );\n}\n\nconst CatalogSnapshotSchema = v.custom<CatalogSnapshot>((value) => {\n const result = v.safeParse(CatalogSnapshotShapeSchema, value);\n return result.success && hasValidRelationships(result.output);\n});\n\n/** Parses and caches untrusted SSR or JavaScript input as a catalog snapshot. */\nexport function parseCatalogSnapshot(value: unknown): CatalogSnapshot {\n if (typeof value !== \"object\" || value === null) {\n throw new ValidationError(\"Catalog snapshot is malformed.\");\n }\n\n const cached = parsedSnapshots.get(value);\n if (cached) return cached;\n\n const result = v.safeParse(CatalogSnapshotSchema, value);\n if (!result.success) {\n throw new ValidationError(\"Catalog snapshot is malformed.\");\n }\n\n const snapshot: CatalogSnapshot = result.output;\n parsedSnapshots.set(value, snapshot);\n parsedSnapshots.set(snapshot, snapshot);\n return snapshot;\n}\n\n/** Parses supply updates before they can advance a snapshot's version or timestamp. */\nexport function parseZippedAssetSupplyCatalogUpdates(\n value: unknown,\n): readonly ZippedAssetSupplyCatalogUpdate[] {\n const result = v.safeParse(ZippedAssetSupplyCatalogUpdatesSchema, value);\n if (!result.success) {\n throw new ValidationError(\"Zipper catalog supply updates are malformed.\");\n }\n return result.output;\n}\n"],"mappings":"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"}
@@ -20,12 +20,15 @@ interface ZipperCatalogData {
20
20
  readonly chains: readonly ZipperChainConfig[];
21
21
  readonly assets: readonly ZipperEnrichedAssetConfig[];
22
22
  readonly contracts: readonly ZipperChainContractConfig[];
23
+ /** Absent only in legacy or manually supplied catalog seeds. */
24
+ readonly polyesterChainId?: number;
23
25
  readonly tsMs?: number;
24
26
  }
25
27
  type ZipperCatalogSeed = DepositWithdrawConfig | {
26
28
  readonly chains: readonly ZipperChainConfig[];
27
29
  readonly assets: readonly (ZipperAssetConfig | ZipperEnrichedAssetConfig)[];
28
30
  readonly contracts?: readonly ZipperChainContractConfig[];
31
+ readonly polyesterChainId?: number;
29
32
  readonly tsMs?: number;
30
33
  };
31
34
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"zipper-catalog.d.ts","names":[],"sources":["../../src/catalogs/zipper-catalog.ts"],"mappings":";;;KASY;KAaA,2BAA2B;EACnC,eAAe;EACf,eAAe;EACf,aAAa;EACb,kBAAkB;EAClB,mBAAmB;EACnB,oBAAoB;EACpB,SAAS;EACT,aAAa;EACb,QAAQ;;KAGA,4BAA4B,KAAK;EACzC,QAAQ;;UAGK;WACJ,iBAAiB;WACjB,iBAAiB;WACjB,oBAAoB;WACpB;;KAGD,oBACN;WAEa,iBAAiB;WACjB,kBAAkB,oBAAoB;WACtC,qBAAqB;WACrB"}
1
+ {"version":3,"file":"zipper-catalog.d.ts","names":[],"sources":["../../src/catalogs/zipper-catalog.ts"],"mappings":";;;KASY;KAaA,2BAA2B;EACnC,eAAe;EACf,eAAe;EACf,aAAa;EACb,kBAAkB;EAClB,mBAAmB;EACnB,oBAAoB;EACpB,SAAS;EACT,aAAa;EACb,QAAQ;;KAGA,4BAA4B,KAAK;EACzC,QAAQ;;UAGK;WACJ,iBAAiB;WACjB,iBAAiB;WACjB,oBAAoB;;WAEpB;WACA;;KAGD,oBACN;WAEa,iBAAiB;WACjB,kBAAkB,oBAAoB;WACtC,qBAAqB;WACrB;WACA"}
@@ -20,15 +20,7 @@ function enrichZipperAssets(assets, chains) {
20
20
  if (!chain) throw new Error(`[catalog] zipper asset ${asset.asset} references unknown chainId: ${variant.chainId}`);
21
21
  enrichedChains.push({
22
22
  ...chain,
23
- zippedAssetId: variant.zippedAssetId,
24
- isNativeAsset: variant.isNativeAsset,
25
- networkFee: variant.networkFee,
26
- networkFeeTsSec: variant.networkFeeTsSec,
27
- depositMinAmount: variant.depositMinAmount,
28
- withdrawMinAmount: variant.withdrawMinAmount,
29
- supply: variant.supply,
30
- sourceToken: variant.sourceToken,
31
- zToken: variant.zToken
23
+ ...variant
32
24
  });
33
25
  }
34
26
  enrichedAssets.push({
@@ -45,6 +37,7 @@ function buildZipperCatalogData(seed) {
45
37
  chains: Object.freeze(chains),
46
38
  assets: Object.freeze([...assets]),
47
39
  contracts: Object.freeze([...seed.contracts ?? []]),
40
+ polyesterChainId: seed.polyesterChainId,
48
41
  tsMs: seed.tsMs
49
42
  });
50
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"zipper-catalog.js","names":[],"sources":["../../src/catalogs/zipper-catalog.ts"],"sourcesContent":["import type {\n DepositWithdrawConfig,\n ZipperAssetChainVariant,\n ZipperAssetConfig,\n ZipperChainConfig,\n ZipperChainContractConfig,\n} from \"../shared/catalog-config.js\";\n\n/** Known stable contract names plus a string escape hatch for new contracts. */\nexport type ZipperContractName =\n | \"fundingAccount\"\n | \"guardRegistry\"\n | \"tradingGateway\"\n | (string & {});\n\nexport type {\n DepositWithdrawConfig,\n ZipperAssetConfig,\n ZipperChainConfig,\n ZipperChainContractConfig,\n};\n\nexport type ZipperEnrichedAssetChain = ZipperChainConfig & {\n zippedAssetId: ZipperAssetChainVariant[\"zippedAssetId\"];\n isNativeAsset: ZipperAssetChainVariant[\"isNativeAsset\"];\n networkFee?: ZipperAssetChainVariant[\"networkFee\"];\n networkFeeTsSec?: ZipperAssetChainVariant[\"networkFeeTsSec\"];\n depositMinAmount?: ZipperAssetChainVariant[\"depositMinAmount\"];\n withdrawMinAmount?: ZipperAssetChainVariant[\"withdrawMinAmount\"];\n supply?: ZipperAssetChainVariant[\"supply\"];\n sourceToken: ZipperAssetChainVariant[\"sourceToken\"];\n zToken: ZipperAssetChainVariant[\"zToken\"];\n};\n\nexport type ZipperEnrichedAssetConfig = Omit<ZipperAssetConfig, \"variants\"> & {\n chains: ZipperEnrichedAssetChain[];\n};\n\nexport interface ZipperCatalogData {\n readonly chains: readonly ZipperChainConfig[];\n readonly assets: readonly ZipperEnrichedAssetConfig[];\n readonly contracts: readonly ZipperChainContractConfig[];\n readonly tsMs?: number;\n}\n\nexport type ZipperCatalogSeed =\n | DepositWithdrawConfig\n | {\n readonly chains: readonly ZipperChainConfig[];\n readonly assets: readonly (ZipperAssetConfig | ZipperEnrichedAssetConfig)[];\n readonly contracts?: readonly ZipperChainContractConfig[];\n readonly tsMs?: number;\n };\n\nfunction isEnrichedZipperAsset(\n asset: ZipperAssetConfig | ZipperEnrichedAssetConfig,\n): asset is ZipperEnrichedAssetConfig {\n return \"chains\" in asset;\n}\n\n/**\n * Adds derived display metadata to Zipper asset records.\n */\nexport function enrichZipperAssets(\n assets: readonly (ZipperAssetConfig | ZipperEnrichedAssetConfig)[],\n chains: readonly ZipperChainConfig[],\n): readonly ZipperEnrichedAssetConfig[] {\n const chainById = new Map(chains.map((chain) => [chain.chainId, chain]));\n const enrichedAssets: ZipperEnrichedAssetConfig[] = [];\n\n for (const asset of assets) {\n if (isEnrichedZipperAsset(asset)) {\n enrichedAssets.push(asset);\n continue;\n }\n\n const { variants, ...rest } = asset;\n const enrichedChains: ZipperEnrichedAssetChain[] = [];\n\n for (const variant of variants) {\n const chain = chainById.get(variant.chainId);\n if (!chain) {\n throw new Error(\n `[catalog] zipper asset ${asset.asset} references unknown chainId: ${variant.chainId}`,\n );\n }\n\n enrichedChains.push({\n ...chain,\n zippedAssetId: variant.zippedAssetId,\n isNativeAsset: variant.isNativeAsset,\n networkFee: variant.networkFee,\n networkFeeTsSec: variant.networkFeeTsSec,\n depositMinAmount: variant.depositMinAmount,\n withdrawMinAmount: variant.withdrawMinAmount,\n supply: variant.supply,\n sourceToken: variant.sourceToken,\n zToken: variant.zToken,\n });\n }\n\n enrichedAssets.push({\n ...rest,\n chains: enrichedChains,\n });\n }\n\n return enrichedAssets;\n}\n\nexport function buildZipperCatalogData(seed: ZipperCatalogSeed): ZipperCatalogData {\n const chains = [...seed.chains];\n const assets = enrichZipperAssets(seed.assets, chains);\n return Object.freeze({\n chains: Object.freeze(chains),\n assets: Object.freeze([...assets]),\n contracts: Object.freeze([...(seed.contracts ?? [])]),\n tsMs: seed.tsMs,\n });\n}\n"],"mappings":";AAsDA,SAAS,sBACL,OACkC;CAClC,OAAO,YAAY;AACvB;;;;AAKA,SAAgB,mBACZ,QACA,QACoC;CACpC,MAAM,YAAY,IAAI,IAAI,OAAO,KAAK,UAAU,CAAC,MAAM,SAAS,KAAK,CAAC,CAAC;CACvE,MAAM,iBAA8C,CAAC;CAErD,KAAK,MAAM,SAAS,QAAQ;EACxB,IAAI,sBAAsB,KAAK,GAAG;GAC9B,eAAe,KAAK,KAAK;GACzB;EACJ;EAEA,MAAM,EAAE,UAAU,GAAG,SAAS;EAC9B,MAAM,iBAA6C,CAAC;EAEpD,KAAK,MAAM,WAAW,UAAU;GAC5B,MAAM,QAAQ,UAAU,IAAI,QAAQ,OAAO;GAC3C,IAAI,CAAC,OACD,MAAM,IAAI,MACN,0BAA0B,MAAM,MAAM,+BAA+B,QAAQ,SACjF;GAGJ,eAAe,KAAK;IAChB,GAAG;IACH,eAAe,QAAQ;IACvB,eAAe,QAAQ;IACvB,YAAY,QAAQ;IACpB,iBAAiB,QAAQ;IACzB,kBAAkB,QAAQ;IAC1B,mBAAmB,QAAQ;IAC3B,QAAQ,QAAQ;IAChB,aAAa,QAAQ;IACrB,QAAQ,QAAQ;GACpB,CAAC;EACL;EAEA,eAAe,KAAK;GAChB,GAAG;GACH,QAAQ;EACZ,CAAC;CACL;CAEA,OAAO;AACX;AAEA,SAAgB,uBAAuB,MAA4C;CAC/E,MAAM,SAAS,CAAC,GAAG,KAAK,MAAM;CAC9B,MAAM,SAAS,mBAAmB,KAAK,QAAQ,MAAM;CACrD,OAAO,OAAO,OAAO;EACjB,QAAQ,OAAO,OAAO,MAAM;EAC5B,QAAQ,OAAO,OAAO,CAAC,GAAG,MAAM,CAAC;EACjC,WAAW,OAAO,OAAO,CAAC,GAAI,KAAK,aAAa,CAAC,CAAE,CAAC;EACpD,MAAM,KAAK;CACf,CAAC;AACL"}
1
+ {"version":3,"file":"zipper-catalog.js","names":[],"sources":["../../src/catalogs/zipper-catalog.ts"],"sourcesContent":["import type {\n DepositWithdrawConfig,\n ZipperAssetChainVariant,\n ZipperAssetConfig,\n ZipperChainConfig,\n ZipperChainContractConfig,\n} from \"../shared/catalog-config.js\";\n\n/** Known stable contract names plus a string escape hatch for new contracts. */\nexport type ZipperContractName =\n | \"fundingAccount\"\n | \"guardRegistry\"\n | \"tradingGateway\"\n | (string & {});\n\nexport type {\n DepositWithdrawConfig,\n ZipperAssetConfig,\n ZipperChainConfig,\n ZipperChainContractConfig,\n};\n\nexport type ZipperEnrichedAssetChain = ZipperChainConfig & {\n zippedAssetId: ZipperAssetChainVariant[\"zippedAssetId\"];\n isNativeAsset: ZipperAssetChainVariant[\"isNativeAsset\"];\n networkFee?: ZipperAssetChainVariant[\"networkFee\"];\n networkFeeTsSec?: ZipperAssetChainVariant[\"networkFeeTsSec\"];\n depositMinAmount?: ZipperAssetChainVariant[\"depositMinAmount\"];\n withdrawMinAmount?: ZipperAssetChainVariant[\"withdrawMinAmount\"];\n supply?: ZipperAssetChainVariant[\"supply\"];\n sourceToken: ZipperAssetChainVariant[\"sourceToken\"];\n zToken: ZipperAssetChainVariant[\"zToken\"];\n};\n\nexport type ZipperEnrichedAssetConfig = Omit<ZipperAssetConfig, \"variants\"> & {\n chains: ZipperEnrichedAssetChain[];\n};\n\nexport interface ZipperCatalogData {\n readonly chains: readonly ZipperChainConfig[];\n readonly assets: readonly ZipperEnrichedAssetConfig[];\n readonly contracts: readonly ZipperChainContractConfig[];\n /** Absent only in legacy or manually supplied catalog seeds. */\n readonly polyesterChainId?: number;\n readonly tsMs?: number;\n}\n\nexport type ZipperCatalogSeed =\n | DepositWithdrawConfig\n | {\n readonly chains: readonly ZipperChainConfig[];\n readonly assets: readonly (ZipperAssetConfig | ZipperEnrichedAssetConfig)[];\n readonly contracts?: readonly ZipperChainContractConfig[];\n readonly polyesterChainId?: number;\n readonly tsMs?: number;\n };\n\nfunction isEnrichedZipperAsset(\n asset: ZipperAssetConfig | ZipperEnrichedAssetConfig,\n): asset is ZipperEnrichedAssetConfig {\n return \"chains\" in asset;\n}\n\n/**\n * Adds derived display metadata to Zipper asset records.\n */\nexport function enrichZipperAssets(\n assets: readonly (ZipperAssetConfig | ZipperEnrichedAssetConfig)[],\n chains: readonly ZipperChainConfig[],\n): readonly ZipperEnrichedAssetConfig[] {\n const chainById = new Map(chains.map((chain) => [chain.chainId, chain]));\n const enrichedAssets: ZipperEnrichedAssetConfig[] = [];\n\n for (const asset of assets) {\n if (isEnrichedZipperAsset(asset)) {\n enrichedAssets.push(asset);\n continue;\n }\n\n const { variants, ...rest } = asset;\n const enrichedChains: ZipperEnrichedAssetChain[] = [];\n\n for (const variant of variants) {\n const chain = chainById.get(variant.chainId);\n if (!chain) {\n throw new Error(\n `[catalog] zipper asset ${asset.asset} references unknown chainId: ${variant.chainId}`,\n );\n }\n\n enrichedChains.push({\n ...chain,\n ...variant,\n });\n }\n\n enrichedAssets.push({\n ...rest,\n chains: enrichedChains,\n });\n }\n\n return enrichedAssets;\n}\n\nexport function buildZipperCatalogData(seed: ZipperCatalogSeed): ZipperCatalogData {\n const chains = [...seed.chains];\n const assets = enrichZipperAssets(seed.assets, chains);\n return Object.freeze({\n chains: Object.freeze(chains),\n assets: Object.freeze([...assets]),\n contracts: Object.freeze([...(seed.contracts ?? [])]),\n polyesterChainId: seed.polyesterChainId,\n tsMs: seed.tsMs,\n });\n}\n"],"mappings":";AAyDA,SAAS,sBACL,OACkC;CAClC,OAAO,YAAY;AACvB;;;;AAKA,SAAgB,mBACZ,QACA,QACoC;CACpC,MAAM,YAAY,IAAI,IAAI,OAAO,KAAK,UAAU,CAAC,MAAM,SAAS,KAAK,CAAC,CAAC;CACvE,MAAM,iBAA8C,CAAC;CAErD,KAAK,MAAM,SAAS,QAAQ;EACxB,IAAI,sBAAsB,KAAK,GAAG;GAC9B,eAAe,KAAK,KAAK;GACzB;EACJ;EAEA,MAAM,EAAE,UAAU,GAAG,SAAS;EAC9B,MAAM,iBAA6C,CAAC;EAEpD,KAAK,MAAM,WAAW,UAAU;GAC5B,MAAM,QAAQ,UAAU,IAAI,QAAQ,OAAO;GAC3C,IAAI,CAAC,OACD,MAAM,IAAI,MACN,0BAA0B,MAAM,MAAM,+BAA+B,QAAQ,SACjF;GAGJ,eAAe,KAAK;IAChB,GAAG;IACH,GAAG;GACP,CAAC;EACL;EAEA,eAAe,KAAK;GAChB,GAAG;GACH,QAAQ;EACZ,CAAC;CACL;CAEA,OAAO;AACX;AAEA,SAAgB,uBAAuB,MAA4C;CAC/E,MAAM,SAAS,CAAC,GAAG,KAAK,MAAM;CAC9B,MAAM,SAAS,mBAAmB,KAAK,QAAQ,MAAM;CACrD,OAAO,OAAO,OAAO;EACjB,QAAQ,OAAO,OAAO,MAAM;EAC5B,QAAQ,OAAO,OAAO,CAAC,GAAG,MAAM,CAAC;EACjC,WAAW,OAAO,OAAO,CAAC,GAAI,KAAK,aAAa,CAAC,CAAE,CAAC;EACpD,kBAAkB,KAAK;EACvB,MAAM,KAAK;CACf,CAAC;AACL"}
@@ -51,7 +51,7 @@ interface CreatePolyesterEnvironmentParams {
51
51
  * Creates a complete SDK environment configuration from entrypoint and contract settings.
52
52
  */
53
53
  declare function createPolyesterEnvironment(params: CreatePolyesterEnvironmentParams): PolyesterEnvironment;
54
- declare const POLYESTER_TESTNET_ENVIRONMENT: PolyesterEnvironment;
54
+ declare const POLYESTER_DEVNET_ENVIRONMENT: PolyesterEnvironment;
55
55
  //#endregion
56
- export { CreatePolyesterEnvironmentParams, POLYESTER_TESTNET_ENVIRONMENT, PolyesterAccountAbstractionEnvironment, PolyesterContractsEnvironment, PolyesterEntryPointConfig, PolyesterEnvironment, PolyesterSafeDeploymentConfig, createPolyesterEnvironment };
56
+ export { CreatePolyesterEnvironmentParams, POLYESTER_DEVNET_ENVIRONMENT, PolyesterAccountAbstractionEnvironment, PolyesterContractsEnvironment, PolyesterEntryPointConfig, PolyesterEnvironment, PolyesterSafeDeploymentConfig, createPolyesterEnvironment };
57
57
  //# sourceMappingURL=environment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"environment.d.ts","names":[],"sources":["../src/environment.ts"],"mappings":";;;UAKiB;WACJ,SAAS;WACT;;UAGI;WACJ,SAAS;WACT,wBAAwB;WACxB,uBAAuB;WACvB,yBAAyB;WACzB,sBAAsB;WACtB,kBAAkB;WAClB,2BAA2B;;UAGvB;WACJ;WACA;WACA,YAAY;WACZ,MAAM;;UAGF;WACJ,uBAAuB;;UAGnB;WACJ;WACA;WACA;WACA;WACA;WACA,OAAO;WACP,oBAAoB;WACpB,WAAW;;UAGP;WACJ;WACA;WACA;WACA;WACA,OAAO;WACP;aACI;aACA;aACA,YAAY;aACZ,MAAM;;WAEV,WAAW;;;;;iBA4KR,2BACZ,QAAQ,mCACT;cAkEU,+BAA6B"}
1
+ {"version":3,"file":"environment.d.ts","names":[],"sources":["../src/environment.ts"],"mappings":";;;UAKiB;WACJ,SAAS;WACT;;UAGI;WACJ,SAAS;WACT,wBAAwB;WACxB,uBAAuB;WACvB,yBAAyB;WACzB,sBAAsB;WACtB,kBAAkB;WAClB,2BAA2B;;UAGvB;WACJ;WACA;WACA,YAAY;WACZ,MAAM;;UAGF;WACJ,uBAAuB;;UAGnB;WACJ;WACA;WACA;WACA;WACA;WACA,OAAO;WACP,oBAAoB;WACpB,WAAW;;UAGP;WACJ;WACA;WACA;WACA;WACA,OAAO;WACP;aACI;aACA;aACA,YAAY;aACZ,MAAM;;WAEV,WAAW;;;;;iBA4KR,2BACZ,QAAQ,mCACT;cAkEU,8BAA4B"}
@@ -141,14 +141,14 @@ function parsePolyesterEnvironment(environment) {
141
141
  if (environment.fingerprint !== parsed.fingerprint) throw new ConfigurationError("environment.fingerprint must match the environment configuration.");
142
142
  return parsed;
143
143
  }
144
- const POLYESTER_TESTNET_ENVIRONMENT = createPolyesterEnvironment({
145
- name: "polyester-testnet",
144
+ const POLYESTER_DEVNET_ENVIRONMENT = createPolyesterEnvironment({
145
+ name: "polyester-devnet",
146
146
  apiUrl: "https://api-devnet.polyester.ai",
147
147
  websocketUrl: "wss://api-devnet.polyester.ai",
148
148
  rpcUrl: "https://rpc.polyester.tech",
149
149
  chain: {
150
150
  id: 888168,
151
- name: "Polyester Chain Testnet",
151
+ name: "Polyester Chain Devnet",
152
152
  nativeCurrency: {
153
153
  decimals: 18,
154
154
  name: "POL",
@@ -184,6 +184,6 @@ const POLYESTER_TESTNET_ENVIRONMENT = createPolyesterEnvironment({
184
184
  contracts: { tradingGatewayAddress: "0xD3fecf5D39131e23b6B0f872cA0a21c8A5a30932" }
185
185
  });
186
186
  //#endregion
187
- export { POLYESTER_TESTNET_ENVIRONMENT, createPolyesterEnvironment, parsePolyesterEnvironment };
187
+ export { POLYESTER_DEVNET_ENVIRONMENT, createPolyesterEnvironment, parsePolyesterEnvironment };
188
188
 
189
189
  //# sourceMappingURL=environment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"environment.js","names":[],"sources":["../src/environment.ts"],"sourcesContent":["import type { SafeVersion } from \"permissionless/accounts\";\nimport { ConfigurationError } from \"./shared/errors.js\";\nimport type { Address, Chain } from \"viem\";\nimport { checksumEvmAddress, evmUtf8ToBytes, isEvmAddress, keccak256Hex } from \"./utils/evm.js\";\n\nexport interface PolyesterEntryPointConfig {\n readonly address: Address;\n readonly version: \"0.7\";\n}\n\nexport interface PolyesterSafeDeploymentConfig {\n readonly version: SafeVersion;\n readonly safeModuleSetupAddress: Address;\n readonly safe4337ModuleAddress: Address;\n readonly safeProxyFactoryAddress: Address;\n readonly safeSingletonAddress: Address;\n readonly multiSendAddress: Address;\n readonly multiSendCallOnlyAddress?: Address;\n}\n\nexport interface PolyesterAccountAbstractionEnvironment {\n readonly bundlerUrl: string;\n readonly paymasterUrl: string;\n readonly entryPoint: PolyesterEntryPointConfig;\n readonly safe: PolyesterSafeDeploymentConfig;\n}\n\nexport interface PolyesterContractsEnvironment {\n readonly tradingGatewayAddress: Address;\n}\n\nexport interface PolyesterEnvironment {\n readonly name: string;\n readonly fingerprint: string;\n readonly apiUrl: string;\n readonly websocketUrl: string;\n readonly rpcUrl: string;\n readonly chain: Chain;\n readonly accountAbstraction: PolyesterAccountAbstractionEnvironment;\n readonly contracts: PolyesterContractsEnvironment;\n}\n\nexport interface CreatePolyesterEnvironmentParams {\n readonly name: string;\n readonly apiUrl: string;\n readonly websocketUrl: string;\n readonly rpcUrl: string;\n readonly chain: Chain;\n readonly accountAbstraction: {\n readonly bundlerUrl: string;\n readonly paymasterUrl: string;\n readonly entryPoint: PolyesterEntryPointConfig;\n readonly safe: PolyesterSafeDeploymentConfig;\n };\n readonly contracts: PolyesterContractsEnvironment;\n}\n\nconst LOCAL_HOSTS = new Set([\"localhost\", \"127.0.0.1\", \"::1\", \"[::1]\"]);\n\nfunction requireObject(value: unknown, label: string): asserts value is Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new ConfigurationError(`${label} must be an object.`);\n }\n}\n\nfunction requireNonEmptyString(value: unknown, label: string): asserts value is string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new ConfigurationError(`${label} must be a non-empty string.`);\n }\n}\n\nfunction isLocalHost(hostname: string): boolean {\n return LOCAL_HOSTS.has(hostname);\n}\n\nfunction normalizeUrl(\n value: string,\n label: string,\n allowedProtocols: readonly string[],\n options?: { allowSearch?: boolean },\n): string {\n let url: URL;\n try {\n url = new URL(value);\n } catch {\n throw new ConfigurationError(`${label} must be a valid URL.`);\n }\n\n if (!allowedProtocols.includes(url.protocol)) {\n throw new ConfigurationError(`${label} must use ${allowedProtocols.join(\" or \")}.`);\n }\n\n const insecureRemote =\n (url.protocol === \"http:\" || url.protocol === \"ws:\") && !isLocalHost(url.hostname);\n if (insecureRemote) {\n throw new ConfigurationError(`${label} must use a secure protocol for remote hosts.`);\n }\n\n if (options?.allowSearch === false && url.search) {\n throw new ConfigurationError(`${label} must not include query parameters.`);\n }\n\n url.hash = \"\";\n return url.toString().replace(/\\/+$/u, \"\");\n}\n\nfunction normalizeAddress(value: Address, label: string): Address {\n if (!isEvmAddress(value)) {\n throw new ConfigurationError(`${label} must be a valid address.`);\n }\n return checksumEvmAddress(value);\n}\n\nfunction normalizeEntryPoint(entryPoint: PolyesterEntryPointConfig): PolyesterEntryPointConfig {\n requireObject(entryPoint, \"accountAbstraction.entryPoint\");\n if (entryPoint.version !== \"0.7\") {\n throw new ConfigurationError(\"accountAbstraction.entryPoint.version must be 0.7.\");\n }\n return Object.freeze({\n address: normalizeAddress(entryPoint.address, \"accountAbstraction.entryPoint.address\"),\n version: entryPoint.version,\n });\n}\n\nfunction normalizeSafeConfig(safe: PolyesterSafeDeploymentConfig): PolyesterSafeDeploymentConfig {\n requireObject(safe, \"accountAbstraction.safe\");\n if (safe.version !== \"1.4.1\" && safe.version !== \"1.5.0\") {\n throw new ConfigurationError(\n 'accountAbstraction.safe.version must be either \"1.4.1\" or \"1.5.0\".',\n );\n }\n return Object.freeze({\n version: safe.version,\n safeModuleSetupAddress: normalizeAddress(\n safe.safeModuleSetupAddress,\n \"accountAbstraction.safe.safeModuleSetupAddress\",\n ),\n safe4337ModuleAddress: normalizeAddress(\n safe.safe4337ModuleAddress,\n \"accountAbstraction.safe.safe4337ModuleAddress\",\n ),\n safeProxyFactoryAddress: normalizeAddress(\n safe.safeProxyFactoryAddress,\n \"accountAbstraction.safe.safeProxyFactoryAddress\",\n ),\n safeSingletonAddress: normalizeAddress(\n safe.safeSingletonAddress,\n \"accountAbstraction.safe.safeSingletonAddress\",\n ),\n multiSendAddress: normalizeAddress(\n safe.multiSendAddress,\n \"accountAbstraction.safe.multiSendAddress\",\n ),\n multiSendCallOnlyAddress: safe.multiSendCallOnlyAddress\n ? normalizeAddress(\n safe.multiSendCallOnlyAddress,\n \"accountAbstraction.safe.multiSendCallOnlyAddress\",\n )\n : undefined,\n });\n}\n\nfunction normalizeChain(chain: Chain, rpcUrl: string): Chain {\n requireObject(chain, \"chain\");\n if (!Number.isInteger(chain.id) || chain.id <= 0) {\n throw new ConfigurationError(\"chain.id must be a positive integer.\");\n }\n requireNonEmptyString(chain.name, \"chain.name\");\n requireObject(chain.nativeCurrency, \"chain.nativeCurrency\");\n if (!Number.isInteger(chain.nativeCurrency.decimals) || chain.nativeCurrency.decimals < 0) {\n throw new ConfigurationError(\n \"chain.nativeCurrency.decimals must be a non-negative integer.\",\n );\n }\n requireNonEmptyString(chain.nativeCurrency.name, \"chain.nativeCurrency.name\");\n requireNonEmptyString(chain.nativeCurrency.symbol, \"chain.nativeCurrency.symbol\");\n requireObject(chain.rpcUrls, \"chain.rpcUrls\");\n requireObject(chain.rpcUrls.default, \"chain.rpcUrls.default\");\n if (!Array.isArray(chain.rpcUrls.default.http)) {\n throw new ConfigurationError(\"chain.rpcUrls.default.http must be an array.\");\n }\n\n // Shape parity with viem's defineChain: spread over undefined defaults.\n return Object.freeze({\n formatters: undefined,\n fees: undefined,\n serializers: undefined,\n ...chain,\n rpcUrls: {\n ...chain.rpcUrls,\n default: {\n ...chain.rpcUrls.default,\n http: [rpcUrl],\n },\n },\n });\n}\n\nfunction environmentFingerprint(input: {\n apiUrl: string;\n websocketUrl: string;\n rpcUrl: string;\n chainId: number;\n accountAbstraction: PolyesterAccountAbstractionEnvironment;\n contracts: PolyesterContractsEnvironment;\n}): string {\n return keccak256Hex(\n evmUtf8ToBytes(\n JSON.stringify({\n apiUrl: input.apiUrl,\n websocketUrl: input.websocketUrl,\n rpcUrl: input.rpcUrl,\n chainId: input.chainId,\n bundlerUrl: input.accountAbstraction.bundlerUrl,\n paymasterUrl: input.accountAbstraction.paymasterUrl,\n entryPoint: input.accountAbstraction.entryPoint,\n safe: input.accountAbstraction.safe,\n contracts: input.contracts,\n }),\n ),\n );\n}\n\n/**\n * Creates a complete SDK environment configuration from entrypoint and contract settings.\n */\nexport function createPolyesterEnvironment(\n params: CreatePolyesterEnvironmentParams,\n): PolyesterEnvironment {\n requireObject(params, \"Environment configuration\");\n requireNonEmptyString(params.name, \"name\");\n requireObject(params.accountAbstraction, \"accountAbstraction\");\n requireObject(params.contracts, \"contracts\");\n const apiUrl = normalizeUrl(params.apiUrl, \"apiUrl\", [\"https:\", \"http:\"], {\n allowSearch: false,\n });\n const websocketUrl = normalizeUrl(params.websocketUrl, \"websocketUrl\", [\"wss:\", \"ws:\"]);\n const rpcUrl = normalizeUrl(params.rpcUrl, \"rpcUrl\", [\"https:\", \"http:\"]);\n const bundlerUrl = normalizeUrl(params.accountAbstraction.bundlerUrl, \"bundlerUrl\", [\n \"https:\",\n \"http:\",\n ]);\n const paymasterUrl = normalizeUrl(params.accountAbstraction.paymasterUrl, \"paymasterUrl\", [\n \"https:\",\n \"http:\",\n ]);\n const chain = normalizeChain(params.chain, rpcUrl);\n const accountAbstraction = Object.freeze({\n bundlerUrl,\n paymasterUrl,\n entryPoint: normalizeEntryPoint(params.accountAbstraction.entryPoint),\n safe: normalizeSafeConfig(params.accountAbstraction.safe),\n });\n const contracts = Object.freeze({\n tradingGatewayAddress: normalizeAddress(\n params.contracts.tradingGatewayAddress,\n \"contracts.tradingGatewayAddress\",\n ),\n });\n const fingerprint = environmentFingerprint({\n apiUrl,\n websocketUrl,\n rpcUrl,\n chainId: chain.id,\n accountAbstraction,\n contracts,\n });\n\n return Object.freeze({\n name: params.name,\n fingerprint,\n apiUrl,\n websocketUrl,\n rpcUrl,\n chain,\n accountAbstraction,\n contracts,\n });\n}\n\n/**\n * Parses a complete environment supplied to a public SDK client constructor.\n */\nexport function parsePolyesterEnvironment(environment: PolyesterEnvironment): PolyesterEnvironment {\n requireObject(environment, \"environment\");\n const parsed = createPolyesterEnvironment(environment);\n if (environment.fingerprint !== parsed.fingerprint) {\n throw new ConfigurationError(\n \"environment.fingerprint must match the environment configuration.\",\n );\n }\n return parsed;\n}\n\nexport const POLYESTER_TESTNET_ENVIRONMENT = createPolyesterEnvironment({\n name: \"polyester-testnet\",\n apiUrl: \"https://api-devnet.polyester.ai\",\n websocketUrl: \"wss://api-devnet.polyester.ai\",\n rpcUrl: \"https://rpc.polyester.tech\",\n chain: {\n id: 888168,\n name: \"Polyester Chain Testnet\",\n nativeCurrency: {\n decimals: 18,\n name: \"POL\",\n symbol: \"POL\",\n },\n rpcUrls: {\n default: {\n http: [\"https://rpc.polyester.tech\"],\n },\n },\n blockExplorers: {\n default: {\n name: \"Polyester Scan\",\n url: \"https://polyesterscan.com\",\n },\n },\n contracts: {\n multicall3: {\n address: \"0xF35A6AE5408fa1356064849D0BC3855f801aa6aC\",\n blockCreated: 563457,\n },\n },\n },\n accountAbstraction: {\n bundlerUrl: \"https://bundler.polyester.tech\",\n paymasterUrl: \"https://paymaster.polyester.tech\",\n entryPoint: {\n address: \"0x59a4B77766509c4507D79eFF8089474eC3daC174\",\n version: \"0.7\",\n },\n safe: {\n version: \"1.4.1\",\n safeModuleSetupAddress: \"0x80791683D9C079A37Debc67EaDdbFcBC6f0FF2bB\",\n safe4337ModuleAddress: \"0x0713FF3d4c1b4f177833a372b1e3cb977540EA11\",\n safeProxyFactoryAddress: \"0xF8F0F649Dd3bFa9095206691E9fb2356c26216dE\",\n safeSingletonAddress: \"0x92abEa238FEA8908c397cE65366ea9278f0AeC7A\",\n multiSendAddress: \"0x70C8a8CcB45a8E2589B0f019374fc923dA34E4c7\",\n multiSendCallOnlyAddress: \"0x375C86a08DA98d1944D7B3c736307A72186CcAf1\",\n },\n },\n contracts: {\n tradingGatewayAddress: \"0xD3fecf5D39131e23b6B0f872cA0a21c8A5a30932\",\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"environment.js","names":[],"sources":["../src/environment.ts"],"sourcesContent":["import type { SafeVersion } from \"permissionless/accounts\";\nimport { ConfigurationError } from \"./shared/errors.js\";\nimport type { Address, Chain } from \"viem\";\nimport { checksumEvmAddress, evmUtf8ToBytes, isEvmAddress, keccak256Hex } from \"./utils/evm.js\";\n\nexport interface PolyesterEntryPointConfig {\n readonly address: Address;\n readonly version: \"0.7\";\n}\n\nexport interface PolyesterSafeDeploymentConfig {\n readonly version: SafeVersion;\n readonly safeModuleSetupAddress: Address;\n readonly safe4337ModuleAddress: Address;\n readonly safeProxyFactoryAddress: Address;\n readonly safeSingletonAddress: Address;\n readonly multiSendAddress: Address;\n readonly multiSendCallOnlyAddress?: Address;\n}\n\nexport interface PolyesterAccountAbstractionEnvironment {\n readonly bundlerUrl: string;\n readonly paymasterUrl: string;\n readonly entryPoint: PolyesterEntryPointConfig;\n readonly safe: PolyesterSafeDeploymentConfig;\n}\n\nexport interface PolyesterContractsEnvironment {\n readonly tradingGatewayAddress: Address;\n}\n\nexport interface PolyesterEnvironment {\n readonly name: string;\n readonly fingerprint: string;\n readonly apiUrl: string;\n readonly websocketUrl: string;\n readonly rpcUrl: string;\n readonly chain: Chain;\n readonly accountAbstraction: PolyesterAccountAbstractionEnvironment;\n readonly contracts: PolyesterContractsEnvironment;\n}\n\nexport interface CreatePolyesterEnvironmentParams {\n readonly name: string;\n readonly apiUrl: string;\n readonly websocketUrl: string;\n readonly rpcUrl: string;\n readonly chain: Chain;\n readonly accountAbstraction: {\n readonly bundlerUrl: string;\n readonly paymasterUrl: string;\n readonly entryPoint: PolyesterEntryPointConfig;\n readonly safe: PolyesterSafeDeploymentConfig;\n };\n readonly contracts: PolyesterContractsEnvironment;\n}\n\nconst LOCAL_HOSTS = new Set([\"localhost\", \"127.0.0.1\", \"::1\", \"[::1]\"]);\n\nfunction requireObject(value: unknown, label: string): asserts value is Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new ConfigurationError(`${label} must be an object.`);\n }\n}\n\nfunction requireNonEmptyString(value: unknown, label: string): asserts value is string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new ConfigurationError(`${label} must be a non-empty string.`);\n }\n}\n\nfunction isLocalHost(hostname: string): boolean {\n return LOCAL_HOSTS.has(hostname);\n}\n\nfunction normalizeUrl(\n value: string,\n label: string,\n allowedProtocols: readonly string[],\n options?: { allowSearch?: boolean },\n): string {\n let url: URL;\n try {\n url = new URL(value);\n } catch {\n throw new ConfigurationError(`${label} must be a valid URL.`);\n }\n\n if (!allowedProtocols.includes(url.protocol)) {\n throw new ConfigurationError(`${label} must use ${allowedProtocols.join(\" or \")}.`);\n }\n\n const insecureRemote =\n (url.protocol === \"http:\" || url.protocol === \"ws:\") && !isLocalHost(url.hostname);\n if (insecureRemote) {\n throw new ConfigurationError(`${label} must use a secure protocol for remote hosts.`);\n }\n\n if (options?.allowSearch === false && url.search) {\n throw new ConfigurationError(`${label} must not include query parameters.`);\n }\n\n url.hash = \"\";\n return url.toString().replace(/\\/+$/u, \"\");\n}\n\nfunction normalizeAddress(value: Address, label: string): Address {\n if (!isEvmAddress(value)) {\n throw new ConfigurationError(`${label} must be a valid address.`);\n }\n return checksumEvmAddress(value);\n}\n\nfunction normalizeEntryPoint(entryPoint: PolyesterEntryPointConfig): PolyesterEntryPointConfig {\n requireObject(entryPoint, \"accountAbstraction.entryPoint\");\n if (entryPoint.version !== \"0.7\") {\n throw new ConfigurationError(\"accountAbstraction.entryPoint.version must be 0.7.\");\n }\n return Object.freeze({\n address: normalizeAddress(entryPoint.address, \"accountAbstraction.entryPoint.address\"),\n version: entryPoint.version,\n });\n}\n\nfunction normalizeSafeConfig(safe: PolyesterSafeDeploymentConfig): PolyesterSafeDeploymentConfig {\n requireObject(safe, \"accountAbstraction.safe\");\n if (safe.version !== \"1.4.1\" && safe.version !== \"1.5.0\") {\n throw new ConfigurationError(\n 'accountAbstraction.safe.version must be either \"1.4.1\" or \"1.5.0\".',\n );\n }\n return Object.freeze({\n version: safe.version,\n safeModuleSetupAddress: normalizeAddress(\n safe.safeModuleSetupAddress,\n \"accountAbstraction.safe.safeModuleSetupAddress\",\n ),\n safe4337ModuleAddress: normalizeAddress(\n safe.safe4337ModuleAddress,\n \"accountAbstraction.safe.safe4337ModuleAddress\",\n ),\n safeProxyFactoryAddress: normalizeAddress(\n safe.safeProxyFactoryAddress,\n \"accountAbstraction.safe.safeProxyFactoryAddress\",\n ),\n safeSingletonAddress: normalizeAddress(\n safe.safeSingletonAddress,\n \"accountAbstraction.safe.safeSingletonAddress\",\n ),\n multiSendAddress: normalizeAddress(\n safe.multiSendAddress,\n \"accountAbstraction.safe.multiSendAddress\",\n ),\n multiSendCallOnlyAddress: safe.multiSendCallOnlyAddress\n ? normalizeAddress(\n safe.multiSendCallOnlyAddress,\n \"accountAbstraction.safe.multiSendCallOnlyAddress\",\n )\n : undefined,\n });\n}\n\nfunction normalizeChain(chain: Chain, rpcUrl: string): Chain {\n requireObject(chain, \"chain\");\n if (!Number.isInteger(chain.id) || chain.id <= 0) {\n throw new ConfigurationError(\"chain.id must be a positive integer.\");\n }\n requireNonEmptyString(chain.name, \"chain.name\");\n requireObject(chain.nativeCurrency, \"chain.nativeCurrency\");\n if (!Number.isInteger(chain.nativeCurrency.decimals) || chain.nativeCurrency.decimals < 0) {\n throw new ConfigurationError(\n \"chain.nativeCurrency.decimals must be a non-negative integer.\",\n );\n }\n requireNonEmptyString(chain.nativeCurrency.name, \"chain.nativeCurrency.name\");\n requireNonEmptyString(chain.nativeCurrency.symbol, \"chain.nativeCurrency.symbol\");\n requireObject(chain.rpcUrls, \"chain.rpcUrls\");\n requireObject(chain.rpcUrls.default, \"chain.rpcUrls.default\");\n if (!Array.isArray(chain.rpcUrls.default.http)) {\n throw new ConfigurationError(\"chain.rpcUrls.default.http must be an array.\");\n }\n\n // Shape parity with viem's defineChain: spread over undefined defaults.\n return Object.freeze({\n formatters: undefined,\n fees: undefined,\n serializers: undefined,\n ...chain,\n rpcUrls: {\n ...chain.rpcUrls,\n default: {\n ...chain.rpcUrls.default,\n http: [rpcUrl],\n },\n },\n });\n}\n\nfunction environmentFingerprint(input: {\n apiUrl: string;\n websocketUrl: string;\n rpcUrl: string;\n chainId: number;\n accountAbstraction: PolyesterAccountAbstractionEnvironment;\n contracts: PolyesterContractsEnvironment;\n}): string {\n return keccak256Hex(\n evmUtf8ToBytes(\n JSON.stringify({\n apiUrl: input.apiUrl,\n websocketUrl: input.websocketUrl,\n rpcUrl: input.rpcUrl,\n chainId: input.chainId,\n bundlerUrl: input.accountAbstraction.bundlerUrl,\n paymasterUrl: input.accountAbstraction.paymasterUrl,\n entryPoint: input.accountAbstraction.entryPoint,\n safe: input.accountAbstraction.safe,\n contracts: input.contracts,\n }),\n ),\n );\n}\n\n/**\n * Creates a complete SDK environment configuration from entrypoint and contract settings.\n */\nexport function createPolyesterEnvironment(\n params: CreatePolyesterEnvironmentParams,\n): PolyesterEnvironment {\n requireObject(params, \"Environment configuration\");\n requireNonEmptyString(params.name, \"name\");\n requireObject(params.accountAbstraction, \"accountAbstraction\");\n requireObject(params.contracts, \"contracts\");\n const apiUrl = normalizeUrl(params.apiUrl, \"apiUrl\", [\"https:\", \"http:\"], {\n allowSearch: false,\n });\n const websocketUrl = normalizeUrl(params.websocketUrl, \"websocketUrl\", [\"wss:\", \"ws:\"]);\n const rpcUrl = normalizeUrl(params.rpcUrl, \"rpcUrl\", [\"https:\", \"http:\"]);\n const bundlerUrl = normalizeUrl(params.accountAbstraction.bundlerUrl, \"bundlerUrl\", [\n \"https:\",\n \"http:\",\n ]);\n const paymasterUrl = normalizeUrl(params.accountAbstraction.paymasterUrl, \"paymasterUrl\", [\n \"https:\",\n \"http:\",\n ]);\n const chain = normalizeChain(params.chain, rpcUrl);\n const accountAbstraction = Object.freeze({\n bundlerUrl,\n paymasterUrl,\n entryPoint: normalizeEntryPoint(params.accountAbstraction.entryPoint),\n safe: normalizeSafeConfig(params.accountAbstraction.safe),\n });\n const contracts = Object.freeze({\n tradingGatewayAddress: normalizeAddress(\n params.contracts.tradingGatewayAddress,\n \"contracts.tradingGatewayAddress\",\n ),\n });\n const fingerprint = environmentFingerprint({\n apiUrl,\n websocketUrl,\n rpcUrl,\n chainId: chain.id,\n accountAbstraction,\n contracts,\n });\n\n return Object.freeze({\n name: params.name,\n fingerprint,\n apiUrl,\n websocketUrl,\n rpcUrl,\n chain,\n accountAbstraction,\n contracts,\n });\n}\n\n/**\n * Parses a complete environment supplied to a public SDK client constructor.\n */\nexport function parsePolyesterEnvironment(environment: PolyesterEnvironment): PolyesterEnvironment {\n requireObject(environment, \"environment\");\n const parsed = createPolyesterEnvironment(environment);\n if (environment.fingerprint !== parsed.fingerprint) {\n throw new ConfigurationError(\n \"environment.fingerprint must match the environment configuration.\",\n );\n }\n return parsed;\n}\n\nexport const POLYESTER_DEVNET_ENVIRONMENT = createPolyesterEnvironment({\n name: \"polyester-devnet\",\n apiUrl: \"https://api-devnet.polyester.ai\",\n websocketUrl: \"wss://api-devnet.polyester.ai\",\n rpcUrl: \"https://rpc.polyester.tech\",\n chain: {\n id: 888168,\n name: \"Polyester Chain Devnet\",\n nativeCurrency: {\n decimals: 18,\n name: \"POL\",\n symbol: \"POL\",\n },\n rpcUrls: {\n default: {\n http: [\"https://rpc.polyester.tech\"],\n },\n },\n blockExplorers: {\n default: {\n name: \"Polyester Scan\",\n url: \"https://polyesterscan.com\",\n },\n },\n contracts: {\n multicall3: {\n address: \"0xF35A6AE5408fa1356064849D0BC3855f801aa6aC\",\n blockCreated: 563457,\n },\n },\n },\n accountAbstraction: {\n bundlerUrl: \"https://bundler.polyester.tech\",\n paymasterUrl: \"https://paymaster.polyester.tech\",\n entryPoint: {\n address: \"0x59a4B77766509c4507D79eFF8089474eC3daC174\",\n version: \"0.7\",\n },\n safe: {\n version: \"1.4.1\",\n safeModuleSetupAddress: \"0x80791683D9C079A37Debc67EaDdbFcBC6f0FF2bB\",\n safe4337ModuleAddress: \"0x0713FF3d4c1b4f177833a372b1e3cb977540EA11\",\n safeProxyFactoryAddress: \"0xF8F0F649Dd3bFa9095206691E9fb2356c26216dE\",\n safeSingletonAddress: \"0x92abEa238FEA8908c397cE65366ea9278f0AeC7A\",\n multiSendAddress: \"0x70C8a8CcB45a8E2589B0f019374fc923dA34E4c7\",\n multiSendCallOnlyAddress: \"0x375C86a08DA98d1944D7B3c736307A72186CcAf1\",\n },\n },\n contracts: {\n tradingGatewayAddress: \"0xD3fecf5D39131e23b6B0f872cA0a21c8A5a30932\",\n },\n});\n"],"mappings":";;;AAyDA,MAAM,8BAAc,IAAI,IAAI;CAAC;CAAa;CAAa;CAAO;AAAO,CAAC;AAEtE,SAAS,cAAc,OAAgB,OAAyD;CAC5F,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,GAClE,MAAM,IAAI,mBAAmB,GAAG,MAAM,oBAAoB;AAElE;AAEA,SAAS,sBAAsB,OAAgB,OAAwC;CACnF,IAAI,OAAO,UAAU,YAAY,MAAM,KAAK,CAAC,CAAC,WAAW,GACrD,MAAM,IAAI,mBAAmB,GAAG,MAAM,6BAA6B;AAE3E;AAEA,SAAS,YAAY,UAA2B;CAC5C,OAAO,YAAY,IAAI,QAAQ;AACnC;AAEA,SAAS,aACL,OACA,OACA,kBACA,SACM;CACN,IAAI;CACJ,IAAI;EACA,MAAM,IAAI,IAAI,KAAK;CACvB,QAAQ;EACJ,MAAM,IAAI,mBAAmB,GAAG,MAAM,sBAAsB;CAChE;CAEA,IAAI,CAAC,iBAAiB,SAAS,IAAI,QAAQ,GACvC,MAAM,IAAI,mBAAmB,GAAG,MAAM,YAAY,iBAAiB,KAAK,MAAM,EAAE,EAAE;CAKtF,KADK,IAAI,aAAa,WAAW,IAAI,aAAa,UAAU,CAAC,YAAY,IAAI,QAAQ,GAEjF,MAAM,IAAI,mBAAmB,GAAG,MAAM,8CAA8C;CAGxF,IAAI,SAAS,gBAAgB,SAAS,IAAI,QACtC,MAAM,IAAI,mBAAmB,GAAG,MAAM,oCAAoC;CAG9E,IAAI,OAAO;CACX,OAAO,IAAI,SAAS,CAAC,CAAC,QAAQ,SAAS,EAAE;AAC7C;AAEA,SAAS,iBAAiB,OAAgB,OAAwB;CAC9D,IAAI,CAAC,aAAa,KAAK,GACnB,MAAM,IAAI,mBAAmB,GAAG,MAAM,0BAA0B;CAEpE,OAAO,mBAAmB,KAAK;AACnC;AAEA,SAAS,oBAAoB,YAAkE;CAC3F,cAAc,YAAY,+BAA+B;CACzD,IAAI,WAAW,YAAY,OACvB,MAAM,IAAI,mBAAmB,oDAAoD;CAErF,OAAO,OAAO,OAAO;EACjB,SAAS,iBAAiB,WAAW,SAAS,uCAAuC;EACrF,SAAS,WAAW;CACxB,CAAC;AACL;AAEA,SAAS,oBAAoB,MAAoE;CAC7F,cAAc,MAAM,yBAAyB;CAC7C,IAAI,KAAK,YAAY,WAAW,KAAK,YAAY,SAC7C,MAAM,IAAI,mBACN,wEACJ;CAEJ,OAAO,OAAO,OAAO;EACjB,SAAS,KAAK;EACd,wBAAwB,iBACpB,KAAK,wBACL,gDACJ;EACA,uBAAuB,iBACnB,KAAK,uBACL,+CACJ;EACA,yBAAyB,iBACrB,KAAK,yBACL,iDACJ;EACA,sBAAsB,iBAClB,KAAK,sBACL,8CACJ;EACA,kBAAkB,iBACd,KAAK,kBACL,0CACJ;EACA,0BAA0B,KAAK,2BACzB,iBACI,KAAK,0BACL,kDACJ,IACA,KAAA;CACV,CAAC;AACL;AAEA,SAAS,eAAe,OAAc,QAAuB;CACzD,cAAc,OAAO,OAAO;CAC5B,IAAI,CAAC,OAAO,UAAU,MAAM,EAAE,KAAK,MAAM,MAAM,GAC3C,MAAM,IAAI,mBAAmB,sCAAsC;CAEvE,sBAAsB,MAAM,MAAM,YAAY;CAC9C,cAAc,MAAM,gBAAgB,sBAAsB;CAC1D,IAAI,CAAC,OAAO,UAAU,MAAM,eAAe,QAAQ,KAAK,MAAM,eAAe,WAAW,GACpF,MAAM,IAAI,mBACN,+DACJ;CAEJ,sBAAsB,MAAM,eAAe,MAAM,2BAA2B;CAC5E,sBAAsB,MAAM,eAAe,QAAQ,6BAA6B;CAChF,cAAc,MAAM,SAAS,eAAe;CAC5C,cAAc,MAAM,QAAQ,SAAS,uBAAuB;CAC5D,IAAI,CAAC,MAAM,QAAQ,MAAM,QAAQ,QAAQ,IAAI,GACzC,MAAM,IAAI,mBAAmB,8CAA8C;CAI/E,OAAO,OAAO,OAAO;EACjB,YAAY,KAAA;EACZ,MAAM,KAAA;EACN,aAAa,KAAA;EACb,GAAG;EACH,SAAS;GACL,GAAG,MAAM;GACT,SAAS;IACL,GAAG,MAAM,QAAQ;IACjB,MAAM,CAAC,MAAM;GACjB;EACJ;CACJ,CAAC;AACL;AAEA,SAAS,uBAAuB,OAOrB;CACP,OAAO,aACH,eACI,KAAK,UAAU;EACX,QAAQ,MAAM;EACd,cAAc,MAAM;EACpB,QAAQ,MAAM;EACd,SAAS,MAAM;EACf,YAAY,MAAM,mBAAmB;EACrC,cAAc,MAAM,mBAAmB;EACvC,YAAY,MAAM,mBAAmB;EACrC,MAAM,MAAM,mBAAmB;EAC/B,WAAW,MAAM;CACrB,CAAC,CACL,CACJ;AACJ;;;;AAKA,SAAgB,2BACZ,QACoB;CACpB,cAAc,QAAQ,2BAA2B;CACjD,sBAAsB,OAAO,MAAM,MAAM;CACzC,cAAc,OAAO,oBAAoB,oBAAoB;CAC7D,cAAc,OAAO,WAAW,WAAW;CAC3C,MAAM,SAAS,aAAa,OAAO,QAAQ,UAAU,CAAC,UAAU,OAAO,GAAG,EACtE,aAAa,MACjB,CAAC;CACD,MAAM,eAAe,aAAa,OAAO,cAAc,gBAAgB,CAAC,QAAQ,KAAK,CAAC;CACtF,MAAM,SAAS,aAAa,OAAO,QAAQ,UAAU,CAAC,UAAU,OAAO,CAAC;CACxE,MAAM,aAAa,aAAa,OAAO,mBAAmB,YAAY,cAAc,CAChF,UACA,OACJ,CAAC;CACD,MAAM,eAAe,aAAa,OAAO,mBAAmB,cAAc,gBAAgB,CACtF,UACA,OACJ,CAAC;CACD,MAAM,QAAQ,eAAe,OAAO,OAAO,MAAM;CACjD,MAAM,qBAAqB,OAAO,OAAO;EACrC;EACA;EACA,YAAY,oBAAoB,OAAO,mBAAmB,UAAU;EACpE,MAAM,oBAAoB,OAAO,mBAAmB,IAAI;CAC5D,CAAC;CACD,MAAM,YAAY,OAAO,OAAO,EAC5B,uBAAuB,iBACnB,OAAO,UAAU,uBACjB,iCACJ,EACJ,CAAC;CACD,MAAM,cAAc,uBAAuB;EACvC;EACA;EACA;EACA,SAAS,MAAM;EACf;EACA;CACJ,CAAC;CAED,OAAO,OAAO,OAAO;EACjB,MAAM,OAAO;EACb;EACA;EACA;EACA;EACA;EACA;EACA;CACJ,CAAC;AACL;;;;AAKA,SAAgB,0BAA0B,aAAyD;CAC/F,cAAc,aAAa,aAAa;CACxC,MAAM,SAAS,2BAA2B,WAAW;CACrD,IAAI,YAAY,gBAAgB,OAAO,aACnC,MAAM,IAAI,mBACN,mEACJ;CAEJ,OAAO;AACX;AAEA,MAAa,+BAA+B,2BAA2B;CACnE,MAAM;CACN,QAAQ;CACR,cAAc;CACd,QAAQ;CACR,OAAO;EACH,IAAI;EACJ,MAAM;EACN,gBAAgB;GACZ,UAAU;GACV,MAAM;GACN,QAAQ;EACZ;EACA,SAAS,EACL,SAAS,EACL,MAAM,CAAC,4BAA4B,EACvC,EACJ;EACA,gBAAgB,EACZ,SAAS;GACL,MAAM;GACN,KAAK;EACT,EACJ;EACA,WAAW,EACP,YAAY;GACR,SAAS;GACT,cAAc;EAClB,EACJ;CACJ;CACA,oBAAoB;EAChB,YAAY;EACZ,cAAc;EACd,YAAY;GACR,SAAS;GACT,SAAS;EACb;EACA,MAAM;GACF,SAAS;GACT,wBAAwB;GACxB,uBAAuB;GACvB,yBAAyB;GACzB,sBAAsB;GACtB,kBAAkB;GAClB,0BAA0B;EAC9B;CACJ;CACA,WAAW,EACP,uBAAuB,6CAC3B;AACJ,CAAC"}
@@ -28,8 +28,8 @@ type SocialVerification = Message<"auth.v1.SocialVerification"> & {
28
28
  */
29
29
  provider: SocialProvider;
30
30
  /**
31
- * Method used for this verification. If unspecified at start time, profile
32
- * verification is used.
31
+ * Method used for this verification. If unspecified at start time, the
32
+ * provider default is used.
33
33
  *
34
34
  * @generated from field: auth.v1.SocialVerificationMethod method = 11;
35
35
  */
@@ -48,8 +48,9 @@ type SocialVerification = Message<"auth.v1.SocialVerification"> & {
48
48
  */
49
49
  providerUserId: string;
50
50
  /**
51
- * Challenge code the user must place according to the verification method.
52
- * Codes start with "poly_" and expire after 15 minutes.
51
+ * Challenge code the user must submit according to the verification method.
52
+ * Discord codes are returned only when a challenge is issued. Codes expire
53
+ * after 15 minutes.
53
54
  *
54
55
  * @generated from field: string challenge_code = 13;
55
56
  */
@@ -117,15 +118,16 @@ type StartSocialVerificationRequest = Message<"auth.v1.StartSocialVerificationRe
117
118
  */
118
119
  provider: SocialProvider;
119
120
  /**
120
- * Verification method. If unspecified, profile verification is used.
121
+ * Verification method. If unspecified, profile verification is used for
122
+ * X/Twitter and channel verification is used for Discord.
121
123
  *
122
124
  * @generated from field: auth.v1.SocialVerificationMethod method = 3;
123
125
  */
124
126
  method: SocialVerificationMethod;
125
127
  /**
126
- * Provider handle the user claims. A leading "@" is accepted and removed.
127
- * X/Twitter handles must be 1 to 15 letters, digits, or underscores.
128
- * Other provider handles can be up to 64 characters.
128
+ * Provider handle the user claims. Required for X/Twitter and omitted for
129
+ * Discord, where the authenticated bot supplies the provider identity.
130
+ * A leading "@" is accepted and removed from X/Twitter handles.
129
131
  *
130
132
  * @generated from field: string handle = 2;
131
133
  */
@@ -143,7 +145,8 @@ declare const StartSocialVerificationRequestSchema: GenMessage<StartSocialVerifi
143
145
  */
144
146
  type StartSocialVerificationResponse = Message<"auth.v1.StartSocialVerificationResponse"> & {
145
147
  /**
146
- * Challenge code the user must place according to the verification method.
148
+ * Newly issued challenge code the user must submit according to the
149
+ * verification method.
147
150
  *
148
151
  * @generated from field: string challenge_code = 1;
149
152
  */
@@ -1 +1 @@
1
- {"version":3,"file":"social_verification_pb.d.ts","names":[],"sources":["../../../../src/gen/auth/v1/social_verification_pb.ts"],"mappings":";;;;;;;;;cAaa,kCAAkC;;;;;;;KASnC,qBAAqB;;;;;;EAM/B;;;;;;EAOA,UAAU;;;;;;;EAQV,QAAQ;;;;;;;EAQR;;;;;;EAOA;;;;;;;EAQA;;;;;;EAOA,QAAQ;;;;;;EAOR,cAAc;;;;;;EAOd,YAAY;;;;;;EAOZ,aAAa;;;;;;EAOb;;;;;;;EAQA;;;;;;EAOA,YAAY;;;;;;cAOD,0BAA0B,WAAW;;;;;;;KAStC,iCAAiC;;;;;;EAM3C,UAAU;;;;;;EAOV,QAAQ;;;;;;;;EASR;;;;;;cAOW,sCAAsC,WAAW;;;;;;KAQlD,kCAAkC;;;;;;EAM5C;;;;;;;EAQA,YAAY;;;;;;EAOZ,eAAe;;;;;;cAOJ,uCAAuC,WAAW;;;;;;;KASnD,iCAAiC;;;;;;EAM3C,UAAU;;;;;;cAOC,sCAAsC,WAAW;;;;;;;KASlD,kCAAkC;;;;;;EAM5C,eAAe;;;;;;cAOJ,uCAAuC,WAAW;;;;;;;KASnD,+BAA+B;;;;;;EAMzC,UAAU;;;;;;cAOC,oCAAoC,WAAW;;;;;;;;KAUhD,gCAAgC;;;;;;;EAO1C,eAAe;;;;;;cAOJ,qCAAqC,WAAW;;;;;;aAQjD;;;;;;EAMV;;;;;;EAOA;;;;;;EAOA;;;;;cAMW,sBAAsB,QAAQ;;;;;;aAQ/B;;;;;;EAMV;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;cAMW,gCAAgC,QAAQ;;;;;;aAQzC;;;;;;EAMV;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;cAMW,gCAAgC,QAAQ;;;;;;cAQxC,2BAA2B;;;;;;EAMtC;IACE;IACA,cAAc;IACd,eAAe;;;;;;;EAOjB;IACE;IACA,cAAc;IACd,eAAe;;;;;;;EAOjB;IACE;IACA,cAAc;IACd,eAAe"}
1
+ {"version":3,"file":"social_verification_pb.d.ts","names":[],"sources":["../../../../src/gen/auth/v1/social_verification_pb.ts"],"mappings":";;;;;;;;;cAaa,kCAAkC;;;;;;;KASnC,qBAAqB;;;;;;EAM/B;;;;;;EAOA,UAAU;;;;;;;EAQV,QAAQ;;;;;;;EAQR;;;;;;EAOA;;;;;;;;EASA;;;;;;EAOA,QAAQ;;;;;;EAOR,cAAc;;;;;;EAOd,YAAY;;;;;;EAOZ,aAAa;;;;;;EAOb;;;;;;;EAQA;;;;;;EAOA,YAAY;;;;;;cAOD,0BAA0B,WAAW;;;;;;;KAStC,iCAAiC;;;;;;EAM3C,UAAU;;;;;;;EAQV,QAAQ;;;;;;;;EASR;;;;;;cAOW,sCAAsC,WAAW;;;;;;KAQlD,kCAAkC;;;;;;;EAO5C;;;;;;;EAQA,YAAY;;;;;;EAOZ,eAAe;;;;;;cAOJ,uCAAuC,WAAW;;;;;;;KASnD,iCAAiC;;;;;;EAM3C,UAAU;;;;;;cAOC,sCAAsC,WAAW;;;;;;;KASlD,kCAAkC;;;;;;EAM5C,eAAe;;;;;;cAOJ,uCAAuC,WAAW;;;;;;;KASnD,+BAA+B;;;;;;EAMzC,UAAU;;;;;;cAOC,oCAAoC,WAAW;;;;;;;;KAUhD,gCAAgC;;;;;;;EAO1C,eAAe;;;;;;cAOJ,qCAAqC,WAAW;;;;;;aAQjD;;;;;;EAMV;;;;;;EAOA;;;;;;EAOA;;;;;cAMW,sBAAsB,QAAQ;;;;;;aAQ/B;;;;;;EAMV;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;cAMW,gCAAgC,QAAQ;;;;;;aAQzC;;;;;;EAMV;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;cAMW,gCAAgC,QAAQ;;;;;;cAQxC,2BAA2B;;;;;;EAMtC;IACE;IACA,cAAc;IACd,eAAe;;;;;;;EAOjB;IACE;IACA,cAAc;IACd,eAAe;;;;;;;EAOjB;IACE;IACA,cAAc;IACd,eAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"social_verification_pb.js","names":[],"sources":["../../../../src/gen/auth/v1/social_verification_pb.ts"],"sourcesContent":["// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file auth/v1/social_verification.proto (package auth.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file auth/v1/social_verification.proto.\n */\nexport const file_auth_v1_social_verification: GenFile = /*@__PURE__*/\n fileDesc(\"CiFhdXRoL3YxL3NvY2lhbF92ZXJpZmljYXRpb24ucHJvdG8SB2F1dGgudjEi3AMKElNvY2lhbFZlcmlmaWNhdGlvbhIKCgJpZBgMIAEoAxIpCghwcm92aWRlchgBIAEoDjIXLmF1dGgudjEuU29jaWFsUHJvdmlkZXISMQoGbWV0aG9kGAsgASgOMiEuYXV0aC52MS5Tb2NpYWxWZXJpZmljYXRpb25NZXRob2QSDgoGaGFuZGxlGAIgASgJEhgKEHByb3ZpZGVyX3VzZXJfaWQYAyABKAkSFgoOY2hhbGxlbmdlX2NvZGUYDSABKAkSMQoGc3RhdHVzGAQgASgOMiEuYXV0aC52MS5Tb2NpYWxWZXJpZmljYXRpb25TdGF0dXMSMAoMcmVxdWVzdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpleHBpcmVzX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgt2ZXJpZmllZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEAoIYXR0ZW1wdHMYCSABKAUSEgoKbGFzdF9lcnJvchgKIAEoCRIuCgp1cGRhdGVkX2F0GA8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKWAQoeU3RhcnRTb2NpYWxWZXJpZmljYXRpb25SZXF1ZXN0EisKCHByb3ZpZGVyGAEgASgOMhcuYXV0aC52MS5Tb2NpYWxQcm92aWRlckIAEjMKBm1ldGhvZBgDIAEoDjIhLmF1dGgudjEuU29jaWFsVmVyaWZpY2F0aW9uTWV0aG9kQgASEAoGaGFuZGxlGAIgASgJQgA6ACKcAQofU3RhcnRTb2NpYWxWZXJpZmljYXRpb25SZXNwb25zZRIWCg5jaGFsbGVuZ2VfY29kZRgBIAEoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCgx2ZXJpZmljYXRpb24YAyABKAsyGy5hdXRoLnYxLlNvY2lhbFZlcmlmaWNhdGlvbiJNCh5Tb2NpYWxWZXJpZmljYXRpb25SZWFkeVJlcXVlc3QSKwoIcHJvdmlkZXIYASABKA4yFy5hdXRoLnYxLlNvY2lhbFByb3ZpZGVyQgAiVAofU29jaWFsVmVyaWZpY2F0aW9uUmVhZHlSZXNwb25zZRIxCgx2ZXJpZmljYXRpb24YASABKAsyGy5hdXRoLnYxLlNvY2lhbFZlcmlmaWNhdGlvbiJLChxHZXRTb2NpYWxWZXJpZmljYXRpb25SZXF1ZXN0EisKCHByb3ZpZGVyGAEgASgOMhcuYXV0aC52MS5Tb2NpYWxQcm92aWRlckIAIlIKHUdldFNvY2lhbFZlcmlmaWNhdGlvblJlc3BvbnNlEjEKDHZlcmlmaWNhdGlvbhgBIAEoCzIbLmF1dGgudjEuU29jaWFsVmVyaWZpY2F0aW9uKkQKDlNvY2lhbFByb3ZpZGVyEhgKFFBST1ZJREVSX1VOU1BFQ0lGSUVEEAASCwoHVFdJVFRFUhABEgsKB0RJU0NPUkQQAirPAQoYU29jaWFsVmVyaWZpY2F0aW9uU3RhdHVzEhYKElNUQVRVU19VTlNQRUNJRklFRBAAEh4KGlNUQVRVU19QRU5ESU5HX1VTRVJfQUNUSU9OEAESEQoNU1RBVFVTX1FVRVVFRBACEhYKElNUQVRVU19JTl9QUk9HUkVTUxADEhMKD1NUQVRVU19WRVJJRklFRBAEEhEKDVNUQVRVU19GQUlMRUQQBRISCg5TVEFUVVNfRVhQSVJFRBAGEhQKEFNUQVRVU19DQU5DRUxMRUQQByppChhTb2NpYWxWZXJpZmljYXRpb25NZXRob2QSFgoSTUVUSE9EX1VOU1BFQ0lGSUVEEAASEgoOTUVUSE9EX1BST0ZJTEUQARISCg5NRVRIT0RfQ0hBTk5FTBACEg0KCU1FVEhPRF9ETRADMuUCChlTb2NpYWxWZXJpZmljYXRpb25TZXJ2aWNlEm4KF1N0YXJ0U29jaWFsVmVyaWZpY2F0aW9uEicuYXV0aC52MS5TdGFydFNvY2lhbFZlcmlmaWNhdGlvblJlcXVlc3QaKC5hdXRoLnYxLlN0YXJ0U29jaWFsVmVyaWZpY2F0aW9uUmVzcG9uc2UiABJuChdTb2NpYWxWZXJpZmljYXRpb25SZWFkeRInLmF1dGgudjEuU29jaWFsVmVyaWZpY2F0aW9uUmVhZHlSZXF1ZXN0GiguYXV0aC52MS5Tb2NpYWxWZXJpZmljYXRpb25SZWFkeVJlc3BvbnNlIgASaAoVR2V0U29jaWFsVmVyaWZpY2F0aW9uEiUuYXV0aC52MS5HZXRTb2NpYWxWZXJpZmljYXRpb25SZXF1ZXN0GiYuYXV0aC52MS5HZXRTb2NpYWxWZXJpZmljYXRpb25SZXNwb25zZSIAQjxaOmdpdGh1Yi5jb20vRmFicmljLUxhYnMvcG9seWVzdGVyLXNkay1nby9nZW4vYXV0aC92MTthdXRodjFiBnByb3RvMw==\", [file_google_protobuf_timestamp]);\n\n/**\n * SocialVerification describes the caller's current verification state for one\n * social provider.\n *\n * @generated from message auth.v1.SocialVerification\n */\nexport type SocialVerification = Message<\"auth.v1.SocialVerification\"> & {\n /**\n * Verification identifier.\n *\n * @generated from field: int64 id = 12;\n */\n id: bigint;\n\n /**\n * Provider account being verified.\n *\n * @generated from field: auth.v1.SocialProvider provider = 1;\n */\n provider: SocialProvider;\n\n /**\n * Method used for this verification. If unspecified at start time, profile\n * verification is used.\n *\n * @generated from field: auth.v1.SocialVerificationMethod method = 11;\n */\n method: SocialVerificationMethod;\n\n /**\n * Provider handle being verified. Handles are returned lowercase and without\n * a leading \"@\".\n *\n * @generated from field: string handle = 2;\n */\n handle: string;\n\n /**\n * Stable provider-side user identifier. Empty until verification succeeds.\n *\n * @generated from field: string provider_user_id = 3;\n */\n providerUserId: string;\n\n /**\n * Challenge code the user must place according to the verification method.\n * Codes start with \"poly_\" and expire after 15 minutes.\n *\n * @generated from field: string challenge_code = 13;\n */\n challengeCode: string;\n\n /**\n * Current verification status.\n *\n * @generated from field: auth.v1.SocialVerificationStatus status = 4;\n */\n status: SocialVerificationStatus;\n\n /**\n * Time in UTC when the current challenge code was issued.\n *\n * @generated from field: google.protobuf.Timestamp requested_at = 5;\n */\n requestedAt?: Timestamp | undefined;\n\n /**\n * Time in UTC when the current challenge code expires.\n *\n * @generated from field: google.protobuf.Timestamp expires_at = 6;\n */\n expiresAt?: Timestamp | undefined;\n\n /**\n * Time in UTC when verification succeeded. Empty until status is STATUS_VERIFIED.\n *\n * @generated from field: google.protobuf.Timestamp verified_at = 7;\n */\n verifiedAt?: Timestamp | undefined;\n\n /**\n * Number of recorded provider-check attempts for this challenge.\n *\n * @generated from field: int32 attempts = 9;\n */\n attempts: number;\n\n /**\n * Last verification error, if the most recent check failed. Empty when there\n * is no recorded error.\n *\n * @generated from field: string last_error = 10;\n */\n lastError: string;\n\n /**\n * Time in UTC when this verification state last changed.\n *\n * @generated from field: google.protobuf.Timestamp updated_at = 15;\n */\n updatedAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message auth.v1.SocialVerification.\n * Use `create(SocialVerificationSchema)` to create a new message.\n */\nexport const SocialVerificationSchema: GenMessage<SocialVerification> = /*@__PURE__*/\n messageDesc(file_auth_v1_social_verification, 0);\n\n/**\n * StartSocialVerificationRequest starts or restarts social account verification.\n * Starting again for the same provider replaces the previous challenge.\n *\n * @generated from message auth.v1.StartSocialVerificationRequest\n */\nexport type StartSocialVerificationRequest = Message<\"auth.v1.StartSocialVerificationRequest\"> & {\n /**\n * Provider account to verify.\n *\n * @generated from field: auth.v1.SocialProvider provider = 1;\n */\n provider: SocialProvider;\n\n /**\n * Verification method. If unspecified, profile verification is used.\n *\n * @generated from field: auth.v1.SocialVerificationMethod method = 3;\n */\n method: SocialVerificationMethod;\n\n /**\n * Provider handle the user claims. A leading \"@\" is accepted and removed.\n * X/Twitter handles must be 1 to 15 letters, digits, or underscores.\n * Other provider handles can be up to 64 characters.\n *\n * @generated from field: string handle = 2;\n */\n handle: string;\n};\n\n/**\n * Describes the message auth.v1.StartSocialVerificationRequest.\n * Use `create(StartSocialVerificationRequestSchema)` to create a new message.\n */\nexport const StartSocialVerificationRequestSchema: GenMessage<StartSocialVerificationRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_social_verification, 1);\n\n/**\n * Response returned after starting social account verification.\n *\n * @generated from message auth.v1.StartSocialVerificationResponse\n */\nexport type StartSocialVerificationResponse = Message<\"auth.v1.StartSocialVerificationResponse\"> & {\n /**\n * Challenge code the user must place according to the verification method.\n *\n * @generated from field: string challenge_code = 1;\n */\n challengeCode: string;\n\n /**\n * Time in UTC when the challenge code expires. Social verification challenges\n * expire after 15 minutes.\n *\n * @generated from field: google.protobuf.Timestamp expires_at = 2;\n */\n expiresAt?: Timestamp | undefined;\n\n /**\n * Current verification state after issuing the challenge.\n *\n * @generated from field: auth.v1.SocialVerification verification = 3;\n */\n verification?: SocialVerification | undefined;\n};\n\n/**\n * Describes the message auth.v1.StartSocialVerificationResponse.\n * Use `create(StartSocialVerificationResponseSchema)` to create a new message.\n */\nexport const StartSocialVerificationResponseSchema: GenMessage<StartSocialVerificationResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_social_verification, 2);\n\n/**\n * SocialVerificationReadyRequest tells the API that the challenge code has been\n * placed and the provider account is ready to check.\n *\n * @generated from message auth.v1.SocialVerificationReadyRequest\n */\nexport type SocialVerificationReadyRequest = Message<\"auth.v1.SocialVerificationReadyRequest\"> & {\n /**\n * Provider account to check.\n *\n * @generated from field: auth.v1.SocialProvider provider = 1;\n */\n provider: SocialProvider;\n};\n\n/**\n * Describes the message auth.v1.SocialVerificationReadyRequest.\n * Use `create(SocialVerificationReadyRequestSchema)` to create a new message.\n */\nexport const SocialVerificationReadyRequestSchema: GenMessage<SocialVerificationReadyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_social_verification, 3);\n\n/**\n * SocialVerificationReadyResponse returns the verification after it has been\n * queued for a provider check.\n *\n * @generated from message auth.v1.SocialVerificationReadyResponse\n */\nexport type SocialVerificationReadyResponse = Message<\"auth.v1.SocialVerificationReadyResponse\"> & {\n /**\n * Current verification state after the provider check was requested.\n *\n * @generated from field: auth.v1.SocialVerification verification = 1;\n */\n verification?: SocialVerification | undefined;\n};\n\n/**\n * Describes the message auth.v1.SocialVerificationReadyResponse.\n * Use `create(SocialVerificationReadyResponseSchema)` to create a new message.\n */\nexport const SocialVerificationReadyResponseSchema: GenMessage<SocialVerificationReadyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_social_verification, 4);\n\n/**\n * GetSocialVerificationRequest fetches the caller's current social verification\n * state for one provider.\n *\n * @generated from message auth.v1.GetSocialVerificationRequest\n */\nexport type GetSocialVerificationRequest = Message<\"auth.v1.GetSocialVerificationRequest\"> & {\n /**\n * Provider account to inspect.\n *\n * @generated from field: auth.v1.SocialProvider provider = 1;\n */\n provider: SocialProvider;\n};\n\n/**\n * Describes the message auth.v1.GetSocialVerificationRequest.\n * Use `create(GetSocialVerificationRequestSchema)` to create a new message.\n */\nexport const GetSocialVerificationRequestSchema: GenMessage<GetSocialVerificationRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_social_verification, 5);\n\n/**\n * GetSocialVerificationResponse contains the caller's current social\n * verification state for one provider. A successful response with verification\n * absent means the caller has not started verification for that provider.\n *\n * @generated from message auth.v1.GetSocialVerificationResponse\n */\nexport type GetSocialVerificationResponse = Message<\"auth.v1.GetSocialVerificationResponse\"> & {\n /**\n * Current verification state for the requested provider. Absent when no\n * verification has been started.\n *\n * @generated from field: auth.v1.SocialVerification verification = 1;\n */\n verification?: SocialVerification | undefined;\n};\n\n/**\n * Describes the message auth.v1.GetSocialVerificationResponse.\n * Use `create(GetSocialVerificationResponseSchema)` to create a new message.\n */\nexport const GetSocialVerificationResponseSchema: GenMessage<GetSocialVerificationResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_social_verification, 6);\n\n/**\n * Social account provider used for account ownership verification.\n *\n * @generated from enum auth.v1.SocialProvider\n */\nexport enum SocialProvider {\n /**\n * No social provider was specified.\n *\n * @generated from enum value: PROVIDER_UNSPECIFIED = 0;\n */\n PROVIDER_UNSPECIFIED = 0,\n\n /**\n * X/Twitter account verification.\n *\n * @generated from enum value: TWITTER = 1;\n */\n TWITTER = 1,\n\n /**\n * Discord account verification.\n *\n * @generated from enum value: DISCORD = 2;\n */\n DISCORD = 2,\n}\n\n/**\n * Describes the enum auth.v1.SocialProvider.\n */\nexport const SocialProviderSchema: GenEnum<SocialProvider> = /*@__PURE__*/\n enumDesc(file_auth_v1_social_verification, 0);\n\n/**\n * Current state of a social account verification attempt.\n *\n * @generated from enum auth.v1.SocialVerificationStatus\n */\nexport enum SocialVerificationStatus {\n /**\n * No verification status was specified.\n *\n * @generated from enum value: STATUS_UNSPECIFIED = 0;\n */\n STATUS_UNSPECIFIED = 0,\n\n /**\n * Code issued; waiting for the user to complete the provider-specific action.\n *\n * @generated from enum value: STATUS_PENDING_USER_ACTION = 1;\n */\n STATUS_PENDING_USER_ACTION = 1,\n\n /**\n * User marked the code as placed and the verification check is waiting to run.\n *\n * @generated from enum value: STATUS_QUEUED = 2;\n */\n STATUS_QUEUED = 2,\n\n /**\n * Verification check is currently running.\n *\n * @generated from enum value: STATUS_IN_PROGRESS = 3;\n */\n STATUS_IN_PROGRESS = 3,\n\n /**\n * Provider account ownership was verified successfully.\n *\n * @generated from enum value: STATUS_VERIFIED = 4;\n */\n STATUS_VERIFIED = 4,\n\n /**\n * Verification failed. Start a new verification to receive a new challenge code.\n *\n * @generated from enum value: STATUS_FAILED = 5;\n */\n STATUS_FAILED = 5,\n\n /**\n * Challenge code expired before verification completed.\n *\n * @generated from enum value: STATUS_EXPIRED = 6;\n */\n STATUS_EXPIRED = 6,\n\n /**\n * Verification was cancelled.\n *\n * @generated from enum value: STATUS_CANCELLED = 7;\n */\n STATUS_CANCELLED = 7,\n}\n\n/**\n * Describes the enum auth.v1.SocialVerificationStatus.\n */\nexport const SocialVerificationStatusSchema: GenEnum<SocialVerificationStatus> = /*@__PURE__*/\n enumDesc(file_auth_v1_social_verification, 1);\n\n/**\n * How the user proves control of the provider account.\n *\n * @generated from enum auth.v1.SocialVerificationMethod\n */\nexport enum SocialVerificationMethod {\n /**\n * No method was specified. The provider default is used.\n *\n * @generated from enum value: METHOD_UNSPECIFIED = 0;\n */\n METHOD_UNSPECIFIED = 0,\n\n /**\n * User places the challenge code in their public provider profile.\n *\n * @generated from enum value: METHOD_PROFILE = 1;\n */\n METHOD_PROFILE = 1,\n\n /**\n * User posts the challenge code in a provider channel.\n *\n * @generated from enum value: METHOD_CHANNEL = 2;\n */\n METHOD_CHANNEL = 2,\n\n /**\n * User sends the challenge code in a direct message.\n *\n * @generated from enum value: METHOD_DM = 3;\n */\n METHOD_DM = 3,\n}\n\n/**\n * Describes the enum auth.v1.SocialVerificationMethod.\n */\nexport const SocialVerificationMethodSchema: GenEnum<SocialVerificationMethod> = /*@__PURE__*/\n enumDesc(file_auth_v1_social_verification, 2);\n\n/**\n * SocialVerificationService verifies ownership of external social accounts.\n *\n * @generated from service auth.v1.SocialVerificationService\n */\nexport const SocialVerificationService: GenService<{\n /**\n * Start or restart social verification by issuing a new challenge code.\n *\n * @generated from rpc auth.v1.SocialVerificationService.StartSocialVerification\n */\n startSocialVerification: {\n methodKind: \"unary\";\n input: typeof StartSocialVerificationRequestSchema;\n output: typeof StartSocialVerificationResponseSchema;\n },\n /**\n * Mark a verification as ready after the challenge code has been placed.\n *\n * @generated from rpc auth.v1.SocialVerificationService.SocialVerificationReady\n */\n socialVerificationReady: {\n methodKind: \"unary\";\n input: typeof SocialVerificationReadyRequestSchema;\n output: typeof SocialVerificationReadyResponseSchema;\n },\n /**\n * Get current verification status for the caller.\n *\n * @generated from rpc auth.v1.SocialVerificationService.GetSocialVerification\n */\n getSocialVerification: {\n methodKind: \"unary\";\n input: typeof GetSocialVerificationRequestSchema;\n output: typeof GetSocialVerificationResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_auth_v1_social_verification, 0);\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAaA,MAAa,mCACX,uBAAS,olFAAolF,CAAC,8BAA8B,CAAC;;;;;AA6G/nF,MAAa,2BACX,0BAAY,kCAAkC,CAAC;;;;;AAqCjD,MAAa,uCACX,0BAAY,kCAAkC,CAAC;;;;;AAmCjD,MAAa,wCACX,0BAAY,kCAAkC,CAAC;;;;;AAqBjD,MAAa,uCACX,0BAAY,kCAAkC,CAAC;;;;;AAqBjD,MAAa,wCACX,0BAAY,kCAAkC,CAAC;;;;;AAqBjD,MAAa,qCACX,0BAAY,kCAAkC,CAAC;;;;;AAuBjD,MAAa,sCACX,0BAAY,kCAAkC,CAAC;;;;;;AAOjD,IAAY,iBAAL,yBAAA,gBAAA;;;;;;CAML,eAAA,eAAA,0BAAA,KAAA;;;;;;CAOA,eAAA,eAAA,aAAA,KAAA;;;;;;CAOA,eAAA,eAAA,aAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,uBACX,uBAAS,kCAAkC,CAAC;;;;;;AAO9C,IAAY,2BAAL,yBAAA,0BAAA;;;;;;CAML,yBAAA,yBAAA,wBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,gCAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,mBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,wBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,qBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,mBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,oBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,sBAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,iCACX,uBAAS,kCAAkC,CAAC;;;;;;AAO9C,IAAY,2BAAL,yBAAA,0BAAA;;;;;;CAML,yBAAA,yBAAA,wBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,oBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,oBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,eAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,iCACX,uBAAS,kCAAkC,CAAC;;;;;;AAO9C,MAAa,4BAgCX,0BAAY,kCAAkC,CAAC"}
1
+ {"version":3,"file":"social_verification_pb.js","names":[],"sources":["../../../../src/gen/auth/v1/social_verification_pb.ts"],"sourcesContent":["// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file auth/v1/social_verification.proto (package auth.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file auth/v1/social_verification.proto.\n */\nexport const file_auth_v1_social_verification: GenFile = /*@__PURE__*/\n fileDesc(\"CiFhdXRoL3YxL3NvY2lhbF92ZXJpZmljYXRpb24ucHJvdG8SB2F1dGgudjEi3AMKElNvY2lhbFZlcmlmaWNhdGlvbhIKCgJpZBgMIAEoAxIpCghwcm92aWRlchgBIAEoDjIXLmF1dGgudjEuU29jaWFsUHJvdmlkZXISMQoGbWV0aG9kGAsgASgOMiEuYXV0aC52MS5Tb2NpYWxWZXJpZmljYXRpb25NZXRob2QSDgoGaGFuZGxlGAIgASgJEhgKEHByb3ZpZGVyX3VzZXJfaWQYAyABKAkSFgoOY2hhbGxlbmdlX2NvZGUYDSABKAkSMQoGc3RhdHVzGAQgASgOMiEuYXV0aC52MS5Tb2NpYWxWZXJpZmljYXRpb25TdGF0dXMSMAoMcmVxdWVzdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpleHBpcmVzX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgt2ZXJpZmllZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEAoIYXR0ZW1wdHMYCSABKAUSEgoKbGFzdF9lcnJvchgKIAEoCRIuCgp1cGRhdGVkX2F0GA8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKWAQoeU3RhcnRTb2NpYWxWZXJpZmljYXRpb25SZXF1ZXN0EisKCHByb3ZpZGVyGAEgASgOMhcuYXV0aC52MS5Tb2NpYWxQcm92aWRlckIAEjMKBm1ldGhvZBgDIAEoDjIhLmF1dGgudjEuU29jaWFsVmVyaWZpY2F0aW9uTWV0aG9kQgASEAoGaGFuZGxlGAIgASgJQgA6ACKcAQofU3RhcnRTb2NpYWxWZXJpZmljYXRpb25SZXNwb25zZRIWCg5jaGFsbGVuZ2VfY29kZRgBIAEoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCgx2ZXJpZmljYXRpb24YAyABKAsyGy5hdXRoLnYxLlNvY2lhbFZlcmlmaWNhdGlvbiJNCh5Tb2NpYWxWZXJpZmljYXRpb25SZWFkeVJlcXVlc3QSKwoIcHJvdmlkZXIYASABKA4yFy5hdXRoLnYxLlNvY2lhbFByb3ZpZGVyQgAiVAofU29jaWFsVmVyaWZpY2F0aW9uUmVhZHlSZXNwb25zZRIxCgx2ZXJpZmljYXRpb24YASABKAsyGy5hdXRoLnYxLlNvY2lhbFZlcmlmaWNhdGlvbiJLChxHZXRTb2NpYWxWZXJpZmljYXRpb25SZXF1ZXN0EisKCHByb3ZpZGVyGAEgASgOMhcuYXV0aC52MS5Tb2NpYWxQcm92aWRlckIAIlIKHUdldFNvY2lhbFZlcmlmaWNhdGlvblJlc3BvbnNlEjEKDHZlcmlmaWNhdGlvbhgBIAEoCzIbLmF1dGgudjEuU29jaWFsVmVyaWZpY2F0aW9uKkQKDlNvY2lhbFByb3ZpZGVyEhgKFFBST1ZJREVSX1VOU1BFQ0lGSUVEEAASCwoHVFdJVFRFUhABEgsKB0RJU0NPUkQQAirPAQoYU29jaWFsVmVyaWZpY2F0aW9uU3RhdHVzEhYKElNUQVRVU19VTlNQRUNJRklFRBAAEh4KGlNUQVRVU19QRU5ESU5HX1VTRVJfQUNUSU9OEAESEQoNU1RBVFVTX1FVRVVFRBACEhYKElNUQVRVU19JTl9QUk9HUkVTUxADEhMKD1NUQVRVU19WRVJJRklFRBAEEhEKDVNUQVRVU19GQUlMRUQQBRISCg5TVEFUVVNfRVhQSVJFRBAGEhQKEFNUQVRVU19DQU5DRUxMRUQQByppChhTb2NpYWxWZXJpZmljYXRpb25NZXRob2QSFgoSTUVUSE9EX1VOU1BFQ0lGSUVEEAASEgoOTUVUSE9EX1BST0ZJTEUQARISCg5NRVRIT0RfQ0hBTk5FTBACEg0KCU1FVEhPRF9ETRADMuUCChlTb2NpYWxWZXJpZmljYXRpb25TZXJ2aWNlEm4KF1N0YXJ0U29jaWFsVmVyaWZpY2F0aW9uEicuYXV0aC52MS5TdGFydFNvY2lhbFZlcmlmaWNhdGlvblJlcXVlc3QaKC5hdXRoLnYxLlN0YXJ0U29jaWFsVmVyaWZpY2F0aW9uUmVzcG9uc2UiABJuChdTb2NpYWxWZXJpZmljYXRpb25SZWFkeRInLmF1dGgudjEuU29jaWFsVmVyaWZpY2F0aW9uUmVhZHlSZXF1ZXN0GiguYXV0aC52MS5Tb2NpYWxWZXJpZmljYXRpb25SZWFkeVJlc3BvbnNlIgASaAoVR2V0U29jaWFsVmVyaWZpY2F0aW9uEiUuYXV0aC52MS5HZXRTb2NpYWxWZXJpZmljYXRpb25SZXF1ZXN0GiYuYXV0aC52MS5HZXRTb2NpYWxWZXJpZmljYXRpb25SZXNwb25zZSIAQjxaOmdpdGh1Yi5jb20vRmFicmljLUxhYnMvcG9seWVzdGVyLXNkay1nby9nZW4vYXV0aC92MTthdXRodjFiBnByb3RvMw==\", [file_google_protobuf_timestamp]);\n\n/**\n * SocialVerification describes the caller's current verification state for one\n * social provider.\n *\n * @generated from message auth.v1.SocialVerification\n */\nexport type SocialVerification = Message<\"auth.v1.SocialVerification\"> & {\n /**\n * Verification identifier.\n *\n * @generated from field: int64 id = 12;\n */\n id: bigint;\n\n /**\n * Provider account being verified.\n *\n * @generated from field: auth.v1.SocialProvider provider = 1;\n */\n provider: SocialProvider;\n\n /**\n * Method used for this verification. If unspecified at start time, the\n * provider default is used.\n *\n * @generated from field: auth.v1.SocialVerificationMethod method = 11;\n */\n method: SocialVerificationMethod;\n\n /**\n * Provider handle being verified. Handles are returned lowercase and without\n * a leading \"@\".\n *\n * @generated from field: string handle = 2;\n */\n handle: string;\n\n /**\n * Stable provider-side user identifier. Empty until verification succeeds.\n *\n * @generated from field: string provider_user_id = 3;\n */\n providerUserId: string;\n\n /**\n * Challenge code the user must submit according to the verification method.\n * Discord codes are returned only when a challenge is issued. Codes expire\n * after 15 minutes.\n *\n * @generated from field: string challenge_code = 13;\n */\n challengeCode: string;\n\n /**\n * Current verification status.\n *\n * @generated from field: auth.v1.SocialVerificationStatus status = 4;\n */\n status: SocialVerificationStatus;\n\n /**\n * Time in UTC when the current challenge code was issued.\n *\n * @generated from field: google.protobuf.Timestamp requested_at = 5;\n */\n requestedAt?: Timestamp | undefined;\n\n /**\n * Time in UTC when the current challenge code expires.\n *\n * @generated from field: google.protobuf.Timestamp expires_at = 6;\n */\n expiresAt?: Timestamp | undefined;\n\n /**\n * Time in UTC when verification succeeded. Empty until status is STATUS_VERIFIED.\n *\n * @generated from field: google.protobuf.Timestamp verified_at = 7;\n */\n verifiedAt?: Timestamp | undefined;\n\n /**\n * Number of recorded provider-check attempts for this challenge.\n *\n * @generated from field: int32 attempts = 9;\n */\n attempts: number;\n\n /**\n * Last verification error, if the most recent check failed. Empty when there\n * is no recorded error.\n *\n * @generated from field: string last_error = 10;\n */\n lastError: string;\n\n /**\n * Time in UTC when this verification state last changed.\n *\n * @generated from field: google.protobuf.Timestamp updated_at = 15;\n */\n updatedAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message auth.v1.SocialVerification.\n * Use `create(SocialVerificationSchema)` to create a new message.\n */\nexport const SocialVerificationSchema: GenMessage<SocialVerification> = /*@__PURE__*/\n messageDesc(file_auth_v1_social_verification, 0);\n\n/**\n * StartSocialVerificationRequest starts or restarts social account verification.\n * Starting again for the same provider replaces the previous challenge.\n *\n * @generated from message auth.v1.StartSocialVerificationRequest\n */\nexport type StartSocialVerificationRequest = Message<\"auth.v1.StartSocialVerificationRequest\"> & {\n /**\n * Provider account to verify.\n *\n * @generated from field: auth.v1.SocialProvider provider = 1;\n */\n provider: SocialProvider;\n\n /**\n * Verification method. If unspecified, profile verification is used for\n * X/Twitter and channel verification is used for Discord.\n *\n * @generated from field: auth.v1.SocialVerificationMethod method = 3;\n */\n method: SocialVerificationMethod;\n\n /**\n * Provider handle the user claims. Required for X/Twitter and omitted for\n * Discord, where the authenticated bot supplies the provider identity.\n * A leading \"@\" is accepted and removed from X/Twitter handles.\n *\n * @generated from field: string handle = 2;\n */\n handle: string;\n};\n\n/**\n * Describes the message auth.v1.StartSocialVerificationRequest.\n * Use `create(StartSocialVerificationRequestSchema)` to create a new message.\n */\nexport const StartSocialVerificationRequestSchema: GenMessage<StartSocialVerificationRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_social_verification, 1);\n\n/**\n * Response returned after starting social account verification.\n *\n * @generated from message auth.v1.StartSocialVerificationResponse\n */\nexport type StartSocialVerificationResponse = Message<\"auth.v1.StartSocialVerificationResponse\"> & {\n /**\n * Newly issued challenge code the user must submit according to the\n * verification method.\n *\n * @generated from field: string challenge_code = 1;\n */\n challengeCode: string;\n\n /**\n * Time in UTC when the challenge code expires. Social verification challenges\n * expire after 15 minutes.\n *\n * @generated from field: google.protobuf.Timestamp expires_at = 2;\n */\n expiresAt?: Timestamp | undefined;\n\n /**\n * Current verification state after issuing the challenge.\n *\n * @generated from field: auth.v1.SocialVerification verification = 3;\n */\n verification?: SocialVerification | undefined;\n};\n\n/**\n * Describes the message auth.v1.StartSocialVerificationResponse.\n * Use `create(StartSocialVerificationResponseSchema)` to create a new message.\n */\nexport const StartSocialVerificationResponseSchema: GenMessage<StartSocialVerificationResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_social_verification, 2);\n\n/**\n * SocialVerificationReadyRequest tells the API that the challenge code has been\n * placed and the provider account is ready to check.\n *\n * @generated from message auth.v1.SocialVerificationReadyRequest\n */\nexport type SocialVerificationReadyRequest = Message<\"auth.v1.SocialVerificationReadyRequest\"> & {\n /**\n * Provider account to check.\n *\n * @generated from field: auth.v1.SocialProvider provider = 1;\n */\n provider: SocialProvider;\n};\n\n/**\n * Describes the message auth.v1.SocialVerificationReadyRequest.\n * Use `create(SocialVerificationReadyRequestSchema)` to create a new message.\n */\nexport const SocialVerificationReadyRequestSchema: GenMessage<SocialVerificationReadyRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_social_verification, 3);\n\n/**\n * SocialVerificationReadyResponse returns the verification after it has been\n * queued for a provider check.\n *\n * @generated from message auth.v1.SocialVerificationReadyResponse\n */\nexport type SocialVerificationReadyResponse = Message<\"auth.v1.SocialVerificationReadyResponse\"> & {\n /**\n * Current verification state after the provider check was requested.\n *\n * @generated from field: auth.v1.SocialVerification verification = 1;\n */\n verification?: SocialVerification | undefined;\n};\n\n/**\n * Describes the message auth.v1.SocialVerificationReadyResponse.\n * Use `create(SocialVerificationReadyResponseSchema)` to create a new message.\n */\nexport const SocialVerificationReadyResponseSchema: GenMessage<SocialVerificationReadyResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_social_verification, 4);\n\n/**\n * GetSocialVerificationRequest fetches the caller's current social verification\n * state for one provider.\n *\n * @generated from message auth.v1.GetSocialVerificationRequest\n */\nexport type GetSocialVerificationRequest = Message<\"auth.v1.GetSocialVerificationRequest\"> & {\n /**\n * Provider account to inspect.\n *\n * @generated from field: auth.v1.SocialProvider provider = 1;\n */\n provider: SocialProvider;\n};\n\n/**\n * Describes the message auth.v1.GetSocialVerificationRequest.\n * Use `create(GetSocialVerificationRequestSchema)` to create a new message.\n */\nexport const GetSocialVerificationRequestSchema: GenMessage<GetSocialVerificationRequest> = /*@__PURE__*/\n messageDesc(file_auth_v1_social_verification, 5);\n\n/**\n * GetSocialVerificationResponse contains the caller's current social\n * verification state for one provider. A successful response with verification\n * absent means the caller has not started verification for that provider.\n *\n * @generated from message auth.v1.GetSocialVerificationResponse\n */\nexport type GetSocialVerificationResponse = Message<\"auth.v1.GetSocialVerificationResponse\"> & {\n /**\n * Current verification state for the requested provider. Absent when no\n * verification has been started.\n *\n * @generated from field: auth.v1.SocialVerification verification = 1;\n */\n verification?: SocialVerification | undefined;\n};\n\n/**\n * Describes the message auth.v1.GetSocialVerificationResponse.\n * Use `create(GetSocialVerificationResponseSchema)` to create a new message.\n */\nexport const GetSocialVerificationResponseSchema: GenMessage<GetSocialVerificationResponse> = /*@__PURE__*/\n messageDesc(file_auth_v1_social_verification, 6);\n\n/**\n * Social account provider used for account ownership verification.\n *\n * @generated from enum auth.v1.SocialProvider\n */\nexport enum SocialProvider {\n /**\n * No social provider was specified.\n *\n * @generated from enum value: PROVIDER_UNSPECIFIED = 0;\n */\n PROVIDER_UNSPECIFIED = 0,\n\n /**\n * X/Twitter account verification.\n *\n * @generated from enum value: TWITTER = 1;\n */\n TWITTER = 1,\n\n /**\n * Discord account verification.\n *\n * @generated from enum value: DISCORD = 2;\n */\n DISCORD = 2,\n}\n\n/**\n * Describes the enum auth.v1.SocialProvider.\n */\nexport const SocialProviderSchema: GenEnum<SocialProvider> = /*@__PURE__*/\n enumDesc(file_auth_v1_social_verification, 0);\n\n/**\n * Current state of a social account verification attempt.\n *\n * @generated from enum auth.v1.SocialVerificationStatus\n */\nexport enum SocialVerificationStatus {\n /**\n * No verification status was specified.\n *\n * @generated from enum value: STATUS_UNSPECIFIED = 0;\n */\n STATUS_UNSPECIFIED = 0,\n\n /**\n * Code issued; waiting for the user to complete the provider-specific action.\n *\n * @generated from enum value: STATUS_PENDING_USER_ACTION = 1;\n */\n STATUS_PENDING_USER_ACTION = 1,\n\n /**\n * User marked the code as placed and the verification check is waiting to run.\n *\n * @generated from enum value: STATUS_QUEUED = 2;\n */\n STATUS_QUEUED = 2,\n\n /**\n * Verification check is currently running.\n *\n * @generated from enum value: STATUS_IN_PROGRESS = 3;\n */\n STATUS_IN_PROGRESS = 3,\n\n /**\n * Provider account ownership was verified successfully.\n *\n * @generated from enum value: STATUS_VERIFIED = 4;\n */\n STATUS_VERIFIED = 4,\n\n /**\n * Verification failed. Start a new verification to receive a new challenge code.\n *\n * @generated from enum value: STATUS_FAILED = 5;\n */\n STATUS_FAILED = 5,\n\n /**\n * Challenge code expired before verification completed.\n *\n * @generated from enum value: STATUS_EXPIRED = 6;\n */\n STATUS_EXPIRED = 6,\n\n /**\n * Verification was cancelled.\n *\n * @generated from enum value: STATUS_CANCELLED = 7;\n */\n STATUS_CANCELLED = 7,\n}\n\n/**\n * Describes the enum auth.v1.SocialVerificationStatus.\n */\nexport const SocialVerificationStatusSchema: GenEnum<SocialVerificationStatus> = /*@__PURE__*/\n enumDesc(file_auth_v1_social_verification, 1);\n\n/**\n * How the user proves control of the provider account.\n *\n * @generated from enum auth.v1.SocialVerificationMethod\n */\nexport enum SocialVerificationMethod {\n /**\n * No method was specified. The provider default is used.\n *\n * @generated from enum value: METHOD_UNSPECIFIED = 0;\n */\n METHOD_UNSPECIFIED = 0,\n\n /**\n * User places the challenge code in their public provider profile.\n *\n * @generated from enum value: METHOD_PROFILE = 1;\n */\n METHOD_PROFILE = 1,\n\n /**\n * User posts the challenge code in a provider channel.\n *\n * @generated from enum value: METHOD_CHANNEL = 2;\n */\n METHOD_CHANNEL = 2,\n\n /**\n * User sends the challenge code in a direct message.\n *\n * @generated from enum value: METHOD_DM = 3;\n */\n METHOD_DM = 3,\n}\n\n/**\n * Describes the enum auth.v1.SocialVerificationMethod.\n */\nexport const SocialVerificationMethodSchema: GenEnum<SocialVerificationMethod> = /*@__PURE__*/\n enumDesc(file_auth_v1_social_verification, 2);\n\n/**\n * SocialVerificationService verifies ownership of external social accounts.\n *\n * @generated from service auth.v1.SocialVerificationService\n */\nexport const SocialVerificationService: GenService<{\n /**\n * Start or restart social verification by issuing a new challenge code.\n *\n * @generated from rpc auth.v1.SocialVerificationService.StartSocialVerification\n */\n startSocialVerification: {\n methodKind: \"unary\";\n input: typeof StartSocialVerificationRequestSchema;\n output: typeof StartSocialVerificationResponseSchema;\n },\n /**\n * Mark a verification as ready after the challenge code has been placed.\n *\n * @generated from rpc auth.v1.SocialVerificationService.SocialVerificationReady\n */\n socialVerificationReady: {\n methodKind: \"unary\";\n input: typeof SocialVerificationReadyRequestSchema;\n output: typeof SocialVerificationReadyResponseSchema;\n },\n /**\n * Get current verification status for the caller.\n *\n * @generated from rpc auth.v1.SocialVerificationService.GetSocialVerification\n */\n getSocialVerification: {\n methodKind: \"unary\";\n input: typeof GetSocialVerificationRequestSchema;\n output: typeof GetSocialVerificationResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_auth_v1_social_verification, 0);\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAaA,MAAa,mCACX,uBAAS,olFAAolF,CAAC,8BAA8B,CAAC;;;;;AA8G/nF,MAAa,2BACX,0BAAY,kCAAkC,CAAC;;;;;AAsCjD,MAAa,uCACX,0BAAY,kCAAkC,CAAC;;;;;AAoCjD,MAAa,wCACX,0BAAY,kCAAkC,CAAC;;;;;AAqBjD,MAAa,uCACX,0BAAY,kCAAkC,CAAC;;;;;AAqBjD,MAAa,wCACX,0BAAY,kCAAkC,CAAC;;;;;AAqBjD,MAAa,qCACX,0BAAY,kCAAkC,CAAC;;;;;AAuBjD,MAAa,sCACX,0BAAY,kCAAkC,CAAC;;;;;;AAOjD,IAAY,iBAAL,yBAAA,gBAAA;;;;;;CAML,eAAA,eAAA,0BAAA,KAAA;;;;;;CAOA,eAAA,eAAA,aAAA,KAAA;;;;;;CAOA,eAAA,eAAA,aAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,uBACX,uBAAS,kCAAkC,CAAC;;;;;;AAO9C,IAAY,2BAAL,yBAAA,0BAAA;;;;;;CAML,yBAAA,yBAAA,wBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,gCAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,mBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,wBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,qBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,mBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,oBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,sBAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,iCACX,uBAAS,kCAAkC,CAAC;;;;;;AAO9C,IAAY,2BAAL,yBAAA,0BAAA;;;;;;CAML,yBAAA,yBAAA,wBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,oBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,oBAAA,KAAA;;;;;;CAOA,yBAAA,yBAAA,eAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,iCACX,uBAAS,kCAAkC,CAAC;;;;;;AAO9C,MAAa,4BAgCX,0BAAY,kCAAkC,CAAC"}