@polyester/sdk 0.21.1 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +5 -0
- package/dist/catalogs/snapshot-validation.js +0 -1
- package/dist/catalogs/snapshot-validation.js.map +1 -1
- package/dist/catalogs/zipper-catalog.d.ts +0 -3
- package/dist/catalogs/zipper-catalog.d.ts.map +1 -1
- package/dist/catalogs/zipper-catalog.js +0 -1
- package/dist/catalogs/zipper-catalog.js.map +1 -1
- package/dist/environment.js +43 -1
- package/dist/environment.js.map +1 -1
- package/dist/gen/chain/zipper/v1/zipper_pb.d.ts +0 -6
- package/dist/gen/chain/zipper/v1/zipper_pb.d.ts.map +1 -1
- package/dist/gen/chain/zipper/v1/zipper_pb.js +1 -1
- package/dist/gen/chain/zipper/v1/zipper_pb.js.map +1 -1
- package/dist/gen/marketoverview/v1/marketoverview_pb.d.ts +236 -8
- package/dist/gen/marketoverview/v1/marketoverview_pb.d.ts.map +1 -1
- package/dist/gen/marketoverview/v1/marketoverview_pb.js +50 -2
- package/dist/gen/marketoverview/v1/marketoverview_pb.js.map +1 -1
- package/dist/gen/orders/v1/orders_pb.d.ts +9 -6
- package/dist/gen/orders/v1/orders_pb.d.ts.map +1 -1
- package/dist/gen/orders/v1/orders_pb.js.map +1 -1
- package/dist/gen/orders/v1/orders_read_pb.d.ts +2 -1
- package/dist/gen/orders/v1/orders_read_pb.d.ts.map +1 -1
- package/dist/gen/orders/v1/orders_read_pb.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/services/lifecycle/lifecycle.schemas.d.ts +42 -42
- package/dist/services/market-overview/index.d.ts +2 -2
- package/dist/services/market-overview/market-overview.d.ts +9 -1
- package/dist/services/market-overview/market-overview.d.ts.map +1 -1
- package/dist/services/market-overview/market-overview.js +15 -1
- package/dist/services/market-overview/market-overview.js.map +1 -1
- package/dist/services/market-overview/market-overview.schemas.d.ts +160 -1
- package/dist/services/market-overview/market-overview.schemas.d.ts.map +1 -1
- package/dist/services/market-overview/market-overview.schemas.js +46 -1
- package/dist/services/market-overview/market-overview.schemas.js.map +1 -1
- package/dist/services/market-overview/market-overview.types.d.ts +2 -2
- package/dist/services/orders/orders-output.schemas.d.ts +12 -12
- package/dist/services/orders/orders.d.ts +1 -1
- package/dist/services/orders/orders.d.ts.map +1 -1
- package/dist/services/orders/orders.js +10 -3
- package/dist/services/orders/orders.js.map +1 -1
- package/dist/services/subaccounts/subaccounts.schemas.d.ts +1 -1
- package/dist/services/trading-withdraws/trading-withdraws.schemas.d.ts.map +1 -1
- package/dist/services/trading-withdraws/trading-withdraws.schemas.js +3 -5
- package/dist/services/trading-withdraws/trading-withdraws.schemas.js.map +1 -1
- package/dist/services/triggers/trigger-input.schemas.d.ts +2 -2
- package/dist/services/triggers/triggers-output.schemas.d.ts +18 -18
- package/dist/services/zipper/zipper.schemas.d.ts.map +1 -1
- package/dist/services/zipper/zipper.schemas.js +0 -1
- package/dist/services/zipper/zipper.schemas.js.map +1 -1
- package/dist/shared/catalog-config.d.ts +0 -1
- package/dist/shared/catalog-config.d.ts.map +1 -1
- package/dist/shared/catalog-config.js.map +1 -1
- package/dist/shared/errors.d.ts +3 -2
- package/dist/shared/errors.d.ts.map +1 -1
- package/dist/shared/errors.js +3 -2
- package/dist/shared/errors.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @polyester/sdk
|
|
2
2
|
|
|
3
|
+
## 0.22.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- feat(sdk)!: add currency conversion config and rates; remove `polyesterChainId` from Zipper config and catalogs. ([#129](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/129))
|
|
8
|
+
|
|
9
|
+
- feat: add testnet environment ([#130](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/130))
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Require Web Crypto for generated trading-withdraw nonces and order mutation request IDs, with a secure random-byte fallback when `randomUUID` is unavailable. ([#127](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/127))
|
|
14
|
+
|
|
3
15
|
## 0.21.1
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -5,6 +5,11 @@ balances, transfers, auth, and realtime streams over ConnectRPC.
|
|
|
5
5
|
|
|
6
6
|
Works in browsers, Node, Bun, and edge runtimes. ESM only.
|
|
7
7
|
|
|
8
|
+
Trading withdrawal payloads require WebCrypto `crypto.getRandomValues` to
|
|
9
|
+
generate nonces. Automatically generated order mutation request IDs require
|
|
10
|
+
`crypto.randomUUID` or `crypto.getRandomValues`; callers can also provide an
|
|
11
|
+
explicit `requestId`. Missing secure randomness raises `ConfigurationError`.
|
|
12
|
+
|
|
8
13
|
## Install
|
|
9
14
|
|
|
10
15
|
```bash
|
|
@@ -92,7 +92,6 @@ const CatalogSnapshotShapeSchema = v.object({
|
|
|
92
92
|
chains: v.array(ZipperChainConfigSchema),
|
|
93
93
|
assets: v.array(ZipperEnrichedAssetConfigSchema),
|
|
94
94
|
contracts: v.array(ZipperChainContractConfigSchema),
|
|
95
|
-
polyesterChainId: v.optional(IntegerSchema),
|
|
96
95
|
tsMs: v.optional(FiniteNumberSchema)
|
|
97
96
|
})
|
|
98
97
|
});
|
|
@@ -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 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
|
|
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 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,mBAAmB,EAAE,SAAS,aAAa;CAC3C,oBAAoB,EAAE,SAAS,aAAa;CAC5C,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,MAAa,6BAA6B,EAAE,OAAO;CAC/C,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"}
|
|
@@ -20,15 +20,12 @@ 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;
|
|
25
23
|
readonly tsMs?: number;
|
|
26
24
|
}
|
|
27
25
|
type ZipperCatalogSeed = DepositWithdrawConfig | {
|
|
28
26
|
readonly chains: readonly ZipperChainConfig[];
|
|
29
27
|
readonly assets: readonly (ZipperAssetConfig | ZipperEnrichedAssetConfig)[];
|
|
30
28
|
readonly contracts?: readonly ZipperChainContractConfig[];
|
|
31
|
-
readonly polyesterChainId?: number;
|
|
32
29
|
readonly tsMs?: number;
|
|
33
30
|
};
|
|
34
31
|
//#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
|
|
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 +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
|
|
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 ...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 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,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,MAAM,KAAK;CACf,CAAC;AACL"}
|
package/dist/environment.js
CHANGED
|
@@ -157,7 +157,7 @@ const POLYESTER_DEVNET_ENVIRONMENT = createPolyesterEnvironment({
|
|
|
157
157
|
rpcUrls: { default: { http: ["https://rpc.polyester.tech"] } },
|
|
158
158
|
blockExplorers: { default: {
|
|
159
159
|
name: "Polyester Scan",
|
|
160
|
-
url: "https://polyesterscan.com"
|
|
160
|
+
url: "https://devnet.polyesterscan.com"
|
|
161
161
|
} },
|
|
162
162
|
contracts: { multicall3: {
|
|
163
163
|
address: "0xF35A6AE5408fa1356064849D0BC3855f801aa6aC",
|
|
@@ -183,6 +183,48 @@ const POLYESTER_DEVNET_ENVIRONMENT = createPolyesterEnvironment({
|
|
|
183
183
|
},
|
|
184
184
|
contracts: { tradingGatewayAddress: "0xD3fecf5D39131e23b6B0f872cA0a21c8A5a30932" }
|
|
185
185
|
});
|
|
186
|
+
createPolyesterEnvironment({
|
|
187
|
+
name: "polyester-testnet",
|
|
188
|
+
apiUrl: "https://api-testnet.polyester.com",
|
|
189
|
+
websocketUrl: "wss://api-testnet.polyester.com",
|
|
190
|
+
rpcUrl: "https://rpc.polyester.live",
|
|
191
|
+
chain: {
|
|
192
|
+
id: 888168,
|
|
193
|
+
name: "Polyester Chain Devnet",
|
|
194
|
+
nativeCurrency: {
|
|
195
|
+
decimals: 18,
|
|
196
|
+
name: "POL",
|
|
197
|
+
symbol: "POL"
|
|
198
|
+
},
|
|
199
|
+
rpcUrls: { default: { http: ["https://rpc.polyester.live"] } },
|
|
200
|
+
blockExplorers: { default: {
|
|
201
|
+
name: "Polyester Scan",
|
|
202
|
+
url: "https://testnet.polyesterscan.com"
|
|
203
|
+
} },
|
|
204
|
+
contracts: { multicall3: {
|
|
205
|
+
address: "0xF35A6AE5408fa1356064849D0BC3855f801aa6aC",
|
|
206
|
+
blockCreated: 179823
|
|
207
|
+
} }
|
|
208
|
+
},
|
|
209
|
+
accountAbstraction: {
|
|
210
|
+
bundlerUrl: "https://bundler.polyester.live",
|
|
211
|
+
paymasterUrl: "https://paymaster.polyester.live",
|
|
212
|
+
entryPoint: {
|
|
213
|
+
address: "0x35c524a72ffb4D348d616cDD340D176c8f3C8B2C",
|
|
214
|
+
version: "0.7"
|
|
215
|
+
},
|
|
216
|
+
safe: {
|
|
217
|
+
version: "1.4.1",
|
|
218
|
+
safeModuleSetupAddress: "0xdA9510c95Ab50EAd5A3DD28FA6BACce497dCF1fB",
|
|
219
|
+
safe4337ModuleAddress: "0xE278E4BCb71b095f7dAaa1bcEc1950696Fc40C74",
|
|
220
|
+
safeProxyFactoryAddress: "0x2b8250158D58dD6D5e89313fa940586C9054A547",
|
|
221
|
+
safeSingletonAddress: "0x6f00AB12B6A8aFf400F14f4Cd738549f0F53390d",
|
|
222
|
+
multiSendAddress: "0xA38fEFA19ff5d8E3d988b2a0e6C8A2ae099fd97D",
|
|
223
|
+
multiSendCallOnlyAddress: "0xE99b6c6d550B322347EeE11f4e8643377D8475A8"
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
contracts: { tradingGatewayAddress: "0x20ef1BCeE69D73Ce1649E688dAA9A7AcF441f0EE" }
|
|
227
|
+
});
|
|
186
228
|
//#endregion
|
|
187
229
|
export { POLYESTER_DEVNET_ENVIRONMENT, createPolyesterEnvironment, parsePolyesterEnvironment };
|
|
188
230
|
|
package/dist/environment.js.map
CHANGED
|
@@ -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_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":"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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://devnet.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\nexport const POLYESTER_TESTNET_ENVIRONMENT = createPolyesterEnvironment({\n name: \"polyester-testnet\",\n apiUrl: \"https://api-testnet.polyester.com\",\n websocketUrl: \"wss://api-testnet.polyester.com\",\n rpcUrl: \"https://rpc.polyester.live\",\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.live\"],\n },\n },\n blockExplorers: {\n default: {\n name: \"Polyester Scan\",\n url: \"https://testnet.polyesterscan.com\",\n },\n },\n contracts: {\n multicall3: {\n address: \"0xF35A6AE5408fa1356064849D0BC3855f801aa6aC\",\n blockCreated: 179823,\n },\n },\n },\n accountAbstraction: {\n bundlerUrl: \"https://bundler.polyester.live\",\n paymasterUrl: \"https://paymaster.polyester.live\",\n entryPoint: {\n address: \"0x35c524a72ffb4D348d616cDD340D176c8f3C8B2C\",\n version: \"0.7\",\n },\n safe: {\n version: \"1.4.1\",\n safeModuleSetupAddress: \"0xdA9510c95Ab50EAd5A3DD28FA6BACce497dCF1fB\",\n safe4337ModuleAddress: \"0xE278E4BCb71b095f7dAaa1bcEc1950696Fc40C74\",\n safeProxyFactoryAddress: \"0x2b8250158D58dD6D5e89313fa940586C9054A547\",\n safeSingletonAddress: \"0x6f00AB12B6A8aFf400F14f4Cd738549f0F53390d\",\n multiSendAddress: \"0xA38fEFA19ff5d8E3d988b2a0e6C8A2ae099fd97D\",\n multiSendCallOnlyAddress: \"0xE99b6c6d550B322347EeE11f4e8643377D8475A8\",\n },\n },\n contracts: {\n tradingGatewayAddress: \"0x20ef1BCeE69D73Ce1649E688dAA9A7AcF441f0EE\",\n },\n});\n"],"mappings":"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"}
|
|
@@ -356,12 +356,6 @@ type GetDepositWithdrawConfigResponse = Message<"chain.zipper.v1.GetDepositWithd
|
|
|
356
356
|
* @generated from field: uint64 ts_sec = 3;
|
|
357
357
|
*/
|
|
358
358
|
tsSec: bigint;
|
|
359
|
-
/**
|
|
360
|
-
* Polyester chain id used by all zToken addresses in `assets.variants`.
|
|
361
|
-
*
|
|
362
|
-
* @generated from field: uint32 polyester_chain_id = 4;
|
|
363
|
-
*/
|
|
364
|
-
polyesterChainId: number;
|
|
365
359
|
/**
|
|
366
360
|
* Active Polyester-chain contracts ordered by contract name.
|
|
367
361
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zipper_pb.d.ts","names":[],"sources":["../../../../../src/gen/chain/zipper/v1/zipper_pb.ts"],"mappings":";;;;;;;;cAYa,6BAA6B;;;;;;KAQ9B,cAAc;;;;;;EAMxB;;;;;;EAOA;;;;;;EAOA;;;;;;;;EASA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;cAOW,mBAAmB,WAAW;;;;;;;KAS/B,oBAAoB;;;;;;EAM9B;;;;;;EAOA;;;;;;EAOA;;;;;;;EAQA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;;EAQA;;;;;;cAOW,yBAAyB,WAAW;;;;;;;KASrC,0BAA0B;;;;;;EAMpC;;;;;;;EAQA;;;;;;cAOW,+BAA+B,WAAW;;;;;;KAQ3C,yBAAyB;;;;;;EAMnC,SAAS;;;;;;cAOE,8BAA8B,WAAW;;;;;;;KAS1C,cAAc;;;;;;EAMxB;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;;;EASA;;;;;;EAOA;;;;;;EAOA,UAAU;;;;;;EAOV;;;;;;cAOW,mBAAmB,WAAW;;;;;;;KAS/B,sBAAsB;;;;;;EAMhC;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;;EAQA;;;;;;cAOW,2BAA2B,WAAW;;;;KAMvC,kCAAkC;;;;;cAOjC,uCAAuC,WAAW;;;;KAMnD,mCAAmC;;;;;;EAM7C,QAAQ;;;;;;EAOR,QAAQ;;;;;;EAOR;;;;;;EAOA
|
|
1
|
+
{"version":3,"file":"zipper_pb.d.ts","names":[],"sources":["../../../../../src/gen/chain/zipper/v1/zipper_pb.ts"],"mappings":";;;;;;;;cAYa,6BAA6B;;;;;;KAQ9B,cAAc;;;;;;EAMxB;;;;;;EAOA;;;;;;EAOA;;;;;;;;EASA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;cAOW,mBAAmB,WAAW;;;;;;;KAS/B,oBAAoB;;;;;;EAM9B;;;;;;EAOA;;;;;;EAOA;;;;;;;EAQA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;;EAQA;;;;;;cAOW,yBAAyB,WAAW;;;;;;;KASrC,0BAA0B;;;;;;EAMpC;;;;;;;EAQA;;;;;;cAOW,+BAA+B,WAAW;;;;;;KAQ3C,yBAAyB;;;;;;EAMnC,SAAS;;;;;;cAOE,8BAA8B,WAAW;;;;;;;KAS1C,cAAc;;;;;;EAMxB;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;;;EASA;;;;;;EAOA;;;;;;EAOA,UAAU;;;;;;EAOV;;;;;;cAOW,mBAAmB,WAAW;;;;;;;KAS/B,sBAAsB;;;;;;EAMhC;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;;EAQA;;;;;;cAOW,2BAA2B,WAAW;;;;KAMvC,kCAAkC;;;;;cAOjC,uCAAuC,WAAW;;;;KAMnD,mCAAmC;;;;;;EAM7C,QAAQ;;;;;;EAOR,QAAQ;;;;;;EAOR;;;;;;EAOA,WAAW;;;;;;cAOA,wCAAwC,WAAW;;;;;;cAQnD,eAAe;;;;;;EAM1B;IACE;IACA,cAAc;IACd,eAAe"}
|
|
@@ -17,7 +17,7 @@ var zipper_pb_exports = /* @__PURE__ */ __exportAll({
|
|
|
17
17
|
/**
|
|
18
18
|
* Describes the file chain/zipper/v1/zipper.proto.
|
|
19
19
|
*/
|
|
20
|
-
const file_chain_zipper_v1_zipper = /*@__PURE__*/ fileDesc("
|
|
20
|
+
const file_chain_zipper_v1_zipper = /*@__PURE__*/ fileDesc("ChxjaGFpbi96aXBwZXIvdjEvemlwcGVyLnByb3RvEg9jaGFpbi56aXBwZXIudjEirgIKC0NoYWluQ29uZmlnEhAKCGNoYWluX2lkGAEgASgNEgwKBGNvZGUYAiABKAkSDAoEbmFtZRgDIAEoCRIXCg9uYXRpdmVfY2hhaW5faWQYBCABKAkSHgoWbmF0aXZlX2N1cnJlbmN5X3N5bWJvbBgFIAEoCRIUCgxleHBsb3Jlcl91cmwYBiABKAkSDAoEaWNvbhgHIAEoCRIeChZyZXF1aXJlZF9jb25maXJtYXRpb25zGAggASgNEiEKGWNvbmZpcm1hdGlvbl90aW1lX3NlY29uZHMYCSABKA0SGQoRaXNfY2FzZV9zZW5zaXRpdmUYCiABKAgSGgoSbWluX2FkZHJlc3NfbGVuZ3RoGAsgASgNEhoKEm1heF9hZGRyZXNzX2xlbmd0aBgMIAEoDSKZAgoRQXNzZXRDaGFpblZhcmlhbnQSFwoPemlwcGVkX2Fzc2V0X2lkGAEgASgNEhAKCGNoYWluX2lkGAIgASgNEhcKD2lzX25hdGl2ZV9hc3NldBgDIAEoCBITCgtuZXR3b3JrX2ZlZRgEIAEoCRIWCg56dG9rZW5fYWRkcmVzcxgGIAEoCRIWCg5zb3VyY2VfYWRkcmVzcxgHIAEoCRIXCg9zb3VyY2VfZGVjaW1hbHMYCCABKA0SFwoPenRva2VuX2RlY2ltYWxzGAkgASgNEhoKEmRlcG9zaXRfbWluX2Ftb3VudBgKIAEoCRIbChN3aXRoZHJhd19taW5fYW1vdW50GAsgASgJEhAKCHN1cHBseV9xGAwgASgEIkQKF1ppcHBlZEFzc2V0U3VwcGx5VXBkYXRlEhcKD3ppcHBlZF9hc3NldF9pZBgBIAEoDRIQCghzdXBwbHlfcRgCIAEoBCJTChZaaXBwZWRBc3NldFN1cHBseUJhdGNoEjkKB3VwZGF0ZXMYASADKAsyKC5jaGFpbi56aXBwZXIudjEuWmlwcGVkQXNzZXRTdXBwbHlVcGRhdGUi0AEKC0Fzc2V0Q29uZmlnEg0KBWFzc2V0GAEgASgJEhEKCWxlZGdlcl9pZBgCIAEoDRIMCgRuYW1lGAMgASgJEgwKBGljb24YBCABKAkSFgoOcXVhbnRpdHlfc2NhbGUYBSABKA0SIQoZcXVhbnRpdHlfZGlzcGxheV9kZWNpbWFscxgGIAEoDRI0Cgh2YXJpYW50cxgHIAMoCzIiLmNoYWluLnppcHBlci52MS5Bc3NldENoYWluVmFyaWFudBISCgp1X2Fzc2V0X2lkGAggASgJImgKE0NoYWluQ29udHJhY3RDb25maWcSDAoEbmFtZRgBIAEoCRIPCgdhZGRyZXNzGAIgASgJEgwKBHR5cGUYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSDwoHdmVyc2lvbhgFIAEoDSIhCh9HZXREZXBvc2l0V2l0aGRyYXdDb25maWdSZXF1ZXN0IscBCiBHZXREZXBvc2l0V2l0aGRyYXdDb25maWdSZXNwb25zZRIsCgZjaGFpbnMYASADKAsyHC5jaGFpbi56aXBwZXIudjEuQ2hhaW5Db25maWcSLAoGYXNzZXRzGAIgAygLMhwuY2hhaW4uemlwcGVyLnYxLkFzc2V0Q29uZmlnEg4KBnRzX3NlYxgDIAEoBBI3Cgljb250cmFjdHMYBSADKAsyJC5jaGFpbi56aXBwZXIudjEuQ2hhaW5Db250cmFjdENvbmZpZzKTAQoNWmlwcGVyU2VydmljZRKBAQoYR2V0RGVwb3NpdFdpdGhkcmF3Q29uZmlnEjAuY2hhaW4uemlwcGVyLnYxLkdldERlcG9zaXRXaXRoZHJhd0NvbmZpZ1JlcXVlc3QaMS5jaGFpbi56aXBwZXIudjEuR2V0RGVwb3NpdFdpdGhkcmF3Q29uZmlnUmVzcG9uc2UiAEJLWklnaXRodWIuY29tL0ZhYnJpYy1MYWJzL3BvbHllc3Rlci1zZGstZ28vZ2VuL2NoYWluL3ppcHBlci92MTtjaGFpbnppcHBlcnYxYgZwcm90bzM=", [file_polyester_api_options]);
|
|
21
21
|
/**
|
|
22
22
|
* Describes the message chain.zipper.v1.ChainConfig.
|
|
23
23
|
* Use `create(ChainConfigSchema)` to create a new message.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zipper_pb.js","names":[],"sources":["../../../../../src/gen/chain/zipper/v1/zipper_pb.ts"],"sourcesContent":["// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file chain/zipper/v1/zipper.proto (package chain.zipper.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_polyester_api_options } from \"../../../polyester/api/options_pb.js\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file chain/zipper/v1/zipper.proto.\n */\nexport const file_chain_zipper_v1_zipper: GenFile = /*@__PURE__*/\n fileDesc(\"ChxjaGFpbi96aXBwZXIvdjEvemlwcGVyLnByb3RvEg9jaGFpbi56aXBwZXIudjEirgIKC0NoYWluQ29uZmlnEhAKCGNoYWluX2lkGAEgASgNEgwKBGNvZGUYAiABKAkSDAoEbmFtZRgDIAEoCRIXCg9uYXRpdmVfY2hhaW5faWQYBCABKAkSHgoWbmF0aXZlX2N1cnJlbmN5X3N5bWJvbBgFIAEoCRIUCgxleHBsb3Jlcl91cmwYBiABKAkSDAoEaWNvbhgHIAEoCRIeChZyZXF1aXJlZF9jb25maXJtYXRpb25zGAggASgNEiEKGWNvbmZpcm1hdGlvbl90aW1lX3NlY29uZHMYCSABKA0SGQoRaXNfY2FzZV9zZW5zaXRpdmUYCiABKAgSGgoSbWluX2FkZHJlc3NfbGVuZ3RoGAsgASgNEhoKEm1heF9hZGRyZXNzX2xlbmd0aBgMIAEoDSKZAgoRQXNzZXRDaGFpblZhcmlhbnQSFwoPemlwcGVkX2Fzc2V0X2lkGAEgASgNEhAKCGNoYWluX2lkGAIgASgNEhcKD2lzX25hdGl2ZV9hc3NldBgDIAEoCBITCgtuZXR3b3JrX2ZlZRgEIAEoCRIWCg56dG9rZW5fYWRkcmVzcxgGIAEoCRIWCg5zb3VyY2VfYWRkcmVzcxgHIAEoCRIXCg9zb3VyY2VfZGVjaW1hbHMYCCABKA0SFwoPenRva2VuX2RlY2ltYWxzGAkgASgNEhoKEmRlcG9zaXRfbWluX2Ftb3VudBgKIAEoCRIbChN3aXRoZHJhd19taW5fYW1vdW50GAsgASgJEhAKCHN1cHBseV9xGAwgASgEIkQKF1ppcHBlZEFzc2V0U3VwcGx5VXBkYXRlEhcKD3ppcHBlZF9hc3NldF9pZBgBIAEoDRIQCghzdXBwbHlfcRgCIAEoBCJTChZaaXBwZWRBc3NldFN1cHBseUJhdGNoEjkKB3VwZGF0ZXMYASADKAsyKC5jaGFpbi56aXBwZXIudjEuWmlwcGVkQXNzZXRTdXBwbHlVcGRhdGUi0AEKC0Fzc2V0Q29uZmlnEg0KBWFzc2V0GAEgASgJEhEKCWxlZGdlcl9pZBgCIAEoDRIMCgRuYW1lGAMgASgJEgwKBGljb24YBCABKAkSFgoOcXVhbnRpdHlfc2NhbGUYBSABKA0SIQoZcXVhbnRpdHlfZGlzcGxheV9kZWNpbWFscxgGIAEoDRI0Cgh2YXJpYW50cxgHIAMoCzIiLmNoYWluLnppcHBlci52MS5Bc3NldENoYWluVmFyaWFudBISCgp1X2Fzc2V0X2lkGAggASgJImgKE0NoYWluQ29udHJhY3RDb25maWcSDAoEbmFtZRgBIAEoCRIPCgdhZGRyZXNzGAIgASgJEgwKBHR5cGUYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSDwoHdmVyc2lvbhgFIAEoDSIhCh9HZXREZXBvc2l0V2l0aGRyYXdDb25maWdSZXF1ZXN0IuMBCiBHZXREZXBvc2l0V2l0aGRyYXdDb25maWdSZXNwb25zZRIsCgZjaGFpbnMYASADKAsyHC5jaGFpbi56aXBwZXIudjEuQ2hhaW5Db25maWcSLAoGYXNzZXRzGAIgAygLMhwuY2hhaW4uemlwcGVyLnYxLkFzc2V0Q29uZmlnEg4KBnRzX3NlYxgDIAEoBBIaChJwb2x5ZXN0ZXJfY2hhaW5faWQYBCABKA0SNwoJY29udHJhY3RzGAUgAygLMiQuY2hhaW4uemlwcGVyLnYxLkNoYWluQ29udHJhY3RDb25maWcykwEKDVppcHBlclNlcnZpY2USgQEKGEdldERlcG9zaXRXaXRoZHJhd0NvbmZpZxIwLmNoYWluLnppcHBlci52MS5HZXREZXBvc2l0V2l0aGRyYXdDb25maWdSZXF1ZXN0GjEuY2hhaW4uemlwcGVyLnYxLkdldERlcG9zaXRXaXRoZHJhd0NvbmZpZ1Jlc3BvbnNlIgBCS1pJZ2l0aHViLmNvbS9GYWJyaWMtTGFicy9wb2x5ZXN0ZXItc2RrLWdvL2dlbi9jaGFpbi96aXBwZXIvdjE7Y2hhaW56aXBwZXJ2MWIGcHJvdG8z\", [file_polyester_api_options]);\n\n/**\n * ChainConfig describes one supported external chain for deposit and withdraw.\n *\n * @generated from message chain.zipper.v1.ChainConfig\n */\nexport type ChainConfig = Message<\"chain.zipper.v1.ChainConfig\"> & {\n /**\n * PolyChain-registered chain id used across Zipper and lifecycle events.\n *\n * @generated from field: uint32 chain_id = 1;\n */\n chainId: number;\n\n /**\n * Stable machine-friendly chain key (for example: \"ethereum\", \"solana\").\n *\n * @generated from field: string code = 2;\n */\n code: string;\n\n /**\n * Human-friendly display name.\n *\n * @generated from field: string name = 3;\n */\n name: string;\n\n /**\n * Native source-chain network identifier when useful for wallet or explorer\n * integrations. For EVM chains this is the EIP-155 chain id; non-EVM chains\n * may omit this and should be identified by `chain_id` and `code`.\n *\n * @generated from field: string native_chain_id = 4;\n */\n nativeChainId: string;\n\n /**\n * Native gas token symbol for this chain (for example: ETH, BTC, SOL).\n *\n * @generated from field: string native_currency_symbol = 5;\n */\n nativeCurrencySymbol: string;\n\n /**\n * Optional block explorer base URL for links.\n *\n * @generated from field: string explorer_url = 6;\n */\n explorerUrl: string;\n\n /**\n * Optional icon reference for UI display.\n *\n * @generated from field: string icon = 7;\n */\n icon: string;\n\n /**\n * Default required source-chain confirmations when known.\n *\n * @generated from field: uint32 required_confirmations = 8;\n */\n requiredConfirmations: number;\n\n /**\n * Estimated average confirmation time in seconds when known.\n *\n * @generated from field: uint32 confirmation_time_seconds = 9;\n */\n confirmationTimeSeconds: number;\n\n /**\n * True when source-chain addresses must preserve letter case.\n *\n * @generated from field: bool is_case_sensitive = 10;\n */\n isCaseSensitive: boolean;\n\n /**\n * Inclusive minimum source-chain address length for validation.\n *\n * @generated from field: uint32 min_address_length = 11;\n */\n minAddressLength: number;\n\n /**\n * Inclusive maximum source-chain address length for validation.\n *\n * @generated from field: uint32 max_address_length = 12;\n */\n maxAddressLength: number;\n};\n\n/**\n * Describes the message chain.zipper.v1.ChainConfig.\n * Use `create(ChainConfigSchema)` to create a new message.\n */\nexport const ChainConfigSchema: GenMessage<ChainConfig> = /*@__PURE__*/\n messageDesc(file_chain_zipper_v1_zipper, 0);\n\n/**\n * AssetChainVariant describes one chain route that can be used to deposit into\n * or withdraw from a unified Polyester asset.\n *\n * @generated from message chain.zipper.v1.AssetChainVariant\n */\nexport type AssetChainVariant = Message<\"chain.zipper.v1.AssetChainVariant\"> & {\n /**\n * Canonical zipped asset route id.\n *\n * @generated from field: uint32 zipped_asset_id = 1;\n */\n zippedAssetId: number;\n\n /**\n * Chain that this asset belongs to.\n *\n * @generated from field: uint32 chain_id = 2;\n */\n chainId: number;\n\n /**\n * True when the asset is the native gas/token of the source chain.\n *\n * @generated from field: bool is_native_asset = 3;\n */\n isNativeAsset: boolean;\n\n /**\n * Latest known network fee for this chain asset variant as a human-readable\n * string in zToken units, with insignificant trailing zeroes trimmed.\n *\n * @generated from field: string network_fee = 4;\n */\n networkFee: string;\n\n /**\n * Polyester zToken contract address for this chain asset variant.\n *\n * @generated from field: string ztoken_address = 6;\n */\n ztokenAddress: string;\n\n /**\n * Source-chain token contract, mint, or native sentinel address.\n *\n * @generated from field: string source_address = 7;\n */\n sourceAddress: string;\n\n /**\n * Source-chain token decimals.\n *\n * @generated from field: uint32 source_decimals = 8;\n */\n sourceDecimals: number;\n\n /**\n * zToken decimals on Polyester chain.\n *\n * @generated from field: uint32 ztoken_decimals = 9;\n */\n ztokenDecimals: number;\n\n /**\n * Minimum deposit amount for this variant as a human-readable string in zToken units.\n *\n * @generated from field: string deposit_min_amount = 10;\n */\n depositMinAmount: string;\n\n /**\n * Minimum withdraw amount for this variant as a human-readable string in zToken units.\n *\n * @generated from field: string withdraw_min_amount = 11;\n */\n withdrawMinAmount: string;\n\n /**\n * Latest zToken supply for this chain asset variant, scaled by the parent\n * unified asset's quantity_scale. Decode: supply_q / 10^quantity_scale.\n *\n * @generated from field: uint64 supply_q = 12;\n */\n supplyQ: bigint;\n};\n\n/**\n * Describes the message chain.zipper.v1.AssetChainVariant.\n * Use `create(AssetChainVariantSchema)` to create a new message.\n */\nexport const AssetChainVariantSchema: GenMessage<AssetChainVariant> = /*@__PURE__*/\n messageDesc(file_chain_zipper_v1_zipper, 1);\n\n/**\n * ZippedAssetSupplyUpdate carries the latest route liquidity for one zipped\n * asset. It is published on the Protobuf WebSocket channel.\n *\n * @generated from message chain.zipper.v1.ZippedAssetSupplyUpdate\n */\nexport type ZippedAssetSupplyUpdate = Message<\"chain.zipper.v1.ZippedAssetSupplyUpdate\"> & {\n /**\n * Canonical zipped asset route ID.\n *\n * @generated from field: uint32 zipped_asset_id = 1;\n */\n zippedAssetId: number;\n\n /**\n * Latest zToken supply for this route, scaled by the parent asset's\n * quantity_scale. Decode: supply_q / 10^quantity_scale.\n *\n * @generated from field: uint64 supply_q = 2;\n */\n supplyQ: bigint;\n};\n\n/**\n * Describes the message chain.zipper.v1.ZippedAssetSupplyUpdate.\n * Use `create(ZippedAssetSupplyUpdateSchema)` to create a new message.\n */\nexport const ZippedAssetSupplyUpdateSchema: GenMessage<ZippedAssetSupplyUpdate> = /*@__PURE__*/\n messageDesc(file_chain_zipper_v1_zipper, 2);\n\n/**\n * ZippedAssetSupplyBatch batches public zipped-asset supply updates.\n *\n * @generated from message chain.zipper.v1.ZippedAssetSupplyBatch\n */\nexport type ZippedAssetSupplyBatch = Message<\"chain.zipper.v1.ZippedAssetSupplyBatch\"> & {\n /**\n * Supply updates included in this batch.\n *\n * @generated from field: repeated chain.zipper.v1.ZippedAssetSupplyUpdate updates = 1;\n */\n updates: ZippedAssetSupplyUpdate[];\n};\n\n/**\n * Describes the message chain.zipper.v1.ZippedAssetSupplyBatch.\n * Use `create(ZippedAssetSupplyBatchSchema)` to create a new message.\n */\nexport const ZippedAssetSupplyBatchSchema: GenMessage<ZippedAssetSupplyBatch> = /*@__PURE__*/\n messageDesc(file_chain_zipper_v1_zipper, 3);\n\n/**\n * AssetConfig describes one unified Polyester asset and all compatible\n * chain-specific variants supported by Zipper.\n *\n * @generated from message chain.zipper.v1.AssetConfig\n */\nexport type AssetConfig = Message<\"chain.zipper.v1.AssetConfig\"> & {\n /**\n * Unified Polyester asset code used inside Funding/Trading (for example: \"USDT\").\n *\n * @generated from field: string asset = 1;\n */\n asset: string;\n\n /**\n * Public unified asset id.\n *\n * @generated from field: uint32 ledger_id = 2;\n */\n ledgerId: number;\n\n /**\n * Human-friendly unified asset display name.\n *\n * @generated from field: string name = 3;\n */\n name: string;\n\n /**\n * Optional icon reference for the unified asset.\n *\n * @generated from field: string icon = 4;\n */\n icon: string;\n\n /**\n * Integer scale for unified-asset quantities (0..18). A scale of 8 means one\n * whole asset is represented as 100000000 in supply_q and other\n * quantity_scale-based fields.\n *\n * @generated from field: uint32 quantity_scale = 5;\n */\n quantityScale: number;\n\n /**\n * UI display precision for the unified asset.\n *\n * @generated from field: uint32 quantity_display_decimals = 6;\n */\n quantityDisplayDecimals: number;\n\n /**\n * Supported chain-specific deposit/withdraw variants for this unified asset.\n *\n * @generated from field: repeated chain.zipper.v1.AssetChainVariant variants = 7;\n */\n variants: AssetChainVariant[];\n\n /**\n * On-chain uAsset id for the unified asset.\n *\n * @generated from field: string u_asset_id = 8;\n */\n uAssetId: string;\n};\n\n/**\n * Describes the message chain.zipper.v1.AssetConfig.\n * Use `create(AssetConfigSchema)` to create a new message.\n */\nexport const AssetConfigSchema: GenMessage<AssetConfig> = /*@__PURE__*/\n messageDesc(file_chain_zipper_v1_zipper, 4);\n\n/**\n * ChainContractConfig describes an active Polyester-chain contract address\n * clients may need for supported deposit and withdraw flows.\n *\n * @generated from message chain.zipper.v1.ChainContractConfig\n */\nexport type ChainContractConfig = Message<\"chain.zipper.v1.ChainContractConfig\"> & {\n /**\n * Stable contract key for client lookups.\n *\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * EVM contract address on Polyester chain.\n *\n * @generated from field: string address = 2;\n */\n address: string;\n\n /**\n * Optional product-facing contract category, when known.\n *\n * @generated from field: string type = 3;\n */\n type: string;\n\n /**\n * Optional human-readable description.\n *\n * @generated from field: string description = 4;\n */\n description: string;\n\n /**\n * Active contract version for this name. Versions increase when the address\n * changes, allowing clients to identify the exact contract revision in use.\n *\n * @generated from field: uint32 version = 5;\n */\n version: number;\n};\n\n/**\n * Describes the message chain.zipper.v1.ChainContractConfig.\n * Use `create(ChainContractConfigSchema)` to create a new message.\n */\nexport const ChainContractConfigSchema: GenMessage<ChainContractConfig> = /*@__PURE__*/\n messageDesc(file_chain_zipper_v1_zipper, 5);\n\n/**\n * @generated from message chain.zipper.v1.GetDepositWithdrawConfigRequest\n */\nexport type GetDepositWithdrawConfigRequest = Message<\"chain.zipper.v1.GetDepositWithdrawConfigRequest\"> & {\n};\n\n/**\n * Describes the message chain.zipper.v1.GetDepositWithdrawConfigRequest.\n * Use `create(GetDepositWithdrawConfigRequestSchema)` to create a new message.\n */\nexport const GetDepositWithdrawConfigRequestSchema: GenMessage<GetDepositWithdrawConfigRequest> = /*@__PURE__*/\n messageDesc(file_chain_zipper_v1_zipper, 6);\n\n/**\n * @generated from message chain.zipper.v1.GetDepositWithdrawConfigResponse\n */\nexport type GetDepositWithdrawConfigResponse = Message<\"chain.zipper.v1.GetDepositWithdrawConfigResponse\"> & {\n /**\n * Supported chains ordered by chain code.\n *\n * @generated from field: repeated chain.zipper.v1.ChainConfig chains = 1;\n */\n chains: ChainConfig[];\n\n /**\n * Supported unified assets ordered by asset code, each with compatible chain routes.\n *\n * @generated from field: repeated chain.zipper.v1.AssetConfig assets = 2;\n */\n assets: AssetConfig[];\n\n /**\n * Snapshot generation timestamp (seconds since epoch, UTC).\n *\n * @generated from field: uint64 ts_sec = 3;\n */\n tsSec: bigint;\n\n /**\n * Polyester chain id used by all zToken addresses in `assets.variants`.\n *\n * @generated from field: uint32 polyester_chain_id = 4;\n */\n polyesterChainId: number;\n\n /**\n * Active Polyester-chain contracts ordered by contract name.\n *\n * @generated from field: repeated chain.zipper.v1.ChainContractConfig contracts = 5;\n */\n contracts: ChainContractConfig[];\n};\n\n/**\n * Describes the message chain.zipper.v1.GetDepositWithdrawConfigResponse.\n * Use `create(GetDepositWithdrawConfigResponseSchema)` to create a new message.\n */\nexport const GetDepositWithdrawConfigResponseSchema: GenMessage<GetDepositWithdrawConfigResponse> = /*@__PURE__*/\n messageDesc(file_chain_zipper_v1_zipper, 7);\n\n/**\n * ZipperService exposes deposit and withdraw chain configuration.\n *\n * @generated from service chain.zipper.v1.ZipperService\n */\nexport const ZipperService: GenService<{\n /**\n * Retrieve the supported chains and unified assets used by deposit/withdraw UI flows.\n *\n * @generated from rpc chain.zipper.v1.ZipperService.GetDepositWithdrawConfig\n */\n getDepositWithdrawConfig: {\n methodKind: \"unary\";\n input: typeof GetDepositWithdrawConfigRequestSchema;\n output: typeof GetDepositWithdrawConfigResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_chain_zipper_v1_zipper, 0);\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAYA,MAAa,8BACX,uBAAS,omEAAomE,CAAC,0BAA0B,CAAC;;;;;AAmG3oE,MAAa,oBACX,0BAAY,6BAA6B,CAAC;;;;;AA6F5C,MAAa,0BACX,0BAAY,6BAA6B,CAAC;;;;;AA6B5C,MAAa,gCACX,0BAAY,6BAA6B,CAAC;;;;;AAoB5C,MAAa,+BACX,0BAAY,6BAA6B,CAAC;;;;;AAwE5C,MAAa,oBACX,0BAAY,6BAA6B,CAAC;;;;;AAkD5C,MAAa,4BACX,0BAAY,6BAA6B,CAAC;;;;;AAY5C,MAAa,wCACX,0BAAY,6BAA6B,CAAC;;;;;AA8C5C,MAAa,yCACX,0BAAY,6BAA6B,CAAC;;;;;;AAO5C,MAAa,gBAYX,0BAAY,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"zipper_pb.js","names":[],"sources":["../../../../../src/gen/chain/zipper/v1/zipper_pb.ts"],"sourcesContent":["// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file chain/zipper/v1/zipper.proto (package chain.zipper.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_polyester_api_options } from \"../../../polyester/api/options_pb.js\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file chain/zipper/v1/zipper.proto.\n */\nexport const file_chain_zipper_v1_zipper: GenFile = /*@__PURE__*/\n fileDesc(\"ChxjaGFpbi96aXBwZXIvdjEvemlwcGVyLnByb3RvEg9jaGFpbi56aXBwZXIudjEirgIKC0NoYWluQ29uZmlnEhAKCGNoYWluX2lkGAEgASgNEgwKBGNvZGUYAiABKAkSDAoEbmFtZRgDIAEoCRIXCg9uYXRpdmVfY2hhaW5faWQYBCABKAkSHgoWbmF0aXZlX2N1cnJlbmN5X3N5bWJvbBgFIAEoCRIUCgxleHBsb3Jlcl91cmwYBiABKAkSDAoEaWNvbhgHIAEoCRIeChZyZXF1aXJlZF9jb25maXJtYXRpb25zGAggASgNEiEKGWNvbmZpcm1hdGlvbl90aW1lX3NlY29uZHMYCSABKA0SGQoRaXNfY2FzZV9zZW5zaXRpdmUYCiABKAgSGgoSbWluX2FkZHJlc3NfbGVuZ3RoGAsgASgNEhoKEm1heF9hZGRyZXNzX2xlbmd0aBgMIAEoDSKZAgoRQXNzZXRDaGFpblZhcmlhbnQSFwoPemlwcGVkX2Fzc2V0X2lkGAEgASgNEhAKCGNoYWluX2lkGAIgASgNEhcKD2lzX25hdGl2ZV9hc3NldBgDIAEoCBITCgtuZXR3b3JrX2ZlZRgEIAEoCRIWCg56dG9rZW5fYWRkcmVzcxgGIAEoCRIWCg5zb3VyY2VfYWRkcmVzcxgHIAEoCRIXCg9zb3VyY2VfZGVjaW1hbHMYCCABKA0SFwoPenRva2VuX2RlY2ltYWxzGAkgASgNEhoKEmRlcG9zaXRfbWluX2Ftb3VudBgKIAEoCRIbChN3aXRoZHJhd19taW5fYW1vdW50GAsgASgJEhAKCHN1cHBseV9xGAwgASgEIkQKF1ppcHBlZEFzc2V0U3VwcGx5VXBkYXRlEhcKD3ppcHBlZF9hc3NldF9pZBgBIAEoDRIQCghzdXBwbHlfcRgCIAEoBCJTChZaaXBwZWRBc3NldFN1cHBseUJhdGNoEjkKB3VwZGF0ZXMYASADKAsyKC5jaGFpbi56aXBwZXIudjEuWmlwcGVkQXNzZXRTdXBwbHlVcGRhdGUi0AEKC0Fzc2V0Q29uZmlnEg0KBWFzc2V0GAEgASgJEhEKCWxlZGdlcl9pZBgCIAEoDRIMCgRuYW1lGAMgASgJEgwKBGljb24YBCABKAkSFgoOcXVhbnRpdHlfc2NhbGUYBSABKA0SIQoZcXVhbnRpdHlfZGlzcGxheV9kZWNpbWFscxgGIAEoDRI0Cgh2YXJpYW50cxgHIAMoCzIiLmNoYWluLnppcHBlci52MS5Bc3NldENoYWluVmFyaWFudBISCgp1X2Fzc2V0X2lkGAggASgJImgKE0NoYWluQ29udHJhY3RDb25maWcSDAoEbmFtZRgBIAEoCRIPCgdhZGRyZXNzGAIgASgJEgwKBHR5cGUYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSDwoHdmVyc2lvbhgFIAEoDSIhCh9HZXREZXBvc2l0V2l0aGRyYXdDb25maWdSZXF1ZXN0IscBCiBHZXREZXBvc2l0V2l0aGRyYXdDb25maWdSZXNwb25zZRIsCgZjaGFpbnMYASADKAsyHC5jaGFpbi56aXBwZXIudjEuQ2hhaW5Db25maWcSLAoGYXNzZXRzGAIgAygLMhwuY2hhaW4uemlwcGVyLnYxLkFzc2V0Q29uZmlnEg4KBnRzX3NlYxgDIAEoBBI3Cgljb250cmFjdHMYBSADKAsyJC5jaGFpbi56aXBwZXIudjEuQ2hhaW5Db250cmFjdENvbmZpZzKTAQoNWmlwcGVyU2VydmljZRKBAQoYR2V0RGVwb3NpdFdpdGhkcmF3Q29uZmlnEjAuY2hhaW4uemlwcGVyLnYxLkdldERlcG9zaXRXaXRoZHJhd0NvbmZpZ1JlcXVlc3QaMS5jaGFpbi56aXBwZXIudjEuR2V0RGVwb3NpdFdpdGhkcmF3Q29uZmlnUmVzcG9uc2UiAEJLWklnaXRodWIuY29tL0ZhYnJpYy1MYWJzL3BvbHllc3Rlci1zZGstZ28vZ2VuL2NoYWluL3ppcHBlci92MTtjaGFpbnppcHBlcnYxYgZwcm90bzM=\", [file_polyester_api_options]);\n\n/**\n * ChainConfig describes one supported external chain for deposit and withdraw.\n *\n * @generated from message chain.zipper.v1.ChainConfig\n */\nexport type ChainConfig = Message<\"chain.zipper.v1.ChainConfig\"> & {\n /**\n * PolyChain-registered chain id used across Zipper and lifecycle events.\n *\n * @generated from field: uint32 chain_id = 1;\n */\n chainId: number;\n\n /**\n * Stable machine-friendly chain key (for example: \"ethereum\", \"solana\").\n *\n * @generated from field: string code = 2;\n */\n code: string;\n\n /**\n * Human-friendly display name.\n *\n * @generated from field: string name = 3;\n */\n name: string;\n\n /**\n * Native source-chain network identifier when useful for wallet or explorer\n * integrations. For EVM chains this is the EIP-155 chain id; non-EVM chains\n * may omit this and should be identified by `chain_id` and `code`.\n *\n * @generated from field: string native_chain_id = 4;\n */\n nativeChainId: string;\n\n /**\n * Native gas token symbol for this chain (for example: ETH, BTC, SOL).\n *\n * @generated from field: string native_currency_symbol = 5;\n */\n nativeCurrencySymbol: string;\n\n /**\n * Optional block explorer base URL for links.\n *\n * @generated from field: string explorer_url = 6;\n */\n explorerUrl: string;\n\n /**\n * Optional icon reference for UI display.\n *\n * @generated from field: string icon = 7;\n */\n icon: string;\n\n /**\n * Default required source-chain confirmations when known.\n *\n * @generated from field: uint32 required_confirmations = 8;\n */\n requiredConfirmations: number;\n\n /**\n * Estimated average confirmation time in seconds when known.\n *\n * @generated from field: uint32 confirmation_time_seconds = 9;\n */\n confirmationTimeSeconds: number;\n\n /**\n * True when source-chain addresses must preserve letter case.\n *\n * @generated from field: bool is_case_sensitive = 10;\n */\n isCaseSensitive: boolean;\n\n /**\n * Inclusive minimum source-chain address length for validation.\n *\n * @generated from field: uint32 min_address_length = 11;\n */\n minAddressLength: number;\n\n /**\n * Inclusive maximum source-chain address length for validation.\n *\n * @generated from field: uint32 max_address_length = 12;\n */\n maxAddressLength: number;\n};\n\n/**\n * Describes the message chain.zipper.v1.ChainConfig.\n * Use `create(ChainConfigSchema)` to create a new message.\n */\nexport const ChainConfigSchema: GenMessage<ChainConfig> = /*@__PURE__*/\n messageDesc(file_chain_zipper_v1_zipper, 0);\n\n/**\n * AssetChainVariant describes one chain route that can be used to deposit into\n * or withdraw from a unified Polyester asset.\n *\n * @generated from message chain.zipper.v1.AssetChainVariant\n */\nexport type AssetChainVariant = Message<\"chain.zipper.v1.AssetChainVariant\"> & {\n /**\n * Canonical zipped asset route id.\n *\n * @generated from field: uint32 zipped_asset_id = 1;\n */\n zippedAssetId: number;\n\n /**\n * Chain that this asset belongs to.\n *\n * @generated from field: uint32 chain_id = 2;\n */\n chainId: number;\n\n /**\n * True when the asset is the native gas/token of the source chain.\n *\n * @generated from field: bool is_native_asset = 3;\n */\n isNativeAsset: boolean;\n\n /**\n * Latest known network fee for this chain asset variant as a human-readable\n * string in zToken units, with insignificant trailing zeroes trimmed.\n *\n * @generated from field: string network_fee = 4;\n */\n networkFee: string;\n\n /**\n * Polyester zToken contract address for this chain asset variant.\n *\n * @generated from field: string ztoken_address = 6;\n */\n ztokenAddress: string;\n\n /**\n * Source-chain token contract, mint, or native sentinel address.\n *\n * @generated from field: string source_address = 7;\n */\n sourceAddress: string;\n\n /**\n * Source-chain token decimals.\n *\n * @generated from field: uint32 source_decimals = 8;\n */\n sourceDecimals: number;\n\n /**\n * zToken decimals on Polyester chain.\n *\n * @generated from field: uint32 ztoken_decimals = 9;\n */\n ztokenDecimals: number;\n\n /**\n * Minimum deposit amount for this variant as a human-readable string in zToken units.\n *\n * @generated from field: string deposit_min_amount = 10;\n */\n depositMinAmount: string;\n\n /**\n * Minimum withdraw amount for this variant as a human-readable string in zToken units.\n *\n * @generated from field: string withdraw_min_amount = 11;\n */\n withdrawMinAmount: string;\n\n /**\n * Latest zToken supply for this chain asset variant, scaled by the parent\n * unified asset's quantity_scale. Decode: supply_q / 10^quantity_scale.\n *\n * @generated from field: uint64 supply_q = 12;\n */\n supplyQ: bigint;\n};\n\n/**\n * Describes the message chain.zipper.v1.AssetChainVariant.\n * Use `create(AssetChainVariantSchema)` to create a new message.\n */\nexport const AssetChainVariantSchema: GenMessage<AssetChainVariant> = /*@__PURE__*/\n messageDesc(file_chain_zipper_v1_zipper, 1);\n\n/**\n * ZippedAssetSupplyUpdate carries the latest route liquidity for one zipped\n * asset. It is published on the Protobuf WebSocket channel.\n *\n * @generated from message chain.zipper.v1.ZippedAssetSupplyUpdate\n */\nexport type ZippedAssetSupplyUpdate = Message<\"chain.zipper.v1.ZippedAssetSupplyUpdate\"> & {\n /**\n * Canonical zipped asset route ID.\n *\n * @generated from field: uint32 zipped_asset_id = 1;\n */\n zippedAssetId: number;\n\n /**\n * Latest zToken supply for this route, scaled by the parent asset's\n * quantity_scale. Decode: supply_q / 10^quantity_scale.\n *\n * @generated from field: uint64 supply_q = 2;\n */\n supplyQ: bigint;\n};\n\n/**\n * Describes the message chain.zipper.v1.ZippedAssetSupplyUpdate.\n * Use `create(ZippedAssetSupplyUpdateSchema)` to create a new message.\n */\nexport const ZippedAssetSupplyUpdateSchema: GenMessage<ZippedAssetSupplyUpdate> = /*@__PURE__*/\n messageDesc(file_chain_zipper_v1_zipper, 2);\n\n/**\n * ZippedAssetSupplyBatch batches public zipped-asset supply updates.\n *\n * @generated from message chain.zipper.v1.ZippedAssetSupplyBatch\n */\nexport type ZippedAssetSupplyBatch = Message<\"chain.zipper.v1.ZippedAssetSupplyBatch\"> & {\n /**\n * Supply updates included in this batch.\n *\n * @generated from field: repeated chain.zipper.v1.ZippedAssetSupplyUpdate updates = 1;\n */\n updates: ZippedAssetSupplyUpdate[];\n};\n\n/**\n * Describes the message chain.zipper.v1.ZippedAssetSupplyBatch.\n * Use `create(ZippedAssetSupplyBatchSchema)` to create a new message.\n */\nexport const ZippedAssetSupplyBatchSchema: GenMessage<ZippedAssetSupplyBatch> = /*@__PURE__*/\n messageDesc(file_chain_zipper_v1_zipper, 3);\n\n/**\n * AssetConfig describes one unified Polyester asset and all compatible\n * chain-specific variants supported by Zipper.\n *\n * @generated from message chain.zipper.v1.AssetConfig\n */\nexport type AssetConfig = Message<\"chain.zipper.v1.AssetConfig\"> & {\n /**\n * Unified Polyester asset code used inside Funding/Trading (for example: \"USDT\").\n *\n * @generated from field: string asset = 1;\n */\n asset: string;\n\n /**\n * Public unified asset id.\n *\n * @generated from field: uint32 ledger_id = 2;\n */\n ledgerId: number;\n\n /**\n * Human-friendly unified asset display name.\n *\n * @generated from field: string name = 3;\n */\n name: string;\n\n /**\n * Optional icon reference for the unified asset.\n *\n * @generated from field: string icon = 4;\n */\n icon: string;\n\n /**\n * Integer scale for unified-asset quantities (0..18). A scale of 8 means one\n * whole asset is represented as 100000000 in supply_q and other\n * quantity_scale-based fields.\n *\n * @generated from field: uint32 quantity_scale = 5;\n */\n quantityScale: number;\n\n /**\n * UI display precision for the unified asset.\n *\n * @generated from field: uint32 quantity_display_decimals = 6;\n */\n quantityDisplayDecimals: number;\n\n /**\n * Supported chain-specific deposit/withdraw variants for this unified asset.\n *\n * @generated from field: repeated chain.zipper.v1.AssetChainVariant variants = 7;\n */\n variants: AssetChainVariant[];\n\n /**\n * On-chain uAsset id for the unified asset.\n *\n * @generated from field: string u_asset_id = 8;\n */\n uAssetId: string;\n};\n\n/**\n * Describes the message chain.zipper.v1.AssetConfig.\n * Use `create(AssetConfigSchema)` to create a new message.\n */\nexport const AssetConfigSchema: GenMessage<AssetConfig> = /*@__PURE__*/\n messageDesc(file_chain_zipper_v1_zipper, 4);\n\n/**\n * ChainContractConfig describes an active Polyester-chain contract address\n * clients may need for supported deposit and withdraw flows.\n *\n * @generated from message chain.zipper.v1.ChainContractConfig\n */\nexport type ChainContractConfig = Message<\"chain.zipper.v1.ChainContractConfig\"> & {\n /**\n * Stable contract key for client lookups.\n *\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * EVM contract address on Polyester chain.\n *\n * @generated from field: string address = 2;\n */\n address: string;\n\n /**\n * Optional product-facing contract category, when known.\n *\n * @generated from field: string type = 3;\n */\n type: string;\n\n /**\n * Optional human-readable description.\n *\n * @generated from field: string description = 4;\n */\n description: string;\n\n /**\n * Active contract version for this name. Versions increase when the address\n * changes, allowing clients to identify the exact contract revision in use.\n *\n * @generated from field: uint32 version = 5;\n */\n version: number;\n};\n\n/**\n * Describes the message chain.zipper.v1.ChainContractConfig.\n * Use `create(ChainContractConfigSchema)` to create a new message.\n */\nexport const ChainContractConfigSchema: GenMessage<ChainContractConfig> = /*@__PURE__*/\n messageDesc(file_chain_zipper_v1_zipper, 5);\n\n/**\n * @generated from message chain.zipper.v1.GetDepositWithdrawConfigRequest\n */\nexport type GetDepositWithdrawConfigRequest = Message<\"chain.zipper.v1.GetDepositWithdrawConfigRequest\"> & {\n};\n\n/**\n * Describes the message chain.zipper.v1.GetDepositWithdrawConfigRequest.\n * Use `create(GetDepositWithdrawConfigRequestSchema)` to create a new message.\n */\nexport const GetDepositWithdrawConfigRequestSchema: GenMessage<GetDepositWithdrawConfigRequest> = /*@__PURE__*/\n messageDesc(file_chain_zipper_v1_zipper, 6);\n\n/**\n * @generated from message chain.zipper.v1.GetDepositWithdrawConfigResponse\n */\nexport type GetDepositWithdrawConfigResponse = Message<\"chain.zipper.v1.GetDepositWithdrawConfigResponse\"> & {\n /**\n * Supported chains ordered by chain code.\n *\n * @generated from field: repeated chain.zipper.v1.ChainConfig chains = 1;\n */\n chains: ChainConfig[];\n\n /**\n * Supported unified assets ordered by asset code, each with compatible chain routes.\n *\n * @generated from field: repeated chain.zipper.v1.AssetConfig assets = 2;\n */\n assets: AssetConfig[];\n\n /**\n * Snapshot generation timestamp (seconds since epoch, UTC).\n *\n * @generated from field: uint64 ts_sec = 3;\n */\n tsSec: bigint;\n\n /**\n * Active Polyester-chain contracts ordered by contract name.\n *\n * @generated from field: repeated chain.zipper.v1.ChainContractConfig contracts = 5;\n */\n contracts: ChainContractConfig[];\n};\n\n/**\n * Describes the message chain.zipper.v1.GetDepositWithdrawConfigResponse.\n * Use `create(GetDepositWithdrawConfigResponseSchema)` to create a new message.\n */\nexport const GetDepositWithdrawConfigResponseSchema: GenMessage<GetDepositWithdrawConfigResponse> = /*@__PURE__*/\n messageDesc(file_chain_zipper_v1_zipper, 7);\n\n/**\n * ZipperService exposes deposit and withdraw chain configuration.\n *\n * @generated from service chain.zipper.v1.ZipperService\n */\nexport const ZipperService: GenService<{\n /**\n * Retrieve the supported chains and unified assets used by deposit/withdraw UI flows.\n *\n * @generated from rpc chain.zipper.v1.ZipperService.GetDepositWithdrawConfig\n */\n getDepositWithdrawConfig: {\n methodKind: \"unary\";\n input: typeof GetDepositWithdrawConfigRequestSchema;\n output: typeof GetDepositWithdrawConfigResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_chain_zipper_v1_zipper, 0);\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAYA,MAAa,8BACX,uBAAS,gkEAAgkE,CAAC,0BAA0B,CAAC;;;;;AAmGvmE,MAAa,oBACX,0BAAY,6BAA6B,CAAC;;;;;AA6F5C,MAAa,0BACX,0BAAY,6BAA6B,CAAC;;;;;AA6B5C,MAAa,gCACX,0BAAY,6BAA6B,CAAC;;;;;AAoB5C,MAAa,+BACX,0BAAY,6BAA6B,CAAC;;;;;AAwE5C,MAAa,oBACX,0BAAY,6BAA6B,CAAC;;;;;AAkD5C,MAAa,4BACX,0BAAY,6BAA6B,CAAC;;;;;AAY5C,MAAa,wCACX,0BAAY,6BAA6B,CAAC;;;;;AAuC5C,MAAa,yCACX,0BAAY,6BAA6B,CAAC;;;;;;AAO5C,MAAa,gBAYX,0BAAY,6BAA6B,CAAC"}
|